首页 > 其他分享 >blender创建腰带模型

blender创建腰带模型

时间:2024-04-15 09:44:55浏览次数:22  
标签:obj name 创建 object 腰带 bpy modifier select blender

import bpy

import bpy

# 创建立方体并返回对象
def create_cube(name, dimensions, location, parent=None):
    # 执行添加立方体的操作
    bpy.ops.mesh.primitive_cube_add(size=dimensions[2], enter_editmode=False, location=location)
    # 选择新创建的立方体
    cube_object = bpy.context.selected_objects[0]
    # 设置立方体的名称
    cube_object.name = name
    # 设置立方体的尺寸
    cube_object.dimensions = dimensions
    
    # 应用变换
    bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
    # 如果提供了父对象,则将立方体设置为父对象的子对象
    if parent:
        cube_object.parent = parent
    return cube_object


#添加倒角
def addDaoJiao(select_obj):
    
    # 添加倒角修饰符
    bpy.ops.object.modifier_add(type='BEVEL')
    
    bevel_modifier = select_obj.modifiers[-1]  # 获取新添加的 dao jiao修改器
    
    bevel_modifier.name = "Bevel"

    # 设置倒角的宽度和分段数
    bevel_modifier.width = 0.03  # 倒角的宽度
    bevel_modifier.segments = 4  # 倒角的分段数
    

    # 应用倒角修饰符
    bpy.ops.object.modifier_apply(modifier=bevel_modifier.name)
    
    


# 添加阵列修改器
def add_array_modifier(select_obj, count=6, offset_list=[1.5,0,0]):
    # 添加阵列修饰符
    bpy.ops.object.modifier_add(type='ARRAY')
    
    # 获取新添加的阵列修饰符
    array_modifier = select_obj.modifiers[-1]
    
    # 设置阵列修饰符的参数
    array_modifier.name = "Array"
    array_modifier.count = count  # 设置重复的数量
    array_modifier.relative_offset_displace[0] = offset_list[0]  # 设置每个实例之间的偏移距离
    array_modifier.relative_offset_displace[1] = offset_list[1]  # 设置每个实例之间的偏移距离
    array_modifier.relative_offset_displace[2] = offset_list[2]  # 设置每个实例之间的偏移距离
    
    
    
    

    # 应用阵列修饰符
    bpy.ops.object.modifier_apply(modifier=array_modifier.name)





# 选中并激活门对象
def select_and_activate_door(door_name):
    # 遍历所有对象,找到指定名称的门对象
    for obj in bpy.data.objects:
        if obj.name == door_name:
            # 选择对象
            obj.select_set(True)
            # 激活对象
            bpy.context.view_layer.objects.active = obj
            return obj # 已找到并激活对象,退出函数
        
#选中物体
def selectObjByName(name_str):
    #选中名为"CafeBody"的对象
    for i in bpy.data.objects:
        if i.name == name_str:
            # 找到对象后,执行相应的操作
            print("找到名为 %s 的对象" % name_str)
            i.select_set(state=True)
            
#进行布尔减去运算
def bool_diff(zhu_obj_name,jian_obj_name):
    select_and_activate_door(door_name=zhu_obj_name)
    selectObjByName(name_str=jian_obj_name)
    #进行布尔运算
    bpy.ops.btool.boolean_diff()
        

# 创建UV球体并返回对象
def create_uv_sphere(name, radius, location, segments=32, parent=None):
    # 执行添加UV球体的操作,并设置细分程度
    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, segments=segments, enter_editmode=False, location=location, scale=(1, 1, 1))
    # 选择新创建的UV球体
    sphere_object = bpy.context.selected_objects[0]
    # 设置UV球体的名称
    sphere_object.name = name
    
    # 如果提供了父对象,则将UV球体设置为父对象的子对象
    if parent:
        sphere_object.parent = parent
    return sphere_object

