用途
create-cad-files 是一个面向 AI 智能体的技能,用于从自然语言需求创建带尺寸的三维 CAD 零件,并导出经过验证的 STEP、STP 或 STL 文件。它把模型生成为可读的 OpenCAD Python 代码,使用原生 OCCT 后端构建,并在返回文件前校验交换文件。整体体验以提示词为先:技能负责源码生成、构建命令和验证,不要求用户自己操作 Python。
主要能力
- 从自然语言中提取尺寸、单位、几何、孔、间隙和输出格式。除非另有说明,默认使用毫米。
- 仅在缺失尺寸会实质性改变零件时才询问;否则说明所做的假设。
- 优先为可编辑/制造几何使用 STEP,为三角化 3D 打印交付物使用 STL;在需要时同时创建两者。
- 生成参数化模型:重要尺寸赋给命名常量,组件模块暴露命名构建器或零件,最终在 assembly.py 中创建一个 Part。
- 保留项目源码、README.md 和特征树 JSON,使修订可复现。
使用方式
在编写模型前,先阅读 references/opencad-api.md。每次运行开始时,用 scripts/create_project.py 创建一个全新的项目目录,并把返回路径作为 PROJECT_DIR。该辅助脚本会在 ~/forma-workspace/ 下创建 UUID 命名的目录;不要从请求推导项目 ID。所有源文件、README、组件和生成产物都放在 PROJECT_DIR 内。创建 README.md 记录项目上下文,assembly.py 作为主组合入口,parameters.py 用于共享尺寸,components/ Python 包用于组件模块,outputs/ 目录用于生成产物。尊重在 PROJECT_DIR 内明确请求的文件名,但不要替换共享根目录或生成的项目 ID。
确保已安装 opencad[occt]。如果导入 OpenCAD 失败,说明依赖情况并在安装到当前 Python 环境前询问。
解析本技能所在目录,用其绝对路径创建项目目录,停留在返回的项目目录内,并用绝对路径运行构建辅助脚本:
PROJECT_DIR=$(python /path/to/create-cad-files/scripts/create_project.py)
python /path/to/create-cad-files/scripts/build_cad_file.py "$PROJECT_DIR/assembly.py" "$PROJECT_DIR/outputs/assembly.step" --tree-output "$PROJECT_DIR/outputs/assembly.tree.json"
STL 输出使用 .stl 文件名。除非显式提供 --force,辅助脚本拒绝替换文件。如果同时导出两种格式,对同一个项目 assembly.py 源码运行两次。可用 scripts/validate_cad_file.py 的绝对路径独立校验已有产物。检查失败并修改源码,而不是绕过验证。返回源码、CAD 产物和特征树的可点击路径,以及单位和假设。
适用场景
当用户要求 AI 智能体根据自然语言需求创建带尺寸的三维 CAD 零件,并需要导出 STEP、STP 或 STL 文件时使用。适合需要参数化、可复现、可编辑的 CAD 模型生成流程。
限制
- 不要声称基础文件验证能证明可打印性、承载能力、合规性或可制造性。
- 不要编造制造公差;当配合重要时标记出来。
- 如果 CadQuery/OCP 不可用,使用 opencad[occt];绝不用解析后端替代交付物。
- 如果布尔运算或圆角失败,简化特征、减小半径或消除重合面。
- 如果请求的几何超出 API 能力,说明限制,并仅在用户同意后实现最接近的忠实参数化模型。
- 不要在模型中调用 Part.export();导出和验证由构建辅助脚本负责。
- 保持项目自包含,使 assembly.py、嵌套组件包和生成产物可以一起管理。组件包和子包使用 init.py 文件。从项目根导入嵌套组件,例如 from components.motor.mount.screw_pattern import make_screw_pattern。
- 在 README.md 中记录项目目的、单位、假设、关键尺寸、组件/包树、构建命令、产物和已知限制。