File indexing completed on 2026-09-30 09:03:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _GeomPlate_BuildPlateSurface_HeaderFile
0018 #define _GeomPlate_BuildPlateSurface_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022
0023 #include <GeomPlate_CurveConstraint.hxx>
0024 #include <NCollection_Sequence.hxx>
0025 #include <NCollection_HSequence.hxx>
0026 #include <NCollection_Array1.hxx>
0027 #include <NCollection_HArray1.hxx>
0028 #include <GeomPlate_PointConstraint.hxx>
0029 #include <Plate_Plate.hxx>
0030 #include <Standard_Integer.hxx>
0031 #include <Standard_Real.hxx>
0032 #include <Extrema_ExtPS.hxx>
0033 #include <Adaptor3d_Curve.hxx>
0034 #include <gp_XY.hxx>
0035 #include <gp_XYZ.hxx>
0036 #include <Geom2d_Curve.hxx>
0037 class Geom_Surface;
0038 class GeomPlate_Surface;
0039 class GeomPlate_CurveConstraint;
0040 class GeomPlate_PointConstraint;
0041 class gp_Pnt2d;
0042 class gp_Pnt;
0043 class Geom2d_Curve;
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 class GeomPlate_BuildPlateSurface
0055 {
0056 public:
0057 DEFINE_STANDARD_ALLOC
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069 Standard_EXPORT GeomPlate_BuildPlateSurface(
0070 const occ::handle<NCollection_HArray1<int>>& NPoints,
0071 const occ::handle<NCollection_HArray1<occ::handle<Adaptor3d_Curve>>>& TabCurve,
0072 const occ::handle<NCollection_HArray1<int>>& Tang,
0073 const int Degree,
0074 const int NbIter = 3,
0075 const double Tol2d = 0.00001,
0076 const double Tol3d = 0.0001,
0077 const double TolAng = 0.01,
0078 const double TolCurv = 0.1,
0079 const bool Anisotropie = false);
0080
0081 Standard_EXPORT GeomPlate_BuildPlateSurface(const occ::handle<Geom_Surface>& Surf,
0082 const int Degree = 3,
0083 const int NbPtsOnCur = 10,
0084 const int NbIter = 3,
0085 const double Tol2d = 0.00001,
0086 const double Tol3d = 0.0001,
0087 const double TolAng = 0.01,
0088 const double TolCurv = 0.1,
0089 const bool Anisotropie = false);
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117 Standard_EXPORT GeomPlate_BuildPlateSurface(const int Degree = 3,
0118 const int NbPtsOnCur = 10,
0119 const int NbIter = 3,
0120 const double Tol2d = 0.00001,
0121 const double Tol3d = 0.0001,
0122 const double TolAng = 0.01,
0123 const double TolCurv = 0.1,
0124 const bool Anisotropie = false);
0125
0126
0127 Standard_EXPORT void Init();
0128
0129
0130 Standard_EXPORT void LoadInitSurface(const occ::handle<Geom_Surface>& Surf);
0131
0132
0133 Standard_EXPORT void Add(const occ::handle<GeomPlate_CurveConstraint>& Cont);
0134
0135 Standard_EXPORT void SetNbBounds(const int NbBounds);
0136
0137
0138 Standard_EXPORT void Add(const occ::handle<GeomPlate_PointConstraint>& Cont);
0139
0140
0141
0142
0143
0144
0145
0146 Standard_EXPORT void Perform(const Message_ProgressRange& theProgress = Message_ProgressRange());
0147
0148
0149 Standard_EXPORT occ::handle<GeomPlate_CurveConstraint> CurveConstraint(const int order) const;
0150
0151
0152 Standard_EXPORT occ::handle<GeomPlate_PointConstraint> PointConstraint(const int order) const;
0153
0154 Standard_EXPORT void Disc2dContour(const int nbp, NCollection_Sequence<gp_XY>& Seq2d);
0155
0156 Standard_EXPORT void Disc3dContour(const int nbp,
0157 const int iordre,
0158 NCollection_Sequence<gp_XYZ>& Seq3d);
0159
0160
0161 Standard_EXPORT bool IsDone() const;
0162
0163
0164
0165
0166 Standard_EXPORT occ::handle<GeomPlate_Surface> Surface() const;
0167
0168
0169 Standard_EXPORT occ::handle<Geom_Surface> SurfInit() const;
0170
0171
0172
0173
0174
0175
0176
0177 Standard_EXPORT occ::handle<NCollection_HArray1<int>> Sense() const;
0178
0179
0180
0181 Standard_EXPORT occ::handle<NCollection_HArray1<occ::handle<Geom2d_Curve>>> Curves2d() const;
0182
0183
0184
0185
0186
0187 Standard_EXPORT occ::handle<NCollection_HArray1<int>> Order() const;
0188
0189
0190 Standard_EXPORT double G0Error() const;
0191
0192
0193 Standard_EXPORT double G1Error() const;
0194
0195
0196 Standard_EXPORT double G2Error() const;
0197
0198
0199 Standard_EXPORT double G0Error(const int Index);
0200
0201
0202 Standard_EXPORT double G1Error(const int Index);
0203
0204
0205 Standard_EXPORT double G2Error(const int Index);
0206
0207 private:
0208
0209
0210
0211 Standard_EXPORT void EcartContraintesMil(const int c,
0212 occ::handle<NCollection_HArray1<double>>& d,
0213 occ::handle<NCollection_HArray1<double>>& an,
0214 occ::handle<NCollection_HArray1<double>>& courb);
0215
0216 Standard_EXPORT gp_Pnt2d ProjectPoint(const gp_Pnt& P);
0217
0218 Standard_EXPORT occ::handle<Geom2d_Curve> ProjectCurve(const occ::handle<Adaptor3d_Curve>& Curv);
0219
0220 Standard_EXPORT occ::handle<Adaptor2d_Curve2d> ProjectedCurve(occ::handle<Adaptor3d_Curve>& Curv);
0221
0222 Standard_EXPORT void ComputeSurfInit(const Message_ProgressRange& theProgress);
0223
0224 Standard_EXPORT void Intersect(
0225 occ::handle<NCollection_HArray1<NCollection_Sequence<double>>>& PntInter,
0226 occ::handle<NCollection_HArray1<NCollection_Sequence<double>>>& PntG1G1);
0227
0228 Standard_EXPORT void Discretise(
0229 const occ::handle<NCollection_HArray1<NCollection_Sequence<double>>>& PntInter,
0230 const occ::handle<NCollection_HArray1<NCollection_Sequence<double>>>& PntG1G1);
0231
0232 Standard_EXPORT void LoadCurve(const int NbBoucle, const int OrderMax = 2);
0233
0234 Standard_EXPORT void LoadPoint(const int NbBoucle, const int OrderMax = 2);
0235
0236 Standard_EXPORT void CalculNbPtsInit();
0237
0238 Standard_EXPORT bool VerifSurface(const int NbLoop);
0239
0240 Standard_EXPORT void VerifPoints(double& dist, double& ang, double& curv) const;
0241
0242 Standard_EXPORT bool CourbeJointive(const double tolerance);
0243
0244 Standard_EXPORT double ComputeAnisotropie() const;
0245
0246 Standard_EXPORT bool IsOrderG1() const;
0247
0248 occ::handle<NCollection_HSequence<occ::handle<GeomPlate_CurveConstraint>>> myLinCont;
0249 occ::handle<NCollection_HArray1<NCollection_Sequence<double>>> myParCont;
0250 occ::handle<NCollection_HArray1<NCollection_Sequence<double>>> myPlateCont;
0251 occ::handle<NCollection_HSequence<occ::handle<GeomPlate_PointConstraint>>> myPntCont;
0252 occ::handle<Geom_Surface> mySurfInit;
0253 occ::handle<Geom_Surface> myPlanarSurfInit;
0254 occ::handle<GeomPlate_Surface> myGeomPlateSurface;
0255 Plate_Plate myPlate;
0256 Plate_Plate myPrevPlate;
0257 bool myAnisotropie;
0258 occ::handle<NCollection_HArray1<int>> mySense;
0259 int myDegree;
0260 occ::handle<NCollection_HArray1<int>> myInitOrder;
0261 double myG0Error;
0262 double myG1Error;
0263 double myG2Error;
0264 int myNbPtsOnCur;
0265 bool mySurfInitIsGive;
0266 int myNbIter;
0267 Extrema_ExtPS myProj;
0268 double myTol2d;
0269 double myTol3d;
0270 double myTolAng;
0271 double myTolU;
0272 double myTolV;
0273 int myNbBounds;
0274 bool myIsLinear;
0275 bool myFree;
0276 };
0277
0278 #endif