mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
New context override method for setting viewport tools #3876
This commit is contained in:
@@ -421,7 +421,7 @@ class EnableEditingBoundaryGeometry(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_boundary_geometry(context))
|
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_boundary_geometry(context))
|
||||||
if not bpy.app.background:
|
if not bpy.app.background:
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -961,7 +961,7 @@ class EnableEditingExtrusionAxis(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_extrusion_axis(context))
|
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_extrusion_axis(context))
|
||||||
if not bpy.app.background:
|
if not bpy.app.background:
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -455,7 +455,7 @@ class EnableEditingRailingPath(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
if bpy.context.active_object.mode != "EDIT":
|
if bpy.context.active_object.mode != "EDIT":
|
||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: cancel_editing_railing_path(context))
|
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: cancel_editing_railing_path(context))
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|||||||
@@ -649,7 +649,7 @@ class EnableEditingRoofPath(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
if bpy.context.active_object.mode != "EDIT":
|
if bpy.context.active_object.mode != "EDIT":
|
||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
|
|
||||||
def mark_preview_edges(bm, bew_verts, new_edges, new_faces):
|
def mark_preview_edges(bm, bew_verts, new_edges, new_faces):
|
||||||
preview_layer = bm.edges.layers.int["BBIM_preview"]
|
preview_layer = bm.edges.layers.int["BBIM_preview"]
|
||||||
|
|||||||
@@ -625,7 +625,7 @@ class EnableEditingExtrusionProfile(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_extrusion_profile(context))
|
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_extrusion_profile(context))
|
||||||
if not bpy.app.background:
|
if not bpy.app.background:
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ class EnableEditingArbitraryProfile(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
tool.Blender.select_and_activate_single_object(context, obj)
|
tool.Blender.select_and_activate_single_object(context, obj)
|
||||||
bpy.ops.object.mode_set(mode="EDIT")
|
bpy.ops.object.mode_set(mode="EDIT")
|
||||||
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_arbitrary_profile(context))
|
ProfileDecorator.install(context, exit_edit_mode_callback=lambda: disable_editing_arbitrary_profile(context))
|
||||||
bpy.ops.wm.tool_set_by_id(tool.Blender.get_viewport_context(), name="bim.cad_tool")
|
tool.Blender.set_viewport_tool("bim.cad_tool")
|
||||||
|
|
||||||
|
|
||||||
def disable_editing_arbitrary_profile(context):
|
def disable_editing_arbitrary_profile(context):
|
||||||
|
|||||||
@@ -185,6 +185,11 @@ class Blender:
|
|||||||
for attr in VIEWPORT_ATTRIBUTES:
|
for attr in VIEWPORT_ATTRIBUTES:
|
||||||
setattr(region_3d, attr, data[attr])
|
setattr(region_3d, attr, data[attr])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_viewport_tool(cls, tool_name):
|
||||||
|
with bpy.context.temp_override(**tool.Blender.get_viewport_context()):
|
||||||
|
bpy.ops.wm.tool_set_by_id(name=tool_name)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_shader_editor_context(cls):
|
def get_shader_editor_context(cls):
|
||||||
for screen in bpy.data.screens:
|
for screen in bpy.data.screens:
|
||||||
|
|||||||
Reference in New Issue
Block a user