]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/GeomAlgoAPI/GeomAlgoAPI_FaceBuilder.cpp
Salome HOME
Issue #1649: Added options to create plane by coincident point;
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_FaceBuilder.cpp
index 7a625131054247ae5fa6778a66ccb5b391de4929..b5c5a4aa771ee07e166c12ae0243d080480766d8 100644 (file)
@@ -104,6 +104,26 @@ std::shared_ptr<GeomAPI_Face> GeomAlgoAPI_FaceBuilder::planarFaceByThreeVertices
   return aFace;
 }
 
+//==================================================================================================
+std::shared_ptr<GeomAPI_Face> GeomAlgoAPI_FaceBuilder::planarFaceByFaceAndVertex(
+    const std::shared_ptr<GeomAPI_Face> theFace,
+    const std::shared_ptr<GeomAPI_Vertex> theVertex)
+{
+  gp_Pln aPln = theFace->getPlane()->impl<gp_Pln>();
+  gp_Pnt aPnt = theVertex->point()->impl<gp_Pnt>();
+
+  std::shared_ptr<GeomAPI_Face> aFace;
+  GC_MakePlane aMakePlane(aPln, aPnt);
+  if(!aMakePlane.IsDone()) {
+    return aFace;
+  }
+
+  BRepBuilderAPI_MakeFace aMakeFace(aMakePlane.Value()->Pln());
+  aFace.reset(new GeomAPI_Face());
+  aFace->setImpl(new TopoDS_Face(aMakeFace.Face()));
+  return aFace;
+}
+
 //==================================================================================================
 std::shared_ptr<GeomAPI_Pln> GeomAlgoAPI_FaceBuilder::plane(const std::shared_ptr<GeomAPI_Face> theFace)
 {