// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _ShapeConstruct_ProjectCurveOnSurface_HeaderFile #define _ShapeConstruct_ProjectCurveOnSurface_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_ShapeConstruct_ProjectCurveOnSurface_HeaderFile #include #endif #ifndef _Handle_ShapeAnalysis_Surface_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _gp_Pnt_HeaderFile #include #endif #ifndef _gp_Pnt2d_HeaderFile #include #endif #ifndef _MMgt_TShared_HeaderFile #include #endif #ifndef _Handle_Geom_Surface_HeaderFile #include #endif #ifndef _ShapeExtend_Status_HeaderFile #include #endif #ifndef _Handle_Geom_Curve_HeaderFile #include #endif #ifndef _Handle_Geom2d_Curve_HeaderFile #include #endif #ifndef _GeomAbs_Shape_HeaderFile #include #endif #ifndef _Handle_TColgp_HArray1OfPnt2d_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfReal_HeaderFile #include #endif #ifndef _Handle_TColgp_HArray1OfPnt_HeaderFile #include #endif class ShapeAnalysis_Surface; class Geom_Surface; class Geom_Curve; class Geom2d_Curve; class TColgp_Array1OfPnt; class TColStd_Array1OfReal; class TColgp_Array1OfPnt2d; class TColgp_HArray1OfPnt2d; class TColStd_HArray1OfReal; class TColgp_HArray1OfPnt; class gp_Pnt2d; //! This tool provides a method for computing pcurve by projecting
//! 3d curve onto a surface.
//! Projection is done by 23 or more points (this number is changed
//! for B-Splines according to the following rule:
//! the total number of the points is not less than number of spans *
//! (degree + 1);
//! it is increased recursively starting with 23 and is added with 22
//! until the condition is fulfilled).
//! Isoparametric cases (if curve corresponds to U=const or V=const on
//! the surface) are recognized with the given precision.
class ShapeConstruct_ProjectCurveOnSurface : public MMgt_TShared { public: //! Empty constructor.
Standard_EXPORT ShapeConstruct_ProjectCurveOnSurface(); //! Initializes the object with all necessary parameters,
//! i.e. surface and precision
Standard_EXPORT virtual void Init(const Handle(Geom_Surface)& surf,const Standard_Real preci) ; //! Initializes the object with all necessary parameters,
//! i.e. surface and precision
Standard_EXPORT virtual void Init(const Handle(ShapeAnalysis_Surface)& surf,const Standard_Real preci) ; //! Loads a surface (in the form of Geom_Surface) to project on
Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& surf) ; //! Loads a surface (in the form of ShapeAnalysis_Surface) to project on
Standard_EXPORT void SetSurface(const Handle(ShapeAnalysis_Surface)& surf) ; //! Sets value for current precision
Standard_EXPORT void SetPrecision(const Standard_Real preci) ; //! Returns (modifiable) the build-curve-3d mode, by default False
//! If True, if the projected curve has been recomputed by
//! interpolation, the 3d curve is also rebuild by interpolation
Standard_EXPORT Standard_Boolean& BuildCurveMode() ; //! Returns (modifiable) the flag specifying to which side of
//! parametrical space adjust part of pcurve which lies on seam.
//! This is required in very rare case when 3d curve which is
//! to be projected goes partly along the seam on the closed
//! surface with singularity (e.g. sphere), goes through the
//! degenerated point and paerly lies on internal area of surface.
Standard_EXPORT Standard_Integer& AdjustOverDegenMode() ; //! Returns the status of last Peform
Standard_EXPORT Standard_Boolean Status(const ShapeExtend_Status Status) const; //! Computes the projection of 3d curve onto a surface using the
//! standard algorithm from ProjLib. Returns False if standard
//! projector fails or raises an exception or cuts the curve by
//! parametrical bounds of the surface. Else, if pcurve computed
//! successfully, returns True.
//! The continuity, maxdeg and nbinterval are parameters of call
//! to Approx_CurveOnSurface. If nbinterval is equal to -1
//! (default), this value is computed depending on source 3d curve
//! and surface.
Standard_EXPORT virtual Standard_Boolean Perform(Handle(Geom_Curve)& c3d,const Standard_Real First,const Standard_Real Last,Handle(Geom2d_Curve)& c2d,const GeomAbs_Shape continuity = GeomAbs_C1,const Standard_Integer maxdeg = 12,const Standard_Integer nbinterval = -1) ; //! Computes the projection of 3d curve onto a surface using the
//! standard algorithm from ProjLib. Returns False if standard
//! projector fails or raises an exception or cuts the curve by
//! parametrical bounds of the surface. Else, if pcurve computed
//! successfully, returns True.
//! The continuity, maxdeg and nbinterval are parameters of call
//! to Approx_CurveOnSurface. If nbinterval is equal to -1
//! (default), this value is computed depending on source 3d curve
//! and surface.
Standard_EXPORT Standard_Boolean PerformByProjLib(Handle(Geom_Curve)& c3d,const Standard_Real First,const Standard_Real Last,Handle(Geom2d_Curve)& c2d,const GeomAbs_Shape continuity = GeomAbs_C1,const Standard_Integer maxdeg = 12,const Standard_Integer nbinterval = -1) ; //! Computes the projection of 3d curve onto a surface using
//! either standard projector (method PerformByStandard()) or
//! internal one (method Perform()). The selection is done by
//! analyzing the surface and 3d curve and is aimed to filter
//! the cases potentially dangerous for the standard projector.
//! If the standard projector fails, internal one is used.
Standard_EXPORT Standard_Boolean PerformAdvanced(Handle(Geom_Curve)& c3d,const Standard_Real First,const Standard_Real Last,Handle(Geom2d_Curve)& c2d) ; DEFINE_STANDARD_RTTI(ShapeConstruct_ProjectCurveOnSurface) protected: Handle_ShapeAnalysis_Surface mySurf; Standard_Real myPreci; Standard_Boolean myBuild; Standard_Integer myStatus; Standard_Integer myAdjustOverDegen; Standard_Integer myNbCashe; gp_Pnt myCashe3d[2]; gp_Pnt2d myCashe2d[2]; private: Standard_EXPORT Handle_Geom2d_Curve ProjectAnalytic(const Handle(Geom_Curve)& c3d) const; Standard_EXPORT Standard_Boolean ApproxPCurve(const Standard_Integer nbrPnt,const TColgp_Array1OfPnt& points,const TColStd_Array1OfReal& params,TColgp_Array1OfPnt2d& points2d,Handle(Geom2d_Curve)& c2d) ; Standard_EXPORT Handle_Geom2d_Curve InterpolatePCurve(const Standard_Integer nbrPnt,Handle(TColgp_HArray1OfPnt2d)& points2d,Handle(TColStd_HArray1OfReal)& params,const Handle(Geom_Curve)& orig) const; Standard_EXPORT Handle_Geom2d_Curve ApproximatePCurve(const Standard_Integer nbrPnt,Handle(TColgp_HArray1OfPnt2d)& points2d,Handle(TColStd_HArray1OfReal)& params,const Handle(Geom_Curve)& orig) const; Standard_EXPORT Handle_Geom_Curve InterpolateCurve3d(const Standard_Integer nbrPnt,Handle(TColgp_HArray1OfPnt)& points,Handle(TColStd_HArray1OfReal)& params,const Handle(Geom_Curve)& orig) const; Standard_EXPORT void CheckPoints(Handle(TColgp_HArray1OfPnt)& points,Handle(TColStd_HArray1OfReal)& params,Standard_Real& preci) const; Standard_EXPORT void CheckPoints2d(Handle(TColgp_HArray1OfPnt2d)& points,Handle(TColStd_HArray1OfReal)& params,Standard_Real& preci) const; Standard_EXPORT Standard_Boolean IsAnIsoparametric(const Standard_Integer nbrPnt,const TColgp_Array1OfPnt& points,const TColStd_Array1OfReal& params,Standard_Boolean& isoTypeU,Standard_Boolean& p1OnIso,gp_Pnt2d& valueP1,Standard_Boolean& p2OnIso,gp_Pnt2d& valueP2,Standard_Boolean& isoPar2d3d,Handle(Geom_Curve)& cIso,Standard_Real& t1,Standard_Real& t2,TColStd_Array1OfReal& pout) const; }; // other Inline functions and methods (like "C++: function call" methods) #endif