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')
相关推荐
探物 AI16 天前
【3D·感知】从PointNet到PointPillars:如何让自动驾驶汽车“实时“看见3D世界?
3d·自动驾驶·汽车
苏州邦恩精密16 天前
GOM三维扫描在制造中的真实价值:让“修模”从经验动作变成数据动作
人工智能·科技·机器学习·3d·自动化·制造
YHHLAI16 天前
CSS 3D 硬核解析:四个属性手写旋转立方体
前端·css·3d
云飞云共享云桌面16 天前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
LONGZETECH17 天前
无人机仿真教学软件选型实战:5 个硬核技术维度,避开实训建设踩坑
3d·无人机·交互·cocos2d
装不满的克莱因瓶17 天前
了解3D卷积原理——从空间感知到时空建模的深度学习核心算子
人工智能·pytorch·python·深度学习·机器学习·3d·ai
雪的季节17 天前
Qt Graphs 2D+3D介绍
qt·3d
CG_MAGIC17 天前
3ds Max材质编辑器:精简模式与Slate模式对比
3d·编辑器·材质·贴图·uv·建模教程
装不满的克莱因瓶17 天前
掌握3D CNN模型结构——从时空特征建模到视频理解与医学影像核心架构
人工智能·pytorch·python·深度学习·神经网络·3d·cnn
AniShort17 天前
AniShort携3D世界+3D导演台王炸组合AI短剧协作平台亮相2026横店AI短剧大会 近亿元融资赋能短剧工业化
人工智能·microsoft·3d