SHAPER 9.16.0
GeomAlgoAPI_EdgeBuilder.h
1// Copyright (C) 2014-2026 CEA, EDF
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#ifndef GeomAlgoAPI_EdgeBuilder_H_
21#define GeomAlgoAPI_EdgeBuilder_H_
22
23#include <GeomAlgoAPI.h>
24#include <GeomAPI_Edge.h>
25#include <GeomAPI_Pnt.h>
26#include <GeomAPI_Dir.h>
27#include <GeomAPI_Lin.h>
28#include <GeomAPI_Circ.h>
29#include <memory>
30#include <vector>
31
32class GeomAPI_Ax3;
34
40class GEOMALGOAPI_EXPORT GeomAlgoAPI_EdgeBuilder
41{
42 public:
46 static std::shared_ptr<GeomAPI_Edge> line(std::shared_ptr<GeomAPI_Pnt> theStart,
47 std::shared_ptr<GeomAPI_Pnt> theEnd);
48
53 static std::shared_ptr<GeomAPI_Edge> line(double theDX,
54 double theDY,
55 double theDZ);
56
59 static std::shared_ptr<GeomAPI_Edge> line(const std::shared_ptr<GeomAPI_Lin> theLin);
60
62 static std::shared_ptr<GeomAPI_Edge> cylinderAxis(
63 std::shared_ptr<GeomAPI_Shape> theCylindricalFace);
64
66 static std::shared_ptr<GeomAPI_Edge> lineCircle(std::shared_ptr<GeomAPI_Pnt> theCenter,
67 std::shared_ptr<GeomAPI_Dir> theNormal,
68 double theRadius,
69 double theRotationAngle = 0.);
70
72 static std::shared_ptr<GeomAPI_Edge> lineCircle(std::shared_ptr<GeomAPI_Circ> theCircle);
73
75 static std::shared_ptr<GeomAPI_Edge> lineCircleArc(std::shared_ptr<GeomAPI_Pnt> theCenter,
76 std::shared_ptr<GeomAPI_Pnt> theStartPoint,
77 std::shared_ptr<GeomAPI_Pnt> theEndPoint,
78 std::shared_ptr<GeomAPI_Dir> theNormal);
79
81 static std::shared_ptr<GeomAPI_Edge> ellipse(const std::shared_ptr<GeomAPI_Pnt>& theCenter,
82 const std::shared_ptr<GeomAPI_Dir>& theNormal,
83 const std::shared_ptr<GeomAPI_Dir>& theMajorAxis,
84 const double theMajorRadius,
85 const double theMinorRadius);
86
87
89 static std::shared_ptr<GeomAPI_Edge> ellipticArc(
90 const std::shared_ptr<GeomAPI_Pnt>& theCenter,
91 const std::shared_ptr<GeomAPI_Dir>& theNormal,
92 const std::shared_ptr<GeomAPI_Dir>& theMajorAxis,
93 const double theMajorRadius,
94 const double theMinorRadius,
95 const std::shared_ptr<GeomAPI_Pnt>& theStart,
96 const std::shared_ptr<GeomAPI_Pnt>& theEnd);
97
99 static GeomEdgePtr bsplineOnPlane(const std::shared_ptr<GeomAPI_Ax3>& thePlane,
100 const std::list<std::shared_ptr<GeomAPI_Pnt2d> >& thePoles,
101 const std::list<double>& theWeights,
102 const std::list<double>& theKnots,
103 const std::list<int>& theMults,
104 const int theDegree,
105 const bool thePeriodic);
106
108 static GeomEdgePtr bsplineOnPlane(const std::shared_ptr<GeomAPI_Ax3>& thePlane,
109 const std::shared_ptr<GeomAPI_BSpline2d>& theCurve);
110};
111
112#endif
The class represents a coordinate plane which is 2d plane with X and Y directions and origin.
Definition: GeomAPI_Ax3.h:33
B-spline curve in 2D.
Definition: GeomAPI_BSpline2d.h:36
Allows to create face-shapes by different parameters.
Definition: GeomAlgoAPI_EdgeBuilder.h:41