ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SolidCraft 参数化建模上手指南:5 个核心实体特征把草图变成可改尺寸的零件

SolidCraft 参数化建模上手指南:5 个核心实体特征把草图变成可改尺寸的零件

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 是一款用纯 Rust 编写的参数化 3D CAD 工具。本文拆解它最常用的 5 个实体特征——拉伸、旋转、圆角倒角、抽壳、阵列,讲清每个特征替你干什么、参数怎么填,再把它们串成一个随时可以改尺寸的零件。

Sample Plate 工作区:左侧浏览器列出草图与特征,中间是 3D 实体,底部 History 时间轴按顺序记录每一步。

先看懂模型怎么长出来:特征都排在时间轴上

SolidCraft 走经典参数化流程:先画草图(带尺寸和约束的 2D 轮廓),再用特征把它变成实体、加工出形状。每个特征都按顺序记在窗口底部的时间轴上,模型从第一个发生变化的特征开始增量重建;特征可以双击编辑、抑制、重命名、调整顺序或删除,删除时若有下游依赖会先提示。

核心心智模型:草图是 2D 轮廓,特征负责把它"抬"成立体或加工掉材料,而每个尺寸都是一个随时可以拧的旋钮。

完整命令清单见 docs/features.md,参数与表达式机制见 参数指南。

用拉伸把草图变成实体

干什么:把闭合草图轮廓沿一个方向"拔"出指定距离,是最主要的建实体方式。它会自动识别闭合轮廓,包括被直线分割的区域和外轮廓内部的孔。

适合:底板、壳体、支架、凸台——绝大多数零件的起点。拉伸前的草图长这样:

草图里每个数字都可编辑:80×50 的矩形、Ø24 的中心圆、两个对称孔。

参数一览(solid.extrude的字段):

参数说明
distance拉伸距离,可填表达式,如20或2 * width
directionpositive/negative/symmetric(对称把距离当总厚,向两侧各分一半:10 mm 即 -5 到 +5)
taper锥度角:10×10 mm 正方形拉伸 10 mm,taper: "5 deg"远端约 11.75×11.75 mm,"-5 deg"约 8.25×8.25
through_all"贯穿",直接穿到另一端
operationnew_body/join/cut/intersect

💡 不指定operation时,SolidCraft 会在设计副本上后台试跑一次 join 来推断 join/cut/new_body——"加料"变成"挖空"时先查这个字段;你显式选过的操作会保留。

用旋转做回转体

做什么:把草图绕一根轴转一个角度,是杯子、法兰、轴、轮毂这类回转体的最佳选择。

适用场景:截面是轴一侧封闭轮廓的一切零件。

参数速查(solid.revolve):

参数说明
angle旋转角度,360表示一整圈
angle2双侧旋转时的第二个角度
symmetric把输入角度围绕草图两侧均分,与轴指向无关
axis旋转轴:可来自直线、圆形边,或圆柱/圆锥/圆环面;脚本里也可写X/Y/Z或{origin, dir}

💡 轮廓画在轴的一侧;对称旋转会把角度围绕草图均匀分配,因此轴方向写反也不会转反。

用圆角和倒角给零件收边

目的:圆角(Fillet)把锐边磨成圆弧,倒角(Chamfer)削成斜面。Fillet 支持平面间的直线边、整条光滑边环、邻接边链(交角处斜接或球形过渡)以及闭合的曲线边链。

何时用:典型后置工序,排在拉伸/旋转/打孔之后,用于去毛刺、减应力、视觉收尾。

圆角对话框:选边、设radius,还能切换连续性等级。

参数明细(solid.fillet/solid.chamfer):

特征参数说明
Filletradius圆角半径
Filletedges每条选中边上的一个点,一个点锁定整条边
Chamferdistance/distance2等距倒角,两侧深度
Chamferangle"距离 + 角度"式倒角,与distance配合

⚠️ 特征的边/面引用按持久化名字存储:上游改动移动了几何,特征仍挂在正确的面上;真找不到时给出警告,而不是静默挑另一张面。Fillet 对话框里的 G2 类型用精确五次曲线混合,曲率平滑贴合两侧,适合要做反射的曲面。

