mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-26 18:21:59 +00:00
Fixing errors on loading ifc after ef8f82501
The error was:
RuntimeError: Operator bpy.ops.object.editmode_toggle.poll() failed, context is incorrect
Location: C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py:113
Traceback (most recent call last):
File "\3.6\scripts\addons\blenderbim\bim\module\project\operator.py", line 594, in execute
bpy.ops.bim.load_project_elements()
File "C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py", line 113, in __call__
ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: Python: Traceback (most recent call last):
File "\3.6\scripts\addons\blenderbim\bim\module\project\operator.py", line 653, in execute
ifc_importer.execute()
File "\3.6\scripts\addons\blenderbim\bim\import_ifc.py", line 265, in execute
self.clean_mesh()
File "\3.6\scripts\addons\blenderbim\bim\import_ifc.py", line 1347, in clean_mesh
bpy.ops.object.editmode_toggle(context_override)
File "C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py", line 111, in __call__
ret = _op_call(self.idname_py(), C_dict, kw, C_exec, C_undo)
RuntimeError: Operator bpy.ops.object.editmode_toggle.poll() failed, context is incorrect
Location: C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py:113
This commit is contained in:
@@ -36,6 +36,7 @@ from blenderbim.bim.ui import IFCFileSelector
|
|||||||
from blenderbim.bim import import_ifc
|
from blenderbim.bim import import_ifc
|
||||||
from blenderbim.bim import export_ifc
|
from blenderbim.bim import export_ifc
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from bpy.app.handlers import persistent
|
||||||
|
|
||||||
|
|
||||||
class NewProject(bpy.types.Operator):
|
class NewProject(bpy.types.Operator):
|
||||||
@@ -578,13 +579,28 @@ class LoadProject(bpy.types.Operator, IFCFileSelector):
|
|||||||
should_start_fresh_session: bpy.props.BoolProperty(name="Should Start Fresh Session", default=True)
|
should_start_fresh_session: bpy.props.BoolProperty(name="Should Start Fresh Session", default=True)
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
if self.should_start_fresh_session:
|
@persistent
|
||||||
bpy.ops.wm.read_homefile()
|
def load_handler(*args):
|
||||||
|
bpy.app.handlers.load_post.remove(load_handler)
|
||||||
if tool.Blender.is_default_scene():
|
if tool.Blender.is_default_scene():
|
||||||
for obj in bpy.data.objects:
|
for obj in bpy.data.objects:
|
||||||
bpy.data.objects.remove(obj)
|
bpy.data.objects.remove(obj)
|
||||||
|
self.finish_loading_project(context)
|
||||||
|
|
||||||
|
if self.should_start_fresh_session:
|
||||||
|
# WARNING: wm.read_homefile clears context
|
||||||
|
# which could lead to some operators to fail:
|
||||||
|
# https://blender.stackexchange.com/a/282558/135166
|
||||||
|
# So we continue using the load_post handler
|
||||||
|
# thats triggered when context is already restored
|
||||||
|
bpy.app.handlers.load_post.append(load_handler)
|
||||||
|
bpy.ops.wm.read_homefile()
|
||||||
|
return {"FINISHED"}
|
||||||
|
else:
|
||||||
|
return self.finish_loading_project(context)
|
||||||
|
|
||||||
|
|
||||||
|
def finish_loading_project(self, context):
|
||||||
if not self.is_existing_ifc_file():
|
if not self.is_existing_ifc_file():
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
context.scene.BIMProperties.ifc_file = self.get_filepath()
|
context.scene.BIMProperties.ifc_file = self.get_filepath()
|
||||||
@@ -594,6 +610,7 @@ class LoadProject(bpy.types.Operator, IFCFileSelector):
|
|||||||
bpy.ops.bim.load_project_elements()
|
bpy.ops.bim.load_project_elements()
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
def invoke(self, context, event):
|
def invoke(self, context, event):
|
||||||
context.window_manager.fileselect_add(self)
|
context.window_manager.fileselect_add(self)
|
||||||
return {"RUNNING_MODAL"}
|
return {"RUNNING_MODAL"}
|
||||||
|
|||||||
Reference in New Issue
Block a user