引言:那个让我失眠的异形雕塑项目
去年秋天,我接了一个活——给某商业广场设计一座 8 米高的异形雕塑。甲方给了一个充满自由曲面的概念模型,要求我用 Rhino 做深化,并且要输出用于 CNC 加工的等高线切片数据。当时我心想:这不就是 Contour 命令拉几刀的事吗?结果,这个项目让我连续失眠了三个晚上,也让我对 Rhino 的轮廓切割(Contour)功能有了脱胎换骨的理解。

需求分析:甲方要的不是线,是能加工的面
甲方提供的模型是一个由 T-Splines 转成 NURBS 的雕塑,表面布满了流动的褶皱。他们要求:
- 将模型按 Z 轴方向切成 20mm 厚的片材,用于激光切割或 CNC 铣削;
- 每片轮廓必须光滑连续,不能有断裂或自相交;
- 输出格式要兼容下游的排料软件。
听起来很简单是吧?但当我第一次用 Contour 命令,在 Z 轴方向输入间距 20 后,得到的轮廓线乱七八糟——有的地方断成好几截,有的地方出现奇怪的尖角,甚至还有自相交的环。那一刻,我意识到:Contour 不是无脑切,它背后有一套完整的几何拓扑逻辑,不懂原理,就是瞎切。
技术选型:为什么选 Contour 而不是 Section
在 Rhino 里,切割模型有好几种方式:Contour(等高线)、Section(剖面)、Split(分割)。我最初用的是 Contour,因为它能一次性生成一系列等距轮廓线。但后来我发现,Contour 和 Section 的底层算法不同:
| 命令 | 原理 | 适用场景 |
|---|---|---|
| Contour | 用一系列平行平面与曲面求交,生成等距轮廓线 | 地形等高线、切片加工 |
| Section | 用单一平面切割,生成剖面线 | 剖面图、断面分析 |
| Split | 用平面或曲线将物体分割成实体 | 布尔运算、拆件 |
Contour 的优势在于批量生成,但它的算法对曲面精度极其敏感。如果模型存在微小的缝隙或重叠面,求交结果就会出现断线或多余线段。所以,选型不是关键,关键是预处理。
踩坑记:那些让我头秃的 Contour 翻车现场
第一个坑:轮廓线断裂。我检查了模型,发现 T-Splines 转 NURBS 时产生了许多修剪过的曲面,它们的边缘并不完全对齐,导致求交时平面穿过缝隙,轮廓线断成数段。第二个坑:自相交轮廓。雕塑表面有内凹区域,当切平面经过这些区域时,轮廓线会出现自交,这在加工中会导致刀具路径混乱。第三个坑:方向不一致。生成的轮廓线有的顺时针、有的逆时针,排料软件不认。
技巧:在运行 Contour 之前,先用 MergeAllFaces 或 ShrinkTrimmedSrf 修复曲面边缘,再用 ShowEdges 检查裸露边缘。这一步能解决 80% 的断裂问题。
解决之道:原理驱动的 Contour 高阶玩法
面对这些问题,我决定不靠运气,而是从原理出发,制定一套标准流程。
第一步:模型修复与简化
我先把模型导出为 STEP 格式,再重新导入,让 Rhino 重新计算曲面拓扑。然后使用 MergeAllFaces 合并共面相邻面,用 RebuildEdges 重建边缘。最后,用 Check 命令检查模型是否有洞、重叠等错误。这一步花了半天,但值得——它保证了后续 Contour 的稳定性。
第二步:Contour 参数的科学设置
我放弃了默认的 Contour 命令,改用 Contour 的变体——通过 _Contour 命令的选项,指定切割平面为世界 Z 轴,间距设为 20,起始点从模型最低点开始。关键来了:我勾选了 创建群组 和 在图层上 选项,这样每条轮廓线自动分配到独立图层,方便后续管理。
_Contour
_Pause
0,0,0
0,0,1
20
但这样生成的轮廓仍然有断线。于是,我决定用 Grasshopper 写一个自定义的等高线生成器,用 Brep|Plane 组件逐个求交,再通过 Join Curves 合并,最后用 Flip Curve 统一方向。这虽然慢,但每一步都可控。
注意:Grasshopper 的求交组件 Brep Plane 返回的是所有交线,包括内部孔洞的边界。需要根据法线方向过滤掉内部环,只保留外轮廓。
第三步:轮廓线的后处理
生成轮廓后,我使用 CurveBoolean 来合并重叠区域,消除自相交。然后,用 Rebuild 重建曲线,统一控制点数量,确保每条轮廓的光顺度一致。最后,用 Orient 将轮廓平移到 XY 平面,并缩放到 1:1,输出为 DWG 或 AI 格式。
这里有个小技巧:对于多层轮廓,我使用 Make2D 命令将所有轮廓投影到平面,并自动分层,这样导出后直接就能用于激光切割。

实战中的意外:从翻车到交付的转折
正当我以为流程已经完美时,甲方发来新要求:雕塑要增加内部灯带,所以需要在每层切片上预留走线孔。这意味着轮廓线必须包含内孔。我重新设计了 Grasshopper 脚本,使用 Brep Plane 获取所有交线,然后根据曲线的封闭性区分外轮廓和内孔,并分别存储到不同图层。最终,我生成了 400 多层轮廓,每层都有精确的外形和走线孔,直接导入了排料软件。
经验:Contour 的核心不在于命令本身,而在于你对模型的理解和对输出的控制。用 Grasshopper 自定义,才能真正做到“指哪打哪”。
交付与复盘:那些值得记住的教训
最终,雕塑如期交付,甲方非常满意。复盘这个项目,我总结了三条铁律:
- 预处理比切割更重要——模型质量决定轮廓质量,花 70% 时间修模,剩下 30% 才是切。
- 方向与层级是加工的生命线——轮廓线的方向、图层、命名,直接决定下游效率,必须在生成时统一规范。
- Contour 是起点,不是终点——真正的轮廓切割必须结合后处理,如曲线重建、布尔合并、批量导出。
这次经历让我深刻体会到,Rhino 的 Contour 命令虽然简单,但要想在实战中稳定输出,必须理解其背后的几何求交原理,并学会用工具链去控制每一个环节。希望我的故事能让你少走一些弯路。

关于火星人教育
作为一名在数字设计领域摸爬滚打多年的老司机,我深知实战经验的可贵。如果你也想系统掌握 Rhino 等工具在工业设计、AIGC 视觉设计中的高阶应用,不妨了解一下火星人教育。火星人教育创办 24 年来,专注数字艺术与 AIGC 实战职业技能培训,开设课程包括 AI 漫剧创作、AIGC 视觉设计、UE5 游戏特效、室内全屋定制、MAYA 三维动画、C4D 动态设计、工业设计、NUKE 影视后期、摄影摄像实训,在北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。如果你对这类实战技术感兴趣,欢迎致电咨询:010-65918670。希望我的经验能帮到你,咱们在火星人教育见!








评论(0)