text-to-cad

库

earthtojake/text-to-cad

CAD、机器人及硬件设计的代理技能库。

项目简介

提供用于生成、检查和导出 CAD 模型、机器人描述及仿真工件的聚焦工作流。包含 CAD、URDF、SDF、DXF 等技能,让 AI 代理能处理机械工程任务。

README 预览

\n\n\n\n\n\n\n ██████╗ █████╗ ██████╗       ███████╗██╗  ██╗██╗██╗     ██╗     ███████╗\n██╔════╝██╔══██╗██╔══██╗      ██╔════╝██║ ██╔╝██║██║     ██║     ██╔════╝\n██║     ███████║██║  ██║      ███████╗█████╔╝ ██║██║     ██║     ███████╗\n██║     ██╔══██║██║  ██║      ╚════██║██╔═██╗ ██║██║     ██║     ╚════██║\n╚██████╗██║  ██║██████╔╝      ███████║██║  ██╗██║███████╗███████╗███████║\n ╚═════╝╚═╝  ╚═╝╚═════╝       ╚══════╝╚═╝  ╚═╝╚═╝╚══════╝╚══════╝╚══════╝\n\n\nA skills library for CAD, robotics, and hardware design agents\n\n[Docs](https://www.cadskills.xyz) | [Demo](https://demo.cadskills.xyz)\n\n[](https://discord.gg/5FGB9DwJYU)\n[](https://github.com/earthtojake/text-to-cad/stargazers)\n[](LICENSE)\n[](https://x.com/earthtojake)\n[](skills/cad/requirements.txt)\n[](skills/cad/SKILL.md)\n[](skills/cad/SKILL.md)\n[](skills/cad/SKILL.md)\n[](skills/urdf/SKILL.md)\n[](skills/sdf/SKILL.md)\n[](skills/srdf/SKILL.md)\n\n\n\n# CAD Skills\n\nCAD Skills is a library of agent skills for generating, inspecting, sourcing,\nslicing, and handing off CAD and robot-description artifacts from local project\nfiles.\n\n## 🧰 Skills\n\nInstall the library to give agents focused workflows for CAD, fabrication,\nrobot description files, simulation, and local review.\n\n| Skill        | Summary                                                                                                                                            | Source                                              |\n| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |\n| CAD          | Creates and edits CAD models from plain-language or image requests, with STEP as the main output along with options to export to STL, 3MF and GLB. | [skills/cad](skills/cad/SKILL.md)                   |\n| CAD Viewer   | Shows local browser previews for CAD, G-code, a

常见问题 (5)

故障排除
如何在使用 cadgen 将有效的 STEP 实体导出为 STL 时修复孔洞、重复三角形和非流形边?

升级到 cadgen 0.7.15 或更高版本;有缺陷的曲面细分已在该版本中修复:

pip install -U cadgen==0.7.15

然后重新运行导出:

cadgen stl build teacup.step teacup-export.stl --json

您无需清除缓存:由 0.7.14 创建的网格会自动重建,因为曲面细分版本已更改。如果您通过 text-to-cad agent/CAD server 使用 cadgen,请更新该安装,使其 CAD server 和 skills 固定使用 cadgen 0.7.15。

受影响的版本包括 0.7.9 和 0.7.14;收紧 --mesh-tolerance 或 --mesh-angular-tolerance 并不能可靠地解决该问题。作为在旧版本上的临时解决方法,可通过 build123d/OCCT 直接导出同一个有效的 STEP:

import build123d as bd
part = bd.import_step("teacup.step")
bd.export_stl(part, "teacup-occt.stl", tolerance=0.0004, angular_tolerance=0.15)

验证生成的 STL 具有 0 个重复三角形、0 条边界边,以及 0 条被两个以上面共享的边。

来源 Issue #555
故障排除
当孔穿过曲面壁时,如何修复非水密或非流形的 cadgen STL 文件?

升级到 cadgen 0.7.3 或更高版本,该版本修复了曲面中孔洞周围出现重复三角形和零面积三角形的问题:

pip install --upgrade cadgen==0.7.3

重新导出受影响的 STL。新的 tessellation 缓存版本会强制生成全新网格,而缓存的 CAD 几何体仍可保留。使用 dfam-check 或 Bambu Studio 进行验证;网格应报告 watertight: true/manifold = yes,并且具有有效体积。

在 cadgen 0.6.6 或更早版本上,一个临时解决方法是使用 OpenCascade 的网格划分器通过 build123d.export_stl 导出相同的形状,这样可以生成无缺陷的 STL。

来源 Issue #433
故障排除
如何解决被 Windows Smart App Control 阻止的 "DLL load failed while importing OCP" 错误?

此问题发生在 Windows 11 上,因为 Smart App Control 阻止了 cadquery-ocp/cadquery-ocp-novtk 7.9.3.1.1 Windows wheel 包中附带的未签名原生 OCP.cp312-win_amd64.pyd 文件。可在事件查看器的 Applications and Services Logs > Microsoft > Windows > CodeIntegrity > Operational 下确认;查找 Event ID 3077。SAC 不提供针对单个文件或单个应用程序的例外。

解决方法:
1. 推荐:在 WSL2 下运行 CAD 工作流,SAC 在 WSL2 中不适用。使用 wsl --install 安装 WSL,重新创建 Linux 虚拟环境,运行 pip install -r skills/cad/requirements.txt,并在其中使用 cadgen/build123d。
2. 如果你接受安全性上的妥协,可以禁用 SAC:Windows 安全中心 → 应用和浏览器控制 → Smart App Control 设置 → 关,然后重启 Windows。之后若要重新启用,需要重置/重装系统。
3. 仅限测试的替代方案:以管理员身份运行 reg add HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy /v VerifiedAndReputablePolicyState /t REG_DWORD /d 2 /f,然后重启,将 SAC 设置为评估模式。这是文档中记载的用于测试的方式,实际上会解除强制执行。

升级到 cadgen 0.6.2 或更新版本;cadgen doctor 和 CLI 失败报告会明确检测到该 ImportError,并指向 SAC/Event ID 3077。要在 Windows 原生环境下永久修复,需要对上游 cadquery-ocp wheel 包进行 Authenticode 签名。

来源 Issue #404
故障排除
如何修复并行构建后立即出现的 cadgen "STALE (closure changed: ./)" 错误?

这是 cadgen 0.7.11–0.7.15 中的一个闭包摘要(closure-digest)竞态问题。每个 STEP 输出都会在其最终输出旁的隐藏目录中临时构建,例如 .<part>-xxxxxxxx。当另一个模型通过 os.listdir()、glob 或注册表扫描列出该文件夹时,这个临时目录名会被哈希进它的闭包中。当同级构建完成并删除其暂存目录后,目录列表发生变化,因此该模型会立即被标记为 STALE (closure changed: ./; changed during the build)。

修复方法是升级到包含 PR #575 和 #578 的 cadgen 版本,或者从已合并这两个 PR 的 main 分支安装:

python -m pip install -U cadgen

#575 将 cadgen 自身的 STEP 暂存文件夹和临时文件从文件夹列表摘要中排除。#578 排除了模型自身声明的输出,使模型在首次构建后即读取为最新状态。升级后,运行一次重建以刷新现有记录:

cadgen gen

如果无法立即升级,重新运行 cadgen gen 即为变通方案:受影响的模型会以相同的字节重新构建,通常会稳定下来。源代码级的变通方案是在 cadgen/_internal/generation.py 中使用 cadgen 自有的暂存前缀,例如 .cadgen-stage-<name>-,并在 cadgen/store/closure.py 中计算 _listing_digest 时跳过这些 cadgen 临时条目。

注意:在首次向空文件夹构建之后,同级模型仍可能变为过期状态一次。这是有意设计的,因为模型可能会列出文件夹以发现新发布的同级输出;再运行一次构建即可解决。

来源 Issue #564
故障排除
如何修复打开 DXF 文件时出现的“The viewer did not respond while preparing this model”错误?

在 Windows 上,当 DXF 包含数千个 TEXT 或 MTEXT 实体时,CAD 0.7.15 可能会出现此超时。文本被渲染为轮廓,会产生非常大的负载,超出查看器的 10 秒限制;安装后首次打开的 DXF 可能尤其缓慢。

临时解决方法:等待约一分钟,然后单击"重试"。第二个请求可能会复用已有的渲染结果并成功。

永久修复:更新到包含修复 #579 的版本。在该版本中,绘图文本以文本形式而非轮廓形式发送,并且查看器在绘图仍在传输时不再超时。一个包含 6,000 个文本的测试绘图从 150 MB 降至 1.5 MB,并在约 2.5 秒内打开。如果更新后文件仍无法打开,请在报告问题时附上 DXF 文件大小。

来源 Issue #566