Hi, This is very useful. For the placement, I think the best solution is to move the object rather than setting placement to None. the placement in IFC files is generally Local. Meaning that the placement of an object depend of another object (generally, Site is the root. Building depends on Site. BuildingStorey depends on Building. and Product depends on BuildingStorey.) a way to make things generic is to consider the placement point being the gravity center of a product,(which you could get using...
Coming with update : It seems that the problem was with the geometry. One workaround is to explose faces and resew them.
I also tried with 1.e-5 (which is default value), and it gives the same result. It returns None, when there is an intersection between the two shapes. Also, I don't find IsValid() and DumpErrors() in BRepAlgoAPI_Cut() (attribute errors when I tried to run them) (OCC.Core.VERSION == 7.4.0)
I also tried with 1.e-5 (which is default value), and it gives the same result. It returns None, when there is an intersection between the two shapes. Also, I don't find IsValid() and DumpErrors() in BRepAlgoAPI_Cut() (attribute errors when I tried to run them)
I also tried with 1.e-5 (which is default value), and it gives the same result. It returns None, when there is an intersection between the two shapes.
On the same subject of Boolean operations, the BRepAlgoAPI_Cut fails on two objects (with rather simple geometry) What can make the operation fail ? maquette = ifcopenshell.open("Immeuble de rapport_maquette globale_1.ifc") murs = maquette.by_type("IfcSlab") shapes = [] for mur in murs: shp = getGeometry(mur) shapes.append(shp) bbox_1 = get_alignedboundingbox_multiple(shapes,offset=-1)[2] base = BRepAlgoAPI_Cut(bbox_1,shapes[3]) base.SetFuzzyValue(1) base.Build() base = base.Shape() It fails without...
My settings : settings = ifcopenshell.geom.settings() settings.set(settings.USE_PYTHON_OPENCASCADE,True) settings.set(settings.USE_WORLD_COORDS,True) settings.set(settings.USE_BREP_DATA, True) So, should I test with : settings.set(settings.SEW_SHELLS, True) ? EDIT : I tested with sew_shells. It worked as wanted ! thank you
My settings : settings = ifcopenshell.geom.settings() settings.set(settings.USE_PYTHON_OPENCASCADE,True) settings.set(settings.USE_WORLD_COORDS,True) settings.set(settings.USE_BREP_DATA, True) So, should I test with : settings.set(settings.SEW_SHELLS, True) ?