mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
Fix bug where copy to structure feature was completely inaccessible from the UI
This commit is contained in:
@@ -237,16 +237,14 @@ class CopyToContainer(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
Example: bulk copy a wall to multiple storeys
|
Example: bulk copy a wall to multiple storeys
|
||||||
|
|
||||||
1. Select one or more 3D elements in the viewport
|
The copied elements will have a new position relative to the destination containers
|
||||||
2. Select one or more spatial containers in the viewport
|
|
||||||
3. Press this button
|
|
||||||
4. The copied elements will have a new position relative to the destination containers
|
|
||||||
|
|
||||||
Copying containers to other containers currently is not supported."""
|
Copying containers to other containers currently is not supported."""
|
||||||
|
|
||||||
bl_idname = "bim.copy_to_container"
|
bl_idname = "bim.copy_to_container"
|
||||||
bl_label = "Copy To Container"
|
bl_label = "Copy To Container"
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
container: bpy.props.IntProperty()
|
||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
objs = tool.Spatial.get_selected_objects_without_containers()
|
objs = tool.Spatial.get_selected_objects_without_containers()
|
||||||
@@ -254,7 +252,9 @@ class CopyToContainer(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
self.report({"INFO"}, "No non-spatial objects are selected.")
|
self.report({"INFO"}, "No non-spatial objects are selected.")
|
||||||
return
|
return
|
||||||
|
|
||||||
containers = tool.Spatial.get_selected_containers()
|
# TODO: make a multi-select in the spatial decomposition panel to support multiple containers
|
||||||
|
# containers = tool.Spatial.get_selected_containers()
|
||||||
|
containers = [tool.Ifc.get().by_id(self.container)]
|
||||||
# Track decompositions so they can be recreated after the operation
|
# Track decompositions so they can be recreated after the operation
|
||||||
relationships = tool.Root.get_decomposition_relationships(objs)
|
relationships = tool.Root.get_decomposition_relationships(objs)
|
||||||
old_to_new = {}
|
old_to_new = {}
|
||||||
|
|||||||
@@ -55,26 +55,6 @@ class BIM_PT_spatial(Panel):
|
|||||||
row.prop(osprops, "container_obj", text="", icon="OUTLINER_COLLECTION")
|
row.prop(osprops, "container_obj", text="", icon="OUTLINER_COLLECTION")
|
||||||
row.operator("bim.assign_container", icon="CHECKMARK", text="")
|
row.operator("bim.assign_container", icon="CHECKMARK", text="")
|
||||||
row.operator("bim.disable_editing_container", icon="CANCEL", text="")
|
row.operator("bim.disable_editing_container", icon="CANCEL", text="")
|
||||||
|
|
||||||
# TODO: deprecate as it's very hard to discover
|
|
||||||
# containers are not even selectable by default.
|
|
||||||
if SpatialData.data["selected_containers"]:
|
|
||||||
row = self.layout.row()
|
|
||||||
row.label(text=f"{len(SpatialData.data['selected_containers'])} Selected Containers")
|
|
||||||
for name in SpatialData.data["selected_containers"][:3]:
|
|
||||||
row = self.layout.row()
|
|
||||||
row.label(text=name, icon="OUTLINER_COLLECTION")
|
|
||||||
if len(SpatialData.data["selected_containers"]) > 3:
|
|
||||||
row = self.layout.row()
|
|
||||||
row.label(text=f"... {len(SpatialData.data['selected_containers']) - 3} More")
|
|
||||||
row = self.layout.row(align=True)
|
|
||||||
row.operator("bim.reference_structure", icon="LINKED", text="Reference Selected")
|
|
||||||
row.operator("bim.dereference_structure", icon="UNLINKED", text="")
|
|
||||||
row = self.layout.row()
|
|
||||||
row.operator("bim.copy_to_container", icon="COPYDOWN", text="Copy Object To Selected")
|
|
||||||
else:
|
|
||||||
row = self.layout.row()
|
|
||||||
row.label(text="No Selected Containers")
|
|
||||||
else:
|
else:
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
if SpatialData.data["label"]:
|
if SpatialData.data["label"]:
|
||||||
@@ -211,6 +191,7 @@ class BIM_PT_spatial_decomposition(Panel):
|
|||||||
row_ = col.row(align=True)
|
row_ = col.row(align=True)
|
||||||
row_.operator("bim.assign_container", icon="FOLDER_REDIRECT", text="").container = ifc_definition_id
|
row_.operator("bim.assign_container", icon="FOLDER_REDIRECT", text="").container = ifc_definition_id
|
||||||
row_.operator("bim.reference_from_provided_structure", icon="LINKED", text="").structure = ifc_definition_id
|
row_.operator("bim.reference_from_provided_structure", icon="LINKED", text="").structure = ifc_definition_id
|
||||||
|
row_.operator("bim.copy_to_container", icon="MOD_DISPLACE", text="").container = ifc_definition_id
|
||||||
|
|
||||||
col = row.column()
|
col = row.column()
|
||||||
row_ = col.row(align=True)
|
row_ = col.row(align=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user