OpenSCAD
OpenSCAD 2015.03 | |
| 开发者 | Marius Kintel, Claire Wolf[1] |
|---|---|
| 首次发布 | 2010年2月19日 |
| 当前版本 | 2021.01[2] |
| 源代码库 | |
| 编程语言 | C++、Qt、CGAL、OpenCSG及OpenGL[3] |
| 操作系统 | Linux, macOS, Windows, FreeBSD, NetBSD, OpenBSD |
| 平台 | IA-32, x64, arm64 |
| 文件大小 | 15–27 MB(依操作系统有所不同)[4] |
| 语言 | 12种语言 |
| 类型 | 电脑辅助设计 |
| 许可协议 | GPL-2.0或更新版本 |
| 网站 | www |
OpenSCAD是一款电脑辅助设计(CAD)的自由软件,用于建立实体3D物件。它仅支援脚本的建模器,使用自己的描述语言;3D 预览可以互动方式操作,但无法在 3D 中互动式修改。相反地,OpenSCAD 脚本会指定几何基本图元(如球体、方块、圆柱体等),并定义如何修改与组合它们(例如透过交集、差集、包络组合或闵可夫斯基和等)来渲染 3D 模型 。因此,该程式执行的是构造实体几何(CSG)。此软件可在 Windows、Linux 与 macOS 等操作系统上使用。
概览
[编辑]脚本语言
[编辑]OpenSCAD 采用专属脚本语言来产生 3D 图形。此脚本语言支援函数式程式设计、参数化模组化与重复利用,以及数学运算。变数具有作用域限制,但在每个作用域(scope)之内都是不可变的。
预览功能
[编辑]为了快速预览使用Z缓冲的模型,OpenSCAD 采用了 OpenCSG 和 OpenGL 技术。
与其他 3D 建模软件类似,使用者可以透过鼠标在视窗中互动式调整 3D 模型的位置。此外,还能在脚本中定义预设的“镜头”视角位置。
零件颜色(包含透明度)可在 3D 视图中进行设定[注 1]。
预览相对快速,并允许在修改脚本时进行互动式修改。
模型渲染器会考虑光照,但光源不可修改。
使用
[编辑]OpenSCAD 让设计师能够创建精确的 3D 模型与参数化设计,只需调整参数即可轻松修改设计[5]。
OpenSCAD 文件采用纯 ASCII 文本格式的人类可读脚本,在语法上可能更适合与 git 等版本控制系统整合。
因此,OpenSCAD 是一款面向程序员的实体建模工具[6],并被推荐作为入门级的 CAD 工具,用于设计科研教育用途的科学仪器等开放硬件[7]。
它常被用于设计3D打印零件,这些零件可输出为多种 3D 档案格式。其基于脚本的参数化特性使其能整合至线上模型客制化服务,例如Thingiverse等3D打印市集上的“Customizer”工具。

对于简单模型,可实现每秒数帧的动画效果。动画可影响任何参数,包括摄影机位置或零件尺寸、位置、形状及存在状态。动画可录制为一组影像,用以建立动态 GIF。
目前实验性地支援与 Calculix 耦合进行有限元素法分析(FEM)[8]。FreeCAD 也能导入 OpenSCAD 档案,搭配 Calculix 或其他支援的 FEM 求解器进行分析[9]。FreeCAD 特别设有与 OpenSCAD 互通的专用工作台[10]。
档案格式
[编辑]汇入
[编辑]汇出
[编辑]OpenSCAD 的视图与模型可输出为多种格式,包括:
- 检视画面可汇出为 PNG 格式。
- 2D 模型可汇出为 SVG、DXF 与 PDF 格式。
- 3D 零件可汇出为基本体积的 3MF、AMF、OFF 及 STL 格式[11],输出模型不包含色彩、材质或零件定义资讯。
设计
[编辑]OpenSCAD 是以C++开发的 CSG 引擎封装程式,具备图形化使用者界面与整合式编辑器。截至 2024 年,正式释出版本采用计算几何算法函式库(CGAL)作为基础 CSG 引擎,开发快照版本则额外支援 Manifold作为替代方案[12]。
其脚本语法反映了函数式程式设计的哲学。类似于 Haskell,在作用域内每个“变数”都被视为常数,具有不可变性且最多只能有一个值。
平台实作
[编辑]- 官方独立版本以C++编写,适用于 Windows、MacOS 和 Linux等操作系统
- FreeCAD:具有 OpenSCAD 命令列界面,可替代零件求解器(part solver)或零件工作台(part workbench)使用
- 浏览器实作版本亦可使用,例如 cadhub.xyz 和 jscad.app。
另见
[编辑]PLaSM:另一种用于创建 3D 物件的开源脚本语言。
注解
[编辑]- ^ 透明度是按建造顺序评估的,因此只有已建造的部件才是透明的。
参考资料
[编辑]- ^ Claire Wolf. [2022-09-16]. (原始内容存档于2022-09-20).
- ^ OpenSCAD - News.
- ^ Building OpenSCAD. GitHub. 21 November 2021 [1 March 2014]. (原始内容存档于20 August 2017).
- ^ OpenSCAD - Downloads. [2017-02-09]. (原始内容存档于2021-03-31).
- ^ Evans, Brian, Practical 3D Printers: The Science and Art of 3D Printing, Apress: 113, 2012, ISBN 9781430243922.
- ^ Pettis, Bre; France, Anna Kaziunas; Shergill, Jay, Getting Started with MakerBot, O'Reilly Media, Inc.: 131, 2012, ISBN 9781449338657.
- ^ Pearce, Joshua M., Chapter 6: „Digital Designs and Scientific Hardware“, Open-Source Lab: How to Build Your Own Hardware and Reduce Research Costs, Elsevier: 165–254, 2014, ISBN 9780124104624.
- ^ Example. GitHub. 21 November 2021.
- ^ FEM CalculiX - FreeCAD Documentation.
- ^ OpenSCAD Workbench - FreeCAD Documentation. [2021-06-28]. (原始内容存档于2021-05-25).
- ^ OpenSCAD User Manual/Export - Wikibooks, open books for an open world.
- ^ GitHub上的manifold页面