bim.duplicate_style

This commit is contained in:
Andrej730
2024-04-23 16:18:44 +05:00
parent cd013079f4
commit 3ff31b577c
4 changed files with 23 additions and 0 deletions
@@ -30,6 +30,7 @@ classes = (
operator.DisableAddingPresentationStyle, operator.DisableAddingPresentationStyle,
operator.DisableEditingStyle, operator.DisableEditingStyle,
operator.DisableEditingStyles, operator.DisableEditingStyles,
operator.DuplicateStyle,
operator.EditStyle, operator.EditStyle,
operator.EditSurfaceStyle, operator.EditSurfaceStyle,
operator.EnableAddingPresentationStyle, operator.EnableAddingPresentationStyle,
@@ -493,6 +493,22 @@ class EnableAddingPresentationStyle(bpy.types.Operator, tool.Ifc.Operator):
props.is_adding = True props.is_adding = True
class DuplicateStyle(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.duplicate_style"
bl_label = "Duplicate Style"
bl_options = {"REGISTER", "UNDO"}
style: bpy.props.IntProperty(name="Style ID")
def _execute(self, context):
style_type = context.scene.BIMStylesProperties.style_type
ifc_file = tool.Ifc.get()
style = ifc_file.by_id(self.style)
tool.Style.duplicate_style(style)
bpy.ops.bim.disable_editing_styles()
bpy.ops.bim.load_styles(style_type=style_type)
class DisableAddingPresentationStyle(bpy.types.Operator, tool.Ifc.Operator): class DisableAddingPresentationStyle(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.disable_adding_presentation_style" bl_idname = "bim.disable_adding_presentation_style"
bl_label = "Disable Add Presentation Style" bl_label = "Disable Add Presentation Style"
@@ -85,6 +85,7 @@ class BIM_PT_styles(Panel):
op = row.operator("bim.enable_editing_style", text="Edit Style", icon="GREASEPENCIL") op = row.operator("bim.enable_editing_style", text="Edit Style", icon="GREASEPENCIL")
op.style = style.ifc_definition_id op.style = style.ifc_definition_id
row.operator("bim.duplicate_style", text="", icon="DUPLICATE").style = style.ifc_definition_id
row.operator("bim.select_by_style", text="", icon="RESTRICT_SELECT_OFF").style = style.ifc_definition_id row.operator("bim.select_by_style", text="", icon="RESTRICT_SELECT_OFF").style = style.ifc_definition_id
row.operator("bim.remove_style", text="", icon="X").style = style.ifc_definition_id row.operator("bim.remove_style", text="", icon="X").style = style.ifc_definition_id
+5
View File
@@ -19,6 +19,7 @@
import bpy import bpy
import numpy as np import numpy as np
import ifcopenshell import ifcopenshell
import ifcopenshell.util.element
import blenderbim.core.tool import blenderbim.core.tool
import blenderbim.tool as tool import blenderbim.tool as tool
import blenderbim.bim.helper import blenderbim.bim.helper
@@ -59,6 +60,10 @@ class Style(blenderbim.core.tool.Style):
def disable_editing_styles(cls): def disable_editing_styles(cls):
bpy.context.scene.BIMStylesProperties.is_editing = False bpy.context.scene.BIMStylesProperties.is_editing = False
@classmethod
def duplicate_style(cls, style: ifcopenshell.entity_instance) -> ifcopenshell.entity_instance:
return ifcopenshell.util.element.copy_deep(tool.Ifc.get(), style)
@classmethod @classmethod
def enable_editing(cls, obj): def enable_editing(cls, obj):
obj.BIMStyleProperties.is_editing = True obj.BIMStyleProperties.is_editing = True