-std::shared_ptr<GeomAPI_Pln> GeomAlgoAPI_FaceBuilder::plane(
- std::shared_ptr<GeomAPI_Shape> theFace)
-{
- std::shared_ptr<GeomAPI_Pln> aResult;
- if (!theFace)
- return aResult; // bad shape
- TopoDS_Shape aShape = theFace->impl<TopoDS_Shape>();
- if (aShape.IsNull())
- return aResult; // null shape
- if (aShape.ShapeType() != TopAbs_FACE)
- return aResult; // not face
- TopoDS_Face aFace = TopoDS::Face(aShape);
- if (aFace.IsNull())
- return aResult; // not face
- Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
- if (aSurf.IsNull())
- return aResult; // no surface
- GeomLib_IsPlanarSurface isPlanar(aSurf);
- if(!isPlanar.IsPlanar()) {
- return aResult;
- }
- gp_Pln aPln = isPlanar.Plan();
- double aA, aB, aC, aD;
- aPln.Coefficients(aA, aB, aC, aD);
- aResult = std::shared_ptr<GeomAPI_Pln>(new GeomAPI_Pln(aA, aB, aC, aD));
- return aResult;
-}
-
-std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_FaceBuilder::planarFace(std::shared_ptr<GeomAPI_Ax1> theAxis)
-{
- return planarFace(theAxis->origin(), theAxis->dir());
-}
-
-std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_FaceBuilder::planarFace(std::shared_ptr<GeomAPI_Pnt> theCenter,
- std::shared_ptr<GeomAPI_Dir> theNormal)
+//==================================================================================================
+std::shared_ptr<GeomAPI_Face> GeomAlgoAPI_FaceBuilder::planarFace(
+ const std::shared_ptr<GeomAPI_Pnt> theCenter,
+ const std::shared_ptr<GeomAPI_Dir> theNormal)