SolidCraft 参数化建模实战:改一个数字,整个模型自己重建
SolidCraft 参数化建模实战改一个数字整个模型自己重建【免费下载链接】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改一个数字会发生什么参数化 CAD 里改一个数字模型会怎样打开 SolidCraft画一块板然后在参数面板把标高过的 24 换成 32按回车——板的厚度、凸台的位置、孔阵列跟着一起变你不用去动任何一个点。这就是参数化建模和普通画图的分界它交付的不是一张图纸而是一份可重放的配方几何不是用手推出来的而是引擎算出来的。SolidCraft 用纯 Rust 编写桌面、浏览器和 MCP 自动化共用同一套内核。钉住草图求解报告告诉你还剩几个自由度先告诉引擎哪条线必须水平画好一个矩形加两个孔此刻的线还只是当前形状拖一个点形状就跟着走样。你要做的是把关系交代给引擎——哪条边必须水平、两个孔必须同心于同一条中点线、它们的圆心关于原点镜像对称。SolidCraft 把这些关系写进ConstraintKind枚举crates/sketch/src/model.rs 里能看到完整清单Horizontal、Concentric、Symmetric、Coincident属于几何关系Distance、Radius、Angle则属于尺寸类。约束写完后坐标不是人排的是求解器算的。策略直接写在 crates/sketch/src/solver.rs 的模块注释里Unknowns are the coordinates of every non-fixed point and the radius of every circle. Each constraint contributes residuals...用大白话说每个没被固定点的 x/y 坐标、每个圆的半径都是未知数每条约束贡献一份残差不满足时差多少毫米。求解器把系统拆成连通分量逐个用阻尼 Gauss–NewtonLevenberg–Marquardt迭代把残差压到零。能精确解出来的点比如两条已知直线的交点会先被构造性消去根本不用上稠密矩阵——能算准的先算准剩下的再迭代。 读懂求解报告蓝色变黑意味着什么求解结束后会产出一份SolveReport其中dof字段表示自由度——还能往几个方向动的维度数。界面把它翻译成颜色欠约束的几何是蓝色dof 0时变黑表示位置被完全钉死。⚠️ 值得留意的是过约束不会被硬塞进去添加一条已经满足的约束求解器会拒绝并记录到failing状态栏始终显示剩余自由度你随时知道草图信息够不够。尺寸存在哪模型参数与单位感知表达式数字才是参数化建模的命门。SolidCraft 里数字不落回几何上你标出的尺寸、填进特征输入框的值都会变成按顺序命名的模型参数d1、d2……crates/doc/src/params.rs 的注释说明了这套机制Every parameter can be referenced by name from any expression; the dependency graph and cycles come from the expression references.任何表达式都能按名字引用任意参数依赖图和循环依赖从表达式引用中自动推导——不用手工接线。于是新尺寸可以写2 * width 5 mm拉伸距离可以写height / 2改一个值整条引用链跟着重解。表达式是单位感知的1 in 3 mm能正确混算但把长度传进角度位置会直接报错而不是悄悄换算。循环依赖会报告出路径a → b → a重命名参数自动更新所有引用它的表达式使用中的参数禁止删除。特征时间线模型为什么能重放草图画完接下来是特征extrude 出底板、fillet 圆角、shell 掏空、pattern 阵列孔位。这些操作在 SolidCraft 里不会融进几何而是各自成为时间线上的一个节点可以编辑、抑制、回滚或删除。真正的问题是改第 3 步后面 47 步要不要全部重来不要。增量评估的策略写在 crates/doc/src/lib.rs 的注释里Evaluation is incremental: a feature is recomputed only when it, a parameter it uses, or an earlier feature changed.只有自身、它引用的参数、或更早的特征发生变化时一个特征才会被重算此前的结果原样复用同一策略也落进了 crates/doc/src/eval.rs 的核心函数。所以长历史模型上改一个数、全模型重建实际是从改动处往后重建。改动实验把高度改掉看下游怎么重建拿 Sample Plate 动手试试一块底板一个凸台cylindrical boss两个通孔。把用户参数height从 10 改成 12——所有写成height相关表达式的拉伸距离、凸台尺寸整体联动而孔位因为相对底板定位纹丝不动。 这类重建里有个容易踩的坑如果下游特征靠序号引用上游的面上游一插入面序号漂移圆角就落到别的边上去了。SolidCraft 存的是名字而不是序号docs/book/src/dev/naming.md 开门见山SolidCraft storesnames, and finds them again every time the timeline evaluates.名字跟着内核的操作历史走crates/kernel/src/history.rs记录每张面从哪里来上游几何挪了位置名字照样找得到实在找不到时特征会给出警告而不是静默选错。这就是参数化 CAD 里改得放心的底气。鼠标之外参数化模型就是脚本时间线还完整暴露成对外接口。通过 JSON 控制通道timeline.inspect返回一个特征的当前定义和输入d1对应Distance 10timeline.edit改一个字段就触发重建例如{command: timeline.edit, params: {feature: Slab, set: {extent: {distance: 12}}}}——这一行命令省去了打开面板 → 找到输入 → 输数字的全过程详见 docs/book/src/guide/features.md。MCP 服务器让 AI 代理直接建模、测量靠的也是同一层接口操作的对象是配方本身不是屏幕上的像素。直接建模交付的是结果参数化建模交付的是原因约束、数字、特征顺序全部留档随时可以重放。人在界面里改一个尺寸或代理在网络上发一条命令模型走的都是同一条时间线——参数化的意义就在这意图被描述出来模型自然可以被重放。【免费下载链接】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),仅供参考