用抽壳把实心体掏成薄壁

角色:把实心体掏空成指定壁厚,并让一张或多张面保持开放,是外壳、盒子、省材料件的核心操作。

使用场景:需要薄壁的壳体;想保留底面、顶部开口的盒子。

参数表(solid.shell):

参数说明
thickness掏空后的壁厚
faces选中的开放面——这些位置被掏掉形成开口;脚本里也可以给面名,如"F2:side#1"
direction掏空方向

💡 先选开口面、再定壁厚:选中顶面、thickness填 2,就是一张 2 mm 壁厚的开口盒。脚本形态:{"command":"solid.shell","params":{"faces":[[50,30,30]],"thickness":2}}

用阵列让重复特征批量出现

解决什么问题:把一个特征(孔、凸台)按规则复制多份,免去手工重复建模。三种类型:矩形solid.pattern.rectangular、圆形solid.pattern.circular、沿路径solid.pattern.path。

高光时刻:网格孔位、法兰均布孔、沿曲线排的凸台。

关键参数:

参数说明
features要阵列的特征;副本重放原操作,孔还是孔
count/count1、count2实例数,包含原始特征
spacing1、spacing2矩形阵列两方向的间距;两方向可成任意夹角,不给第二方向就是单行
angle圆形阵列总角度:90° 放 6 个就是 18° 一步
alignment布局,省略默认right;center让原件不动、副本两侧交替
axis圆形阵列轴:X/Y/Z、{origin, dir},或圆边/圆柱面

💡 整圆会把 360° 除以数量,不会在 360° 处重复原件;副本跟随原特征——上游把孔径改大,所有副本一起变。

组合实战:从空文件到一个可改尺寸的底板

以开头的 Sample Plate 为目标:

  1. 在 XY 平面新建草图,画 80×50 mm 矩形、中心 Ø24 圆和两个对称孔;
  2. solid.extrude,distance填 20,底板成型;
  3. 顶面再画一个圆,拉伸 10 mm,operation自动选join,凸台长出来;
  4. 选中四条竖棱和孔口边,solid.fillet,radius3;
  5. 选中一个孔,solid.pattern.circular,axis: "Z"、count6,整圈均布;
  6. 在 Change Parameters 里加用户参数width = 80,让矩形长边引用它;
  7. 把width改成 90:从第一个用到它的特征开始重算,草图、拉伸、凸台、圆角、孔阵列全部联动,无需重画。

想要薄壁就在末尾再加一步solid.shell:faces选顶面、thickness2。

新手常问的三个问题

Q:想加料,拉伸却把模型挖空了?是operation的自动推断在起作用:它在副本上后台试跑 join 来决定 join/cut/new_body。行为不符时显式指定operation即可。

Q:上游尺寸一改,圆角或阵列挂错面了?不会悄悄挂错。引用按持久化名字存,几何移动后特征仍找到正确的面;找不到会警告,而不是静默挑另一张面。

Q:这些特征能用脚本或命令行驱动吗?能。所有命令走同一套引擎:工具栏、脚本、solidcraft-cli exec <id> '<json>'、MCP 都是同一份命令。CLI 还能把设计历史导出成脚本(timeline.export_script),改一个 JSON 数值就重建出零件。

带走五句话

  • 特征排在时间轴上,模型从第一个变化处增量重建
  • 拉伸建主体,旋转做回转体
  • 圆角/倒角是后置工序,引用按名字持久,不会挂错面
  • 抽壳先选开口面再定壁厚;阵列的数量包含原件,副本跟随原件更新
  • 每个输入都是参数:改一个数字,下游全部重算,命令注册与重放逻辑在 crates/engine/src/cmd/

上手顺序:先画一个约束完整的草图,依次叠拉伸、旋转、圆角、抽壳、阵列,最后把关键尺寸抽成用户参数——你会立刻体会到"改一个数字,整个零件重算"的参 数化闭环。

【免费下载链接】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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进