Fix #3275. You can now rename types from the type manager.

This commit is contained in:
Dion Moult
2023-07-14 23:58:25 +10:00
parent d42aa7d8cb
commit c3c018283b
5 changed files with 32 additions and 7 deletions
@@ -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):
+2 -5
View File
@@ -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")
+3
View File
@@ -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")