首页 > 编程语言 >blender使用python创建长凳子模型

blender使用python创建长凳子模型

时间:2024-04-14 20:24:48浏览次数:13  
标签:name leg python 凳子 location table modifier open blender

import bpy
import math  # 导入 math 模块


#jianmo
def jianMo(l,w,h,name='CafeBody',location_x=0,location_y=0,location_z=0):
    # 定义咖啡馆的尺寸
    cafe_length = l  # 长度,单位:米
    cafe_width = w  # 宽度,单位:米
    cafe_height = h   # 高度,单位:米

    # 创建咖啡馆的主体(立方体)
    bpy.ops.mesh.primitive_cube_add(size=cafe_height, enter_editmode=False, location=(location_x, location_y, location_z))
    cafe_body = bpy.context.selected_objects[0]
    cafe_body.name = name
    
    # 设置咖啡馆主体的尺寸
    cafe_body.dimensions = (cafe_width, cafe_length, cafe_height)
    
    

    # 应用变换到咖啡馆主体
    bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
    
    return cafe_body

    
# 清除当前选中的所有对象
def clear_selected_objects():
    # 清除当前选中的所有对象
    bpy.context.selected_objects.clear()
    

#选中物体
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 set_zhouxiang_is_open(mirror_name,zhouxing_xiaobiao,is_open):
    if is_open:
        bpy.context.object.modifiers["Mirror_Modifier"].use_axis[int(zhouxing_xiaobiao)] = True
    else:
        bpy.context.object.modifiers["Mirror_Modifier"].use_axis[int(zhouxing_xiaobiao)] = False
            
            
#添加镜像修改器到物体
def addMirror(select_obj,
              mirror_name="Mirror_Modifier",
              is_open_zhouxian_x=False,
              is_open_zhouxian_y=True,
              is_open_zhouxian_z=False):
    # 添加镜像修改器到桌腿
    bpy.ops.object.modifier_add(type='MIRROR')
    mirror_modifier = select_obj.modifiers[-1]  # 获取新添加的镜像修改器
    mirror_modifier.name = mirror_name  # 重命名镜像修改器
    set_zhouxiang_is_open(mirror_name=mirror_name,zhouxing_xiaobiao=0,is_open=is_open_zhouxian_x)
    set_zhouxiang_is_open(mirror_name=mirror_name,zhouxing_xiaobiao=1,is_open=is_open_zhouxian_y)
    set_zhouxiang_is_open(mirror_name=mirror_name,zhouxing_xiaobiao=2,is_open=is_open_zhouxian_z)
    

    # 应用镜像修改器
    bpy.ops.object.modifier_apply(modifier=mirror_modifier.name, apply_as='DATA')
    
    return mirror_modifier


#添加倒角
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)
    
    





if __name__ == '__main__':
    table_length = 1.5  # 桌面长度,单位:米
    table_width = 0.4  # 桌面宽度,单位:米
    table_thickness = 0.05  # 桌面厚度,单位:米
    table_name = 'BenchSeat'
    table_location_x = 0
    table_location_y = 0
    table_location_z = 0
    
    table = jianMo(l=table_length,
    w=table_width ,
    h=table_thickness,
    name=table_name,
    location_x=table_location_x,
    location_y=table_location_y,
    location_z=table_location_z)
    
    #添加倒角
    addDaoJiao(select_obj=table)

    print("daojiao")
    table_leg_length = 0.05  # 桌面长度,单位:米
    table_leg_width = 0.05   # 桌面宽度,单位:米
    table_leg_thickness = 0.75  # 桌面厚度,单位:米
    table_leg_name = 'BenchLeg'  # 桌面厚度,单位:米
    table_leg_location_x=table_width/2-table_leg_width
    table_leg_location_y=-table_length/2+table_leg_length
    table_leg_location_z=-table_leg_thickness/2+table_thickness/2
    
    table_leg=jianMo(l=table_leg_length,
    w=table_leg_width ,
    h=table_leg_thickness,
    name=table_leg_name,
    location_x=table_leg_location_x,
    location_y=table_leg_location_y,
    location_z=table_leg_location_z)
    
    
    #清除当前选中的所有对象
    clear_selected_objects()
    
    #xuan
    selectObjByName(name_str=table_leg_name)
    
    #添加倒角
    addDaoJiao(select_obj=table_leg)
    
    # 添加镜像修改器到桌腿
    addMirror(select_obj=table_leg,
    mirror_name="Mirror_Modifier",
    is_open_zhouxian_x=True,
    is_open_zhouxian_y=True,
    is_open_zhouxian_z=False)

 

标签:name,leg,python,凳子,location,table,modifier,open,blender
From: https://www.cnblogs.com/jingzaixin/p/18134612

相关文章

  • 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......
  • python四则运算生成器
    合作伙伴:2252717在编程任务中,清晰地理解并规划设计思路是至关重要的。对于这个特定的四则运算题目生成器,目标是创建一个程序,能够随机生成包含两个运算符的数学题目,这些题目涉及100以内的数字,并确保所有生成的题目的答案都在0到100之间。以下是我在设计和实现这个程序时遵循的详细......
  • 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#高度,单位:米#......
  • 结对编程--四则运算(Python)
    合作伙伴:2252720`importrandomdefgenerate_expression():operators=['+','-','×','÷']#可用的运算符operator=random.choice(operators)#随机选择一个运算符ifoperator=='+':num1=random.randint(0,100)#生成第一......
  • 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#高度,单位:米#......
  • python+uwsgi警告
     1.出现这个警告是python没有安装uwsgi !!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!! norequestpluginisloaded,youwillnotbeabletomanagerequests. youmayneedtoinstallthepackageforyourlanguageofchoice,orsimplyloaditwith--plugin. !!......
  • Python3 YOLOv8 车牌号识别提取
    参考https://blog.csdn.net/Pan_peter/article/details/130465041(参考教程)https://wwwf.lanzout.com/iCY5N0uhltdg(car.pt已下载)https://github.com/ultralytics/ultralytics/issues/2046(可视化参数问题)https://cloud.tencent.com/developer/article/2214890(中文乱码问......
  • 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))#获取新创建的立方体对象......
  • Python面试
    Py生成器send的应用场景Py如何动态创建类socket如何解决粘包socket断点续传如何解决进程间通讯有哪些方式如何排查数据库慢的原因如何优化慢查询语甸ngnix为何单线程可数万并发?前端sonp跨域方案原理Python服务热更新方案......
  • python路径相关操作:os.path
    Windows路径格式importos#当前python文件位置:T:\ProgrammingPractice\python_path\test.py#给定的路径path=r'D:\AAA\BBB\CCC\x.jpg'#path='D:\\AAA\\BBB\\CCC\\x.jpg'#获取路径的目录部分dir=os.path.dirname(path)#获取最后一个目录名last......