ok, let's do like this. What do you envision for the blocks functions and the "profile extrusion function"? will they become separated objects as i'm thinking?
The reason why I didnt' already start with that is that i'm really not sure about which path to follow:I would say for me what it should have is material layers, I would suggest basing that on Arch Multimaterials because that's what many other Arch objects use, but it's up to you,
Materials:
in Ifc, if I got it correctly we have 4 ways to describe the material of a wall:
- - monomaterial;
- mixed material;
- layered material;
- profiled material;
the most suitable for a 3d representation should be the profile set material, since it can specify for each layer it's correct position not only in the thickness direction, but also in the z axis direction.
Anyway all of those ways do not necessary have to be represented in 3d. (this is somthing important I think, because we probably want to turn on-off the material visualization in the 3d view and display or not the wall as a monolitic solid).
At the moment Arch Material is the corrispondent of the LayerSet. So if we represent it in 3d, all the layers will start from the same base height and have the same wall height. I think this is limiting.
Wall joining:
At the moment the walls calculate joining of just one monolitic layer. Auto calculating the join between each single layer is far above my math and alghorithms skills. And if you think also about commercial softwares, there are plenty of usecases where they fail, but not because they are bad, just because it is just impossible to guess every different usecase or to retrieve a general rule. So perhaps it can work if you join 2 walls with the same layers, but not if you join 2 walls with same layer sequence, but different layer thickness, or the opposite.
And i'm not really sure I want to measure myself with such an outstanding task.
Work phases:
I do not always need layers to be displayed in my workflow. It is necessary for construction documentation, but not in the half 50% of the desing process... May we think about something flexible?
Something that you can complexify on demand advancing with the design process?
Wall axis and core axis:
Core layer is something revitish. We can't export it in IFC.
I was thinking to build each layer from a core one, but then we can't tell IFC so.
And having a wall center axis is more convenient since the openings can be placed with Placement.Base.y = 0.00. I think we should keep this rule.
Should we just cut the wall in slices according to the layers thickness?
Using basegeometry property:
Each wall layer could be actually be built with separated objects, since BaseGeometry property supports multiple base objects. If each object have it's own material, here you have multimaterial wall.
This is super flexible, but super resource consuming, and in current FC this is not an option.
WAll Types:
As windows and other objects, also wall can have their types. No idea how this can be useful if we use Arch MultiMaterial: this is already a type.
Inside, outside:
The geometry is build keeping reference to the X axis that become the wall center line. let's say positive Y is outside and negative Y the inside? do we have a standard in Ifc?
This is something I really do not understand how to do:and be exportable to IFC with correct extrusion and maybe baseline/axis.
- you are rewring the importer, are you planning the same for the exporter?
- currently the wall is already recognized as a wall and exported as a Brep geometry. Of course the wall subobjects (in wall.Group) are not recognized and are not exported;
- for the representations it should be easy, since the coordinates are adherent to the IFC standard: wall childrens have their coordinates relative to the parent wall (https://standards.buildingsmart.org/IFC ... cement.htm);
- where should I place the code to treat the new wall special case in the Ifc Exporter? Can we have an object version number?
As you see, still lot of doubts...
What do you think?