请选择 进入手机版 | 继续访问电脑版

Brep、NurbsSurface、GeometryBase 和 Surface 之间的区别

[复制链接]
查看220 | 回复0 | 2021-9-6 21:46:50 | 显示全部楼层 |阅读模式


GeometryBase是一个抽象类,它统一了尽可能多的函数和属性,适用于任何地方的所有几何。曲线、点、曲面、网格,任你说。这很有用,因为现在所有几何图形都可以从 GeometryBase 派生,使它们的共同点成为定义问题。也就是说,不仅仅是Meshes和Surfaces都有一个计算形状边界框的函数,它是相同的函数,因为它是从GeometryBase继承的。

Surface是另一个抽象类,它统一了适用于所有表面的尽可能多的功能和属性。例如,所有表面都有一个面积。它们都有 U 域和 V 域。Rhino 支持多种不同的曲面定义,其中包括 PlaneSurfaces(基本上是实心矩形)、RevSurfaces(曲线绕轴旋转)、SumSurfaces(一条曲线沿另一条曲线移动)和 NurbsSurfaces。

NurbsSurface是一个非抽象类,它派生自 Surface(因此也来自 GeometryBase),它实现了 Nurbs 曲面的数学。因此,除了Surface 已经定义的任何内容之外,每个 NurbsSurface 都有控制点、结向量等等。

Brep是一个非抽象类,允许您创建由多个和/或修剪过的曲面组成的形状。例如,一个 Box 需要是一个 Brep,因为它包含 6 个在边缘连接的曲面。填充的字母O也需要是 Brep,因为它具有删除部分曲面的修剪曲线。Brep 维护许多几何实体列表,包括面、边、修剪、循环和顶点。所有这些都通过拓扑关系相互关联。Brep 是一个非常复杂的类,所以如果您不了解它是如何工作的,请不要担心。

BrepFace表示Brep 中的单个表面。BrepFaces 从不单独存在,它们始终是 Brep 对象的一部分。基本上,一个 BrepFace 代表包含修剪曲线的底层 Surface。一个盒子包含 6 个 BrepFace,所有这些都代表 6 个未修剪的平面。一个圆柱体包含 3 个 BrepFace,其中两个(帽)表示修剪的平面。

在 Grasshopper 中,我所说的 Surface 实际上是单面 brep。我选择脱离 Rhino SDK 术语,因为我希望表面能够有修剪的部分。当您将 BrepFace 转换为 Surface 时,您将丢失所有修剪信息。



http://grasshopperdocs.com/index.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则