通过bpy.ops.’bl_idname’,我们可以调用操作符,如果这个操作符内置了参数(必须是bpy.props的子类参数),我们也可以向这个操作符传入参数:
num_x = 5
num_y = 5
for x in range(0,num_x):
for y in range(0,num_y):
bpy.ops.mesh.primitive_monkey_add(size=2, enter_editmode=False, align='WORLD',
location=(x, y, 0),
scale=(1, 1, 1))
这个操作符可以输入bpy.ops.mesh.primitive_monkey_add
到控制台来获取其内部参数, 同样的,可以使用python的字典来传入对应参数
parms = {
size=2,
enter_editmode=False,
align='WORLD',
location=(x, y, 0),
scale=(1, 1, 1)
}
bpy.ops.mesh.primitive_monkey_add(**parms)
打包自己的操作符
操作符是可以被再次打包的,这样我们就能够得到一个我们自定义过的操作符,把它作为一个按钮放到我们想要放置的地方,以下是对默认添加猴头的操作符阵列化的一个操作
import bpy
class SimpleOperator(bpy.types.Operator):
"""Tooltip"""
bl_idname = "object.simple_operator"
bl_label = "Simple Object Operator"
num_x:bpy.props.IntProperty(name='X Number',default=5)
num_y:bpy.props.IntProperty(name='y Number',default=5)
def execute(self, context):
for x in range(0,self.num_x):
for y in range(0,self.num_x):
bpy.ops.mesh.primitive_monkey_add(size=2,
enter_editmode=False,
align='WORLD',location=(x, y, 0),
scale=(1, 1, 1))
return {'FINISHED'}
def register():
bpy.utils.register_class(SimpleOperator)
def unregister():
bpy.utils.unregister_class(SimpleOperator)
if __name__ == "__main__":
register()
# test call
bpy.ops.object.simple_operator()