曲面是一个无限薄壳的 3D 对象。在 ODA 软件中,有几种类型的曲面。类依赖关系如下所示。
将实体转换为曲面
以下方法将实体转换为曲面:
static OdResult createFrom ( const OdDbEntity* pFromEntity, OdDbSurfacePtr& pNewSurface );
该方法从具有厚度的 2D 实体创建拉伸曲面 (OdDbExtrudedSurface),或从闭合曲线或区域创建平面曲面 (OdDbPlanarSurface)。对于 OdDb3dSolid,只创建一个曲面 (OdDbSurface)。通常,此方法从不同的实体复制 Spatial® ACIS® 数据,并将数据插入 OdDbSurface。参数如下:
- pFromEntity — 输入实体,可以是 OdDbCircle、OdDbEllipse、OdDb3dPolyline、OdDb2dPolyline、OdDbPolyline、OdDbSpline、OdDb3dSolid、OdDbSolid 或 OdDbRegion。
- pNewSurface — 生成的曲面。
如果成功创建曲面,该方法返回 eOk,否则返回相应的错误代码。
此方法适用于 SpaModeler 和 ModelerGeometry。
还有一个厚度参数,可以从二维实体创建 OdDbExtrudedSurface。
代码示例:
…
OdDbSurfacePtr pSurface; // resulting surface
OdDbEntityPtr pEntity = pDb->getObject… // input object
OdResult res = OdDbSurface::createFrom(pEntity, pSurface);
…
三维实体转换示例
以下是转换为曲面之前的三维实体:
以下是转换为曲面后的三维实体:
闭合多段线转换示例
以下是厚度为 2.0 的闭合多段线在转换为拉伸曲面之前和之后的效果。
闭合区域转换示例
以下是闭合区域在转换为平面曲面之前和之后的效果。
使用示例命令尝试转换
ExCommands 中提供了一个名为 createSurface 的示例命令。该示例命令允许您将不同类型的实体转换为曲面。您可以选择一个或多个实体,然后该命令会调用 OdDbSurface::createFrom(…) 方法进行转换。
下图展示了将 OdDb3dSolid(雪人)转换为曲面的过程。