- Handle(Geom_Surface) aS = BRep_Tool::Surface(aF);
- GeomAdaptor_Surface aGAS(aS);
- if (aGAS.GetType()!=GeomAbs_Plane) {
- gp_Pnt aPx;
- if (!FindPointInFace(aE, aF, aP, aT, aDB, aPx, theContext, aGAS)) {
- gp_Pnt2d aPx2D;
- Handle(Geom_Plane) aPL;
- GeomAPI_ProjectPointOnSurf aProj;
- //
- BOPTools_AlgoTools3D::PointNearEdge(aE, aF, aT, aPx2D, aPx, theContext);
- aPL = new Geom_Plane(aP, aDTgt);
- aProj.Init(aPx, aPL);
- aPx = aProj.NearestPoint();
- gp_Vec aVec(aP, aPx);
- aDB.SetXYZ(aVec.XYZ());
- }
+ gp_Pnt aPx;
+ if (!FindPointInFace(aE, aF, aP, aDB, aPx, theContext, aProjPL)) {
+ BOPTools_AlgoTools3D::GetApproxNormalToFaceOnEdge(aE, aF, aT, aPx, aDN, theContext);
+ aProjPL.Perform(aPx);
+ aPx = aProjPL.NearestPoint();
+ gp_Vec aVec(aP, aPx);
+ aDB.SetXYZ(aVec.XYZ());