mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-04 09:00:34 +05:00
0022436: EDF 2438 GEOM: Internal
This commit is contained in:
parent
e01162a80d
commit
ffe5528479
@ -635,12 +635,10 @@ void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Face& aF,
|
|||||||
aP2=aNodes(aN2).Transformed(aTrsf);
|
aP2=aNodes(aN2).Transformed(aTrsf);
|
||||||
//
|
//
|
||||||
if (aType==GeomAbs_Cylinder) {
|
if (aType==GeomAbs_Cylinder) {
|
||||||
Standard_Real aTolSM;
|
|
||||||
gp_Cylinder aCyl;
|
gp_Cylinder aCyl;
|
||||||
//
|
//
|
||||||
aTolSM=1.523e-6;//~1.-cos(0.1 deg)
|
|
||||||
aCyl=aGAS.Cylinder();
|
aCyl=aGAS.Cylinder();
|
||||||
if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) {
|
if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, myTolerance)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -881,12 +881,10 @@ if (!aNb && myNbPntsMin) {
|
|||||||
aP2=aNodes(aN2).Transformed(aTrsf);
|
aP2=aNodes(aN2).Transformed(aTrsf);
|
||||||
//
|
//
|
||||||
if (aType==GeomAbs_Cylinder) {
|
if (aType==GeomAbs_Cylinder) {
|
||||||
Standard_Real aTolSM;
|
|
||||||
gp_Cylinder aCyl;
|
gp_Cylinder aCyl;
|
||||||
//
|
//
|
||||||
aTolSM=1.523e-6;//~1.-cos(0.1 deg)
|
|
||||||
aCyl=aGAS.Cylinder();
|
aCyl=aGAS.Cylinder();
|
||||||
if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) {
|
if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, myTolerance)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,21 +140,34 @@ Standard_Boolean GEOMAlgo_SurfaceTools::IsCoaxial(const gp_Pnt& aP1,
|
|||||||
const gp_Cylinder& aCyl,
|
const gp_Cylinder& aCyl,
|
||||||
const Standard_Real aTol)
|
const Standard_Real aTol)
|
||||||
{
|
{
|
||||||
Standard_Boolean bRet=Standard_False;
|
const gp_XYZ &aLoc = aCyl.Location().XYZ();
|
||||||
Standard_Real aSM;
|
|
||||||
//
|
|
||||||
gp_Vec aV12(aP1, aP2);
|
|
||||||
gp_Dir aD12(aV12);
|
|
||||||
//
|
|
||||||
const gp_Ax1 &aAxis = aCyl.Axis();
|
const gp_Ax1 &aAxis = aCyl.Axis();
|
||||||
const gp_Dir& aDAxis=aAxis.Direction();
|
const gp_XYZ &aDAxis = aAxis.Direction().XYZ();
|
||||||
//
|
gp_XYZ aDP1 = aP1.XYZ().Subtracted(aLoc);
|
||||||
aSM=fabs(aD12*aDAxis);
|
gp_XYZ aDP2 = aP2.XYZ().Subtracted(aLoc);
|
||||||
if (fabs(1.-aSM) > aTol) {
|
Standard_Real aDot1 = aDP1.Dot(aDAxis);
|
||||||
return bRet;
|
Standard_Real aDot2 = aDP1.Dot(aDAxis);
|
||||||
|
Standard_Real aTol2 = aTol*aTol;
|
||||||
|
|
||||||
|
// Project P1 and P2 onto a plane with location aLoc and Norm aDAxis.
|
||||||
|
aDP1.Subtract(aDAxis.Multiplied(aDot1));
|
||||||
|
aDP2.Subtract(aDAxis.Multiplied(aDot2));
|
||||||
|
|
||||||
|
Standard_Real aRadius1 = aDP1.Modulus();
|
||||||
|
Standard_Real aRadius2 = aDP2.Modulus();
|
||||||
|
Standard_Boolean isOn = Standard_False;
|
||||||
|
|
||||||
|
if (fabs(aRadius1 - aRadius2) <= aTol) {
|
||||||
|
// Check the deflection of the middle point.
|
||||||
|
gp_XYZ aMidP = 0.5*(aDP1 + aDP2);
|
||||||
|
Standard_Real aMidRadius1 = aMidP.Modulus();
|
||||||
|
|
||||||
|
if (fabs(aRadius1 - aRadius2) <= aTol) {
|
||||||
|
isOn = Standard_True;
|
||||||
}
|
}
|
||||||
//
|
}
|
||||||
return !bRet;
|
|
||||||
|
return isOn;
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : IsAnalytic
|
//function : IsAnalytic
|
||||||
|
Loading…
Reference in New Issue
Block a user