如何在 SolidCraft 中 5 步让整条模型跟着参数自动重建
【免费下载链接】solidcraftSolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP.项目地址: https://gitcode.com/gh_mirrors/so/solidcraft
改一处数字,就要手工重画半个零件?在 SolidCraft 里,建模的第一步就是给尺寸"起名字":宽度不写 60,而写width = 60 mm,改数字时特征时间线会从第一个受影响的特征开始重建,孔位、倒角全部自动跟随。下面以一块参数驱动的样板为例,讲清楚怎么建这样的模型、怎么用脚本改参,以及报错都出在哪。
先看地图:参数体系里有什么
SolidCraft 的参数分两类:模型参数是草图标注、特征输入自动生成的(d1、d2……),用户参数是你手动添加的"名称 + 表达式 + 可选注释"。入口和用途如下:
| 能力 | 入口 | 说明 |
|---|---|---|
| 用户参数 | MANAGE 选项卡 → PARAMETERS → Parameters | 名称、表达式、注释,Enter 连续录入 |
| 命名值 | 任意尺寸/特征输入框直接输入width = 40 | 立即创建参数并绑定该输入 |
| 表达式补全 | 表达式框内 Ctrl+Space,↑/↓ 选择 | 参数名、函数、单位、常数 |
| 导出/导入 | parameters.export/parameters.import | CSV 或 JSON,方便交团队 |
| 多方案配置 | CONFIGURATIONS → Config Table | config.activate按行切换一组参数值 |
| 依赖排查 | parameters.users/parameters.graph | 查某参数驱动了哪些特征、有无循环 |
走通一次重建:parameters.change 的输入与输出
核心机制是一条命令闭环:输入→ 求值与校验 →输出重建结果。
{"command": "parameters.change", "params": {"name": "width", "expression": "80 mm"}}这条命令把width的值改成 80 mm。引擎会先做单位感知的表达式求值(1 in + 3 mm这类混合运算合法,长度填到角度框会直接报错),再沿时间线重建用到它的所有特征。如何验证结果:返回 JSON 里value是换算后的毫米值,recomputed列出重建过的特征,errors列出失败特征及原因;如果值改回了旧值,restored会标出"结果直接复用、未重算几何"的特征。
批量改参走同一个命令的changes分支,一次提交、只重建一次:
{"command": "parameters.change", "params": {"changes": {"width": "80 mm", "height": "20 mm"}}}跟着 5 步建一个参数驱动样板
官方参考用例 recipe.json 完整演示了这套结构,可以照着做:
- 建草图:SOLID 工具栏 → New Sketch,选 XY 平面。预期:进入草图环境,原点出现在视图中心。
- 画矩形加圆,标注填表达式:矩形两条边分别标
width、depth,圆直径标hole_d,孔心到原点标width / 2和depth / 2。预期:孔心始终居中,标注上显示的是参数名而不是死数字。 - 拉伸成实体:solid.extrude,距离填
height。预期:得到带通孔的样板,60×40×15 mm,体积 36000 mm³。 - 改参看重建:打开 Parameters 对话框,把
width从 60 改成 80。预期:时间线从草图起重建,矩形从起点角向外生长(不会两端同时缩),孔保持居中。 - 验证数值:体积应精确变为 48000 mm³。官方的 UI 场景测试 s10_parameters_drive_model.json 就是这么断言的——把
d1从 40 改到 55,体积必须从 12000 变成 16500 且errors为 0。
用脚本把改参变成流水线
SolidCraft 的一切操作都是带 JSON 参数的命令,脚本就是一个命令列表,用solidcraft-cli run script.json --out part.step执行(格式见 docs/scripts.md)。官方测试语料里的塑料件脚本 modern-plastic.json 只有两行就确立了"壁厚参数化":
{"command": "parameters.change", "params": {"name": "wall", "expression": "2 mm"}} {"command": "solid.shell", "params": {"faces": [[40, 25, 30]], "thickness": "wall"}}它先定义壁厚参数,再让solid.shell的厚度直接引用wall——后续换材料规则只改一个值。验证方式:--out导出的 STEP 用任意 CAD 软件量壁厚,应为 2 mm。
两个进阶用法:
- 范围预检:
{"command": "inspect.parameter_sweep", "params": {"parameter": "width", "from": 30, "to": 80, "steps": 9}}会在每个取值上重建一份副本(不动原设计),报告哪些值出现特征失败、草图解算失败。适合"一个模板出多个尺寸"前摸底。 - 一键切换方案:Config Table 每行存一组参数值、被抑制的特征、材料与外观,
config.activate按行名切换,见 docs/configurations.md。
避坑清单:参数报错的四种高频形态
| 现象 | 原因 | 正确做法 |
|---|---|---|
| 报错说长度不能当角度(反之亦然) | 表达式类型与输入框不匹配,SolidCraft 不做静默换算 | 显式带单位,如30 deg;裸数字遵循设计单位(mm 设计里2即 2 mm,英寸设计里0.25是 0.25 in) |
| 删除参数被拒绝,错误列出一串名字 | 参数正被表达式、标注或特征引用 | 用parameters.users看引用方;要换名用parameters.rename,引用会级联更新 |
改参时报循环a → b → a | 两个参数的表达式互相引用 | 断环:把其中一个改回裸数字或引用第三个参数 |
| 改参后某个下游特征失败 | 几何在新取值下不成立(如圆角半径大于壁厚) | 看errors里的特征名和原因;用inspect.parameter_sweep先扫出合法范围再定值 |
键盘细节:参数编辑器里按 Enter 提交后焦点回到名称栏,可连续录入;表达式框中 ↑/↓ 选建议、Enter/Tab 接受、Escape 关闭。Preferences › Design 里开着"Step values with the arrow keys and the wheel"(默认关)时,↑/↓ 可以按 1 步进裸数字,Shift 步进 10,Alt 步进 0.1。
命令与语法速查
| 项 | 内容 |
|---|---|
parameters.change | 单个改参 /changes批量 /new_name重命名 /delete删除 |
parameters.list | 列出参数,filter可取 all / user / sketch / feature |
parameters.users/parameters.graph | 单参引用方 / 完整依赖图(含循环) |
parameters.export/parameters.import | CSV 或 JSON,导入是"全成功或全失败" |
parameters.favorite/parameters.comment/parameters.move | 收藏、注释、排序 |
expr.evaluate | 不改动设计,试算一个表达式 |
config.activate | 激活配置表某一行 |
| 运算符 | + - * / ^ %与括号 |
| 函数 | sin cos tan asin acos atan atan2 sqrt abs min max floor ceil round exp ln log log10 hypot pow trunc mod等,见 expr.rs |
| 常数 | pi;单位支持 mm cm m in ft deg rad |
延伸资源
- 参数与表达式官方指南:docs/book/src/guide/parameters.md
- 特征命令一览:docs/book/src/guide/features.md
- 脚本格式与 CLI 运行方式:docs/scripts.md
- 配置表(Configurations):docs/configurations.md
- MCP 自动化:docs/mcp.md
- 命令实现:crates/engine/src/cmd/parameters.rs
- 表达式求值器:crates/doc/src/expr.rs
- 获取源码:
git clone https://gitcode.com/gh_mirrors/so/solidcraft,然后用cargo run --release -p solidcraft-cli -- run examples/bracket.json --out bracket.step跑通第一条脚本。
【免费下载链接】solidcraftSolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP.项目地址: https://gitcode.com/gh_mirrors/so/solidcraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考