# 主函数
def main():
    
    belt_length = 1  # 长度:100厘米
    belt_width = 0.035    # 宽度:3.5厘米
    belt_thickness = 0.003  # 厚度:0.3厘米
    belt_hole_diameter = 0.003  # 孔直径:1厘米
    belt_hole_spacing = 0.1 # 孔间距:10厘米
    name= "Belt"
    
    # 创建皮带的基本形状
    wardrobe = create_cube("Belt", (belt_length,belt_width,belt_thickness), (0, 0, 0))
    #添加倒角
    addDaoJiao(select_obj=wardrobe)
    

    # 定义UV球体的参数
    radius = belt_hole_diameter  # 半径:1米,可以根据需要调整
    location = (-belt_length/2+belt_length/32, 0, 0)  # 位置
    segments = 32  # 细分程度,这个值越高,球体表面的孔径就越小

    # 创建UV球体模型
    uv_sphere = create_uv_sphere("UVSphere", radius, location, segments)
    
    select_obj = select_and_activate_door(door_name="UVSphere")

    # 调用函数添加阵列修改器
    add_array_modifier(select_obj=bpy.context.active_object, count=6, offset_list=[1.5,0,0])

    # 打印完成信息
    print("阵列修改器添加完成。")
    
    bool_diff(zhu_obj_name="Belt",jian_obj_name="UVSphere")
    

    

if __name__ == '__main__':
    main()

  

标签:obj,name,创建,object,腰带,bpy,modifier,select,blender
From: https://www.cnblogs.com/jingzaixin/p/18135178

相关文章

  • ABP -Vnext框架一步一步入门落地教程——使用ABP -Vnext创建一个WEBAPI接口(二)
    人生需要指引,而复制是成功最快的方式,兄弟们让我们发车吧————代码大牛ljy开发主题:何谓开发应用服务端在官方开发教程这一段的内容叫做开发应用服务端,作为现在前后端分离的开发模式来说,一个应用就分为前端页面框架和后端API,页面框架调用WEBAPI实现业务就完事了。所以咱们今天......
  • blender创建圆柱并进入编辑模式得代码
    importbpy#定义创建圆柱体并进入编辑模式的函数defcreate_cylinder_and_edit(radius,depth,location):#创建圆柱体bpy.ops.mesh.primitive_cylinder_add(radius=radius,depth=depth,enter_editmode=False,location=location)#选择新创建的圆......
  • blender使用python创建长凳子模型
    importbpyimportmath#导入math模块#jianmodefjianMo(l,w,h,name='CafeBody',location_x=0,location_y=0,location_z=0):#定义咖啡馆的尺寸cafe_length=l#长度,单位:米cafe_width=w#宽度,单位:米cafe_height=h#高度,单位:米#......
  • blender使用python创建柜子模型
    importbpy#创建立方体并返回对象defcreate_cube(name,dimensions,location,parent=None):#执行添加立方体的操作bpy.ops.mesh.primitive_cube_add(size=dimensions[2],enter_editmode=False,location=location)#选择新创建的立方体cube_object......
  • blender使用python创建床模型
    importbpyimportmath#导入math模块#jianmodefjianMo(l,w,h,name='CafeBody',location_x=0,location_y=0,location_z=0):#定义咖啡馆的尺寸cafe_length=l#长度,单位:米cafe_width=w#宽度,单位:米cafe_height=h#高度,单位:米#......
  • blender使用python创建桌子模型
    importbpyimportmath#导入math模块#jianmodefjianMo(l,w,h,name='CafeBody',location_x=0,location_y=0,location_z=0):#定义咖啡馆的尺寸cafe_length=l#长度,单位:米cafe_width=w#宽度,单位:米cafe_height=h#高度,单位:米#......
  • 通过Supplier创建对象示例
    通过Supplier接口创建对象,具体code如下:packagecom.gientech.supplier;publicclassCar{privateStringname;publicCar(){}publicCar(Stringname){this.name=name;}publicStringgetName(){returnname;......
  • blender使用python创建立方体并应用变换代码
    importbpy#定义咖啡馆的尺寸cafe_width=10#宽度,单位:米cafe_length=15#长度,单位:米cafe_height=3#高度,单位:米#创建咖啡馆的主体(立方体)bpy.ops.mesh.primitive_cube_add(size=10,enter_editmode=False,location=(0,0,0))#获取新创建的立方体对象......
  • 在Linux中,如何创建、检查和修复文件系统?
    在Linux中,创建、检查和修复文件系统是磁盘管理和维护的重要部分。以下是使用常用命令行工具进行这些操作的步骤:1.创建文件系统创建分区:使用fdisk或parted命令创建一个新的磁盘分区。sudofdisk/dev/sdx在fdisk提示符下,使用n创建新分区,w写入分区表并退出。格式化分区:......
  • 2.创建Qt项目
    2.创建Qt项目2.1使用向导创建打开QtCreator界面选择NewProject或者选择菜单栏【文件】-【新建文件或项目】菜单项弹出NewProject对话框,选择QtWidgetsApplication,选择【Choose】按钮,弹出如下对话框设置项目名称和路径,按照向导进行下一步,选择编译套件向导会默认......