mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-12 02:23:34 +00:00
Fix #3275. You can now rename types from the type manager.
This commit is contained in:
@@ -41,7 +41,7 @@ from blenderbim.bim.helper import prop_with_search
|
||||
class LaunchTypeManager(bpy.types.Operator):
|
||||
bl_idname = "bim.launch_type_manager"
|
||||
bl_label = "Launch Type Manager"
|
||||
bl_options = {"REGISTER"}
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
bl_description = "Display all available Construction Types to add new instances"
|
||||
|
||||
def execute(self, context):
|
||||
@@ -127,6 +127,8 @@ class LaunchTypeManager(bpy.types.Operator):
|
||||
op.ifc_class = relating_type["ifc_class"]
|
||||
op.relating_type_id = relating_type["id"]
|
||||
|
||||
op = row.operator("bim.rename_type", icon="GREASEPENCIL", text="")
|
||||
op.element = relating_type["id"]
|
||||
op = row.operator("bim.select_type", icon="OBJECT_DATA", text="")
|
||||
op.relating_type = relating_type["id"]
|
||||
op = row.operator("bim.duplicate_type", icon="DUPLICATE", text="")
|
||||
|
||||
@@ -27,6 +27,7 @@ classes = (
|
||||
operator.EnableEditingType,
|
||||
operator.PurgeUnusedTypes,
|
||||
operator.RemoveType,
|
||||
operator.RenameType,
|
||||
operator.SelectSimilarType,
|
||||
operator.SelectType,
|
||||
operator.SelectTypeObjects,
|
||||
|
||||
@@ -446,7 +446,29 @@ class RemoveType(bpy.types.Operator, tool.Ifc.Operator):
|
||||
if obj:
|
||||
tool.Ifc.unlink(obj=obj)
|
||||
bpy.data.objects.remove(obj)
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class RenameType(bpy.types.Operator, tool.Ifc.Operator):
|
||||
bl_idname = "bim.rename_type"
|
||||
bl_label = "Rename Type"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
element: bpy.props.IntProperty()
|
||||
name: bpy.props.StringProperty(name="Name")
|
||||
|
||||
def _execute(self, context):
|
||||
element = tool.Ifc.get().by_id(self.element)
|
||||
obj = tool.Ifc.get_object(element)
|
||||
element.Name = self.name
|
||||
if obj:
|
||||
tool.Root.set_object_name(obj, element)
|
||||
|
||||
def invoke(self, context, event):
|
||||
element = tool.Ifc.get().by_id(self.element)
|
||||
self.name = element.Name or "Unnamed"
|
||||
return context.window_manager.invoke_props_dialog(self)
|
||||
|
||||
def draw(self, context):
|
||||
self.layout.prop(self, "name")
|
||||
|
||||
|
||||
class DuplicateType(bpy.types.Operator, tool.Ifc.Operator):
|
||||
|
||||
@@ -161,8 +161,5 @@ class Root(blenderbim.core.tool.Root):
|
||||
|
||||
@classmethod
|
||||
def set_object_name(cls, obj, element):
|
||||
name = obj.name
|
||||
if "/" in name and name.split("/")[0][0:3] == "Ifc":
|
||||
name = "/".join(name.split("/")[1:])
|
||||
name = "{}/{}".format(element.is_a(), name)
|
||||
obj.name = name
|
||||
name = getattr(element, "Name", getattr(element, "AxisTag", None))
|
||||
obj.name = "{}/{}".format(element.is_a(), name or "Unnamed")
|
||||
|
||||
@@ -492,6 +492,9 @@ class TestUpdateDrawingName:
|
||||
drawing.does_file_exist("absolute_layout_uri").should_be_called().will_return(True)
|
||||
drawing.update_embedded_svg_location("absolute_layout_uri", "old_location", "new_location").should_be_called()
|
||||
|
||||
drawing.is_editing_sheets().should_be_called().will_return(True)
|
||||
drawing.import_sheets().should_be_called()
|
||||
|
||||
subject.update_drawing_name(ifc, drawing, drawing="drawing", name="name")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user