使用曲面拟合多边形网格

多边形网格可以是曲面拟合类型,它使用近似方法定义多边形网格以创建更平滑的对象。在 Teigha 中,多边形网格曲面拟合由以下函数提供:

void OdDbPolygonMesh::surfaceFit(OdDb::PolyMeshType surfType, OdInt16 surfu, OdInt16 surfv);

曲面使用 surfType、surfU 和 surfV 参数值拟合多段线网格。然后,在该曲面上计算“k3dFitVertex”类型的新顶点。这与常见 PEDIT 命令及其在其他 CAD 系统中的“SMOOTH SURFACE”选项相同,不同之处在于 Teigha 的方法使用传入的控制值,而 PEDIT 命令使用数据库中的控制值。

参数 surfType 可以是以下之一:

  • kQuadSurfaceMesh
  • kCubicSurfaceMesh
  • kBezierSurfaceMesh

此参数选择用于计算“平滑”网格点的 NURBS 衬底曲面的阶数(按 U 和 V)。请注意,对于 kBezierSurfaceMesh 选项,NURBS 的阶数分别为 M 和 N 的网格大小。

参数 surfU 和 surfV 定义“平滑”网格的行数和列数。

代码示例

OdDbPolygonMeshPtr pMesh = ...; // create some mesh
pMesh->surfaceFit(OdDb::kCubicSurfaceMesh, 12, 15);
for(OdDbObjectIteratorPtr pIter = pMesh->vertexIterator(); !pIter->done(); pIter->step())
{
  OdDbPolygonMeshVertexPtr pVert = pIter->entity(OdDb::kForRead);
  OdDb::Vertex3dType type = pVert->vertexType();
  if (type == OdDb::k3dFitVertex)
  {
    const OdGePoint3d pt = pVert->position();
    ... // use the fit vertex here
  }
}

初始网格形状和平滑结果示例

image1

 

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用