用命令行创建三维模型并导出 STEP 图纸
29.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(packages/dsh-cad-client/package.json、packages/dsh-cad-studio/package.json、packages/dsh-cad-bundle/package.json 等),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liwuzhan/cad-tool该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 57 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(packages/dsh-cad-client/package.json、packages/dsh-cad-studio/package.json、packages/dsh-cad-bundle/package.json 等),无法唯一定位安装名
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包cad-tool(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:17:46
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 19 处,展示前 16 条)
- 读取本地文件packages/dsh-cad-studio/lib/index.js:65
if (!path || !existsSync(path)) return null; - 读取本地文件packages/dsh-cad-studio/lib/index.js:66
const size = statSync(path).size; - 读取本地文件packages/dsh-cad-studio/lib/index.js:68
if (entry.inline) entry.dataUrl = `data:image/png;base64,${readFileSync(path, "base64")}`; - 读取本地文件packages/dsh-cad-studio/lib/index.js:125
const raw = readFileSync(join(SKILL_DIR, "SKILL.md"), "utf8"); - 读取本地文件packages/dsh-cad-studio/lib/index.js:378
if (!existsSync(dir)) { - 读取本地文件packages/dsh-cad-studio/lib/index.js:683
const path = publishedPath && existsSync(publishedPath) ? publishedPath : runPath; - 读取本地文件packages/sync-vendor.mjs:43
for (const entry of readdirSync(dir, { withFileTypes: true })) { - 读取本地文件packages/sync-vendor.mjs:57
if (!existsSync(base)) return out; - 读取本地文件packages/sync-vendor.mjs:58
if (!statSync(base).isDirectory()) return [[ "", readFileSync(base) ]]; - 读取本地文件packages/sync-vendor.mjs:58
if (!statSync(base).isDirectory()) return [[ "", readFileSync(base) ]]; - 读取本地文件packages/sync-vendor.mjs:59
for (const full of walk(base)) out.push([relative(base, full).split(sep).join("/"), readFileSync(full)]); - 读取本地文件packages/sync-vendor.mjs:69
files.set("python/cad3.py", readFileSync(join(ROOT, "cad3.py"))); - 删除本地文件递归packages/sync-vendor.mjs:139
for (const dir of ["python", "skills"]) rmSync(join(PKG, dir), { recursive: true, force: true }); - 写入本地文件packages/sync-vendor.mjs:140
mkdirSync(join(PKG, "lib"), { recursive: true }); - 写入本地文件packages/sync-vendor.mjs:144
mkdirSync(dirname(dest), { recursive: true }); - 写入本地文件packages/sync-vendor.mjs:145
writeFileSync(dest, body);
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 命令行创建三维模型
- 导出STEP图纸
README
由 DeepSeek 最新模型翻译生成CAD CLI v2.0 - 模型包架构
AI 原生 CAD 命令行工具,支持模型包(.456d)
v2.0 的新特性
主要改进
1. 模型包(.456d) - 自包含的包结构,取代 .cad 目录
2. STEP 产物 - 使用可靠的 STEP 文件,取代不稳定的 pickle 缓存
3. JSON 元数据 - 渲染输出包含相机参数和时间戳
4. JSONL 历史记录 - 以 JSONL 格式高效记录提交历史
5. 产物管理 - 可配置的清理策略,用于管理存储
6. 装配包 - kind=assembly、多实体验证、聚合指标,以及感知组件的无头 PNG
7. 可选标准件 - 渐进式 cadparts 目录查询和可复用的装配代理
8. 模型导向的审查图纸 - 可选的尺寸标注、引线标注、隐藏线和剖视图,且不改变模型
从 v1.0 迁移
v1.0 已归档至 src/cad_cli/v1/。不提供自动迁移——请以 v2.0 重新开始。
安装
Codex 插件
codex plugin marketplace add liwuzhan/cad-tool --ref main
codex plugin add cad-tool@cad-tool
安装后请启动新的 Codex 会话。
展开完整文档(README 剩余 1 节)
CAD CLI v2.0 - 模型包架构
AI 原生 CAD 命令行工具,支持模型包(.456d)
v2.0 的新特性
主要改进
1. 模型包(.456d) - 自包含的包结构,取代 .cad 目录
2. STEP 产物 - 使用可靠的 STEP 文件,取代不稳定的 pickle 缓存
3. JSON 元数据 - 渲染输出包含相机参数和时间戳
4. JSONL 历史记录 - 以 JSONL 格式高效记录提交历史
5. 产物管理 - 可配置的清理策略,用于管理存储
6. 装配包 - kind=assembly、多实体验证、聚合指标,以及感知组件的无头 PNG
7. 可选标准件 - 渐进式 cadparts 目录查询和可复用的装配代理
8. 模型导向的审查图纸 - 可选的尺寸标注、引线标注、隐藏线和剖视图,且不改变模型
从 v1.0 迁移
v1.0 已归档至 src/cad_cli/v1/。不提供自动迁移——请以 v2.0 重新开始。
安装
Codex 插件
codex plugin marketplace add liwuzhan/cad-tool --ref main
codex plugin add cad-tool@cad-tool
安装后请启动新的 Codex 会话。该插件本身没有安装钩子;在首次真正的 CAD 请求时,它会检查本地运行时,并在创建隔离依赖环境之前进行询问。
DSH 插件包
这个自包含包将 16 个 Host 工具、浏览器结果卡片以及完整的 Python CLI 打包在一个 tarball 中。该插件尚未在 DSH 市场上架,因此请直接安装最新的 GitHub Release:
macOS / Linux
curl -fL https://github.com/liwuzhan/cad-tool/releases/latest/download/dsh-cad-studio.tgz \
-o dsh-cad-studio.tgz
dsh plugin --profile add ./dsh-cad-studio.tgz
Windows PowerShell
Invoke-WebRequest
-Uri https://github.com/liwuzhan/cad-tool/releases/latest/download/dsh-cad-studio.tgz
-OutFile dsh-cad-studio.tgz
dsh plugin --profile add ./dsh-cad-studio.tgz
latest URL 始终指向最新发布的包。在市场条目被接受后,CAD Studio 也可以从 DSH 插件市场安装。包源码仍位于 packages/dsh-cad-studio。
无头 Linux 会自动使用进程安全的 Matplotlib 渲染器,并分别对装配实体着色。在不稳定的 Windows 远程/熄屏会话中,请设置 CAD_RENDER_BACKEND=matplotlib。仅当自动化应完全省略 PNG 时,才使用 CAD_SKIP_RENDER=1;几何检查、STEP、指标和历史记录仍保持启用。
一行安装
git clone https://github.com/liwuzhan/cad-tool
cd cad-tool
bash install.sh # macOS / Linux
Windows: powershell -ExecutionPolicy Bypass -File install.ps1
该脚本需要 Python 3.11–3.14,会在仓库内创建一个隔离的 .venv (约 300 MB 下载:build123d + OCP + pyvista),通过冒烟测试验证安装,并且绝不触碰你的全局 site-packages。
可选: 将此仓库旁边的 cad-parts 参数化标准件库克隆下来——install.sh(以及 DSH 插件的 cad_env_bootstrap)会自动检测并将其作为软依赖安装(可用 CAD_PARTS_ROOT=/path 覆盖)。没有它一切也能正常工作;有了它,模型脚本可以直接 from cadparts import gear, deep_groove_bearing, ...,并通过 cadparts CLI 查询目录。
AI 辅助安装
将这段提示粘贴给任何编码代理(Claude Code、DSH、Cursor……)——它可以通过阅读此 README 自行完成安装:
安装 CAD CLI 工具:
1. git clone https://github.com/liwuzhan/cad-tool && cd cad-tool
2. macOS/Linux:运行 bash install.sh Windows: 运行 powershell -ExecutionPolicy Bypass -File install.ps1 (需要 Python 3.11-3.14。该脚本会构建一个隔离的 .venv;请勿
pip 安装到全局环境。)
3. 验证:.venv/bin/cad --help (Windows:.venv\Scripts\cad.exe --help)然后通过创建并运行一个临时包来对 CLI 进行冒烟测试:
cad init /tmp/smoke.456d --name=smoke && cd /tmp/smoke.456d && cad run
4. 报告已安装的版本以及冒烟测试结果。
如果 install.sh 失败,请遵循其打印的提示(Python 版本、pip 镜像)并重试;不要一次尝试后就放弃。
手动安装
使用 conda conda create -n cad-cli python=3.12 conda activate cad-cli conda install -c conda-forge build123d pyvista
pip install -e .
或者在 venv 中使用普通 pip
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
快速开始
1. 创建模型包
cad init my_gear --name="Spur Gear"
cd my_gear.456d
对于装配体,请显式选择装配体模板:
cad init bearing_block --name="Bearing block assembly" --kind assembly
装配体工作流将组件保留为带标签的 Compound 子项,并允许多个有效实体。有关坐标、接口、标准件、验证和评审约定,请参见 docs/assembly_workflow.md。
如果普通的多视图评审发现某个区域存在歧义,请使用 docs/review_drawing.md 中描述的可选标注图纸输入。它仅生成证据;它不是强制关卡,也不是自动设计结论。
这会创建: my_gear.456d/ ├── manifest.json # 包元数据 ├── src/ │ └── main.py # 你的 CAD 脚本 ├── vcs/ │ └── commits.jsonl # 提交历史 ├── artifacts/ # 构建产物 └── runlog/ # 执行日志
2. 编写你的模型
编辑 src/main.py:
from build123d import *
创建你的模型
result = Box(100, 50, 20)
3. 运行并测试
执行脚本(内存中,无产物) cad run 验证几何体 cad validate
检查属性 cad inspect --prop=volume cad inspect --prop=bounds
对于无法从普通视图中定位的问题,请求选定的尺寸、标注或剖视图,而不更改源模型:
cad review --commit --drawing-spec review-request.json
请求格式和中性测量输出记录在 docs/review_drawing.md 中。
4. 提交你的工作
完整构建工作流:执行 + 验证 + STEP + 缩略图 + 指标 cad commit -m "Initial gear design"
这会在 artifacts// 处创建产物:
- model.step - STEP 文件(持久化)
- thumb_.png - 缩略图渲染
- thumb_.json - 渲染元数据
- metrics.json - 几何指标
- validate.json - 验证结果
5. 版本控制
显示提交历史 cad log
检查当前状态 cad status
检出之前的版本(加载 STEP) cad checkout abc123
导出到文件 cad export --format=step --output=gear_v1.step
6. 管理产物
列出所有产物及其大小 cad artifacts list
清理旧产物(使用清单策略) cad artifacts clean
命令参考
项目管理
- cad init --name= - 创建新的模型包
- cad status - 显示仓库状态
- cad log [--limit=N] - 显示提交历史
建模工作流
- cad run [script] - 执行脚本(仅内存中)
- cad build [script] - 构建工作流但不提交
- cad commit -m "msg" [script] - 完整构建 + 提交
- cad validate [script] - 验证几何体
- cad checkout - 加载提交的 STEP 产物
检查
- cad inspect --prop= - 查询几何属性
- 属性:volume、area、bounds、faces、edges、vertices
- cad inspect --list-targets - 列出所有拓扑目标
- cad inspect --target=face[0] --target-prop=center - 查询特定目标
输出
- cad render [--views=top,front,iso] - 生成渲染
- cad export --format= --output= - 导出模型
产物管理
- cad artifacts list - 列出产物及其大小
- cad artifacts clean [--policy=] - 清理产物
- 策略:all_commits、latest_per_branch、releases_only
分支管理
- cad branch list - 列出所有分支
- cad branch create - 创建新分支
- cad branch switch - 切换到分支(恢复 STEP + 脚本)
- cad branch delete - 删除分支
模型包结构
.456d/
├── manifest.json # 包元数据 │ ├── name, version │ ├── head (current commit) │ ├── branches │ ├── artifact_policy │ └── render settings │ ├── src/ │ └── main.py # 主脚本 │ ├── vcs/ │ └── commits.jsonl # 线性提交历史 │ ├── artifacts/ │ └── / │ ├── model.step # STEP 产物 │ ├── thumb_.png # 缩略图 │ ├── thumb_.json # 渲染元数据 │ ├── metrics.json # 几何指标 │ └── validate.json # 验证结果 │ └── runlog/ └── .jsonl # 执行日志
配置
编辑 manifest.json 进行配置:
{
"name": "My Model",
"unit": "mm",
"timeout_seconds": 60,
"artifact_policy": "latest_per_branch",
"render": {
"default_views": ["top", "front", "right", "iso"],
"resolution": [800, 600],
"image_format": "png"
}
}
输出格式
所有命令输出 JSONL(JSON Lines):
{"event": "run_start", "ts": "2026-01-31T10:30:00", "payload": {"script": "src/main.py"}}
{"event": "run_success", "ts": "2026-01-31T10:30:01", "payload": {"metrics": {...}}}
脚本约定
脚本必须将最终形状赋值给 result 变量:
from build123d import *
Create geometry
box = Box(100, 50, 20)
cylinder = Cylinder(30, 100)
Assign to result
result = box - cylinder
特征级检查点
检查点是检测布尔运算失败的可靠方法。在每个特征操作之后添加检查点:
from build123d import *
from cad_cli.feedback import Checkpoint
Checkpoint.reset()
with BuildPart() as part:
Cylinder(30, 10)
Checkpoint(part, "base").expect_volume(28274, tolerance=100).expect_solids(1).verify()
Cylinder(10, 10, mode=Mode.SUBTRACT)
Checkpoint(part, "hole").expect_volume_decreased().expect_solids(1).verify()
result = part.part
检查点方法
| 方法 | 描述 |
| .expect_volume(value, tolerance=1.0) | 断言特定体积 |
| .expect_volume_decreased() | 断言体积较上一个检查点减少 |
| .expect_volume_increased() | 断言体积较上一个检查点增加 |
| .expect_solids(count) | 断言实体数量(始终验证 = 1) |
| .expect_faces(count) | 断言面数量 |
| .expect_bbox_size(x, y, z, tolerance=1.0) | 断言边界框尺寸 |
| .verify() | 执行所有检查,失败时抛出异常 |
检查点结果在 JSONL 输出中显示为 checkpoint_passed 或 checkpoint_failed 事件。
测试
运行测试套件:
pytest # All tests
pytest --cov=cad_cli # With coverage
pytest test/test_package.py -v # Specific test
架构亮点
v2.0 与 v1.0
| 特性 | v1.0 | v2.0 |
| 项目结构 | .cad/ 目录 | .456d 包 |
| 形状缓存 | Pickle(不可靠) | STEP 产物 |
| 提交存储 | 单个 JSON 文件 | 单个 JSONL 文件 |
| 渲染元数据 | 无 | 带相机参数的 JSON |
| 产物清理 | 手动 | 基于策略 |
| 复杂模型 | 超过 150 个面时失败 | 使用 STEP 时可靠 |
错误代码
- E-SYNTAX - Python 语法错误
- E-RUNTIME - 运行时错误
- E-CONSTRAINT - 约束违反
- E-BREP - BRep 验证失败
- E-RENDER - 渲染错误
- E-IO - 文件 I/O 错误
开发
pip install -e ".[dev]" # 安装开发依赖
pytest # 运行测试 black src/ test/ # 格式化代码 mypy src/ # 类型检查
要求
- Python 3.11+
- build123d 0.5.0+
- cadquery-ocp 7.7.0+
- pyvista 0.43.0+
- click 8.1.0+
- numpy 1.24.0+
许可证
MIT
故障排除
“未找到模型包” 确保你位于 .456d 目录中,或先运行 cad init。
“未找到 STEP 工件” 该提交可能已被清理。请检查 cad artifacts list。
渲染失败确保已安装 pyvista:pip install pyvista
导入错误确保已安装 build123d:conda install -c conda-forge build123d预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
liwuzhan/cad-tool
用命令行创建三维模型并导出 STEP 图纸
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目