BlenderBIM: Arrays, IfcRelAggregates, IfcOpeningElements, IfcMaterials
I have the following use-case:
1. Creating an IfcRelAggregate out of an IFC Array:
I have used the
IfcRelAggregate tool to make them into one
With the next
Save Project four IfcBeams appeared, I've seen this in BIMVision
Closing Blender and importing the IFC again, to get rid of the excessive IFC Beams, it worked:
Is it possible there could be a checkbox button in which you could say the Array is by defintion already going to be an IfcRelAggregate? This will save me from trying to select the items I want in the Scene Collection or 3D view and it would be easier to create IfcElementAssemblies out of various IfcElementAssemblies.
2. Adding an IfcOpening to an IfcElementAssembly:
Now I have added an IfcOpeningElement to the IfcElementAssembly,
as you can see it cuts nicely through the IfcSlabs and IfcBeam:
IFC save worked perfect:
This is not alway the case, sometimes it has troubles cutting through all the geometry. But I can't reproduce it...
3. Question about materials:
In the Demo library the IfcSlab and IfcBeam are made with an IfcProfile which have an
If I remove this material and make new material called
my_material. I have to assign the material to one instance of an IfcBeam under profile and it will update all the beamtype instances.
With succesful IFC save.
This is the correct worflow of swapping materials, or only for materials needed by profiles?
4. How to use python to create an IfcElementAssembly?
I have this code snippet
def create_assembly(self, model, element_list): assembled_element = run("root.create_entity", model, ifc_class="IfcElementAssembly",name='my_collection') for i in element_list: run("aggregate.assign_object", model, product=assembled_element, relating_object=i)
element_list looks like this:
[#202=IfcCovering('3Qn21p1p5EL8y2qdjXrWg6',$,'insulation',$,$,#223,#213,$,$), #225=IfcCovering('0Z7y9GduPDkwEkOkhAzED6',$,'insulation',$,$,#246,#236,$,$), #248=IfcCovering('1A4n9VM5XD9fjZdtJ3lhFj',$,'insulation',$,$,#269,#259,$,$), #271=IfcCovering('1AIix1i916xBNV_TOWHCGx',$,'insulation',$,$,#292,#282,$,$), #294=IfcCovering('1N65f0cKf1cwFvuV8H7Tfk',$,'insulation',$,$,#315,#305,$,$), #346=IfcCovering('2eeTeOBmX7_eobur6$sl4W',$,'insulation',$,$,#367,#357,$,$), #38=IfcMember('1yqJ4GTn5AqeX2x3ju6l9F',$,'my_beam',$,$,#56,#57,$,$), #59=IfcMember('3ZKjHPpWb8V8WLMu1qE1uw',$,'my_beam',$,$,#76,#77,$,$), #79=IfcMember('0UH0M7Iiv6yvCU3PosVy7I',$,'my_beam',$,$,#96,#97,$,$), #99=IfcMember('2qt0xIrZPCm8CeqKBcgchd',$,'my_beam',$,$,#116,#117,$,$), #119=IfcMember('1dRfBa9zLAlu05ax4a_3Mv',$,'my_beam',$,$,#136,#137,$,$), #139=IfcMember('3pkeFk8zH7W9h0uHP9Pl2w',$,'my_beam',$,$,#156,#157,$,$), #159=IfcMember('1_LmUDkbHAAgr$DQ4Yv$D0',$,'my_beam',$,$,#176,#177,$,$), #179=IfcBeam('0j7rHy9OnBvAB9vMKrg2oj',$,'my_beam',$,$,#196,#197,$,$)]
When I load the IFC in BlenderBIM I see on the last item of the list is added to the collection. Or the Collection takes the name from the last IfcElement in the list. Don't really understand why.
5. Duplicating an IfcElementAssembly
How to duplicate an IfcElementAssembly while it could also store the IFC array modfiers of the different element in the IfcElementAssembly?
Attached is the IFC.
All this functionality is very incredible by the way, it allows for such fast workflows.