引言:从一次翻车开始
那是2023年秋天,我接了一个智能音箱的ID设计项目。客户给了一个看似简单的需求:在圆润的鹅卵石造型上,做一个内凹的收音孔阵列。我当时想都没想,直接用了布尔运算差集,结果倒圆角的时候傻眼了——边缘全是碎面,倒角直接失败。在火星人教育的课堂上,我经常跟学员说:Rhino里修剪和分割是两回事,布尔减运算其实是它们的组合。那次翻车让我决定,必须把这两个命令背后的原理掰开揉碎讲清楚。

一、项目需求与技术选型
这个项目的外观是典型的双曲面壳体,来自一张放样曲面。收音孔区域是一个略微内凹的菱形区域,上面要分布4×6的圆孔。难点在于:孔洞不能穿透壳体(是盲孔),而且孔洞边缘要跟壳体表面顺滑过渡。最初的方案是:先画好曲面,然后用平面曲线投影到曲面上,再用Trim(修剪)或Split(分割)切出孔洞区域,最后用放样生成内凹斜面。但问题来了:Trim和Split到底该用哪个?经验不足的设计师往往混用,但它们的结果和后续影响完全不同。
1. Trim与Split的本质区别
在Rhino中,修剪(Trim)是用一条或多条曲线(或曲面交线)作为“剪刀”,把目标曲面的一部分隐藏掉,但不改变曲面的底层数学定义。被修剪的部分只是被隐藏,并没有被删除——你可以用Untrim命令随时恢复。而分割(Split)则是把原始曲面真正的切成若干独立的曲面片,每个碎片都有自己的边缘和结构线。换句话说,Trim是“假删”,Split是真切。
技术洞察:Trim命令的底层实现是给曲面添加了一个“修剪环”(trimming loop)的隐藏属性,而Split是重新计算曲面域(domain),把原来的曲面在参数空间里切成多个面片。这也是为什么Trim后的曲面在导出到其他软件(比如SolidWorks)时可能产生“无效曲面”的警告——因为修剪只是视觉上的修剪,底层还是那个完整的曲面。
于是,对于孔洞这种需要后续倒角、偏移的操作,我选择了Split——因为后续的孔壁和倒角需要精确地基于孔洞边缘来构建,而Split生成的边缘是真正的曲面边界,可以直接用来生成棱线或混接曲面。

二、技术实现:曲面分割的深度操作
方案定了,接下来是实操。我先把壳体曲面做好,然后在Top视图中画出菱形轮廓线,投影(Project)到曲面上。注意,投影方向如果垂直于视图平面,对于大曲率的曲面可能产生拉伸变形。这里我改用ShrinkTrimmedSrf先把曲面缩小到有效范围(这个命令会移除多余的未修剪区域,让曲面更干净),然后用投影曲线去Split。
但Split有个陷阱:分割曲线必须穿透曲面,否则会失败。菱形投影线刚好在曲面内部,没问题。可孔位阵列是4×6共24个圆孔,如果一个个去分割,效率太低。于是我写了个简单的Grasshopper脚本:把菱形区域用等距曲线生成网格点,批量生成圆曲线并投影,再用Brep.Split一次性分割。分割后得到了24个独立的孔面片。
2. 踩坑:盲孔怎么做
分割成功后,下一步要做盲孔——即孔洞不是贯穿的,而是有一定深度的凹陷。我最初的想法是:把孔面片删除,然后用OffsetSrf把那个区域的曲面往里偏移,再放样连接孔壁。但直接偏移后,边缘的端面是垂直的,跟客户要求的“顺滑内凹”不符。
技巧:在Rhino中做这种凹陷,推荐用“双轨扫掠(Sweep2)”或“放样(Loft)”生成过渡面,而不是简单偏移。因为偏移只能生成等距面,无法控制过渡的曲率变化。
于是我改用另一种策略:不删除孔面片,而是把它作为一个驱动面,用BlendSrf(混接曲面)在孔面片的外围和主壳体之间生成平滑的凹坑过渡。但BlendSrf要求两个面有连续的边缘,否则会产生扭曲。所以第一步还是得把孔区域从主壳体中“裁剪”出来——这里又用回了Trim!
3. Trim与Split的协作
这时候我意识到,Trim和Split不是互斥的,而是可以组合使用的。我的最终流程是:
- 第一步:用Split把壳体分成“主体”和“孔区”多个曲面片。
- 第二步:保留孔区面片,用Trim把主体面片在孔区外围剪出一个边缘,作为混接的引导线。
- 第三步:用BlendSrf在主体边缘与孔区面片之间生成过渡曲面。
- 第四步:删掉多余的辅助面,用
MergeSrf把多个混接面合并成一个单一曲面,方便后续倒角。
这里的关键是理解曲面的“水路(isocurve)”方向。Split后的面片边缘如果与原曲面的结构线不平行,混接时容易出现“褶皱”。老鸟会先用MatchSrf(匹配曲面)把两个待混接的曲面在边缘处曲率连续(G2),再从匹配后的边缘做混接,这样能得到完美的顺滑过渡。
| 操作 | 底层机制 | 适用场景 |
|---|---|---|
| Trim | 添加修剪环,隐藏部分曲面 | 挖孔后保留孔片做其他用途 |
| Split | 重新划分曲面域 | 需要生成独立边缘的子曲面,后续与主体断开操作 |
| Untrim | 移除修剪环 | 撤销Trim,恢复完整曲面 |
| MergeSrf | 合并相邻曲面,消除接缝 | 需要单一曲面用于后续倒角或渲染 |
在这个项目中,后来我调整为:先用Trim把孔区剪出来(保留孔片),然后用DupBorder提取边缘曲线,再用BlendSrf生成过渡,最后用Split把过渡面与主壳体精确接合。整个过程,Trim负责“视觉裁剪”,Split负责“实体切割”,两者缺一不可。

