在 opencascade 中找出面部线 [关闭]

问题描述 投票:0回答:0

我在opencascade学习,

将 *.stp 文件导入到我的 opencascade 项目中。得到物体的形状,

用鼠标选中一些人脸,在selectedFace中找出Edge。

  for (myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
  {
      const TopoDS_Shape& selectedShape = myAISContext()->SelectedShape();
      TopExp_Explorer  myFaceExplorer(selectedShape, TopAbs_FACE);
      while (myFaceExplorer.More())
      {
          TopoDS_Face aface = TopoDS::Face(myFaceExplorer.Current());
          TopoDS_Wire outer_wire = ShapeAnalysis::OuterWire(aface);
          for (TopExp_Explorer edgeExp(outer_wire, TopAbs_EDGE); edgeExp.More(); edgeExp.Next())
           {
               TopoDS_Edge anEdge = TopoDS::Edge(edgeExp.Current());
           }
         myFaceExplorer.Next();
      }
    }

现在:

  1. 我可以得到一张脸,代码有效
  2. 如果两个面共用一条线,如何去除重复线并取出两个面的线?

脸1 enter image description here

脸2 enter image description here

** 脸 1 && 脸 2 ** enter image description here

我应该怎么做才能得到face1 + face2的出线,或者应该先合并两个脸,我不确定下次可能是face1 + face2 + face3 + ... faceN

任何想法/示例代码都会有所帮助。

谢谢

c++ 3d
© www.soinside.com 2019 - 2024. All rights reserved.