首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Blender Python脚本:通过全局协调放置/连接顶点

Blender Python脚本:通过全局协调放置/连接顶点
EN

Stack Overflow用户
提问于 2019-12-17 08:12:06
回答 1查看 427关注 0票数 0

要在编辑模式下挤出顶点,只需简单地使用Ctr+RMB,混合器就会自动检测鼠标位置,并在该位置放置一个新的连接顶点。

我不明白为什么我不能设置鼠标位置,然后在信息窗口中使用相同的功能,如下所示:

bpy.context.scene.cursor.location = (0.0, 0.0, 0.0) bpy.context.scene.cursor.location = (1,1,1) bpy.ops.mesh.dupli_extrude_cursor(rotate_source=True)

当我运行该命令时,我得到以下错误:

RuntimeError: Operator bpy.ops.mesh.dupli_extrude_cursor.poll() expected a view3d region & editmesh

我需要这种方式,因为我的对象的格式是全局协调的,我想避免与创建网格的低级函数交互,因为这是一个用于高级软件的脚本。

EDIT>>>>

我用一个操作员尝试了一下:

代码语言:javascript
运行
复制
import bpy


class MyExtrude(bpy.types.Operator):
    bl_idname = "wm.myextrude"
    bl_label = "Extrude Operator"



    def invoke(self, context, event):
        bpy.context.scene.cursor.location = (1,1,1)
        bpy.ops.mesh.dupli_extrude_cursor(rotate_source=True)
        return {'FINISHED'}


#weird workaround
classes = (MyExtrude,

          )

register, unregister = bpy.utils.register_classes_factory(classes)


if __name__ == "__main__":
    register()


bpy.ops.wm.myextrude('INVOKE_DEFAULT')

但是,它会返回相同的错误:

RuntimeError: Operator bpy.ops.mesh.dupli_extrude_cursor.poll() expected a view3d region & editmesh

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-18 14:06:02

当操作员执行其任务时,它会收到一个上下文属性,告诉它所选对象以及它在哪个3D视图中工作。在文本编辑器中运行脚本时,活动视口将成为文本编辑器,其中3d建模操作符无法工作。

可以override the context the sent to an operator,这允许我们运行一个在3dviewport中工作的脚本。另请注意,该对象需要为in edit mode

您还可以考虑从内部定义operatorcalling other operators。当你的操作符从3d视图中启动时,无论是通过搜索它,将它附加到快捷方式还是在面板中添加按钮,它都将具有正确的上下文以传递给其他操作符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59365940

复制
相关文章

相似问题

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