diff --git a/src/blenderbim/blenderbim/bim/module/cad/workspace.py b/src/blenderbim/blenderbim/bim/module/cad/workspace.py index d05c149e9b..b01b10bfdc 100644 --- a/src/blenderbim/blenderbim/bim/module/cad/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/cad/workspace.py @@ -141,9 +141,8 @@ class CadTool(WorkSpaceTool): and context.active_object.BIMRailingProperties.is_editing_path ): row = layout.row(align=True) - row.label(text="", icon="EVENT_SHIFT") - row.label(text="", icon="EVENT_Q") - row.operator("bim.cad_hotkey", text="Apply Railing Path").hotkey = "S_Q" + row.label(text="", icon=f"EVENT_TAB") + row.operator("bim.finish_editing_railing_path") row.operator("bim.cancel_editing_railing_path", icon="CANCEL", text="") elif ( @@ -152,9 +151,8 @@ class CadTool(WorkSpaceTool): and context.active_object.BIMRoofProperties.is_editing_path ): row = layout.row(align=True) - row.label(text="", icon="EVENT_SHIFT") - row.label(text="", icon="EVENT_Q") - row.operator("bim.cad_hotkey", text="Apply Roof Path").hotkey = "S_Q" + row.label(text="", icon=f"EVENT_TAB") + row.operator("bim.finish_editing_roof_path") row.operator("bim.cancel_editing_roof_path", icon="CANCEL", text="") row = layout.row(align=True) @@ -270,20 +268,6 @@ class CadHotkey(bpy.types.Operator): elif bpy.context.active_object.data.BIMMeshProperties.subshape_type == "AXIS": bpy.ops.bim.edit_extrusion_axis() - elif ( - (RailingData.is_loaded or not RailingData.load()) - and RailingData.data["parameters"] - and bpy.context.active_object.BIMRailingProperties.is_editing_path - ): - bpy.ops.bim.finish_editing_railing_path() - - elif ( - (RoofData.is_loaded or not RoofData.load()) - and RoofData.data["parameters"] - and bpy.context.active_object.BIMRoofProperties.is_editing_path - ): - bpy.ops.bim.finish_editing_roof_path() - def hotkey_S_R(self): if self.is_profile(): bpy.ops.bim.add_rectangle(x=self.props.x, y=self.props.y) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index ad706d579e..a34d22656a 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -803,6 +803,7 @@ class OverrideModeSetEdit(bpy.types.Operator): ): obj.select_set(False) continue + if usage_type == "PROFILE": if len(context.selected_objects) == 1: bpy.ops.bim.hotkey(hotkey="A_E", description="") @@ -811,12 +812,30 @@ class OverrideModeSetEdit(bpy.types.Operator): self.report({"INFO"}, "Only a single profile-based representation can be edited at a time.") obj.select_set(False) continue + + # TODO: refactor repetitive code + if tool.Pset.get_element_pset(element, "BBIM_Roof"): + if len(context.selected_objects) == 1: + bpy.ops.bim.enable_editing_roof_path() + return {"FINISHED"} + else: + self.report({"INFO"}, "Only a single profile-based representation can be edited at a time.") + obj.select_set(False) + continue + + if tool.Pset.get_element_pset(element, "BBIM_Railing"): + if len(context.selected_objects) == 1: + bpy.ops.bim.enable_editing_railing_path() + return {"FINISHED"} + else: + self.report({"INFO"}, "Only a single profile-based representation can be edited at a time.") + obj.select_set(False) + continue + if ( tool.Geometry.is_profile_based(obj.data) or usage_type == "LAYER3" or tool.Geometry.is_swept_profile(representation) - or tool.Pset.get_element_pset(element, "BBIM_Roof") - or tool.Pset.get_element_pset(element, "BBIM_Railing") ): if len(context.selected_objects) == 1: bpy.ops.bim.hotkey(hotkey="S_E", description="") @@ -944,9 +963,9 @@ class OverrideModeSetObject(bpy.types.Operator): if tool.Ifc.get_object(profile): # We are editing an arbitrary profile bpy.ops.bim.edit_arbitrary_profile() elif tool.Pset.get_element_pset(element, "BBIM_Railing"): - bpy.ops.bim.cad_hotkey(hotkey="S_Q") + bpy.ops.bim.finish_editing_railing_path() elif tool.Pset.get_element_pset(element, "BBIM_Roof"): - bpy.ops.bim.cad_hotkey(hotkey="S_Q") + bpy.ops.bim.finish_editing_roof_path() elif tool.Model.get_usage_type(element) == "PROFILE": bpy.ops.bim.edit_extrusion_axis() else: diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index fb0d11a79b..a17625d11b 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -212,7 +212,9 @@ class BimToolUI: ): # NOTE: should be above "active_representation_type" = "SweptSolid" check # because it could be a SweptSolid too - add_layout_hotkey_operator(cls.layout, "Edit Railing Path", "S_E", "") + row = cls.layout.row(align=True) + row.label(text="", icon=f"EVENT_TAB") + row.operator("bim.enable_editing_railing_path", text="Edit Railing Path") elif AuthoringData.data["active_representation_type"] == "SweptSolid": add_layout_hotkey_operator(cls.layout, "Edit Profile", "S_E", "") @@ -249,7 +251,9 @@ class BimToolUI: and RoofData.data["parameters"] and not context.active_object.BIMRoofProperties.is_editing_path ): - add_layout_hotkey_operator(cls.layout, "Edit Roof Path", "S_E", "") + row = cls.layout.row(align=True) + row.label(text="", icon=f"EVENT_TAB") + row.operator("bim.enable_editing_roof_path", text="Edit Roof Path") elif DecoratorData.get_ifc_text_data(bpy.context.object): add_layout_hotkey_operator(cls.layout, "Edit Text", "S_E", "")