首页 > 解决方案 > 如何在父形状中获取数字索引/位置(OpenCascade)

问题描述

我正在使用 OpenCascade 来获取三角剖分中的边顶点。为此,我使用边缘到面映射的帮助,边缘作为匹配面的键。但是,我还想获取父形状中面部的数字索引(例如,如果我使用面部编号TopoDS::Face(face_map(int face_number)))。

TopTools_IndexedMapOfShape edges;
TopExp::MapShapes (parent_shape, TopAbs_EDGE, edges);

TopTools_IndexedDataMapOfShapeListOfShape edge2FaceMap;
TopExp::MapShapesAndAncestors(shape, TopAbs_EDGE, TopAbs_FACE, edge2FaceMap);

for (int iedge = 1; iedge <= edges.Extent(); iedge++) {

  const TopoDS_Edge& edge = TopoDS::Edge(edges(iedge));
  const TopoDS_Face& face = TopoDS::Face(edge2FaceMap.FindFromKey(edge).First());

  // Get vertices...
}

我可以遍历所有面并匹配映射面,但这似乎效率很低。

TopTools_IndexedMapOfShape face_map;
TopExp::MapShapes(shape, TopAbs_FACE, face_map);

for (v = 1; face_number <= face_map.Extent(); face_number++) {
  if( face.IsSame(face_map(face_number)) ) {
    // Found face index.
  }
}

是否有更好或替代的方法来实现这一目标?

标签: c++indexingshapesfaceopencascade

解决方案


推荐阅读