mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +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 export_ifc
|
||||
from pathlib import Path
|
||||
from bpy.app.handlers import persistent
|
||||
|
||||
|
||||
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)
|
||||
|
||||
def execute(self, context):
|
||||
if self.should_start_fresh_session:
|
||||
bpy.ops.wm.read_homefile()
|
||||
|
||||
@persistent
|
||||
def load_handler(*args):
|
||||
bpy.app.handlers.load_post.remove(load_handler)
|
||||
if tool.Blender.is_default_scene():
|
||||
for obj in bpy.data.objects:
|
||||
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():
|
||||
return {"FINISHED"}
|
||||
context.scene.BIMProperties.ifc_file = self.get_filepath()
|
||||
@@ -592,7 +608,8 @@ class LoadProject(bpy.types.Operator, IFCFileSelector):
|
||||
context.scene.BIMProjectProperties.total_elements = len(tool.Ifc.get().by_type("IfcElement"))
|
||||
if not self.is_advanced:
|
||||
bpy.ops.bim.load_project_elements()
|
||||
return {"FINISHED"}
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
def invoke(self, context, event):
|
||||
context.window_manager.fileselect_add(self)
|
||||
|
||||
Reference in New Issue
Block a user