Warning, file /include/opencascade/ChFi3d_Builder.hxx was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _ChFi3d_Builder_HeaderFile
0018 #define _ChFi3d_Builder_HeaderFile
0019
0020 #include <BRepAdaptor_Curve2d.hxx>
0021 #include <BRepAdaptor_Surface.hxx>
0022 #include <GeomAbs_Shape.hxx>
0023 #include <ChFiDS_ErrorStatus.hxx>
0024 #include <ChFiDS_Map.hxx>
0025 #include <ChFiDS_Regularities.hxx>
0026 #include <ChFiDS_SequenceOfSurfData.hxx>
0027 #include <ChFiDS_StripeMap.hxx>
0028 #include <ChFiDS_ElSpine.hxx>
0029 #include <math_Vector.hxx>
0030 #include <TopoDS_Shape.hxx>
0031 #include <TopTools_ListOfShape.hxx>
0032 #include <TopTools_DataMapOfShapeListOfInteger.hxx>
0033 #include <TopTools_DataMapOfShapeShape.hxx>
0034 #include <TopAbs_Orientation.hxx>
0035 #include <TopAbs_State.hxx>
0036
0037 class TopOpeBRepDS_HDataStructure;
0038 class TopOpeBRepBuild_HBuilder;
0039 class TopoDS_Edge;
0040 class ChFiDS_Spine;
0041 class TopoDS_Vertex;
0042 class Geom_Surface;
0043 class ChFiDS_SurfData;
0044 class Adaptor3d_TopolTool;
0045 class BRepBlend_Line;
0046 class Blend_Function;
0047 class Blend_FuncInv;
0048 class Blend_SurfRstFunction;
0049 class Blend_SurfPointFuncInv;
0050 class Blend_SurfCurvFuncInv;
0051 class Blend_RstRstFunction;
0052 class Blend_CurvPointFuncInv;
0053 class ChFiDS_Stripe;
0054 class BRepTopAdaptor_TopolTool;
0055 class gp_Pnt2d;
0056 class ChFiDS_CommonPoint;
0057 class TopoDS_Face;
0058 class AppBlend_Approx;
0059 class Geom2d_Curve;
0060
0061
0062
0063
0064
0065 class ChFi3d_Builder
0066 {
0067 public:
0068
0069 DEFINE_STANDARD_ALLOC
0070
0071 Standard_EXPORT virtual ~ChFi3d_Builder();
0072
0073 Standard_EXPORT void SetParams (const Standard_Real Tang,
0074 const Standard_Real Tesp,
0075 const Standard_Real T2d,
0076 const Standard_Real TApp3d,
0077 const Standard_Real TolApp2d,
0078 const Standard_Real Fleche);
0079
0080 Standard_EXPORT void SetContinuity (const GeomAbs_Shape InternalContinuity,
0081 const Standard_Real AngularTolerance);
0082
0083
0084 Standard_EXPORT void Remove (const TopoDS_Edge& E);
0085
0086
0087
0088 Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E) const;
0089
0090
0091
0092
0093 Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E,
0094 Standard_Integer& IndexInSpine) const;
0095
0096
0097
0098 Standard_EXPORT Standard_Integer NbElements() const;
0099
0100
0101
0102 Standard_EXPORT Handle(ChFiDS_Spine) Value (const Standard_Integer I) const;
0103
0104
0105 Standard_EXPORT Standard_Real Length (const Standard_Integer IC) const;
0106
0107
0108
0109 Standard_EXPORT TopoDS_Vertex FirstVertex (const Standard_Integer IC) const;
0110
0111
0112
0113 Standard_EXPORT TopoDS_Vertex LastVertex (const Standard_Integer IC) const;
0114
0115
0116
0117 Standard_EXPORT Standard_Real Abscissa (const Standard_Integer IC,
0118 const TopoDS_Vertex& V) const;
0119
0120
0121
0122 Standard_EXPORT Standard_Real RelativeAbscissa (const Standard_Integer IC,
0123 const TopoDS_Vertex& V) const;
0124
0125
0126
0127 Standard_EXPORT Standard_Boolean ClosedAndTangent (const Standard_Integer IC) const;
0128
0129
0130 Standard_EXPORT Standard_Boolean Closed (const Standard_Integer IC) const;
0131
0132
0133
0134 Standard_EXPORT void Compute();
0135
0136
0137 Standard_EXPORT Standard_Boolean IsDone() const;
0138
0139
0140
0141 Standard_EXPORT TopoDS_Shape Shape() const;
0142
0143
0144 Standard_EXPORT const TopTools_ListOfShape& Generated (const TopoDS_Shape& EouV);
0145
0146
0147
0148 Standard_EXPORT Standard_Integer NbFaultyContours() const;
0149
0150
0151
0152 Standard_EXPORT Standard_Integer FaultyContour (const Standard_Integer I) const;
0153
0154
0155 Standard_EXPORT Standard_Integer NbComputedSurfaces (const Standard_Integer IC) const;
0156
0157
0158 Standard_EXPORT Handle(Geom_Surface) ComputedSurface (const Standard_Integer IC,
0159 const Standard_Integer IS) const;
0160
0161
0162
0163 Standard_EXPORT Standard_Integer NbFaultyVertices() const;
0164
0165
0166 Standard_EXPORT TopoDS_Vertex FaultyVertex (const Standard_Integer IV) const;
0167
0168
0169 Standard_EXPORT Standard_Boolean HasResult() const;
0170
0171
0172
0173 Standard_EXPORT TopoDS_Shape BadShape() const;
0174
0175
0176
0177 Standard_EXPORT ChFiDS_ErrorStatus StripeStatus (const Standard_Integer IC) const;
0178
0179
0180
0181 Standard_EXPORT void Reset();
0182
0183
0184 Standard_EXPORT Handle(TopOpeBRepBuild_HBuilder) Builder() const;
0185
0186
0187
0188
0189 Standard_EXPORT Standard_Boolean SplitKPart (const Handle(ChFiDS_SurfData)& Data,
0190 ChFiDS_SequenceOfSurfData& SetData,
0191 const Handle(ChFiDS_Spine)& Spine,
0192 const Standard_Integer Iedge,
0193 const Handle(Adaptor3d_Surface)& S1,
0194 const Handle(Adaptor3d_TopolTool)& I1,
0195 const Handle(Adaptor3d_Surface)& S2,
0196 const Handle(Adaptor3d_TopolTool)& I2,
0197 Standard_Boolean& Intf,
0198 Standard_Boolean& Intl);
0199
0200 Standard_EXPORT Standard_Boolean PerformTwoCornerbyInter (const Standard_Integer Index);
0201
0202
0203
0204
0205 protected:
0206
0207
0208 Standard_EXPORT ChFi3d_Builder(const TopoDS_Shape& S, const Standard_Real Ta);
0209
0210 Standard_EXPORT virtual void SimulKPart (const Handle(ChFiDS_SurfData)& SD) const = 0;
0211
0212 Standard_EXPORT virtual Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data,
0213 const Handle(ChFiDS_ElSpine)& Guide,
0214 const Handle(ChFiDS_Spine)& Spine,
0215 const Standard_Integer Choix,
0216 const Handle(BRepAdaptor_Surface)& S1,
0217 const Handle(Adaptor3d_TopolTool)& I1,
0218 const Handle(BRepAdaptor_Surface)& S2,
0219 const Handle(Adaptor3d_TopolTool)& I2,
0220 const Standard_Real TolGuide,
0221 Standard_Real& First,
0222 Standard_Real& Last,
0223 const Standard_Boolean Inside,
0224 const Standard_Boolean Appro,
0225 const Standard_Boolean Forward,
0226 const Standard_Boolean RecOnS1,
0227 const Standard_Boolean RecOnS2,
0228 const math_Vector& Soldep,
0229 Standard_Integer& Intf,
0230 Standard_Integer& Intl) = 0;
0231
0232 Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
0233 const Handle(ChFiDS_ElSpine)& Guide,
0234 const Handle(ChFiDS_Spine)& Spine,
0235 const Standard_Integer Choix,
0236 const Handle(BRepAdaptor_Surface)& S1,
0237 const Handle(Adaptor3d_TopolTool)& I1,
0238 const Handle(BRepAdaptor_Curve2d)& PC1,
0239 const Handle(BRepAdaptor_Surface)& Sref1,
0240 const Handle(BRepAdaptor_Curve2d)& PCref1,
0241 Standard_Boolean& Decroch1,
0242 const Handle(BRepAdaptor_Surface)& S2,
0243 const Handle(Adaptor3d_TopolTool)& I2,
0244 const TopAbs_Orientation Or2,
0245 const Standard_Real Fleche,
0246 const Standard_Real TolGuide,
0247 Standard_Real& First,
0248 Standard_Real& Last,
0249 const Standard_Boolean Inside,
0250 const Standard_Boolean Appro,
0251 const Standard_Boolean Forward,
0252 const Standard_Boolean RecP,
0253 const Standard_Boolean RecS,
0254 const Standard_Boolean RecRst,
0255 const math_Vector& Soldep);
0256
0257 Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
0258 const Handle(ChFiDS_ElSpine)& Guide,
0259 const Handle(ChFiDS_Spine)& Spine,
0260 const Standard_Integer Choix,
0261 const Handle(BRepAdaptor_Surface)& S1,
0262 const Handle(Adaptor3d_TopolTool)& I1,
0263 const TopAbs_Orientation Or1,
0264 const Handle(BRepAdaptor_Surface)& S2,
0265 const Handle(Adaptor3d_TopolTool)& I2,
0266 const Handle(BRepAdaptor_Curve2d)& PC2,
0267 const Handle(BRepAdaptor_Surface)& Sref2,
0268 const Handle(BRepAdaptor_Curve2d)& PCref2,
0269 Standard_Boolean& Decroch2,
0270 const Standard_Real Fleche,
0271 const Standard_Real TolGuide,
0272 Standard_Real& First,
0273 Standard_Real& Last,
0274 const Standard_Boolean Inside,
0275 const Standard_Boolean Appro,
0276 const Standard_Boolean Forward,
0277 const Standard_Boolean RecP,
0278 const Standard_Boolean RecS,
0279 const Standard_Boolean RecRst,
0280 const math_Vector& Soldep);
0281
0282 Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
0283 const Handle(ChFiDS_ElSpine)& Guide,
0284 const Handle(ChFiDS_Spine)& Spine,
0285 const Standard_Integer Choix,
0286 const Handle(BRepAdaptor_Surface)& S1,
0287 const Handle(Adaptor3d_TopolTool)& I1,
0288 const Handle(BRepAdaptor_Curve2d)& PC1,
0289 const Handle(BRepAdaptor_Surface)& Sref1,
0290 const Handle(BRepAdaptor_Curve2d)& PCref1,
0291 Standard_Boolean& Decroch1,
0292 const TopAbs_Orientation Or1,
0293 const Handle(BRepAdaptor_Surface)& S2,
0294 const Handle(Adaptor3d_TopolTool)& I2,
0295 const Handle(BRepAdaptor_Curve2d)& PC2,
0296 const Handle(BRepAdaptor_Surface)& Sref2,
0297 const Handle(BRepAdaptor_Curve2d)& PCref2,
0298 Standard_Boolean& Decroch2,
0299 const TopAbs_Orientation Or2,
0300 const Standard_Real Fleche,
0301 const Standard_Real TolGuide,
0302 Standard_Real& First,
0303 Standard_Real& Last,
0304 const Standard_Boolean Inside,
0305 const Standard_Boolean Appro,
0306 const Standard_Boolean Forward,
0307 const Standard_Boolean RecP1,
0308 const Standard_Boolean RecRst1,
0309 const Standard_Boolean RecP2,
0310 const Standard_Boolean RecRst2,
0311 const math_Vector& Soldep);
0312
0313 Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
0314 const Handle(ChFiDS_ElSpine)& Guide,
0315 const Handle(ChFiDS_ElSpine)& AdditionalGuide,
0316 Handle(BRepBlend_Line)& Lin,
0317 const Handle(Adaptor3d_Surface)& S1,
0318 const Handle(Adaptor3d_TopolTool)& I1,
0319 const Handle(Adaptor3d_Surface)& S2,
0320 const Handle(Adaptor3d_TopolTool)& I2,
0321 Blend_Function& Func,
0322 Blend_FuncInv& FInv,
0323 const Standard_Real PFirst,
0324 const Standard_Real MaxStep,
0325 const Standard_Real Fleche,
0326 const Standard_Real TolGuide,
0327 Standard_Real& First,
0328 Standard_Real& Last,
0329 const Standard_Boolean Inside,
0330 const Standard_Boolean Appro,
0331 const Standard_Boolean Forward,
0332 const math_Vector& Soldep,
0333 const Standard_Integer NbSecMin,
0334 const Standard_Boolean RecOnS1 = Standard_False,
0335 const Standard_Boolean RecOnS2 = Standard_False);
0336
0337 Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
0338 const Handle(ChFiDS_ElSpine)& HGuide,
0339 Handle(BRepBlend_Line)& Lin,
0340 const Handle(Adaptor3d_Surface)& S1,
0341 const Handle(Adaptor3d_TopolTool)& I1,
0342 const Handle(Adaptor3d_Surface)& S2,
0343 const Handle(Adaptor2d_Curve2d)& PC2,
0344 const Handle(Adaptor3d_TopolTool)& I2,
0345 Standard_Boolean& Decroch,
0346 Blend_SurfRstFunction& Func,
0347 Blend_FuncInv& FInv,
0348 Blend_SurfPointFuncInv& FInvP,
0349 Blend_SurfCurvFuncInv& FInvC,
0350 const Standard_Real PFirst,
0351 const Standard_Real MaxStep,
0352 const Standard_Real Fleche,
0353 const Standard_Real TolGuide,
0354 Standard_Real& First,
0355 Standard_Real& Last,
0356 const math_Vector& Soldep,
0357 const Standard_Integer NbSecMin,
0358 const Standard_Boolean Inside,
0359 const Standard_Boolean Appro,
0360 const Standard_Boolean Forward,
0361 const Standard_Boolean RecP,
0362 const Standard_Boolean RecS,
0363 const Standard_Boolean RecRst);
0364
0365 Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
0366 const Handle(ChFiDS_ElSpine)& HGuide,
0367 Handle(BRepBlend_Line)& Lin,
0368 const Handle(Adaptor3d_Surface)& S1,
0369 const Handle(Adaptor2d_Curve2d)& PC1,
0370 const Handle(Adaptor3d_TopolTool)& I1,
0371 Standard_Boolean& Decroch1,
0372 const Handle(Adaptor3d_Surface)& S2,
0373 const Handle(Adaptor2d_Curve2d)& PC2,
0374 const Handle(Adaptor3d_TopolTool)& I2,
0375 Standard_Boolean& Decroch2,
0376 Blend_RstRstFunction& Func,
0377 Blend_SurfCurvFuncInv& FInv1,
0378 Blend_CurvPointFuncInv& FInvP1,
0379 Blend_SurfCurvFuncInv& FInv2,
0380 Blend_CurvPointFuncInv& FInvP2,
0381 const Standard_Real PFirst,
0382 const Standard_Real MaxStep,
0383 const Standard_Real Fleche,
0384 const Standard_Real TolGuide,
0385 Standard_Real& First,
0386 Standard_Real& Last,
0387 const math_Vector& Soldep,
0388 const Standard_Integer NbSecMin,
0389 const Standard_Boolean Inside,
0390 const Standard_Boolean Appro,
0391 const Standard_Boolean Forward,
0392 const Standard_Boolean RecP1,
0393 const Standard_Boolean RecRst1,
0394 const Standard_Boolean RecP2,
0395 const Standard_Boolean RecRst2);
0396
0397 Standard_EXPORT virtual void SetRegul() = 0;
0398
0399 Standard_EXPORT Standard_Boolean PerformElement (const Handle(ChFiDS_Spine)& CElement,
0400 const Standard_Real Offset,
0401 const TopoDS_Face& theFirstFace);
0402
0403 Standard_EXPORT void PerformExtremity (const Handle(ChFiDS_Spine)& CElement);
0404
0405 Standard_EXPORT void PerformSetOfSurf (Handle(ChFiDS_Stripe)& S,
0406 const Standard_Boolean Simul = Standard_False);
0407
0408 Standard_EXPORT void PerformSetOfKPart (Handle(ChFiDS_Stripe)& S,
0409 const Standard_Boolean Simul = Standard_False);
0410
0411 Standard_EXPORT void PerformSetOfKGen (Handle(ChFiDS_Stripe)& S,
0412 const Standard_Boolean Simul = Standard_False);
0413
0414 Standard_EXPORT void Trunc (const Handle(ChFiDS_SurfData)& SD,
0415 const Handle(ChFiDS_Spine)& Spine,
0416 const Handle(Adaptor3d_Surface)& S1,
0417 const Handle(Adaptor3d_Surface)& S2,
0418 const Standard_Integer iedge,
0419 const Standard_Boolean isfirst,
0420 const Standard_Integer cntlFiOnS);
0421
0422 Standard_EXPORT void CallPerformSurf (Handle(ChFiDS_Stripe)& Stripe,
0423 const Standard_Boolean Simul,
0424 ChFiDS_SequenceOfSurfData& SeqSD,
0425 Handle(ChFiDS_SurfData)& SD,
0426 const Handle(ChFiDS_ElSpine)& Guide,
0427 const Handle(ChFiDS_Spine)& Spine,
0428 const Handle(BRepAdaptor_Surface)& HS1,
0429 const Handle(BRepAdaptor_Surface)& HS3,
0430 const gp_Pnt2d& P1,
0431 const gp_Pnt2d& P3,
0432 const Handle(Adaptor3d_TopolTool)& I1,
0433 const Handle(BRepAdaptor_Surface)& HS2,
0434 const Handle(BRepAdaptor_Surface)& HS4,
0435 const gp_Pnt2d& P2, const gp_Pnt2d& P4,
0436 const Handle(Adaptor3d_TopolTool)& I2,
0437 const Standard_Real MaxStep,
0438 const Standard_Real Fleche,
0439 const Standard_Real TolGuide,
0440 Standard_Real& First,
0441 Standard_Real& Last,
0442 const Standard_Boolean Inside,
0443 const Standard_Boolean Appro,
0444 const Standard_Boolean Forward,
0445 const Standard_Boolean RecOnS1,
0446 const Standard_Boolean RecOnS2,
0447 math_Vector& Soldep,
0448 Standard_Integer& Intf,
0449 Standard_Integer& Intl,
0450 Handle(BRepAdaptor_Surface)& Surf1,
0451 Handle(BRepAdaptor_Surface)& Surf2);
0452
0453
0454
0455
0456 Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data,
0457 const Handle(ChFiDS_ElSpine)& Guide,
0458 const Handle(ChFiDS_Spine)& Spine,
0459 const Standard_Integer Choix,
0460 const Handle(BRepAdaptor_Surface)& S1,
0461 const Handle(Adaptor3d_TopolTool)& I1,
0462 const Handle(BRepAdaptor_Surface)& S2,
0463 const Handle(Adaptor3d_TopolTool)& I2,
0464 const Standard_Real MaxStep,
0465 const Standard_Real Fleche,
0466 const Standard_Real TolGuide,
0467 Standard_Real& First,
0468 Standard_Real& Last,
0469 const Standard_Boolean Inside,
0470 const Standard_Boolean Appro,
0471 const Standard_Boolean Forward,
0472 const Standard_Boolean RecOnS1,
0473 const Standard_Boolean RecOnS2,
0474 const math_Vector& Soldep,
0475 Standard_Integer& Intf,
0476 Standard_Integer& Intl) = 0;
0477
0478
0479
0480
0481 Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
0482 const Handle(ChFiDS_ElSpine)& Guide,
0483 const Handle(ChFiDS_Spine)& Spine,
0484 const Standard_Integer Choix,
0485 const Handle(BRepAdaptor_Surface)& S1,
0486 const Handle(Adaptor3d_TopolTool)& I1,
0487 const Handle(BRepAdaptor_Curve2d)& PC1,
0488 const Handle(BRepAdaptor_Surface)& Sref1,
0489 const Handle(BRepAdaptor_Curve2d)& PCref1,
0490 Standard_Boolean& Decroch1,
0491 const Handle(BRepAdaptor_Surface)& S2,
0492 const Handle(Adaptor3d_TopolTool)& I2,
0493 const TopAbs_Orientation Or2,
0494 const Standard_Real MaxStep,
0495 const Standard_Real Fleche,
0496 const Standard_Real TolGuide,
0497 Standard_Real& First,
0498 Standard_Real& Last,
0499 const Standard_Boolean Inside,
0500 const Standard_Boolean Appro,
0501 const Standard_Boolean Forward,
0502 const Standard_Boolean RecP,
0503 const Standard_Boolean RecS,
0504 const Standard_Boolean RecRst,
0505 const math_Vector& Soldep);
0506
0507
0508
0509
0510 Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
0511 const Handle(ChFiDS_ElSpine)& Guide,
0512 const Handle(ChFiDS_Spine)& Spine,
0513 const Standard_Integer Choix,
0514 const Handle(BRepAdaptor_Surface)& S1,
0515 const Handle(Adaptor3d_TopolTool)& I1,
0516 const TopAbs_Orientation Or1,
0517 const Handle(BRepAdaptor_Surface)& S2,
0518 const Handle(Adaptor3d_TopolTool)& I2,
0519 const Handle(BRepAdaptor_Curve2d)& PC2,
0520 const Handle(BRepAdaptor_Surface)& Sref2,
0521 const Handle(BRepAdaptor_Curve2d)& PCref2,
0522 Standard_Boolean& Decroch2,
0523 const Standard_Real MaxStep,
0524 const Standard_Real Fleche,
0525 const Standard_Real TolGuide,
0526 Standard_Real& First,
0527 Standard_Real& Last,
0528 const Standard_Boolean Inside,
0529 const Standard_Boolean Appro,
0530 const Standard_Boolean Forward,
0531 const Standard_Boolean RecP,
0532 const Standard_Boolean RecS,
0533 const Standard_Boolean RecRst,
0534 const math_Vector& Soldep);
0535
0536
0537
0538
0539 Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
0540 const Handle(ChFiDS_ElSpine)& Guide,
0541 const Handle(ChFiDS_Spine)& Spine,
0542 const Standard_Integer Choix,
0543 const Handle(BRepAdaptor_Surface)& S1,
0544 const Handle(Adaptor3d_TopolTool)& I1,
0545 const Handle(BRepAdaptor_Curve2d)& PC1,
0546 const Handle(BRepAdaptor_Surface)& Sref1,
0547 const Handle(BRepAdaptor_Curve2d)& PCref1,
0548 Standard_Boolean& Decroch1,
0549 const TopAbs_Orientation Or1,
0550 const Handle(BRepAdaptor_Surface)& S2,
0551 const Handle(Adaptor3d_TopolTool)& I2,
0552 const Handle(BRepAdaptor_Curve2d)& PC2,
0553 const Handle(BRepAdaptor_Surface)& Sref2,
0554 const Handle(BRepAdaptor_Curve2d)& PCref2,
0555 Standard_Boolean& Decroch2,
0556 const TopAbs_Orientation Or2,
0557 const Standard_Real MaxStep,
0558 const Standard_Real Fleche,
0559 const Standard_Real TolGuide,
0560 Standard_Real& First,
0561 Standard_Real& Last,
0562 const Standard_Boolean Inside,
0563 const Standard_Boolean Appro,
0564 const Standard_Boolean Forward,
0565 const Standard_Boolean RecP1,
0566 const Standard_Boolean RecRst1,
0567 const Standard_Boolean RecP2,
0568 const Standard_Boolean RecRst2,
0569 const math_Vector& Soldep);
0570
0571 Standard_EXPORT virtual void PerformTwoCorner (const Standard_Integer Index) = 0;
0572
0573 Standard_EXPORT virtual void PerformThreeCorner (const Standard_Integer Index) = 0;
0574
0575 Standard_EXPORT void PerformMoreThreeCorner (const Standard_Integer Index,
0576 const Standard_Integer nbcourb);
0577
0578 Standard_EXPORT virtual void ExtentOneCorner (const TopoDS_Vertex& V,
0579 const Handle(ChFiDS_Stripe)& S) = 0;
0580
0581 Standard_EXPORT virtual void ExtentTwoCorner (const TopoDS_Vertex& V,
0582 const ChFiDS_ListOfStripe& LS) = 0;
0583
0584 Standard_EXPORT virtual void ExtentThreeCorner (const TopoDS_Vertex& V,
0585 const ChFiDS_ListOfStripe& LS) = 0;
0586
0587 Standard_EXPORT virtual Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S,
0588 const Handle(ChFiDS_ElSpine)& HGuide,
0589 const Standard_Integer Choix,
0590 Handle(BRepAdaptor_Surface)& S1,
0591 Handle(BRepAdaptor_Surface)& S2,
0592 const Handle(Adaptor3d_TopolTool)& I1,
0593 const Handle(Adaptor3d_TopolTool)& I2,
0594 const Standard_Real Par,
0595 math_Vector& SolDep,
0596 TopAbs_State& Pos1,
0597 TopAbs_State& Pos2) const = 0;
0598
0599 Standard_EXPORT Standard_Boolean SearchFace (const Handle(ChFiDS_Spine)& Sp,
0600 const ChFiDS_CommonPoint& Pc,
0601 const TopoDS_Face& FRef,
0602 TopoDS_Face& FVoi) const;
0603
0604 Standard_EXPORT Standard_Boolean StripeOrientations (const Handle(ChFiDS_Spine)& Sp,
0605 TopAbs_Orientation& Or1,
0606 TopAbs_Orientation& Or2,
0607 Standard_Integer& ChoixConge) const;
0608
0609
0610 Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
0611 const Handle(ChFiDS_ElSpine)& Guide,
0612 const Handle(ChFiDS_Spine)& Spine,
0613 Handle(BRepBlend_Line)& Lin,
0614 const Handle(Adaptor3d_Surface)& S1,
0615 const Handle(Adaptor3d_TopolTool)& I1,
0616 const Handle(Adaptor3d_Surface)& S2,
0617 const Handle(Adaptor3d_TopolTool)& I2,
0618 Blend_Function& Func,
0619 Blend_FuncInv& FInv,
0620 const Standard_Real PFirst,
0621 const Standard_Real MaxStep,
0622 const Standard_Real Fleche,
0623 const Standard_Real TolGuide,
0624 Standard_Real& First,
0625 Standard_Real& Last,
0626 const Standard_Boolean Inside,
0627 const Standard_Boolean Appro,
0628 const Standard_Boolean Forward,
0629 const math_Vector& Soldep,
0630 Standard_Integer& Intf,
0631 Standard_Integer& Intl,
0632 Standard_Boolean& Gd1,
0633 Standard_Boolean& Gd2,
0634 Standard_Boolean& Gf1,
0635 Standard_Boolean& Gf2,
0636 const Standard_Boolean RecOnS1 = Standard_False,
0637 const Standard_Boolean RecOnS2 = Standard_False);
0638
0639
0640 Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
0641 const Handle(ChFiDS_ElSpine)& HGuide,
0642 Handle(BRepBlend_Line)& Lin,
0643 const Handle(Adaptor3d_Surface)& S1,
0644 const Handle(Adaptor3d_TopolTool)& I1,
0645 const Handle(Adaptor3d_Surface)& S2,
0646 const Handle(Adaptor2d_Curve2d)& PC2,
0647 const Handle(Adaptor3d_TopolTool)& I2,
0648 Standard_Boolean& Decroch,
0649 Blend_SurfRstFunction& Func,
0650 Blend_FuncInv& FInv,
0651 Blend_SurfPointFuncInv& FInvP,
0652 Blend_SurfCurvFuncInv& FInvC,
0653 const Standard_Real PFirst,
0654 const Standard_Real MaxStep,
0655 const Standard_Real Fleche,
0656 const Standard_Real TolGuide,
0657 Standard_Real& First,
0658 Standard_Real& Last,
0659 const math_Vector& Soldep,
0660 const Standard_Boolean Inside,
0661 const Standard_Boolean Appro,
0662 const Standard_Boolean Forward,
0663 const Standard_Boolean RecP,
0664 const Standard_Boolean RecS,
0665 const Standard_Boolean RecRst);
0666
0667
0668 Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
0669 const Handle(ChFiDS_ElSpine)& HGuide,
0670 Handle(BRepBlend_Line)& Lin,
0671 const Handle(Adaptor3d_Surface)& S1,
0672 const Handle(Adaptor2d_Curve2d)& PC1,
0673 const Handle(Adaptor3d_TopolTool)& I1,
0674 Standard_Boolean& Decroch1,
0675 const Handle(Adaptor3d_Surface)& S2,
0676 const Handle(Adaptor2d_Curve2d)& PC2,
0677 const Handle(Adaptor3d_TopolTool)& I2,
0678 Standard_Boolean& Decroch2,
0679 Blend_RstRstFunction& Func,
0680 Blend_SurfCurvFuncInv& FInv1,
0681 Blend_CurvPointFuncInv& FInvP1,
0682 Blend_SurfCurvFuncInv& FInv2,
0683 Blend_CurvPointFuncInv& FInvP2,
0684 const Standard_Real PFirst,
0685 const Standard_Real MaxStep,
0686 const Standard_Real Fleche,
0687 const Standard_Real TolGuide,
0688 Standard_Real& First,
0689 Standard_Real& Last,
0690 const math_Vector& Soldep,
0691 const Standard_Boolean Inside,
0692 const Standard_Boolean Appro,
0693 const Standard_Boolean Forward,
0694 const Standard_Boolean RecP1,
0695 const Standard_Boolean RecRst1,
0696 const Standard_Boolean RecP2,
0697 const Standard_Boolean RecRst2);
0698
0699 Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
0700 Blend_Function& Func,
0701 Handle(BRepBlend_Line)& Lin,
0702 const Handle(Adaptor3d_Surface)& S1,
0703 const Handle(Adaptor3d_Surface)& S2,
0704 const TopAbs_Orientation Or1,
0705 const Standard_Boolean Gd1,
0706 const Standard_Boolean Gd2,
0707 const Standard_Boolean Gf1,
0708 const Standard_Boolean Gf2,
0709 const Standard_Boolean Reversed = Standard_False);
0710
0711 Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
0712 Blend_SurfRstFunction& Func,
0713 Handle(BRepBlend_Line)& Lin,
0714 const Handle(Adaptor3d_Surface)& S1,
0715 const Handle(Adaptor3d_Surface)& S2,
0716 const TopAbs_Orientation Or,
0717 const Standard_Boolean Reversed);
0718
0719 Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
0720 Blend_RstRstFunction& Func,
0721 Handle(BRepBlend_Line)& Lin,
0722 const Handle(Adaptor3d_Surface)& S1,
0723 const Handle(Adaptor3d_Surface)& S2,
0724 const TopAbs_Orientation Or);
0725
0726 Standard_EXPORT Standard_Boolean StoreData (Handle(ChFiDS_SurfData)& Data,
0727 const AppBlend_Approx& Approx,
0728 const Handle(BRepBlend_Line)& Lin,
0729 const Handle(Adaptor3d_Surface)& S1,
0730 const Handle(Adaptor3d_Surface)& S2,
0731 const TopAbs_Orientation Or1,
0732 const Standard_Boolean Gd1,
0733 const Standard_Boolean Gd2,
0734 const Standard_Boolean Gf1,
0735 const Standard_Boolean Gf2,
0736 const Standard_Boolean Reversed = Standard_False);
0737
0738 Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
0739 const Handle(Geom_Surface)& Surfcoin,
0740 const Handle(Adaptor3d_Surface)& S1,
0741 const Handle(Geom2d_Curve)& PC1,
0742 const Handle(Adaptor3d_Surface)& S2,
0743 const Handle(Geom2d_Curve)& PC2,
0744 const TopAbs_Orientation Or,
0745 const Standard_Boolean On1,
0746 const Standard_Boolean Gd1,
0747 const Standard_Boolean Gd2,
0748 const Standard_Boolean Gf1,
0749 const Standard_Boolean Gf2);
0750
0751
0752 Standard_Real tolappangle;
0753 Standard_Real tolesp;
0754 Standard_Real tol2d;
0755 Standard_Real tolapp3d;
0756 Standard_Real tolapp2d;
0757 Standard_Real fleche;
0758 GeomAbs_Shape myConti;
0759 ChFiDS_Map myEFMap;
0760 ChFiDS_Map myESoMap;
0761 ChFiDS_Map myEShMap;
0762 ChFiDS_Map myVFMap;
0763 ChFiDS_Map myVEMap;
0764 Handle(TopOpeBRepDS_HDataStructure) myDS;
0765 Handle(TopOpeBRepBuild_HBuilder) myCoup;
0766 ChFiDS_ListOfStripe myListStripe;
0767 ChFiDS_StripeMap myVDataMap;
0768 ChFiDS_Regularities myRegul;
0769 ChFiDS_ListOfStripe badstripes;
0770 TopTools_ListOfShape badvertices;
0771 TopTools_DataMapOfShapeListOfInteger myEVIMap;
0772 TopTools_DataMapOfShapeShape myEdgeFirstFace;
0773 Standard_Boolean done;
0774 Standard_Boolean hasresult;
0775
0776
0777 private:
0778
0779
0780 Standard_EXPORT Standard_Boolean FaceTangency (const TopoDS_Edge& E0,
0781 const TopoDS_Edge& E1,
0782 const TopoDS_Vertex& V) const;
0783
0784 Standard_EXPORT void PerformSetOfSurfOnElSpine (const Handle(ChFiDS_ElSpine)& ES,
0785 Handle(ChFiDS_Stripe)& St,
0786 Handle(BRepTopAdaptor_TopolTool)& It1,
0787 Handle(BRepTopAdaptor_TopolTool)& It2,
0788 const Standard_Boolean Simul = Standard_False);
0789
0790 Standard_EXPORT void PerformFilletOnVertex (const Standard_Integer Index);
0791
0792 Standard_EXPORT void PerformSingularCorner (const Standard_Integer Index);
0793
0794 Standard_EXPORT void PerformOneCorner (const Standard_Integer Index,
0795 const Standard_Boolean PrepareOnSame = Standard_False);
0796
0797 Standard_EXPORT void IntersectMoreCorner (const Standard_Integer Index);
0798
0799 Standard_EXPORT void PerformMoreSurfdata (const Standard_Integer Index);
0800
0801 Standard_EXPORT void PerformIntersectionAtEnd (const Standard_Integer Index);
0802
0803 Standard_EXPORT void ExtentAnalyse();
0804
0805 Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V,
0806 const ChFiDS_CommonPoint& P1,
0807 const ChFiDS_CommonPoint& P2,
0808 TopoDS_Face& Fv) const;
0809
0810 Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V,
0811 const ChFiDS_CommonPoint& P1,
0812 const ChFiDS_CommonPoint& P2,
0813 TopoDS_Face& Fv,
0814 const TopoDS_Face& Favoid) const;
0815
0816 Standard_EXPORT Standard_Boolean MoreSurfdata (const Standard_Integer Index) const;
0817
0818 Standard_EXPORT Standard_Boolean StartSol (const Handle(ChFiDS_Spine)& Spine,
0819 Handle(BRepAdaptor_Surface)& HS,
0820 gp_Pnt2d& P,
0821 Handle(BRepAdaptor_Curve2d)& HC,
0822 Standard_Real& W,
0823 const Handle(ChFiDS_SurfData)& SD,
0824 const Standard_Boolean isFirst,
0825 const Standard_Integer OnS,
0826 Handle(BRepAdaptor_Surface)& HSref,
0827 Handle(BRepAdaptor_Curve2d)& HCref,
0828 Standard_Boolean& RecP,
0829 Standard_Boolean& RecS,
0830 Standard_Boolean& RecRst,
0831 Standard_Boolean& C1Obst,
0832 Handle(BRepAdaptor_Surface)& HSbis,
0833 gp_Pnt2d& Pbis,
0834 const Standard_Boolean Decroch,
0835 const TopoDS_Vertex& Vref) const;
0836
0837 Standard_EXPORT void StartSol (const Handle(ChFiDS_Stripe)& S,
0838 const Handle(ChFiDS_ElSpine)& HGuide,
0839 Handle(BRepAdaptor_Surface)& HS1,
0840 Handle(BRepAdaptor_Surface)& HS2,
0841 Handle(BRepTopAdaptor_TopolTool)& I1,
0842 Handle(BRepTopAdaptor_TopolTool)& I2,
0843 gp_Pnt2d& P1,
0844 gp_Pnt2d& P2,
0845 Standard_Real& First) const;
0846
0847 Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp,
0848 const Standard_Integer IEdge,
0849 Handle(BRepAdaptor_Surface)& HS1,
0850 Handle(BRepAdaptor_Surface)& HS2) const;
0851
0852
0853
0854 Standard_EXPORT void UpdateTolesp();
0855
0856
0857 TopoDS_Shape myShape;
0858 Standard_Real angular;
0859 TopTools_ListOfShape myGenerated;
0860 TopoDS_Shape myShapeResult;
0861 TopoDS_Shape badShape;
0862
0863
0864 };
0865
0866
0867
0868
0869
0870
0871
0872 #endif