关于 solidcraft-modeling
solidcraft-modeling 指导用户在 SolidCraft 中规划、构建和检查零件。它采用分阶段批处理构建参数化 CAD 模型,并用计算出的测量值核验几何结果。
主要功能
- 01规划几何形状和预期测量值
- 02分阶段批量构建零件
- 03使用参数化草图和特征
- 04检查体积、边界框和特征错误
- 05导出 CAD、打印和机器人格式
适用场景
- 01按计算尺寸构建零件
- 02核验孔、切口和特征位置
- 03测试参数变化对设计的影响
MCP 相关
该技能可在 SolidCraft 聊天或 MCP 客户端中使用,以操作 SolidCraft 服务和应用。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tangency-labs/ solidcraft --skill solidcraft-modeling安装后在 Claude Code 中输入/solidcraft-modeling确认已加载。
附带文件reference.md
详细介绍
SolidCraft 建模
概述
先把零件的尺寸计算清楚。然后通过几次较大的 batch 调用来构建,并在每个阶段使用 measure 对照你自行计算的数值进行检查。一个干净的构建需要 3-4 次构建批次,加上检查总共约 10-13 次调用。命令格式、平面轴、ID、回复大小和已知陷阱都列在本文件旁的 reference.md 中,因此无需探索命令目录。
首次调用前
- 在 SolidCraft 自带的聊天界面或任何 MCP 客户端中,调用
skill_reference {"skill":"solidcraft-modeling"}。在其他环境中,请阅读reference.md。 - 运行
inspect_design {"measure":false,"sketches":false},即使你认为当前会话为空也要运行。- 当 SolidCraft 服务操作用户已打开的应用时,其指令会以
Backend: connected to the SolidCraft app结尾;其他情况下则以Backend: headless结尾。 - 如果设计包含时间线特征,请在调用
new_design或open前先征求同意,因为两者都会丢弃未保存的工作。你也可以在已打开的设计中构建。
- 当 SolidCraft 服务操作用户已打开的应用时,其指令会以
- 编写计划:
- 参数
- 放置位置:将零件中心置于原点,这样阵列和镜像就能以各个平面为基准
- 每个特征,以及用于选择每条边或每个面的世界坐标点
- 预期体积和边界框
构建
-
阶段: 每个阶段使用一个批次:
- 参数、草图、尺寸、外观和第一个特征
- 圆角和抽壳
- 孔、切割和阵列
-
失败: 批次要么全部成功,要么全部失败。失败时,读取
failed.index和failed.error,只修复那一步,然后重新发送批次。 -
高风险步骤: 将高风险步骤单独放在一个批次中,这样失败时就不会回滚周边的工作。适用于相切曲面之间的布尔运算,以及任何你之前没有做过的操作。
-
回复大小: 对于大型设计,在
batch和execute中传入"verbose": false。 -
**草图 ID 可预测,**因此同一批次中的后续步骤可以使用这些 ID:
- 每种类型的计数都从 1 开始(
l1、c1、a1、p1)。 - 统计草图中此前的步骤创建的对象。例如,
rectangle.center会生成l1-l6和p1-p5。 - 不要只为读取 ID 而拆分批次。
- 每种类型的计数都从 1 开始(
-
必须跟随参数的位置可通过以下方式指定:
- 将草图尺寸设为
"origin",并使用表达式值("w/2 - wall - 6") - 使用表达式字段,例如
solid.cylinder base:["w/2-6","d/2-6","wall"]
普通数字永远不会跟随参数变化。
- 将草图尺寸设为
-
重复操作:
solid.pattern.rectangular使用表达式指定间距;solid.mirror接受XY/XZ/YZ、构造平面或{origin, normal}(原点坐标可以是长度表达式,例如["half", 0, 0])。镜像或阵列特征不能再次镜像或阵列。 -
边和面的拾取会吸附到最近的边或面。如果边拾取点距离所有边都超过物体尺寸的 5%,则会被拒绝(
the nearest edge is 15.000 mm away)。对于大型物体,这个限制范围很大(例如,在 949 mm 的板上约为 48 mm),因此请根据几何形状计算精确的中点(居中方盒的竖直角边坐标为[w/2, d/2, h/2])。- 拾取点必须是普通数字。
- 拾取只会解析一次,之后参数变化时会跟随其对应的边。
- 面可以用名称而非点指定(
faces:["F1:+z"],即sheet.convert的face)。body_topology会列出每个面的name、位于其上的一个point(带孔面的质心位于孔内),对于圆柱还会列出{origin, axis, radius}。
-
轮廓: 默认情况下,拉伸会处理所有区域;一个区域内部的另一个区域会成为该区域中的孔:两个同心圆会生成一个环。环内的第三个圆会生成一个独立的圆盘实体。传入
profiles可选择区域。 -
顺序: 先对外侧边缘应用圆角,再抽壳,这样抽壳会沿着圆角成形。有两个例外:
- 抽壳要移除的面的边缘,例如敞口盒子的边缘:应在抽壳后再倒圆角,因为抽壳可能会在此处失败。
- 两个曲面之间的圆角,例如球体与圆柱相连处的圆角:此时抽壳会因
offset: only bodies with planes, cylinders, cones, spheres and tori失败。应先抽壳。这样内侧拐角会保持尖锐,因此该处的壁厚会小于thickness。
验证
- **每个阶段:**运行
measure {}(每个实体约 0.9 KB;{"summary":true}仅保留每个实体的名称、体积、包围盒、面数和closed),并将体积、包围盒和面数与计算值比较。如果切割或打孔后体积没有变化,即使操作报告成功,也说明操作没有生效。 - 时间线状态:
inspect_design {"measure":false,"sketches":false}会显示每个特征的error和warning。 - **参数测试:**运行
set_parameter。预期结果是errors: [],然后再次运行measure;质心和包围盒应按计算值移动。若要试用参数值而不保留更改,请运行check_parameters {"set": {"L": "140 mm"}},它会报告体积、错误和圆柱轴线,并将设计恢复原状。 - 位置:
measure不会说明特征的位置。- 对于非对称零件,检查计算出的质心偏移。
- 对于对称零件(镜像或阵列布局),质心不会移动,因此请截取俯视图,并根据已知尺寸比较像素距离。
- 对于孔和凸台,运行
body_topology {"body":"Body1","faces":"cylinders"}:每个圆柱占一条记录(包括radius、origin、axis、沿轴线的extent以及合并后各面的names),只需几行。 - 完整的
body_topology是最后手段:会产生 25-45 KB 数据,并将圆柱拆分为半面。
- **最终查看:**运行一次
screenshot {"source":"model","view":"iso","width":480,"height":320}。对于位于壁内、等轴测视图中看不到的特征,请使用"view":"top"。width和height仅适用于模型渲染。- 桥接服务时,
source默认值为整个应用窗口,view也会改变用户的相机视角,因此请传入"source":"model";除非用户希望移动相机,否则不要传入view。
完成
export {path} 会导出 .step(用于 CAD)、.3mf/.stl(用于打印)或 .urdf(带有关节的装配体,适用于机器人模拟器)。save {path} 会保存为 .sc(较早版本生成的 .solidcraft 文件仍可打开)。
警示信号
| 想法 | 应改为 |
|---|---|
| “先列出所有命令” | 查看 reference.md,或运行 list_commands {"filter":"<distinctive word>"}。未筛选的列表超过 100 KB。 |
| “用 body_topology 检查位置” | 将 measure 得到的质心和包围盒与计算值比较。 |
| “检查草图” | sketch.solve 会在 100 字节以内返回自由度和轮廓数量。单独运行 sketch.inspect,不要放在大型批处理中。 |
| “从空白状态开始,运行 new_design” | 桥接服务时,请先询问。 |
| “它报告正常,所以操作成功了” | 只有 measure 与计算值一致,才算成功。 |