mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 01:00:56 +00:00
black .
This commit is contained in:
@@ -95,7 +95,7 @@ class BIM_OT_aggregate_unassign_object(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
aggregates_to_check = set()
|
aggregates_to_check = set()
|
||||||
|
|
||||||
# First pass: unassign all parts and track their aggregates
|
# First pass: unassign all parts and track their aggregates
|
||||||
for obj in tool.Blender.get_selected_objects():
|
for obj in tool.Blender.get_selected_objects():
|
||||||
element = tool.Ifc.get_entity(obj)
|
element = tool.Ifc.get_entity(obj)
|
||||||
@@ -104,10 +104,10 @@ class BIM_OT_aggregate_unassign_object(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
aggregate = ifcopenshell.util.element.get_aggregate(element)
|
aggregate = ifcopenshell.util.element.get_aggregate(element)
|
||||||
if not aggregate:
|
if not aggregate:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Track this aggregate for later checking
|
# Track this aggregate for later checking
|
||||||
aggregates_to_check.add(aggregate)
|
aggregates_to_check.add(aggregate)
|
||||||
|
|
||||||
core.unassign_object(
|
core.unassign_object(
|
||||||
tool.Ifc,
|
tool.Ifc,
|
||||||
tool.Aggregate,
|
tool.Aggregate,
|
||||||
@@ -122,7 +122,7 @@ class BIM_OT_aggregate_unassign_object(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
if pset:
|
if pset:
|
||||||
pset = tool.Ifc.get().by_id(pset["id"])
|
pset = tool.Ifc.get().by_id(pset["id"])
|
||||||
ifcopenshell.api.pset.remove_pset(tool.Ifc.get(), product=element, pset=pset)
|
ifcopenshell.api.pset.remove_pset(tool.Ifc.get(), product=element, pset=pset)
|
||||||
|
|
||||||
# Second pass: delete aggregates that now have no parts
|
# Second pass: delete aggregates that now have no parts
|
||||||
deleted_aggregates = []
|
deleted_aggregates = []
|
||||||
for aggregate in aggregates_to_check:
|
for aggregate in aggregates_to_check:
|
||||||
@@ -130,19 +130,22 @@ class BIM_OT_aggregate_unassign_object(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
if len(related_objects) == 0:
|
if len(related_objects) == 0:
|
||||||
aggregate_name = aggregate.Name or f"{aggregate.is_a()} #{aggregate.id()}"
|
aggregate_name = aggregate.Name or f"{aggregate.is_a()} #{aggregate.id()}"
|
||||||
deleted_aggregates.append(aggregate_name)
|
deleted_aggregates.append(aggregate_name)
|
||||||
|
|
||||||
aggregate_obj = tool.Ifc.get_object(aggregate)
|
aggregate_obj = tool.Ifc.get_object(aggregate)
|
||||||
if aggregate_obj:
|
if aggregate_obj:
|
||||||
ifcopenshell.api.root.remove_product(tool.Ifc.get(), product=aggregate)
|
ifcopenshell.api.root.remove_product(tool.Ifc.get(), product=aggregate)
|
||||||
bpy.data.objects.remove(aggregate_obj, do_unlink=True)
|
bpy.data.objects.remove(aggregate_obj, do_unlink=True)
|
||||||
|
|
||||||
# Show info message if aggregates were deleted
|
# Show info message if aggregates were deleted
|
||||||
if deleted_aggregates:
|
if deleted_aggregates:
|
||||||
if len(deleted_aggregates) == 1:
|
if len(deleted_aggregates) == 1:
|
||||||
self.report({'INFO'}, f"Aggregate '{deleted_aggregates[0]}' was deleted because it had no remaining parts")
|
self.report(
|
||||||
|
{"INFO"}, f"Aggregate '{deleted_aggregates[0]}' was deleted because it had no remaining parts"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
aggregate_list = ", ".join(f"'{name}'" for name in deleted_aggregates)
|
aggregate_list = ", ".join(f"'{name}'" for name in deleted_aggregates)
|
||||||
self.report({'INFO'}, f"Aggregates {aggregate_list} were deleted because they had no remaining parts")
|
self.report({"INFO"}, f"Aggregates {aggregate_list} were deleted because they had no remaining parts")
|
||||||
|
|
||||||
|
|
||||||
class BIM_OT_enable_editing_aggregate(bpy.types.Operator):
|
class BIM_OT_enable_editing_aggregate(bpy.types.Operator):
|
||||||
"""Enable editing aggregation relationship"""
|
"""Enable editing aggregation relationship"""
|
||||||
|
|||||||
Reference in New Issue
Block a user