首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >blender 2.92 python重写

blender 2.92 python重写
EN

Stack Overflow用户
提问于 2021-04-07 22:33:37
回答 1查看 395关注 0票数 0

关于这个问题,我已经看到了相当多的问题,但我还不能理解它。

所以这里有一个具体的例子。

我创建了一个立方体,并在编辑模式下添加了循环剪切。不客气!

我从info窗口复制代码并在脚本中试用,得到不祥的RuntimeError: Operator bpy.ops.mesh.loopcut_slide.poll()预期的view3d region & editmesh错误消息。

我现在明白了,它首先是通过重写来给python提供正确的上下文。可惜,我不知道该怎么做!

代码如下:

代码语言:javascript
复制
import bpy
import os

os.system("cls")

# remove the default cube...
objs = bpy.data.objects
for obj in objs:
    if obj.name.find("Cube") == 0:
        bpy.data.objects.remove(obj, do_unlink=True)

# add a cube!
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=True, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
# do something to it to be sure that we have it...
bpy.data.objects['Cube'].scale[0] = 10

# THE CODE BELOW GIVES THE RuntimeError: Operator bpy.ops.mesh.loopcut_slide.poll() expected a view3d region & editmesh error message.

# What is the override code I have to use to fix it????????

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":16, "smoothness":0, "falloff":'INVERSE_SQUARE', "object_index":0, "edge_index":4, "mesh_select_mode_init":(True, False, False)}, TRANSFORM_OT_edge_slide={"value":0, "single_side":False, "use_even":False, "flipped":False, "use_clamp":True, "mirror":True, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":True, "release_confirm":False, "use_accurate":False})
EN

回答 1

Stack Overflow用户

发布于 2021-05-17 16:49:11

代码语言:javascript
复制
import bpy      
import os

os.system("cls")


objs = bpy.data.objects
for obj in objs:
    if obj.name.find("Cube") == 0:
        bpy.data.objects.remove(obj, do_unlink=True)

# add a cube!
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=True, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
# do something to it to be sure that we have it...
bpy.data.objects['Cube'].scale[0] = 10



for area in bpy.context.screen.areas:
        if area.type == 'VIEW_3D':
            for region in area.regions:
                if region.type == 'WINDOW':
                    override = {'area': area, 'region': region, 'edit_object':bpy.context.edit_object}


                    bpy.ops.mesh.loopcut_slide(override,MESH_OT_loopcut={"number_cuts":16, "smoothness":0, "falloff":'INVERSE_SQUARE', "object_index":0, "edge_index":4, "mesh_select_mode_init":(True, False, False)}, TRANSFORM_OT_edge_slide={"value":0, "single_side":False, "use_even":False, "flipped":False, "use_clamp":True, "mirror":True, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":True, "release_confirm":False, "use_accurate":False})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66988302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档