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 = 2.0 # 桌面长度,单位:米
table_width = 1.5 # 桌面宽度,单位:米
table_thickness = 0.1 # 桌面厚度,单位:米
table_name = 'BedBase'
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.4 # 桌面厚度,单位:米
table_leg_name = 'BedLeg' # 桌面厚度,单位:米
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)