File indexing completed on 2026-09-09 09:16:47
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _ShapeConstruct_ProjectCurveOnSurface_HeaderFile
0018 #define _ShapeConstruct_ProjectCurveOnSurface_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_Type.hxx>
0022
0023 #include <Standard_Integer.hxx>
0024 #include <gp_Pnt.hxx>
0025 #include <gp_Pnt2d.hxx>
0026 #include <Standard_Transient.hxx>
0027 #include <ShapeExtend_Status.hxx>
0028 #include <GeomAbs_Shape.hxx>
0029 #include <TColStd_Array1OfReal.hxx>
0030 #include <TColgp_HArray1OfPnt2d.hxx>
0031 #include <TColgp_HArray1OfPnt.hxx>
0032 #include <TColgp_SequenceOfPnt.hxx>
0033 #include <TColgp_SequenceOfPnt2d.hxx>
0034 #include <TColStd_SequenceOfReal.hxx>
0035 class ShapeAnalysis_Surface;
0036 class Geom_Surface;
0037 class Geom_Curve;
0038 class Geom2d_Curve;
0039
0040
0041 #ifdef Status
0042 #undef Status
0043 #endif
0044
0045 class ShapeConstruct_ProjectCurveOnSurface;
0046 DEFINE_STANDARD_HANDLE(ShapeConstruct_ProjectCurveOnSurface, Standard_Transient)
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 class ShapeConstruct_ProjectCurveOnSurface : public Standard_Transient
0059 {
0060
0061 public:
0062
0063 Standard_EXPORT ShapeConstruct_ProjectCurveOnSurface();
0064
0065
0066
0067 Standard_EXPORT virtual void Init(const Handle(Geom_Surface)& surf, const Standard_Real preci);
0068
0069
0070
0071 Standard_EXPORT virtual void Init(const Handle(ShapeAnalysis_Surface)& surf,
0072 const Standard_Real preci);
0073
0074
0075 Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& surf);
0076
0077
0078 Standard_EXPORT void SetSurface(const Handle(ShapeAnalysis_Surface)& surf);
0079
0080
0081 Standard_EXPORT void SetPrecision(const Standard_Real preci);
0082
0083
0084
0085
0086 Standard_EXPORT Standard_Boolean& BuildCurveMode();
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099 Standard_EXPORT Standard_Integer& AdjustOverDegenMode();
0100
0101
0102 Standard_EXPORT Standard_Boolean Status(const ShapeExtend_Status theStatus) const;
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112 Standard_EXPORT virtual Standard_Boolean Perform(Handle(Geom_Curve)& c3d,
0113 const Standard_Real First,
0114 const Standard_Real Last,
0115 Handle(Geom2d_Curve)& c2d,
0116 const Standard_Real TolFirst = -1,
0117 const Standard_Real TolLast = -1);
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128 Standard_EXPORT Standard_Boolean PerformByProjLib(Handle(Geom_Curve)& c3d,
0129 const Standard_Real First,
0130 const Standard_Real Last,
0131 Handle(Geom2d_Curve)& c2d,
0132 const GeomAbs_Shape continuity = GeomAbs_C1,
0133 const Standard_Integer maxdeg = 12,
0134 const Standard_Integer nbinterval = -1);
0135
0136 DEFINE_STANDARD_RTTIEXT(ShapeConstruct_ProjectCurveOnSurface, Standard_Transient)
0137
0138 protected:
0139
0140
0141
0142
0143
0144
0145
0146 Standard_EXPORT Handle(Geom2d_Curve) getLine(const TColgp_SequenceOfPnt& points,
0147 const TColStd_SequenceOfReal& params,
0148 TColgp_SequenceOfPnt2d& points2d,
0149 const Standard_Real theTol,
0150 Standard_Boolean& IsRecompute,
0151 Standard_Boolean& isFromCashe) const;
0152
0153 Handle(ShapeAnalysis_Surface) mySurf;
0154 Standard_Real myPreci;
0155 Standard_Boolean myBuild;
0156 Standard_Integer myStatus;
0157 Standard_Integer myAdjustOverDegen;
0158 Standard_Integer myNbCashe;
0159 gp_Pnt myCashe3d[2];
0160 gp_Pnt2d myCashe2d[2];
0161
0162 private:
0163 Standard_EXPORT Handle(Geom2d_Curve) ProjectAnalytic(const Handle(Geom_Curve)& c3d) const;
0164
0165 Standard_EXPORT Standard_Boolean ApproxPCurve(const Standard_Integer nbrPnt,
0166 const Handle(Geom_Curve)& c3d,
0167 const Standard_Real TolFirst,
0168 const Standard_Real TolLast,
0169 TColgp_SequenceOfPnt& points,
0170 TColStd_SequenceOfReal& params,
0171 TColgp_SequenceOfPnt2d& points2d,
0172 Handle(Geom2d_Curve)& c2d);
0173
0174 Standard_EXPORT void CorrectExtremity(const Handle(Geom_Curve)& theC3d,
0175 const TColStd_SequenceOfReal& theParams,
0176 TColgp_SequenceOfPnt2d& thePnt2d,
0177 const Standard_Boolean theIsFirstPoint,
0178 const gp_Pnt2d& thePointOnIsoLine,
0179 const Standard_Boolean theIsUiso);
0180
0181 Standard_EXPORT void InsertAdditionalPointOrAdjust(Standard_Boolean& ToAdjust,
0182 const Standard_Integer theIndCoord,
0183 const Standard_Real Period,
0184 const Standard_Real TolOnPeriod,
0185 Standard_Real& CurCoord,
0186 const Standard_Real prevCoord,
0187 const Handle(Geom_Curve)& c3d,
0188 Standard_Integer& theIndex,
0189 TColgp_SequenceOfPnt& points,
0190 TColStd_SequenceOfReal& params,
0191 TColgp_SequenceOfPnt2d& pnt2d);
0192
0193 Standard_EXPORT Handle(Geom2d_Curve) InterpolatePCurve(const Standard_Integer nbrPnt,
0194 Handle(TColgp_HArray1OfPnt2d)& points2d,
0195 Handle(TColStd_HArray1OfReal)& params,
0196 const Handle(Geom_Curve)& orig) const;
0197
0198 Standard_EXPORT Handle(Geom2d_Curve) ApproximatePCurve(const Standard_Integer nbrPnt,
0199 Handle(TColgp_HArray1OfPnt2d)& points2d,
0200 Handle(TColStd_HArray1OfReal)& params,
0201 const Handle(Geom_Curve)& orig) const;
0202
0203 Standard_EXPORT Handle(Geom_Curve) InterpolateCurve3d(const Standard_Integer nbrPnt,
0204 Handle(TColgp_HArray1OfPnt)& points,
0205 Handle(TColStd_HArray1OfReal)& params,
0206 const Handle(Geom_Curve)& orig) const;
0207
0208 Standard_EXPORT void CheckPoints(Handle(TColgp_HArray1OfPnt)& points,
0209 Handle(TColStd_HArray1OfReal)& params,
0210 Standard_Real& preci) const;
0211
0212 Standard_EXPORT void CheckPoints2d(Handle(TColgp_HArray1OfPnt2d)& points,
0213 Handle(TColStd_HArray1OfReal)& params,
0214 Standard_Real& preci) const;
0215
0216 Standard_EXPORT Standard_Boolean IsAnIsoparametric(const Standard_Integer nbrPnt,
0217 const TColgp_SequenceOfPnt& points,
0218 const TColStd_SequenceOfReal& params,
0219 Standard_Boolean& isoTypeU,
0220 Standard_Boolean& p1OnIso,
0221 gp_Pnt2d& valueP1,
0222 Standard_Boolean& p2OnIso,
0223 gp_Pnt2d& valueP2,
0224 Standard_Boolean& isoPar2d3d,
0225 Handle(Geom_Curve)& cIso,
0226 Standard_Real& t1,
0227 Standard_Real& t2,
0228 TColStd_Array1OfReal& pout) const;
0229 };
0230
0231 #endif