SolidCraft 零基础参数化教程:4 个参数如何驱动整个模型
【免费下载链接】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
把板宽从 60 改成 80,板上那只居中圆孔完全不用手动挪——它会自动保持居中。这正是 SolidCraft(纯 Rust 开源参数化 3D CAD)参数与表达式系统带来的能力:改一个数,整条时间线增量重建,几何跟着公式走。
实操先行:三步搭出参数化底板 🛠️
拿最经典的例子:一块由width、depth、height、hole_d四个参数驱动的底板,板上一只居中圆孔。
- 建参数:
width = 60 mm、depth = 40 mm、height = 15 mm、hole_d = 10 mm。 - 把公式绑到尺寸标注:草图矩形两条边分别填
width和depth,孔直径填hole_d,拉伸距离填height;关键一步是孔心坐标写成width / 2、depth / 2。 - 改参数看重建:把
width改成 80,矩形变宽,圆孔自动保持居中,时间线从第一个受影响特征开始增量重建。
新手最容易漏掉的就是第 2 步——位置关系也要用公式锁死。只给尺寸起名字、不给位置写公式,板子一缩放孔就"飘"了。
官方参考用例放在 tests/oracle/24-user-parameters/recipe.json,参数表和每处尺寸标注都是明文 JSON,可以逐步对照。
参数体系全景:模型参数 vs 用户参数
在 SolidCraft 里,每个尺寸与特征输入本身就是一个参数:草图标注的40、拉伸距离的10,都会被自动编号为d1、d2……这套"模型参数"默认就在,只是用编号引用不太方便。用户参数就是为此而加的第二类:自己起名,任何表达式都能按名字引用它。它由三部分组成:
| 组成 | 示例 | 作用 |
|---|---|---|
| 名称 | wall | 模型内唯一,供其他表达式按名引用 |
| 表达式 | 2 mm或width / 2 + 1 | 支持公式,不只是裸数字 |
| 注释 | 外壳壁厚,随 ABS 规则调整 | 可选,方便自己和团队理解 |
官方逐字说明见书中的 parameters.md。
表达式引擎:单位感知与类型安全
SolidCraft 的表达式是单位感知的,这是新手最容易被低估的能力:
1 in + 3 mm:不同单位混合运算,自动换算angle / 2:角度直接参与计算sqrt(area)、sin(x):三角、开方等数学函数齐备
可用运算符为+ - * / ^与括号,函数包括sin cos tan asin acos atan atan2 sqrt abs min max floor ceil round mod trunc及单位换算。
⚠️ 类型安全是它的另一条底线:把长度填进期望角度的输入框(或反过来)会直接报错,绝不"悄悄帮你换算"。输入时大声报错,比几何悄悄算错安全得多。命令的底层实现在 crates/engine/src/cmd/parameters.rs。
参数编辑器:录入、补全与依赖管理
SOLID 工具栏 CONFIGURE 面板里点Parameters打开参数编辑器,用户参数和d1式模型参数在这里集中管理,细节做得相当足:
- Enter 连续录入:在名称/表达式/注释栏提交后,焦点自动回到名称栏,批量录入很快
- ↑/↓ 表达式补全:输入时弹出参数名、函数名、单位、常数的建议,Enter/Tab 接受,Escape 关闭
- 重命名级联更新:改参数名,所有引用它的表达式、尺寸标注、特征输入自动跟随
- 循环依赖可视化:
a → b → a这类循环会连完整路径一起报出来,而不是莫名错误 - 受保护删除:正在被使用的参数删不掉,错误信息会列出每一处使用它的地方
补全逻辑见 crates/ui-egui/src/expression_complete.rs。
脚本化建模:一条命令驱动重建 🚀
SolidCraft 的一切操作都是带 JSON 参数的命令,所以"改参数→重建模型"完全可脚本化,parameters.change桌面端、CLI、MCP 通用:
{"command": "parameters.change", "params": {"name": "wall", "expression": "2 mm"}}配合solidcraft-cli,一段脚本就能完成建模、改参、导出。官方测试语料 modern-plastic.json 先用它设定壁厚wall,solid.shell的厚度直接引用——日后换材料规则只需改一个值。
重建结果还可被断言:UI 场景测试 s10_parameters_drive_model.json 把d1从 40 改为 55,断言模型体积从 12000 精确变为 16500——公式驱动,结果可验证。
进阶技巧
- 裸数字遵循设计单位:mm 设计里直接填
2就是 2 mm,英寸设计里就是 2 in;想显式换算就写"1 in" - 参数导出/导入:
parameters.export/parameters.import支持 CSV 和 JSON,参数表可以交给采购或工艺同事,改完再导回来 - Configurations 多变体:配置表每行存一组参数值、被抑制的特征、材料与外观,
config.activate一键切换,适合"同一设计、不同厚度版本" - 改参前查依赖:
parameters.users看某个参数驱动了哪些特征,parameters.graph返回完整依赖图——大模型里先看图再动手
常见问题速答
Q:公式报"长度不能当角度"?检查输入框的单位要求,在表达式里显式带上单位(如30 deg),不要用裸数字跨类型。
Q:改参数后某个特征重建失败?重建会列出失败特征的名称和原因;失败特征不会静默跳过,也不会产出残缺的导出文件。
Q:参数越来越多怎么整理?善用注释字段加收藏(parameters.favorite);再导出 CSV 做台账,团队共享后导入回来。
参数化建模的上手路径其实很短:先给关键尺寸起名字,再让位置关系也用公式表达,剩下的交给自动重建。特征侧的完整玩法可看书中的 features.md。
【免费下载链接】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),仅供参考