Antimony:从 Lisp 机器而非绘图台演化而来的 CAD 软件

Hacker News Top 工具

摘要

Antimony 是一款实验性 CAD 工具,通过在有向无环图(DAG)中连接可脚本化的节点来进行实体建模,使用函数表示来实现构造实体几何(CSG)和由 Python 定义的形状。它支持自动传播更改、交互式视口编辑,以及带特征检测的 STL/高度图导出。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/11/03 15:44

# Antimony 来源:https://www.mattkeeter.com/projects/antimony/3/ ## 关于 Antimony 是一款来自平行宇宙的计算机辅助设计 \(CAD\) 工具,在那个宇宙中,CAD 软件是从 Lisp 机器而非绘图板演化而来的\. ## 演示 ## 基础 Antimony 建立在三个基本相互独立的方面之上: - 一个通过有向无环图追踪信息流的框架 - 一个用于进行构造实体几何(CSG)运算的几何引擎 (http://en.wikipedia.org/wiki/Constructive_solid_geometry) - 一个形状与变换的标准库 ### 图引擎 在 Antimony 中,实体建模通过连接图中的节点来完成:图示例 每个节点都由可自定义的脚本定义\. Antimony 使用 Python 3\.x,并添加了几个特殊关键字\. 上面的圆形节点如下所示: `` import fab.shapes # 定义一组输入端口 # (并将变量注入局部命名空间) input('x', float) input('y', float) input('r', float) # 调用标准形状库中的 'circle' 函数 # 使用从输入端口传入的变量 c = fab.shapes.circle(x, y, r) # 创建一个输出圆形形状的输出端口 output('shape', c) `` 节点通常表示一种基本形状或变换\. 系统会追踪连接,并自动将更改传播到下游\. 更改传播 图引擎可以扩展到复杂的多零件装配体\. Kelvin Kelvin ### 几何引擎 Antimony 的几何引擎使用函数表示法 (http://en.wikipedia.org/wiki/Function_representation) 进行实体建模\. 这种表示法特别适合使用布尔运算 \(并集 / 交集 / 差集\) 进行建模\. 布尔运算示例 在应用程序中,几何引擎将形状渲染为带明暗效果的位图\. 随后将这些位图以块传输方式绘制到 3D 视口中\. 应用程序截图 Antimony 可以导出用于 2\.5D 加工的高度图,以及用于 3D 制造的 `\.stl` 文件\. `\.stl` 导出包含特征检测功能,以保持角点和边缘清晰锐利\. 网格 ### 标准库 Antimony 的标准库定义了许多形状和变换 (https://github.com/mkeeter/antimony/blob/develop/py/fab/shapes.py),从基本操作 \(旋转、缩放、布尔运算\) 到特殊操作 \(吸引、排斥、弯曲\),应有尽有\. 这些形状用于节点定义中,节点定义通常会添加输入和输出端口,也可以选择定义用户界面功能\. 下面是一个定义了用户界面功能的节点示例: `` import fab title('矩形') input('xmin', float) input('ymin', float) input('xmax', float, 1) input('ymax', float, 1) output('shape', fab.shapes.rectangle(xmin, xmax, ymin, ymax)) # 用户界面 sb.ui.wireframe([(xmin, ymin, 0), (xmax, ymin, 0), (xmax, ymax, 0), (xmin, ymax, 0)], close=True) sb.ui.point(xmin, ymin, 0) sb.ui.point(xmax, ymax, 0) `` 在 3D 视口中,脚本底部定义的用户界面元素会绘制在矩形的渲染结果之上\. 这些用户界面元素又与图相连:拖动矩形角上的点,会将更改推送到图节点\. 界面拖动 **题外话**:内置形状足以满足大多数用户的需求,但也可以定义自定义形状\. 形状使用前缀字符串语法表示,这种语法易于解析,但读起来有些晦涩\. 下面是上述圆形形状的定义: `` def circle(x0, y0, r): return Shape( '-r+q-Xf%gq-Yf%gf%g' % (x0, y0, r), # 数学表达式字符串 x0 - r, y0 - r, x0 + r, y0 + r) # 边界 `` 将前缀字符串展开并按层级缩进,得到 `` - r + q - X f%g q - Y f%g f%g % (x, y, r) `` 它编码了一个二维圆的距离场表示: `` f(x,y) = sqrt(pow(x - x0, 2) + pow(y - y0, 2)) - r `` 其中,`x0`、`y0` 和 `r` 分别是圆心坐标和半径 \(在调用 `circle` 时指定\)\. 前缀字符串到中缀函数的具体映射留给读者作为练习 \(也可以查阅我的论文 (https://www.mattkeeter.com/research/thesis.pdf) 的附录 A\)\. ## 下载 可以从 GitHub 发布页面 (https://github.com/mkeeter/antimony/releases) 下载预先构建好的 Mac 应用程序\. Antimony 的源代码可在 GitHub (https://github.com/mkeeter/antimony) 上获取,同时还提供了在 Mac 和 Linux 上构建它的说明 (https://github.com/mkeeter/antimony/blob/master/BUILDING.md)\. ## 开发 Antimony 是一个长期持续、正在积极开发中的项目 (https://github.com/mkeeter/antimony/graphs/contributors)\. 开发 它的稳定性处于 Beta 阶段:运行稳健,但不建议用于关键任务\. 如果你有兴趣参与贡献,入门门槛相当低\. 只要具备基本的 Python 知识,就可以开始制作自定义节点 \(例如 RobotGrrl (https://twitter.com/RobotGrrl) 贡献的这个 HSB 颜色节点 (https://github.com/mkeeter/antimony/blob/develop/py/nodes/Color/set_color_hsb.node),或 Neil (http://ng.cba.mit.edu/) 贡献的大量节点 (https://github.com/mkeeter/antimony/commits?author=neilger)\)\. 对于有 C\+\+ 经验、想做更多事情的人来说,还有许多可以改进的地方,从加快渲染速度,到改进用户界面,再到优化图求值\. 如果这些让你感兴趣,请给我留言\. ## 历史 Antimony 源于我在麻省理工学院比特与原子中心 (http://cba.mit.edu/) 开展的工作,研究如何打造功能强大、适合个人使用的 CAD/CAM 工作流程\. 它是这一系列软件中的最新工具,此前的工具包括 cad\_ui (https://www.mattkeeter.com/projects/solver) 和 kokopelli (https://www.mattkeeter.com/projects/kokopelli),同时也从 fabserver (http://kokompe.cba.mit.edu/) 中汲取了灵感\. 若想了解历史背景,可以阅读以下几篇早期的 Antimony 介绍: - 2014 年初 (https://www.mattkeeter.com/projects/antimony/1)\(作为世界经济论坛的演示项目开发\) - 2014 年秋季 (https://www.mattkeeter.com/projects/antimony/2)\(为“如何制造几乎任何东西”课程的使用而更新\) 本次更新恰逢 2015 年 Fab Academy (http://fabacademy.org/) 举办;使用这个搜索查询 (https://www.google.com/search?q=site%3Ahttp%3A%2F%2Ffabacademy.org%2Farchives%2F2015%2F%20antimony&rct=j) 可以了解人们如何使用它\. ## 媒体报道与讨论 - Hackaday 报道 (http://hackaday.com/2015/05/29/otherworldy-cad-software-hails-from-a-parallel-universe/) - Libre Graphics World 访谈 (https://librearts.org/2015/05/introducing-antimony-node-based-cad-application/) - Hacker News 讨论 (https://news.ycombinator.com/item?id=9623609)

相似文章

OpenSCAD 程序员的实体 3D CAD 建模器

Hacker News Top

OpenSCAD 是一款免费、开源、面向程序员的实体 3D CAD 建模软件,支持 Linux、Windows 和 macOS,并提供教程、库以及 IRC 和 Mastodon 上的社区支持。

CADFather:通过协同工具调用实现自主CAD重建

Hugging Face Daily Papers

CADFather 是一个自主智能体系统,通过协调视觉-语言助手与互补的学习型、算法型和优化工具,从 3D 网格重建可编辑的参数化 CAD 程序,并在 DeepCAD、Fusion360 和 CADENA-Bench 等基准上进行了评估,无需额外训练。