Blender Python 脚本:Place/Connect 全局坐标的顶点
Blender Python Script: Place/Connect Vertices by Global Co-ordinance
要挤出顶点,在编辑模式下,您只需按 Ctr+RMB,Blender 会自动检测鼠标位置并在该位置放置一个新的连接顶点。
我不明白为什么我不能设置鼠标位置,然后在信息 window 中使用相同的功能,如下所示:
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
我需要这样,因为我的对象格式是全局协调的,我想避免与创建网格的低级函数交互,因为这是高级软件的脚本。
编辑>>>>
我尝试与操作员进行此操作:
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')
然而它returns同样的错误:
RuntimeError: Operator bpy.ops.mesh.dupli_extrude_cursor.poll() expected a view3d region & editmesh
当操作员执行其任务时,它会收到一个上下文 属性 告诉它诸如所选对象和它正在使用的 3D 视图之类的信息。当您 运行 在文本编辑器中编写脚本时,活动视口将成为 3d 建模运算符无法运行的文本编辑器。
可以override the context being sent to an operator, which allows us to run a script that works in the 3dviewport. Also note that the object needs to be in edit mode。
您也可以考虑从内部定义一个 operator and calling other operators。当您的操作员从 3d 视图中启动时,无论是搜索它、将其附加到快捷方式还是在面板中添加按钮,它都会有正确的上下文传递给其他操作员。
要挤出顶点,在编辑模式下,您只需按 Ctr+RMB,Blender 会自动检测鼠标位置并在该位置放置一个新的连接顶点。
我不明白为什么我不能设置鼠标位置,然后在信息 window 中使用相同的功能,如下所示:
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
我需要这样,因为我的对象格式是全局协调的,我想避免与创建网格的低级函数交互,因为这是高级软件的脚本。
编辑>>>>
我尝试与操作员进行此操作:
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')
然而它returns同样的错误:
RuntimeError: Operator bpy.ops.mesh.dupli_extrude_cursor.poll() expected a view3d region & editmesh
当操作员执行其任务时,它会收到一个上下文 属性 告诉它诸如所选对象和它正在使用的 3D 视图之类的信息。当您 运行 在文本编辑器中编写脚本时,活动视口将成为 3d 建模运算符无法运行的文本编辑器。
可以override the context being sent to an operator, which allows us to run a script that works in the 3dviewport. Also note that the object needs to be in edit mode。
您也可以考虑从内部定义一个 operator and calling other operators。当您的操作员从 3d 视图中启动时,无论是搜索它、将其附加到快捷方式还是在面板中添加按钮,它都会有正确的上下文传递给其他操作员。