OpenSCAD 3D建模库 BOSL2 上手教程:30 分钟从安装到第一个模型
【免费下载链接】BOSL2The Belfry OpenScad Library, v2.0. An OpenSCAD library of shapes, masks, and manipulators to make working with OpenSCAD easier. BETA项目地址: https://gitcode.com/gh_mirrors/bo/BOSL2
原生 OpenSCAD 写模型,最劝退的两件事:给盒子加圆角要手搓minkowski,把零件对准另一个零件的顶面要反复试translate坐标。装上 BOSL2 这个 OpenSCAD 3D建模扩展库,这两件事各变成一行代码。
先睹为快:BOSL2 能替你省下的活儿
| 你想做出的效果 | 原生写法的痛点 | BOSL2 的解法 |
|---|---|---|
| 边角圆润的盒子 | minkowski配球体,参数全手算 | cuboid(size, rounding=5)一个参数 |
| 零件贴到另一个零件的顶面 | 层层translate,改尺寸全盘重算 | attach(TOP)嵌套放置 |
| 一排等距复制 | for+translate循环 | xcopies(20, n=5) |
| 表面浮雕、滚花、图案 | 基本做不到 | texture()纹理系统 |
| 球体相互平滑融合 | 没有现成工具 | metaballs()元球 |
最后两张图都是它的实际产出:一张平面图案,经过纹理系统变成了带浮雕细节的可打印模型。
环境一次跑通:完成 BOSL2 安装与库路径配置
1. 确认 OpenSCAD 版本
需要OpenSCAD 2021.01 或更高版本。打开 OpenSCAD,看"帮助 → 关于"里的版本号,不够就先升级。
2. 克隆仓库
git clone https://gitcode.com/gh_mirrors/bo/BOSL2得到BOSL2目录,里面std.scad、shapes3d.scad等文件就是库本体。
3. 放进 OpenSCAD 库目录
把BOSL2整个文件夹移入你的用户库目录:
| 系统 | 库目录 |
|---|---|
| Windows | My Documents\OpenSCAD\libraries\ |
| Linux | ~/.local/share/OpenSCAD/libraries/ |
| macOS | ~/Documents/OpenSCAD/libraries/ |
如果你用的是 SNAP 等打包安装,实际路径可能不同——打开"帮助 → 库信息",看 "User Library Path" 那一行,照它搬就行。Fedora 用户也可以直接跑sudo dnf install openscad-bosl2跳过前两步。
4. 重启并验证
重启 OpenSCAD,新建文件写入下面两行:
include <BOSL2/std.scad> cuboid([40, 40, 12], rounding=5, anchor=BOTTOM);第一行引入 BOSL2,第二行是一个 40×40×12、四角带 5mm 圆角的底座——预览里出现圆角盒子,说明库加载成功,这就是你的第一个 BOSL2 模型。顺手在控制台里敲echo(bosl_version_str());,能输出2.0.x版本号更稳。
定位零件不再心算坐标:上手 BOSL2 附件系统
坐标心算是多零件建模的头号噩梦:底座加高 5mm,上面所有零件的 Z 坐标全得跟着改。BOSL2 附件系统的思路是相对定位——把子对象直接写在父对象内部,用TOP、LEFT、FRONT这类方向词代替数字坐标:
cuboid([60, 40, 20], anchor=BOTTOM) { attach(TOP) cylinder(d=20, h=30); attach(TOP) cone(d1=50, d2=20, h=12); }外层是底座,两个attach(TOP)把圆柱和锥台自动钉在顶面中心。底座尺寸怎么改,上层零件位置都不变,彻底告别坐标重算。方向词还能组合,比如attach([FRONT, BACK, LEFT, RIGHT])表示"四个侧面的位置全都放一份"。
想深入这套系统的对齐、锚点和标签机制,读 tutorials/Attachment-Overview.md 这个官方教程,再打开 examples/attachments.scad 对照改。
圆角与倒角:一行参数替代手搓 minkowski
OpenSCAD 里圆角是出了名的难做,BOSL2 把它拆成了一组"说人话"的模块:
| 你想要的圆角 | 对应模块 | 一句话说明 |
|---|---|---|
| 盒子的边和角 | cuboid(rounding=) | 一个数值倒全部边,rounding_edges还能挑出只倒哪几条 |
| 拉伸、扫描体的末端 | offset_sweep() | 异形截面扫完直接带上圆头 |
| 两个零件间的过渡柱 | prism_connector() | 配合附件系统自动对准两端,两端自动圆角 |
| 非盒子形状的边缘 | edge_profile() | 对任意边的轮廓做倒角、内凹等加工 |
这些实现在 rounding.scad 里,注释本身就是文档。
阵列复制:xcopies 一行顶一个 for 循环
等距复制是for+translate的经典重复劳动,BOSL2 的分布模块把它压成一行:
| 效果 | BOSL2 写法 | 等价原生写法 |
|---|---|---|
| X 方向间隔 20mm 放 3 份 | xcopies(20, n=3) | for (dx=[-20,0,20]) translate([dx,0,0]) |
| Y 方向间隔 10mm 放 5 份 | ycopies(10, n=5) | 同样是for+translate |
| 绕 Z 轴半径 20 放 6 份 | zrot_copies(n=6, r=20) | for (i=[0:5]) rotate([0,0,i*60]) translate([20,0,0]) |
全部分布在 distributors.scad 里,还有螺旋复制、极坐标复制等变体。
给表面"刻"细节:纹理系统把图案变成实体
texture()是 BOSL2 的隐藏王牌:它把砖纹、棋盘、尖锥、滚花等图案变成真实的高度数据,贴在任意扫描体表面。
tex = texture("bricks"); linear_sweep(rect(30), texture=tex, h=30, tex_depth=1, tex_size=[10, 10]);效果是一块 30mm 高、表面带砖纹浮雕的板——浮雕深浅由tex_depth控制,砖块大小由tex_size控制。
更强的玩法是把平面图案直接雕成模型:仓库里的 scripts/img2scad.py 能把一张 PNG 转成纹理数组,再喂给纹理系统,图案里的每一道线条都变成可打印的凹凸:
进阶玩法:元球融合与有机形体
当模型需要"融成一体的"感觉时,metaballs()元球是首选:多个球体靠近时表面会自动平滑过渡,一滴水挂上手、关节过渡、生物造型都能做:
再往外一圈,BOSL2 还覆盖了大量"原生做不了或做起来很累"的地盘:
- 曲面扫描:
skin()、path_sweep()让任意截面沿路径扫出 3D 形体 - 曲线:贝塞尔、NURBS 模块直接生成样条
- 标准件库:齿轮(gears.scad)、螺纹、瓶盖、螺丝、铰链,改参数即得实物
接下来往哪深挖
| 去哪 | 干什么 |
|---|---|
| tutorials/ | 15 篇主题教程:附件系统、路径、贝塞尔、蒙皮,按专题啃 |
| examples/ | 每个特性的最小可运行示例,改参数看变化 |
| tests/ | 可执行测试用例,照着 API 用法学最准 |
| shapes3d.scad、transforms.scad | 核心源码,BOSL2 的文档就写在源码注释里 |
现在就打开 examples/attachments.scad,把最内层的prismoid换成cylinder,看上层位置如何自动跟着变——这就是附件系统的全部魅力。
【免费下载链接】BOSL2The Belfry OpenScad Library, v2.0. An OpenSCAD library of shapes, masks, and manipulators to make working with OpenSCAD easier. BETA项目地址: https://gitcode.com/gh_mirrors/bo/BOSL2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考