三、交付与复盘
最终模型交付时,客户要求提供STEP格式用于结构设计。我吸取了教训,所有需要倒角的边缘都尽量避免Trim残留——因为Trim过的曲面在导出时可能产生“边界错误”,导致下游软件无法识别。我的做法是:在Rhino里先把所有曲面用MergeSrf合并成尽可能少的单一曲面,然后用ShrinkTrimmedSrf清理隐藏的修剪区域,最后导出为STEP,这样得到的是干净的解析曲面。
复盘整个项目,最深的体会是:很多设计师把Trim和Split当作“切橡皮”的工具,但其实它们是理解Rhino曲面数据结构的钥匙。Trim后的曲面仍然是一个完整的NURBS曲面,只是多了“隐藏”信息;而Split是真正地把一个曲面在参数空间里切成多个域。什么时候用Trim、什么时候用Split,取决于后续操作需要的到底是“视觉上的干净”还是“数学上的独立”。
4. 给进阶设计师的建议
注意:在做倒角(Fillet)之前,务必检查模型边缘是否干净——用
ShowEdges命令高亮显示所有外露边缘。如果出现紫色(未修剪边缘)或黄色(修剪边缘)的杂乱线条,说明你的模型里混了Trim和Split产生的非流形边缘,倒角大概率会失败。
另外,对于复杂的渐变网格孔洞(这个项目的菱形区域其实我后来又加了渐变大小的孔阵),用Grasshopper配合Trim和Split可以成百上千次地自动化,但一定要保证每个孔洞的生成逻辑一致,否则后期修改会累死。我的建议是:在犀牛里手动做一次,然后用Grasshopper参数化,并留好“重置”按钮,方便反复实验。
最后聊一下行业趋势:现在AIGC辅助设计越来越热,但Rhino这种硬核曲面工具依然是工业设计的基石。就像我们火星人教育的课程里强调的:不管AI能生成多少概念图,最终的物理模型和工程对接还得靠扎实的NURBS功底。Trim和Split就是这功底的基本功,但也是区分“会操作”和“懂原理”的分水岭。
关于火星人教育
我是火星人教育的Rhino技术导师。火星人教育创办24年来专注数字艺术与AIGC实战职业技能培训,开设课程包括AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训,在北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。如果你也想把Rhino曲面建模练到炉火纯青,欢迎来我们的工业设计课堂,咱们操练起来!咨询电话:010-65918670。








评论(0)