24 #ifndef PART_GEOMETRY_H 25 #define PART_GEOMETRY_H 27 #include <Adaptor3d_Curve.hxx> 28 #include <Geom_CartesianPoint.hxx> 29 #include <Geom_BezierCurve.hxx> 30 #include <Geom_BSplineCurve.hxx> 31 #include <Geom_Circle.hxx> 32 #include <Geom_Ellipse.hxx> 33 #include <Geom_Hyperbola.hxx> 34 #include <Geom_Parabola.hxx> 35 #include <Geom_Line.hxx> 36 #include <Geom_OffsetCurve.hxx> 37 #include <Geom_TrimmedCurve.hxx> 38 #include <Geom_Surface.hxx> 39 #include <Geom_BezierSurface.hxx> 40 #include <Geom_BSplineSurface.hxx> 41 #include <Geom_CylindricalSurface.hxx> 42 #include <Geom_ConicalSurface.hxx> 43 #include <Geom_SphericalSurface.hxx> 44 #include <Geom_ToroidalSurface.hxx> 45 #include <Geom_Plane.hxx> 46 #include <Geom_OffsetSurface.hxx> 47 #include <GeomPlate_Surface.hxx> 48 #include <Geom_RectangularTrimmedSurface.hxx> 49 #include <Geom_SurfaceOfRevolution.hxx> 50 #include <Geom_SurfaceOfLinearExtrusion.hxx> 51 #include <GeomPlate_BuildPlateSurface.hxx> 52 #include <Plate_Plate.hxx> 53 #include <TopoDS_Shape.hxx> 68 #include <boost/uuid/uuid.hpp> 69 #include <boost/uuid/uuid_generators.hpp> 81 virtual TopoDS_Shape toShape()
const = 0;
82 virtual const Handle(Geom_Geometry)& handle()
const = 0;
90 virtual Geometry *copy(
void)
const = 0;
99 boost::uuids::uuid getTag()
const;
101 std::vector<std::weak_ptr<const GeometryExtension>> getExtensions()
const;
104 bool hasExtension(std::string
name)
const;
105 std::weak_ptr<const GeometryExtension> getExtension(
Base::Type type)
const;
106 std::weak_ptr<const GeometryExtension> getExtension(std::string
name)
const;
107 std::weak_ptr<GeometryExtension> getExtension(
Base::Type type);
108 std::weak_ptr<GeometryExtension> getExtension(std::string
name);
109 void setExtension(std::unique_ptr<GeometryExtension> &&geo);
111 void deleteExtension(std::string
name);
145 GeomPoint(
const Handle(Geom_CartesianPoint)&);
150 virtual TopoDS_Shape toShape()
const;
159 const Handle(Geom_Geometry)& handle()
const;
160 void setHandle(
const Handle(Geom_CartesianPoint)&);
166 Handle(Geom_CartesianPoint) myPoint;
177 TopoDS_Shape toShape()
const;
191 bool tangent(
double u, gp_Dir&)
const;
196 bool closestParameter(
const Base::Vector3d& point,
double &u)
const;
197 bool closestParameterToBasisCurve(
const Base::Vector3d& point,
double &u)
const;
198 double getFirstParameter()
const;
199 double getLastParameter()
const;
200 double curvatureAt(
double u)
const;
201 double length(
double u,
double v)
const;
204 std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
205 double tol = ::Precision::Confusion())
const;
210 static bool intersect(
const Handle(Geom_Curve) c,
const Handle(Geom_Curve) c2,
211 std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
212 double tol = ::Precision::Confusion());
233 GeomBezierCurve(
const std::vector<Base::Vector3d>&,
const std::vector<double>&);
236 std::vector<Base::Vector3d> getPoles()
const;
237 std::vector<double> getWeights()
const;
245 void setHandle(
const Handle(Geom_BezierCurve)&);
246 const Handle(Geom_Geometry)& handle()
const;
249 Handle(Geom_BezierCurve) myCurve;
259 GeomBSplineCurve(
const std::vector<Base::Vector3d>& poles,
const std::vector<double>& weights,
260 const std::vector<double>& knots,
const std::vector<int>& multiplicities,
261 int degree,
bool periodic=
false,
bool checkrational =
true);
269 void interpolate(
const std::vector<gp_Pnt>&,
const std::vector<gp_Vec>&);
274 void getCardinalSplineTangents(
const std::vector<gp_Pnt>&,
275 const std::vector<double>&,
276 std::vector<gp_Vec>&)
const;
282 void getCardinalSplineTangents(
const std::vector<gp_Pnt>&,
double,
283 std::vector<gp_Vec>&)
const;
285 int countPoles()
const;
286 int countKnots()
const;
288 void setPoles(
const std::vector<Base::Vector3d>& poles,
const std::vector<double>& weights);
289 void setPoles(
const std::vector<Base::Vector3d>& poles);
290 void setWeights(
const std::vector<double>& weights);
291 void setKnot(
int index,
const double val,
int mult=-1);
292 void setKnots(
const std::vector<double>& knots);
293 void setKnots(
const std::vector<double>& knots,
const std::vector<int>& multiplicities);
294 std::vector<Base::Vector3d> getPoles()
const;
295 std::vector<double> getWeights()
const;
296 std::vector<double> getKnots()
const;
297 std::vector<int> getMultiplicities()
const;
298 int getMultiplicity(
int index)
const;
299 int getDegree()
const;
300 bool isPeriodic()
const;
301 bool isRational()
const;
302 bool join(
const Handle(Geom_BSplineCurve)&);
303 void makeC1Continuous(
double,
double);
306 void increaseDegree(
int degree);
307 bool approximate(
double tol3d,
int maxSegments,
int maxDegree,
int continuity);
309 void increaseMultiplicity(
int index,
int multiplicity);
310 bool removeKnot(
int index,
int multiplicity,
double tolerance = ::Precision::PConfusion());
319 void setHandle(
const Handle(Geom_BSplineCurve)&);
320 const Handle(Geom_Geometry)& handle()
const;
324 const gp_Pnt &p_start,
const gp_Vec &v_start,
325 double t_start,
double t_end, gp_Pnt &p_end, gp_Vec &v_end)
const;
326 bool calculateBiArcPoints(
const gp_Pnt& p0, gp_Vec v_start,
327 const gp_Pnt& p4, gp_Vec v_end,
328 gp_Pnt& p1, gp_Pnt& p2, gp_Pnt& p3)
const;
330 Handle(Geom_BSplineCurve) myCurve;
342 virtual Geometry *copy(
void)
const = 0;
356 double getAngleXU(
void)
const;
357 void setAngleXU(
double angle);
358 bool isReversed()
const;
359 const Handle(Geom_Geometry)& handle()
const = 0;
378 void setHandle(
const Handle(Geom_TrimmedCurve)&);
379 const Handle(Geom_Geometry)& handle()
const;
382 std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
383 double tol = ::Precision::Confusion())
const;
385 virtual void getRange(
double& u,
double& v)
const;
386 virtual void setRange(
double u,
double v);
389 Handle(Geom_TrimmedCurve) myCurve;
403 virtual Geometry *copy(
void)
const = 0;
423 virtual void getRange(
double& u,
double& v,
bool emulateCCWXY)
const = 0;
424 virtual void setRange(
double u,
double v,
bool emulateCCWXY) = 0;
429 bool isReversed()
const;
430 double getAngleXU(
void)
const;
431 void setAngleXU(
double angle);
435 const Handle(Geom_Geometry)& handle()
const = 0;
447 double getRadius(
void)
const;
448 void setRadius(
double Radius);
458 const Handle(Geom_Geometry)& handle()
const;
460 void setHandle(
const Handle(Geom_Circle)&);
463 Handle(Geom_Circle) myCurve;
476 double getRadius(
void)
const;
477 void setRadius(
double Radius);
479 virtual void getRange(
double& u,
double& v,
bool emulateCCWXY)
const;
480 virtual void setRange(
double u,
double v,
bool emulateCCWXY);
490 void setHandle(
const Handle(Geom_TrimmedCurve)&);
491 void setHandle(
const Handle(Geom_Circle)&);
492 const Handle(Geom_Geometry)& handle()
const;
505 double getMajorRadius(
void)
const;
506 void setMajorRadius(
double Radius);
507 double getMinorRadius(
void)
const;
508 void setMinorRadius(
double Radius);
520 void setHandle(
const Handle(Geom_Ellipse) &e);
521 const Handle(Geom_Geometry)& handle()
const;
524 Handle(Geom_Ellipse) myCurve;
536 double getMajorRadius(
void)
const;
537 void setMajorRadius(
double Radius);
538 double getMinorRadius(
void)
const;
539 void setMinorRadius(
double Radius);
543 virtual void getRange(
double& u,
double& v,
bool emulateCCWXY)
const;
544 virtual void setRange(
double u,
double v,
bool emulateCCWXY);
554 void setHandle(
const Handle(Geom_TrimmedCurve)&);
555 void setHandle(
const Handle(Geom_Ellipse)&);
556 const Handle(Geom_Geometry)& handle()
const;
569 double getMajorRadius(
void)
const;
570 void setMajorRadius(
double Radius);
571 double getMinorRadius(
void)
const;
572 void setMinorRadius(
double Radius);
582 const Handle(Geom_Geometry)& handle()
const;
583 void setHandle(
const Handle(Geom_Hyperbola)&);
586 Handle(Geom_Hyperbola) myCurve;
598 double getMajorRadius(
void)
const;
599 void setMajorRadius(
double Radius);
600 double getMinorRadius(
void)
const;
601 void setMinorRadius(
double Radius);
605 virtual void getRange(
double& u,
double& v,
bool emulateCCWXY)
const;
606 virtual void setRange(
double u,
double v,
bool emulateCCWXY);
616 void setHandle(
const Handle(Geom_TrimmedCurve)&);
617 void setHandle(
const Handle(Geom_Hyperbola)&);
618 const Handle(Geom_Geometry)& handle()
const;
630 double getFocal(
void)
const;
631 void setFocal(
double length);
641 const Handle(Geom_Geometry)& handle()
const;
642 void setHandle(
const Handle(Geom_Parabola)&);
645 Handle(Geom_Parabola) myCurve;
657 double getFocal(
void)
const;
658 void setFocal(
double length);
662 virtual void getRange(
double& u,
double& v,
bool emulateCCWXY)
const;
663 virtual void setRange(
double u,
double v,
bool emulateCCWXY);
673 void setHandle(
const Handle(Geom_TrimmedCurve)&);
674 void setHandle(
const Handle(Geom_Parabola)&);
675 const Handle(Geom_Geometry)& handle()
const;
699 const Handle(Geom_Geometry)& handle()
const;
700 void setHandle(
const Handle(Geom_Line)&);
703 Handle(Geom_Line) myCurve;
729 void setHandle(
const Handle(Geom_TrimmedCurve)&);
730 void setHandle(
const Handle(Geom_Line)&);
731 const Handle(Geom_Geometry)& handle()
const;
753 void setHandle(
const Handle(Geom_OffsetCurve)& c);
754 const Handle(Geom_Geometry)& handle()
const;
757 Handle(Geom_OffsetCurve) myCurve;
774 TopoDS_Shape toShape()
const;
775 bool tangentU(
double u,
double v, gp_Dir& dirU)
const;
776 bool tangentV(
double u,
double v, gp_Dir& dirV)
const;
777 bool normal(
double u,
double v, gp_Dir& dir)
const;
781 bool isUmbillic(
double u,
double v)
const;
782 double curvature(
double u,
double v, Curvature)
const;
783 void curvatureDirections(
double u,
double v, gp_Dir& maxD, gp_Dir& minD)
const;
803 void setHandle(
const Handle(Geom_BezierSurface)& b);
804 const Handle(Geom_Geometry)& handle()
const;
807 Handle(Geom_BezierSurface) mySurface;
826 void setHandle(
const Handle(Geom_BSplineSurface)&);
827 const Handle(Geom_Geometry)& handle()
const;
830 Handle(Geom_BSplineSurface) mySurface;
849 void setHandle(
const Handle(Geom_CylindricalSurface)&);
850 const Handle(Geom_Geometry)& handle()
const;
853 Handle(Geom_CylindricalSurface) mySurface;
861 GeomCone(
const Handle(Geom_ConicalSurface)&);
872 void setHandle(
const Handle(Geom_ConicalSurface)&);
873 const Handle(Geom_Geometry)& handle()
const;
876 Handle(Geom_ConicalSurface) mySurface;
884 GeomSphere(
const Handle(Geom_SphericalSurface)&);
895 void setHandle(
const Handle(Geom_SphericalSurface)&);
896 const Handle(Geom_Geometry)& handle()
const;
899 Handle(Geom_SphericalSurface) mySurface;
907 GeomToroid(
const Handle(Geom_ToroidalSurface)&);
918 void setHandle(
const Handle(Geom_ToroidalSurface)&);
919 const Handle(Geom_Geometry)& handle()
const;
922 Handle(Geom_ToroidalSurface) mySurface;
941 void setHandle(
const Handle(Geom_Plane)&);
942 const Handle(Geom_Geometry)& handle()
const;
945 Handle(Geom_Plane) mySurface;
965 void setHandle(
const Handle(Geom_OffsetSurface)& s);
966 const Handle(Geom_Geometry)& handle()
const;
969 Handle(Geom_OffsetSurface) mySurface;
990 void setHandle(
const Handle(GeomPlate_Surface)& s);
991 const Handle(Geom_Geometry)& handle()
const;
994 Handle(GeomPlate_Surface) mySurface;
1004 virtual Geometry *copy(
void)
const;
1013 void setHandle(
const Handle(Geom_RectangularTrimmedSurface)& s);
1014 const Handle(Geom_Geometry)& handle()
const;
1017 Handle(Geom_RectangularTrimmedSurface) mySurface;
1028 virtual Geometry *copy(
void)
const;
1037 void setHandle(
const Handle(Geom_SurfaceOfRevolution)& c);
1038 const Handle(Geom_Geometry)& handle()
const;
1041 Handle(Geom_SurfaceOfRevolution) mySurface;
1052 virtual Geometry *copy(
void)
const;
1061 void setHandle(
const Handle(Geom_SurfaceOfLinearExtrusion)& c);
1062 const Handle(Geom_Geometry)& handle()
const;
1065 Handle(Geom_SurfaceOfLinearExtrusion) mySurface;
1091 std::unique_ptr<GeomSurface>
makeFromSurface(
const Handle(Geom_Surface)&);
1094 std::unique_ptr<GeomCurve>
makeFromCurve(
const Handle(Geom_Curve)&);
1097 std::unique_ptr<GeomCurve>
makeFromTrimmedCurve(
const Handle(Geom_Curve)&,
double f,
double l);
1103 #endif // PART_GEOMETRY_H
LX_GEOM_EXPORT Point getPoint(const Geom::Pnt &p)
LX_GEOM_EXPORT double suggestFilletRadius(const GeomLineSegment *lineSeg1, const GeomLineSegment *lineSeg2, const Base::Vector3d &refPnt1, const Base::Vector3d &refPnt2)
Definition: Geometry.h:735
Definition: Geometry.h:527
Definition: Geometry.h:333
virtual void getRange(double &u, double &v) const
Definition: Geometry.h:426
LX_GEOM_EXPORT std::unique_ptr< GeomSurface > makeFromSurface(const Handle(Geom_Surface)&)
Definition: Persistence.h:14
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:43
virtual Base::Vector3d getEndPoint() const
Definition: Geometry.h:409
Definition: Geometry.h:215
Definition: Geometry.h:972
Curvature
Definition: Geometry.h:764
boost::uuids::uuid tag
Definition: Geometry.h:132
Definition: Geometry.h:1020
Definition: Geometry.h:760
virtual void setRange(double u, double v)
Definition: Geometry.h:427
Definition: Geometry.h:466
Definition: Geometry.h:75
LX_GEOM_EXPORT GeomArcOfCircle * createFilletGeometry(const GeomLineSegment *lineSeg1, const GeomLineSegment *lineSeg2, const Base::Vector3d ¢er, double radius)
Definition: Geometry.h:678
Definition: Geometry.h:833
Core::PropertyText name
Definition: CoreDocument.h:167
Definition: Geometry.h:879
Definition: Geometry.h:767
Definition: Geometry.h:589
Definition: Geometry.h:227
Persistence class and root of the type system.
Definition: Persistence.h:23
void transform(Container container, OutputIt out, BinaryFunction function)
Definition: Algorithms.h:29
Definition: Geometry.h:706
Definition: Geometry.h:902
Definition: Geometry.h:362
Definition: Geometry.h:560
Definition: Geometry.h:1044
Definition: AbstractXMLReader.h:7
Definition: Geometry.h:394
Definition: Geometry.h:948
Definition: Geometry.h:765
Definition: Geometry.h:140
Definition: Geometry.h:810
Definition: AbstractConstraint.h:6
Definition: Geometry.h:621
LX_GEOM_EXPORT std::unique_ptr< GeomCurve > makeFromTrimmedCurve(const Handle(Geom_Curve)&, double f, double l)
Definition: Geometry.h:170
Definition: Geometry.h:252
virtual Base::Vector3d getStartPoint() const
Definition: Geometry.h:408
LX_GEOM_EXPORT std::unique_ptr< GeomCurve > makeFromCurveAdaptor(const Adaptor3d_Curve &)
Definition: Geometry.h:438
Definition: Geometry.h:856
LX_GEOM_EXPORT bool findFilletCenter(const GeomLineSegment *lineSeg1, const GeomLineSegment *lineSeg2, double radius, Base::Vector3d ¢er)
Definition: Geometry.h:925
Definition: Geometry.h:648
Definition: Geometry.h:787
LX_GEOM_EXPORT std::unique_ptr< GeomCurve > makeFromCurve(const Handle(Geom_Curve)&)
Definition: Geometry.h:997
LX_GEOM_EXPORT bool find2DLinesIntersection(const Base::Vector3d &orig1, const Base::Vector3d &dir1, const Base::Vector3d &orig2, const Base::Vector3d &dir2, Base::Vector3d &point)
Definition: Placement.h:38
std::vector< std::shared_ptr< GeometryExtension > > extensions
Definition: Geometry.h:133
Definition: Geometry.h:496
Definition: Geometry.h:766