Blender Script Fehlermeldung was ist das Problem?

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.

Fischkopf289 
Fragesteller
 22.06.2023, 07:17

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!

0