b3dkit 生成连接器

python 复制代码
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(part=part, start=start_point, end=end_point, section=dovetail.DovetailPart.TAIL, style=dovetail.DovetailStyle.SNUGTAIL, slot_count=2, depth=3, tolerance=0.2)

        part2 = part - part1
        export_stl(part1, "part1.stl")
        export_stl(part2, "part2.stl")

        return part1, part2

    except Exception as e:
        print(f"Point 方式失败: {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完成!")

生成卡扣:

python 复制代码
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(
    part=part,
    start=start_point,
    end=end_point,
    section=dovetail.DovetailPart.TAIL,
    style=dovetail.DovetailStyle.TRADITIONAL, # 用传统方式先切开
    slot_count=1,
    depth=5,
    tolerance=0.2
)

part2 = part - part1
# 3. 手动为两个零件添加卡扣特征
# 获取切割面(这里需要根据你的零件实际情况调整面的选取逻辑)
# 假设 part1 和 part2 的切割面是面索引为 0 的面
face1 = part1.faces()[0]
face2 = part2.faces()[0]

# 在面中心添加一个圆柱形卡扣(Pin)
pin = Cylinder(radius=2, height=5, 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(radius=2.2, height=5, 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')
相关推荐
大腾智能3 小时前
模型打不开、看不了?拖进3D一览通试试
3d·企业数字化转型·cad看图·三维模型查看
LONGZETECH3 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
lialaka4 小时前
「未来星途(Future_Odyssey)」——全语音_3D_AI_具身交互智能数字教官与全双工星际科普沉浸舱[1]
人工智能·3d·交互
科技大视界20 小时前
非接触3D形貌测量:按样品类型选设备指南
3d
柒木森20 小时前
AAAI 2026 | Arbi-3DGSR:任意倍率 3D 高斯超分辨率
3d
七牛云行业应用1 天前
用 Codex 操控 Blender 做 3D 场景:从安装 addon 到跑通第一条指令
人工智能·3d·ai编程·blender
PHOSKEY1 天前
FPC精密测量与GL-8000系列3D线激光轮廓测量仪在手机制造中的应用
3d·智能手机·制造
玖玥拾1 天前
Unity 3D 笔记(十一)UI 框架进阶:栈弹窗交互、BasePanel 基类虚方法、DoTween 界面动画
笔记·3d·unity
数智工坊1 天前
RehearseVLA深度解析:基于物理一致世界模型的VLA强化学习后训练框架
人工智能·深度学习·3d·机器人
图扑数字孪生1 天前
图扑软件携手其域创新:3DGS 高斯泼溅智慧钢铁
3d·数字孪生·3dgs·高斯泼溅·智慧钢厂