mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-12 14:33:28 +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:
|
if obj := item_obj.obj:
|
||||||
objs[obj.name] = cls.get_obj_data(obj)
|
objs[obj.name] = cls.get_obj_data(obj)
|
||||||
obj_is_selected[obj.name] = obj.select_get()
|
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 = cls()
|
||||||
handler.objs = objs
|
handler.objs = objs
|
||||||
|
|||||||
@@ -2736,8 +2736,6 @@ class ImportRepresentationItems(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
new = props.item_objs.add()
|
new = props.item_objs.add()
|
||||||
new.obj = item_obj
|
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(item_obj)
|
||||||
tool.Geometry.import_item_attributes(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
|
obj.show_in_front = True
|
||||||
new = props.item_objs.add()
|
new = props.item_objs.add()
|
||||||
new.obj = obj
|
new.obj = obj
|
||||||
tool.Root.reload_item_decorator()
|
|
||||||
|
|
||||||
tool.Geometry.lock_object(obj)
|
tool.Geometry.lock_object(obj)
|
||||||
|
|
||||||
builder = ifcopenshell.util.shape_builder.ShapeBuilder(tool.Ifc.get())
|
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)
|
tool.Geometry.reload_representation(bpy.context.scene.BIMGeometryProperties.representation_obj)
|
||||||
obj.name = obj.data.name = f"Item/{item.is_a()}/{item.id()}"
|
obj.name = obj.data.name = f"Item/{item.is_a()}/{item.id()}"
|
||||||
obj.data.BIMMeshProperties.ifc_definition_id = item.id()
|
obj.data.BIMMeshProperties.ifc_definition_id = item.id()
|
||||||
|
tool.Root.reload_item_decorator()
|
||||||
|
|
||||||
|
|
||||||
class AddSweptAreaSolidItem(bpy.types.Operator, tool.Ifc.Operator):
|
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()
|
obj.data.BIMMeshProperties.ifc_definition_id = item.id()
|
||||||
tool.Geometry.import_item(obj)
|
tool.Geometry.import_item(obj)
|
||||||
tool.Geometry.import_item_attributes(obj)
|
tool.Geometry.import_item_attributes(obj)
|
||||||
|
tool.Root.reload_item_decorator()
|
||||||
|
|
||||||
|
|
||||||
class AddCurvelikeItem(bpy.types.Operator, tool.Ifc.Operator):
|
class AddCurvelikeItem(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
|
|||||||
@@ -129,9 +129,7 @@ class RepresentationItem(PropertyGroup):
|
|||||||
|
|
||||||
class RepresentationItemObject(PropertyGroup):
|
class RepresentationItemObject(PropertyGroup):
|
||||||
name: StringProperty(name="Name")
|
name: StringProperty(name="Name")
|
||||||
ifc_definition_id: IntProperty(name="IFC Definition ID")
|
|
||||||
obj: PointerProperty(type=bpy.types.Object)
|
obj: PointerProperty(type=bpy.types.Object)
|
||||||
is_boolean: BoolProperty(name="Is Boolean", default=False)
|
|
||||||
|
|
||||||
|
|
||||||
class ShapeAspect(PropertyGroup):
|
class ShapeAspect(PropertyGroup):
|
||||||
|
|||||||
@@ -555,6 +555,7 @@ class AddBoolean(Operator, tool.Ifc.Operator):
|
|||||||
tool.Geometry.reload_representation(rep_obj)
|
tool.Geometry.reload_representation(rep_obj)
|
||||||
if props.is_editing:
|
if props.is_editing:
|
||||||
bpy.ops.bim.enable_editing_booleans()
|
bpy.ops.bim.enable_editing_booleans()
|
||||||
|
tool.Root.reload_item_decorator()
|
||||||
|
|
||||||
|
|
||||||
class ShowBooleans(Operator, tool.Ifc.Operator, AddObjectHelper):
|
class ShowBooleans(Operator, tool.Ifc.Operator, AddObjectHelper):
|
||||||
@@ -1163,6 +1164,7 @@ class RemoveBoolean(Operator, tool.Ifc.Operator):
|
|||||||
bpy.ops.bim.enable_editing_booleans()
|
bpy.ops.bim.enable_editing_booleans()
|
||||||
rep_obj = bpy.context.scene.BIMGeometryProperties.representation_obj
|
rep_obj = bpy.context.scene.BIMGeometryProperties.representation_obj
|
||||||
tool.Geometry.reload_representation(rep_obj)
|
tool.Geometry.reload_representation(rep_obj)
|
||||||
|
tool.Root.reload_item_decorator()
|
||||||
|
|
||||||
|
|
||||||
class SelectBoolean(Operator):
|
class SelectBoolean(Operator):
|
||||||
|
|||||||
Reference in New Issue
Block a user