随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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 addMirror(select_obj,
              mirror_name="Mirror_Modifier",
              axis=(True, False, False)):
     
    # 添加镜像修改器到桌腿
    bpy.ops.object.modifier_add(type='MIRROR')
    mirror_modifier = select_obj.modifiers[-1# 获取新添加的镜像修改器
    mirror_modifier.name = mirror_name  # 重命名镜像修改器
    bpy.context.object.modifiers[mirror_name].use_axis[0] = axis[0]
    bpy.context.object.modifiers[mirror_name].use_axis[1] = axis[1]
    bpy.context.object.modifiers[mirror_name].use_axis[2] = axis[2]
    #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 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 applayAllAmodify():
    bpy.ops.object.apply_all_modifiers()
  
  
# 选中并激活门对象
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 = 0.04  # 长度:4厘米
    belt_width = 0.02    # 宽度:2厘米
    belt_thickness = 0.003  # 厚度:0.3厘米
    belt_name= "Belt"
    # 创建皮带的基本形状
    wardrobe = create_cube(belt_name, (belt_length,belt_width,belt_thickness), (0, 0, 0))
     
    #创建镂空区域
    qudiao1 = create_cube("qudiao1", (belt_length/2,belt_width/4,belt_thickness), (0, belt_width/4, 0))
     
    select_and_activate_door(door_name="qudiao1")
     
    addMirror(select_obj=qudiao1,
              mirror_name="Mirror_Modifier",
              axis=(False,True,False))
     
    bool_diff(zhu_obj_name="Belt",jian_obj_name="qudiao1")
     
     
    select_and_activate_door(belt_name)
    #添加倒角
    addDaoJiao(select_obj=wardrobe)
      
  
     
      
  
      
  
if __name__ == '__main__':
    main()

  

posted on   大话人生  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2023-04-15 python获取文本中网址并判断是否可以正常访问
2022-04-15 requests请求上传文件时,值一定要是打开的文件-3
2022-04-15 接口自动化之requests-2
2022-04-15 pytest从入门到精通-1
2020-04-15 django保存图片到ImageField中
点击右上角即可分享
微信分享提示