blender-python学习

import bpy
bpy.ops.mesh.primitive_cube_add() #添加立方体

ops表示操作命令的代码,比如添加下面列表的一些命令
bpy.context
bpy.data
”."表示每一级
括号里面的都是立方体的属性,清空里面属性也是可以的,如果不知道属性,可以命令行输入bpy.ops.mesh.primitive_cube_add(,然后点控制台的自动补全。
for i in range(7):
print(iy
bpy. context.selected_objects[i].name = “g”

import bpy
bpy.ops.object.align(align_mode='OPT_1', relative_to='OPT_1',align_axis={'Z'})

放置到地面

import bpy
class fengfengToools(bpy.types.Operator):
    bl_idname = 'obj.dimian' #字符串不能有大写字母
    bl_label = '地面对齐‘
    # 编辑器不能写入中文,得建立txt文档 输入中文 ,然后复制粘贴进去。
    
    def execute(self,context):
        bpy.ops.object.align(align_mode='OPT_1', relative_to='OPT_1',align_axis={'Z'})
        return{'FINISHED'}
bpy.utils.register_class(fengfengToools)

然后 打开菜单偏好设置,里面第一个“界面”,找到并勾选“开发选项”,然后运行脚本,点击物体,按F3,出来搜索框,搜“地面对齐”点击,则放置在地面。

脚本->变成插件

命名是一次性的,怎么自动加载脚本呢->变成插件

bl_info = {
    "name": "地面对齐",
    "author": "kidominox",
    "version": (1, 0),
    "blender": (3, 0, 0),
    "location": "F3搜索这个命令",
    "description": "物体对齐到地面上",
    "warning": "",
    "doc_url": "",
    "category": "Object",
}
# 
import bpy
class fengfengToools(bpy.types.Operator):
    bl_idname = "obj.dimian"
    bl_label = "地面对齐"
    
    def execute(self,context):
        bpy.ops.object.align(align_mode='OPT_1',relative_to='OPT_1',align_axis={'Z'})
        return{'FINISHED'}

def register():
    bpy.utils.register_class(fengfengToools)
    
def unregister():
    bpy.utils.unregister_class(fengfengToools)
if __name__ == "__main__":
    register()

脚本变成按钮

bl_info = {
    "name": "地面对齐",
    "author": "kidominox",
    "version": (1, 0),
    "blender": (3, 0, 0),
    "location": "F3搜索这个命令",
    "description": "物体对齐到地面上",
    "warning": "",
    "doc_url": "",
    "category": "Object",
}
# 
import bpy
class fengfengToools(bpy.types.Operator):
    bl_idname = "obj.dimian"
    bl_label = "地面对齐"
    
    def execute(self,context):
        bpy.ops.object.align(align_mode='OPT_1',relative_to='OPT_1',align_axis={'Z'})
        return{'FINISHED'}

class kidominoxTools(bpy.types.Header):
    
    bl_space_type = 'INFO' # indicate
    
    def draw(self,context):
        self.layout.operator("obj.dimian")
        self.layout.operator("mesh.primitive_cube_add")
        #在命令中是bpy.ops.mesh.primitive_cube_add() 而mesh.primitive_cube_add是他的id
    
    
    
def register():
    bpy.utils.register_class(fengfengToools)
    bpy.utils.register_class(kidominoxTools)
    
def unregister():
    bpy.utils.unregister_class(fengfengToools)
    bpy.utils.unregister_class(kidominoxTools)

if __name__ == "__main__":
    register()

up主版本是2.83,但是我自己版本3.0.0出不来按钮。
放到上面的按钮:

class kidominoxTools(bpy.types.Header):
    
    bl_space_type = 'INFO' # indicate
    bl_space_type = 'TOPBAR'
    
    def draw(self,context):
    if context.region.alignment == 'RIGHT':
            self.layout.operator("obj.dimian")
            self.layout.operator("mesh.primitive_cube_add")

快速将命令设置按钮在界面上

在这里插入图片描述
先运行自己想要的命令变成id,比如运行后是bpy.ops.mesh.extrude_region_move(),这样id就是mesh.extrude_region_move,放到代码中即可。
清理按钮的话,则:在这里插入图片描述
study from blender-python教学

猜你喜欢

转载自blog.csdn.net/Carol_learning/article/details/121902673