Blender Script Fehlermeldung was ist das Problem?
Hallo ich kriege durchgehend folgened Fehlermeldung:
Python: Traceback (most recent call last):
File "C:\Users\meinuser\OneDrive\Dokumente\wasprivates\Diagramm1.blend\script.py", line 105, in <module>
File "C:\Program Files\Blender Foundation\Blender 3.5\3.5\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.mesh.loopcut_slide.poll() expected a view3d region & editmesh
Es geht offensichtlich um eine Loopcut_slide funktion die ich brauche um einen Mesh in einer Kurve entlang zu biegen oder wie man es nennen kann.
Also hier der Skript:
Musste es in einen Pastebin zu machen, da mit dem Code zu viele Zeichen in der Frage beschreibung sind.
Schonmal Danke im voraus!
1 Antwort
In Ihrem Code versuchen Sie, den `bpy.ops.mesh.loopcut_slide` Operator in einem Kontext auszuführen, der wahrscheinlich nicht das aktive 3D-View-Fenster ist. Der `bpy.ops.mesh.loopcut_slide` Operator erfordert ein aktives 3D-View-Fenster, da es auf die Position des Mauszeigers angewiesen ist. Daher gibt es einen RuntimeError.
Ihr Code erzeugt ein Override-Dictionary, um den Kontext für den Operator zu simulieren, aber es scheint, dass der Operator immer noch nicht den erforderlichen Kontext erhält. Ein möglicher Grund dafür könnte sein, dass das erste 3D-View-Fenster, das Ihr Code findet, nicht das Fenster ist, in dem Sie den Operator ausführen möchten.
Sie könnten versuchen, eine Schleife zu verwenden, um durch alle 3D-View-Fenster zu iterieren und den Operator in jedem auszuführen, um zu sehen, ob das das Problem löst. So könnte das aussehen:
for area in bpy.context.screen.areas:
if area.type == 'VIEW_3D':
override = {'window': bpy.context.window,
'screen': bpy.context.screen,
'area' : area,
'region': area.regions[4],
'scene' : bpy.context.scene,
}
bpy.ops.mesh.loopcut_slide(override, MESH_OT_loopcut={"number_cuts": 15, "smoothness": 0, "falloff": 'INVERSE_SQUARE', "object_index": 0, "edge_index": 11, "mesh_select_mode_init": (False, False, True)}, TRANSFORM_OT_edge_slide={"value": 0, "single_side": False, "use_even": False, "flipped": False, "use_clamp": True, "mirror": True, "snap": False, "snap_elements": {'INCREMENT'}, "use_snap_project": False, "snap_target": 'CLOSEST', "use_snap_self": True, "use_snap_edit": True, "use_snap_nonedit": True, "use_snap_selectable": False, "snap_point": (0, 0, 0), "correct_uv": True, "release_confirm": False, "use_accurate": False})
Beachten Sie jedoch, dass einige Funktionen von Blender, insbesondere diejenigen, die von der Benutzeroberfläche abhängen, nicht gut geeignet sind, um in Skripten ausgeführt zu werden. Im Allgemeinen sollten Sie versuchen, Skripte zu schreiben, die auf niedrigere Level Blender APIs zugreifen, anstatt auf Operationen, die von der Benutzeroberfläche abhängen.
In Ihrem Fall könnten Sie in Betracht ziehen, die Bmesh-API zu verwenden, um die Schleifenschnitte manuell durchzuführen, anstatt den `bpy.ops.mesh.loopcut_slide` Operator zu verwenden. Die Bmesh-API ist leistungsfähiger und flexibler als die `bpy.ops.mesh` Operationen und ist in der Regel besser geeignet für Skripterstellung.
Ich bin mir zu 80% sicher dass diese Antwort möglicherweise von chatgpt geschrieben worden ist falls ich falsch liege tut mir es wirklich leid aber werde mich nicht so leicht überzeugen lassen und ich habe das Problem da bereits herausgefunden. Es war schon lange im 3D_Viewmode es ging nämlich nicht in den editmode weil ich einen falschen (wahrscheinlich veraltet) befehl benutzt habe und chatgpt erkennt nicht weil sein wissensstand bei 2021 september ist und naja blender hat den befehl bei ausführen des skripts einfach übersprungen(nicht in edit mode gegangen) und hat auch keine fehlermeldung ausgegeben. Das ist meine vermutung.
Aber danke für die mühe du bist nämlich der einzige der überhaupt geantwortet hat dafür bin ich dankbar!