通过bpy.ops.’bl_idname’,我们可以调用操作符,如果这个操作符内置了参数(必须是bpy.props的子类参数),我们也可以向这个操作符传入参数:
num_x = 5num_y = 5for 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 bpyclass 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 callbpy.ops.object.simple_operator()
