from build123d import * from b3dkit import dovetail from b3dkit import Point def split_with_b3dkit_point(): # 创建零件 part Part() Box(100, 50, 30) # 使用 b3dkit 的 Point 类 start_point Point(0, -25) end_point Point(0, 25) try: # 所以需要额外指定 Z 范围或者使用不同的调用方式 part1 dovetail.dovetail_subpart(partpart, startstart_point, endend_point, sectiondovetail.DovetailPart.TAIL, styledovetail.DovetailStyle.SNUGTAIL, slot_count2, depth3, tolerance0.2) part2 part - part1 export_stl(part1, part1.stl) export_stl(part2, part2.stl) return part1, part2 except Exception as e: print(fPoint 方式失败: {e}) return None if __name__ __main__: # 显示可用函数帮助调试 print(\n可用的 dovetail 模块函数:) available_funcs [f for f in dir(dovetail) if not f.startswith(_)] for func in available_funcs[:10]: # 只显示前10个 print(f - {func}) print(\n开始拆件...\n) result split_with_b3dkit_point() print(\n完成)生成卡扣from build123d import * from b3dkit import dovetail, Point # 1. 创建或导入你的模型 part Part() Box(100, 50, 30) # 2. 使用 dovetail 做基础切割这里只是切开不加榫卯 # 你可以调整 style 或参数来实现简单切割 start_point Point(-50, -25) end_point Point(50, 25) # 使用 dovetail 只是为了切开这里可以不使用 SNUGTAIL或者后续再调整 part1 dovetail.dovetail_subpart( partpart, startstart_point, endend_point, sectiondovetail.DovetailPart.TAIL, styledovetail.DovetailStyle.TRADITIONAL, # 用传统方式先切开 slot_count1, depth5, tolerance0.2 ) part2 part - part1 # 3. 手动为两个零件添加卡扣特征 # 获取切割面这里需要根据你的零件实际情况调整面的选取逻辑 # 假设 part1 和 part2 的切割面是面索引为 0 的面 face1 part1.faces()[0] face2 part2.faces()[0] # 在面中心添加一个圆柱形卡扣Pin pin Cylinder(radius2, height5, align(Align.CENTER, Align.CENTER, Align.MIN)) pin Cylinder(2, 5) # ✅ 正确写法直接调用 locate 方法 pin_part pin.locate(Location(face1.center())) part1_with_pin part1 pin_part # 在另一个零件上添加对应的孔Socket hole Cylinder(radius2.2, height5, align(Align.CENTER, Align.CENTER, Align.MAX)) hole_part hole.locate(Location(face2.center())) part2_with_hole part2 - hole_part # 导出最终带卡扣的零件 export_stl(part1_with_pin, part1_with_click.stl) export_stl(part2_with_hole, part2_with_click.stl)
b3dkit 生成连接器
发布时间:2026/5/22 3:59:21
from build123d import * from b3dkit import dovetail from b3dkit import Point def split_with_b3dkit_point(): # 创建零件 part Part() Box(100, 50, 30) # 使用 b3dkit 的 Point 类 start_point Point(0, -25) end_point Point(0, 25) try: # 所以需要额外指定 Z 范围或者使用不同的调用方式 part1 dovetail.dovetail_subpart(partpart, startstart_point, endend_point, sectiondovetail.DovetailPart.TAIL, styledovetail.DovetailStyle.SNUGTAIL, slot_count2, depth3, tolerance0.2) part2 part - part1 export_stl(part1, part1.stl) export_stl(part2, part2.stl) return part1, part2 except Exception as e: print(fPoint 方式失败: {e}) return None if __name__ __main__: # 显示可用函数帮助调试 print(\n可用的 dovetail 模块函数:) available_funcs [f for f in dir(dovetail) if not f.startswith(_)] for func in available_funcs[:10]: # 只显示前10个 print(f - {func}) print(\n开始拆件...\n) result split_with_b3dkit_point() print(\n完成)生成卡扣from build123d import * from b3dkit import dovetail, Point # 1. 创建或导入你的模型 part Part() Box(100, 50, 30) # 2. 使用 dovetail 做基础切割这里只是切开不加榫卯 # 你可以调整 style 或参数来实现简单切割 start_point Point(-50, -25) end_point Point(50, 25) # 使用 dovetail 只是为了切开这里可以不使用 SNUGTAIL或者后续再调整 part1 dovetail.dovetail_subpart( partpart, startstart_point, endend_point, sectiondovetail.DovetailPart.TAIL, styledovetail.DovetailStyle.TRADITIONAL, # 用传统方式先切开 slot_count1, depth5, tolerance0.2 ) part2 part - part1 # 3. 手动为两个零件添加卡扣特征 # 获取切割面这里需要根据你的零件实际情况调整面的选取逻辑 # 假设 part1 和 part2 的切割面是面索引为 0 的面 face1 part1.faces()[0] face2 part2.faces()[0] # 在面中心添加一个圆柱形卡扣Pin pin Cylinder(radius2, height5, align(Align.CENTER, Align.CENTER, Align.MIN)) pin Cylinder(2, 5) # ✅ 正确写法直接调用 locate 方法 pin_part pin.locate(Location(face1.center())) part1_with_pin part1 pin_part # 在另一个零件上添加对应的孔Socket hole Cylinder(radius2.2, height5, align(Align.CENTER, Align.CENTER, Align.MAX)) hole_part hole.locate(Location(face2.center())) part2_with_hole part2 - hole_part # 导出最终带卡扣的零件 export_stl(part1_with_pin, part1_with_click.stl) export_stl(part2_with_hole, part2_with_click.stl)