mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 02:02:22 +00:00
Ensure item decorator is updated when editing things in item mode.
This commit is contained in:
@@ -42,7 +42,8 @@ class ItemDecorator:
|
||||
if obj := item_obj.obj:
|
||||
objs[obj.name] = cls.get_obj_data(obj)
|
||||
obj_is_selected[obj.name] = obj.select_get()
|
||||
obj_is_boolean[obj.name] = item_obj.is_boolean
|
||||
item = tool.Ifc.get().by_id(obj.data.BIMMeshProperties.ifc_definition_id)
|
||||
obj_is_boolean[obj.name] = [i for i in tool.Ifc.get().get_inverse(item) if i.is_a("IfcBooleanResult")]
|
||||
|
||||
handler = cls()
|
||||
handler.objs = objs
|
||||
|
||||
@@ -2736,8 +2736,6 @@ class ImportRepresentationItems(bpy.types.Operator, tool.Ifc.Operator):
|
||||
|
||||
new = props.item_objs.add()
|
||||
new.obj = item_obj
|
||||
new.is_boolean = item_id in boolean_ids
|
||||
new.ifc_definition_id = item_id
|
||||
|
||||
tool.Geometry.import_item(item_obj)
|
||||
tool.Geometry.import_item_attributes(item_obj)
|
||||
@@ -2805,8 +2803,6 @@ class AddMeshlikeItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||
obj.show_in_front = True
|
||||
new = props.item_objs.add()
|
||||
new.obj = obj
|
||||
tool.Root.reload_item_decorator()
|
||||
|
||||
tool.Geometry.lock_object(obj)
|
||||
|
||||
builder = ifcopenshell.util.shape_builder.ShapeBuilder(tool.Ifc.get())
|
||||
@@ -2830,6 +2826,7 @@ class AddMeshlikeItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||
tool.Geometry.reload_representation(bpy.context.scene.BIMGeometryProperties.representation_obj)
|
||||
obj.name = obj.data.name = f"Item/{item.is_a()}/{item.id()}"
|
||||
obj.data.BIMMeshProperties.ifc_definition_id = item.id()
|
||||
tool.Root.reload_item_decorator()
|
||||
|
||||
|
||||
class AddSweptAreaSolidItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||
@@ -2881,6 +2878,7 @@ class AddSweptAreaSolidItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||
obj.data.BIMMeshProperties.ifc_definition_id = item.id()
|
||||
tool.Geometry.import_item(obj)
|
||||
tool.Geometry.import_item_attributes(obj)
|
||||
tool.Root.reload_item_decorator()
|
||||
|
||||
|
||||
class AddCurvelikeItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||
|
||||
@@ -129,9 +129,7 @@ class RepresentationItem(PropertyGroup):
|
||||
|
||||
class RepresentationItemObject(PropertyGroup):
|
||||
name: StringProperty(name="Name")
|
||||
ifc_definition_id: IntProperty(name="IFC Definition ID")
|
||||
obj: PointerProperty(type=bpy.types.Object)
|
||||
is_boolean: BoolProperty(name="Is Boolean", default=False)
|
||||
|
||||
|
||||
class ShapeAspect(PropertyGroup):
|
||||
|
||||
@@ -555,6 +555,7 @@ class AddBoolean(Operator, tool.Ifc.Operator):
|
||||
tool.Geometry.reload_representation(rep_obj)
|
||||
if props.is_editing:
|
||||
bpy.ops.bim.enable_editing_booleans()
|
||||
tool.Root.reload_item_decorator()
|
||||
|
||||
|
||||
class ShowBooleans(Operator, tool.Ifc.Operator, AddObjectHelper):
|
||||
@@ -1163,6 +1164,7 @@ class RemoveBoolean(Operator, tool.Ifc.Operator):
|
||||
bpy.ops.bim.enable_editing_booleans()
|
||||
rep_obj = bpy.context.scene.BIMGeometryProperties.representation_obj
|
||||
tool.Geometry.reload_representation(rep_obj)
|
||||
tool.Root.reload_item_decorator()
|
||||
|
||||
|
||||
class SelectBoolean(Operator):
|
||||
|
||||
Reference in New Issue
Block a user