Clone opening now deletes also old opening placement

This commit is contained in:
Massimo Fabbro
2024-01-08 17:26:05 +01:00
committed by Massimo Fabbro
parent 2449656311
commit 2db35556e9
4 changed files with 11 additions and 5 deletions
@@ -782,13 +782,12 @@ class EditOpenings(Operator, tool.Ifc.Operator):
if opening_obj:
if tool.Ifc.is_edited(opening_obj):
tool.Geometry.run_geometry_update_representation(obj=opening_obj)
blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings)
elif tool.Ifc.is_moved(opening_obj):
blenderbim.core.geometry.edit_object_placement(
tool.Ifc, tool.Geometry, tool.Surveyor, obj=opening_obj
)
blenderbim.core.geometry.edit_similar_opening_placement(opening, similar_openings)
#TODO delete also the old placement
blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings)
building_objs.update(self.get_all_building_objects_of_similar_openings(opening)) #NB this has nothing to do with clone similar_opening
tool.Ifc.unlink(element=opening, obj=opening_obj)
+3 -2
View File
@@ -204,10 +204,11 @@ def get_similar_openings_building_objs(ifc, similar_openings):
building_objs.append(ifc.get_object(similar_opening.VoidsElements[0].RelatingBuildingElement))
return building_objs
def edit_similar_opening_placement(opening = None, similar_openings = None):
def edit_similar_opening_placement(geometry, opening = None, similar_openings = None):
if not opening or not similar_openings:
return
for similar_opening in similar_openings:
old_placement = similar_opening.ObjectPlacement
similar_opening.ObjectPlacement = opening.ObjectPlacement
geometry.delete_opening_object_placement(old_placement)
+1
View File
@@ -397,6 +397,7 @@ class Geometry:
def should_generate_uvs(cls, obj): pass
def should_use_presentation_style_assignment(cls): pass
def unresolve_type_representation(cls, representation, element): pass
def delete_opening_object_placement(cls, opening): pass
@interface
@@ -875,3 +875,8 @@ class Geometry(blenderbim.core.tool.Geometry):
)
shape_aspect.ShapeRepresentations = shape_aspect.ShapeRepresentations + (shape_aspect_representation,)
return shape_aspect_representation
@classmethod
def delete_opening_object_placement(cls, placement):
model = tool.Ifc.get()
ifcopenshell.util.element.remove_deep2(model, placement)