GeomAPI_ProjectPointOnSurf& aProjector=ProjPS(aF);
aProjector.Perform(aP);
-
+
bFlag=aProjector.IsDone();
if (bFlag) {
//function : IsValidBlockForFaces
//purpose :
//=======================================================================
-Standard_Boolean IntTools_Context::IsValidBlockForFaces
- (const Standard_Real aT1,
- const Standard_Real aT2,
- const IntTools_Curve& aC,
- const TopoDS_Face& aF1,
- const TopoDS_Face& aF2,
- const Standard_Real aTol)
+Standard_Boolean IntTools_Context::IsValidBlockForFaces(const Standard_Real theT1,
+ const Standard_Real theT2,
+ const IntTools_Curve& theC,
+ const TopoDS_Face& theF1,
+ const TopoDS_Face& theF2,
+ const Standard_Real theTol)
{
- Standard_Boolean bFlag1, bFlag2;
- //
- Handle(Geom2d_Curve) aPC1 = aC.FirstCurve2d();
- Handle(Geom2d_Curve) aPC2 = aC.SecondCurve2d();
- if( !aPC1.IsNull() && !aPC2.IsNull() ) {
- Standard_Real aMidPar = IntTools_Tools::IntermediatePoint(aT1, aT2);
- gp_Pnt2d aPnt2D;
+ const Standard_Integer aNbElem = 2;
+ const Handle(Geom2d_Curve) &aPC1 = theC.FirstCurve2d();
+ const Handle(Geom2d_Curve) &aPC2 = theC.SecondCurve2d();
+ const Handle(Geom_Curve) &aC3D = theC.Curve();
+ const Handle(Geom2d_Curve)* anArrPC[aNbElem] = { &aPC1, &aPC2 };
+ const TopoDS_Face* anArrF[aNbElem] = { &theF1, &theF2 };
- aPC1->D0(aMidPar, aPnt2D);
- bFlag1 = IsPointInOnFace(aF1, aPnt2D);
+ const Standard_Real aMidPar = IntTools_Tools::IntermediatePoint(theT1, theT2);
+ const gp_Pnt aP(aC3D->Value(aMidPar));
- if( !bFlag1 )
- return bFlag1;
+ Standard_Boolean bFlag = Standard_True;
+ gp_Pnt2d aPnt2D;
- aPC2->D0(aMidPar, aPnt2D);
- bFlag2 = IsPointInOnFace(aF2, aPnt2D);
- return bFlag2;
- }
- //
+ for (Standard_Integer i = 0; (i < 2) && bFlag; ++i)
+ {
+ const Handle(Geom2d_Curve) &aPC = *anArrPC[i];
+ const TopoDS_Face &aF = *anArrF[i];
- bFlag1=IsValidBlockForFace (aT1, aT2, aC, aF1, aTol);
- if (!bFlag1) {
- return bFlag1;
+ if (!aPC.IsNull())
+ {
+ aPC->D0(aMidPar, aPnt2D);
+ bFlag = IsPointInOnFace(aF, aPnt2D);
+ }
+ else
+ {
+ bFlag = IsValidPointForFace(aP, aF, theTol);
+ }
}
- bFlag2=IsValidBlockForFace (aT1, aT2, aC, aF2, aTol);
- return bFlag2;
+
+ return bFlag;
}
+
//=======================================================================
//function : IsVertexOnLine
//purpose :