mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
Clone opening now deletes also old opening placement
This commit is contained in:
committed by
Massimo Fabbro
parent
2449656311
commit
2db35556e9
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user