1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-24 13:50:49 +03:00

Compare commits

..

1 Commits

Author SHA1 Message Date
ddzama
7a0a64d727 0032934: Modelling Algorithms - BRepExtrema_DistShapeShape returns two solutions instead of one
distmini of two edges returns two solution points instead one.
Second unneeded solution point is the same as first.

The problem was in fact that second edge has continuity C0.
In this case additional extremas analysis performed in special procedure

PERFORM_C0

And second point found in this procedure.
Folowing code of

BRepExtrema_DistanceSS::Perform (variant for Edge/Edge)

we should this additional solution extremas set
to be object of test TRI_SOLUTION before pushing
into main list of solution.
This solves the problem.
Corresponding test and compound with edges has been created.

Additionally, in the function

PERFORM_C0

an obvious error has fixed.
2022-11-29 10:56:28 +03:00
13 changed files with 91 additions and 161 deletions

View File

@@ -468,7 +468,14 @@ static void PERFORM_C0(const TopoDS_Edge& S1, const TopoDS_Edge& S2,
if (fabs(Dstmin - sqrt(Ext.SquareDistance(ii))) < Eps) if (fabs(Dstmin - sqrt(Ext.SquareDistance(ii))) < Eps)
{ {
Pt = Ext.Point(ii); Pt = Ext.Point(ii);
if (TRI_SOLUTION(SeqSol2, Pt)) // Pt - point on the curve pCurvOther/Eother, but
// if iE == 0 -> Eother correspond to edge S2
// and to edge S1 in the opposite case.
// Therefore we should search Pt through previous solution points on Other curve (edge):
// if iE == 0 - on edge S2, namely through SeqSol2,
// else - on edge S1, namely through SeqSol1.
const bool triSolutionResult = (iE == 0) ? TRI_SOLUTION(SeqSol2, Pt) : TRI_SOLUTION(SeqSol1, Pt);
if (triSolutionResult)
{ {
// Check if the parameter does not correspond to a vertex // Check if the parameter does not correspond to a vertex
const Standard_Real t = Ext.Parameter(ii); const Standard_Real t = Ext.Parameter(ii);
@@ -869,9 +876,19 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1,
if (!seqSol1.IsEmpty() && !seqSol2.IsEmpty()) if (!seqSol1.IsEmpty() && !seqSol2.IsEmpty())
{ {
theSeqSolShape1.Append(seqSol1); BRepExtrema_SeqOfSolution::iterator anIt1 = seqSol1.begin();
theSeqSolShape2.Append(seqSol2); BRepExtrema_SeqOfSolution::iterator anIt2 = seqSol2.begin();
myModif = Standard_True; for (; anIt1 != seqSol1.end() && anIt2 != seqSol2.end(); anIt1++, anIt2++)
{
gp_Pnt Pt1 = anIt1->Point();
gp_Pnt Pt2 = anIt2->Point();
if (TRI_SOLUTION(theSeqSolShape1, Pt1) || TRI_SOLUTION(theSeqSolShape2, Pt2))
{
theSeqSolShape1.Append(*anIt1);
theSeqSolShape2.Append(*anIt2);
myModif = Standard_True;
}
}
} }
} }

View File

@@ -90,9 +90,6 @@ public:
Standard_EXPORT void TolFixTangents (Standard_Real& aTolCheck, Standard_Real& aTolAngCheck); Standard_EXPORT void TolFixTangents (Standard_Real& aTolCheck, Standard_Real& aTolAngCheck);
//! Set angular tolerance
Standard_EXPORT void SetAngularTolerance (Standard_Real theAngularTolerance);
//! converts RLine to Geom(2d)_Curve. //! converts RLine to Geom(2d)_Curve.
Standard_EXPORT static void TreatRLine (const Handle(IntPatch_RLine)& theRL, const Handle(GeomAdaptor_Surface)& theHS1, const Handle(GeomAdaptor_Surface)& theHS2, Handle(Geom_Curve)& theC3d, Handle(Geom2d_Curve)& theC2d1, Handle(Geom2d_Curve)& theC2d2, Standard_Real& theTolReached); Standard_EXPORT static void TreatRLine (const Handle(IntPatch_RLine)& theRL, const Handle(GeomAdaptor_Surface)& theHS1, const Handle(GeomAdaptor_Surface)& theHS2, Handle(Geom_Curve)& theC3d, Handle(Geom2d_Curve)& theC2d1, Handle(Geom2d_Curve)& theC2d2, Standard_Real& theTolReached);

View File

@@ -146,12 +146,3 @@ inline GeomInt_IntSS::GeomInt_IntSS ()
{ {
return myIntersector.Point(Index).Value(); return myIntersector.Point(Index).Value();
} }
//=======================================================================
//function : SetAngularTolerance
//purpose :
//=======================================================================
inline void GeomInt_IntSS::SetAngularTolerance (Standard_Real theAngularTolerance)
{
myIntersector.SetAngularTolerance(theAngularTolerance);
}

View File

@@ -254,53 +254,24 @@ gp_Ax2 DirToAx2(const gp_Pnt& P,const gp_Dir& D)
//purpose : Empty constructor //purpose : Empty constructor
//======================================================================= //=======================================================================
IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(void) IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(void)
: done(Standard_False), : done(Standard_False),
nbint(0), nbint(0),
typeres(IntAna_Empty), typeres(IntAna_Empty),
pt1(0,0,0), pt1(0,0,0),
pt2(0,0,0), pt2(0,0,0),
pt3(0,0,0), pt3(0,0,0),
pt4(0,0,0), pt4(0,0,0),
param1(0), param1(0),
param2(0), param2(0),
param3(0), param3(0),
param4(0), param4(0),
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
} }
//=======================================================================
//function : IntAna_QuadQuadGeo
//purpose : Constructor with angular tolerance
//=======================================================================
IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(Standard_Real theAngularTolerance, Standard_Boolean theUseAngularTolerance)
: done(Standard_False),
nbint(0),
typeres(IntAna_Empty),
pt1(0,0,0),
pt2(0,0,0),
pt3(0,0,0),
pt4(0,0,0),
param1(0),
param2(0),
param3(0),
param4(0),
param1bis(0),
param2bis(0),
myCommonGen(Standard_False),
myPChar(0,0,0),
myAngularTolerance(theAngularTolerance),
myUseAngularTolerance(theUseAngularTolerance)
{
InitTolerances();
}
//======================================================================= //=======================================================================
//function : InitTolerances //function : InitTolerances
//purpose : //purpose :
@@ -308,20 +279,12 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(Standard_Real theAngularTolerance, Standa
void IntAna_QuadQuadGeo::InitTolerances() void IntAna_QuadQuadGeo::InitTolerances()
{ {
myEPSILON_DISTANCE = 1.0e-14; myEPSILON_DISTANCE = 1.0e-14;
if (myUseAngularTolerance) myEPSILON_ANGLE_CONE = Precision::Angular();
{
myEPSILON_ANGLE_CONE = myAngularTolerance;
}
else
{
myEPSILON_ANGLE_CONE = Precision::Angular();
}
myEPSILON_MINI_CIRCLE_RADIUS = 0.01*Precision::Confusion(); myEPSILON_MINI_CIRCLE_RADIUS = 0.01*Precision::Confusion();
myEPSILON_CYLINDER_DELTA_RADIUS = 1.0e-13; myEPSILON_CYLINDER_DELTA_RADIUS = 1.0e-13;
myEPSILON_CYLINDER_DELTA_DISTANCE= Precision::Confusion(); myEPSILON_CYLINDER_DELTA_DISTANCE= Precision::Confusion();
myEPSILON_AXES_PARA = Precision::Angular(); myEPSILON_AXES_PARA = Precision::Angular();
} }
//======================================================================= //=======================================================================
//function : IntAna_QuadQuadGeo //function : IntAna_QuadQuadGeo
//purpose : Pln Pln //purpose : Pln Pln
@@ -344,9 +307,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Pln& P1,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(P1,P2,TolAng,Tol); Perform(P1,P2,TolAng,Tol);
@@ -691,9 +652,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo( const gp_Pln& P
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(P,Co,Tolang,Tol); Perform(P,Co,Tolang,Tol);
@@ -909,9 +868,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Pln& P,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(P,S); Perform(P,S);
@@ -980,9 +937,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl1,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Cyl1,Cyl2,Tol); Perform(Cyl1,Cyl2,Tol);
@@ -1267,9 +1222,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Cyl,Con,Tol); Perform(Cyl,Con,Tol);
@@ -1325,9 +1278,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Cyl,Sph,Tol); Perform(Cyl,Sph,Tol);
@@ -1393,9 +1344,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Con1,Con2,Tol); Perform(Con1,Con2,Tol);
@@ -1851,9 +1800,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Sph,Con,Tol); Perform(Sph,Con,Tol);
@@ -1965,9 +1912,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Sph1,Sph2,Tol); Perform(Sph1,Sph2,Tol);
@@ -2081,9 +2026,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Pln& Pln,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Pln,Tor,Tol); Perform(Pln,Tor,Tol);
@@ -2195,9 +2138,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cylinder& Cyl,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Cyl,Tor,Tol); Perform(Cyl,Tor,Tol);
@@ -2280,9 +2221,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Cone& Con,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Con,Tor,Tol); Perform(Con,Tor,Tol);
@@ -2420,9 +2359,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Sphere& Sph,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Sph,Tor,Tol); Perform(Sph,Tor,Tol);
@@ -2519,9 +2456,7 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(const gp_Torus& Tor1,
param1bis(0), param1bis(0),
param2bis(0), param2bis(0),
myCommonGen(Standard_False), myCommonGen(Standard_False),
myPChar(0,0,0), myPChar(0,0,0)
myAngularTolerance(0.0),
myUseAngularTolerance(Standard_False)
{ {
InitTolerances(); InitTolerances();
Perform(Tor1,Tor2,Tol); Perform(Tor1,Tor2,Tol);
@@ -2757,7 +2692,6 @@ const gp_Pnt& IntAna_QuadQuadGeo::PChar() const
{ {
return myPChar; return myPChar;
} }
//======================================================================= //=======================================================================
//function : RefineDir //function : RefineDir
//purpose : //purpose :

View File

@@ -61,9 +61,6 @@ public:
//! Empty constructor. //! Empty constructor.
Standard_EXPORT IntAna_QuadQuadGeo(); Standard_EXPORT IntAna_QuadQuadGeo();
//! Constructor with angular tolerance
Standard_EXPORT IntAna_QuadQuadGeo(Standard_Real theAngularTolerance, Standard_Boolean theUseAngularTolerance);
//! Creates the intersection between two planes. //! Creates the intersection between two planes.
//! TolAng is the angular tolerance used to determine //! TolAng is the angular tolerance used to determine
//! if the planes are parallel. //! if the planes are parallel.
@@ -264,8 +261,7 @@ protected:
Standard_Real myEPSILON_AXES_PARA; Standard_Real myEPSILON_AXES_PARA;
Standard_Boolean myCommonGen; Standard_Boolean myCommonGen;
gp_Pnt myPChar; gp_Pnt myPChar;
Standard_Real myAngularTolerance;
Standard_Boolean myUseAngularTolerance;
private: private:

View File

@@ -108,8 +108,8 @@ public:
//! An exception is raised if Index<=0 or Index>NbLine. //! An exception is raised if Index<=0 or Index>NbLine.
const Handle(IntPatch_Line)& Line (const Standard_Integer Index) const; const Handle(IntPatch_Line)& Line (const Standard_Integer Index) const;
//! Sets the angular tolerance
void SetAngularTolerance (Standard_Real theAngularTolerance);
protected: protected:
@@ -128,8 +128,7 @@ private:
IntPatch_SequenceOfPoint spnt; IntPatch_SequenceOfPoint spnt;
IntPatch_SequenceOfLine slin; IntPatch_SequenceOfLine slin;
IntPatch_TheSOnBounds solrst; IntPatch_TheSOnBounds solrst;
Standard_Real myAngularTolerance;
Standard_Boolean myUseAngularTolerance;
}; };

View File

@@ -71,9 +71,3 @@ inline const Handle(IntPatch_Line)& IntPatch_ImpImpIntersection::Line (const Sta
if (!IsDone ()) { throw StdFail_NotDone(); } if (!IsDone ()) { throw StdFail_NotDone(); }
return slin(Index); return slin(Index);
} }
inline void IntPatch_ImpImpIntersection::SetAngularTolerance (Standard_Real theAngularTolerance)
{
myAngularTolerance = theAngularTolerance;
myUseAngularTolerance = Standard_True;
}

View File

@@ -125,9 +125,7 @@ static Standard_Boolean IntCoCo(const IntSurf_Quadric&,
Standard_Boolean&, Standard_Boolean&,
Standard_Boolean&, Standard_Boolean&,
IntPatch_SequenceOfLine&, IntPatch_SequenceOfLine&,
IntPatch_SequenceOfPoint&, IntPatch_SequenceOfPoint&);
Standard_Boolean theUseAngularTolerance = Standard_False,
Standard_Real theAngularTolerance = 0.0);
//torus //torus
static Standard_Boolean IntPTo(const IntSurf_Quadric&, static Standard_Boolean IntPTo(const IntSurf_Quadric&,

View File

@@ -29,8 +29,7 @@ IntPatch_ImpImpIntersection::IntPatch_ImpImpIntersection ():
myDone(IntStatus_Fail), myDone(IntStatus_Fail),
empt(Standard_True), empt(Standard_True),
tgte(Standard_False), tgte(Standard_False),
oppo(Standard_False), oppo(Standard_False)
myUseAngularTolerance(Standard_False)
{ {
} }
//======================================================================= //=======================================================================
@@ -232,7 +231,7 @@ void IntPatch_ImpImpIntersection::Perform(const Handle(Adaptor3d_Surface)& S1,
} }
// //
case 33: { // Cone/Cone case 33: { // Cone/Cone
if (!IntCoCo(quad1, quad2, TolTang, empt, SameSurf, multpoint, slin, spnt, myUseAngularTolerance, myAngularTolerance)) { if (!IntCoCo(quad1, quad2, TolTang, empt, SameSurf, multpoint, slin, spnt)) {
return; return;
} }
bEmpty = empt; bEmpty = empt;

View File

@@ -27,9 +27,7 @@ Standard_Boolean IntCoCo(const IntSurf_Quadric& Quad1,
Standard_Boolean& Same, Standard_Boolean& Same,
Standard_Boolean& Multpoint, Standard_Boolean& Multpoint,
IntPatch_SequenceOfLine& slin, IntPatch_SequenceOfLine& slin,
IntPatch_SequenceOfPoint& spnt, IntPatch_SequenceOfPoint& spnt)
Standard_Boolean theUseAngularTolerance,
Standard_Real theAngularTolerance)
{ {
Standard_Integer i, NbSol; Standard_Integer i, NbSol;
@@ -40,8 +38,7 @@ Standard_Boolean IntCoCo(const IntSurf_Quadric& Quad1,
gp_Cone Co1(Quad1.Cone()); gp_Cone Co1(Quad1.Cone());
gp_Cone Co2(Quad2.Cone()); gp_Cone Co2(Quad2.Cone());
// //
IntAna_QuadQuadGeo inter(theAngularTolerance, theUseAngularTolerance); IntAna_QuadQuadGeo inter(Co1,Co2,Tol);
inter.Perform(Co1,Co2,Tol);
if (!inter.IsDone()) { if (!inter.IsDone()) {
return Standard_False; return Standard_False;
} }

View File

@@ -53,8 +53,7 @@ IntPatch_Intersection::IntPatch_Intersection ()
myU1Start(0.0), myU1Start(0.0),
myV1Start(0.0), myV1Start(0.0),
myU2Start(0.0), myU2Start(0.0),
myV2Start(0.0), myV2Start(0.0)
myUseAngularTolerance(Standard_False)
{ {
} }
@@ -77,8 +76,7 @@ IntPatch_Intersection::IntPatch_Intersection(const Handle(Adaptor3d_Surface)& S
myU1Start(0.0), myU1Start(0.0),
myV1Start(0.0), myV1Start(0.0),
myU2Start(0.0), myU2Start(0.0),
myV2Start(0.0), myV2Start(0.0)
myUseAngularTolerance(Standard_False)
{ {
if(myTolArc<1e-8) myTolArc=1e-8; if(myTolArc<1e-8) myTolArc=1e-8;
if(myTolTang<1e-8) myTolTang=1e-8; if(myTolTang<1e-8) myTolTang=1e-8;
@@ -104,8 +102,7 @@ IntPatch_Intersection::IntPatch_Intersection(const Handle(Adaptor3d_Surface)& S
myU1Start(0.0), myU1Start(0.0),
myV1Start(0.0), myV1Start(0.0),
myU2Start(0.0), myU2Start(0.0),
myV2Start(0.0), myV2Start(0.0)
myUseAngularTolerance(Standard_False)
{ {
Perform(S1,D1,TolArc,TolTang); Perform(S1,D1,TolArc,TolTang);
} }
@@ -132,12 +129,6 @@ void IntPatch_Intersection::SetTolerances(const Standard_Real TolArc,
if(myUVMaxStep>0.5) myUVMaxStep=0.5; if(myUVMaxStep>0.5) myUVMaxStep=0.5;
} }
void IntPatch_Intersection::SetAngularTolerance (Standard_Real theAngularTolerance)
{
myAngularTolerance = theAngularTolerance;
myUseAngularTolerance = Standard_True;
}
//====================================================================== //======================================================================
// function: Perform // function: Perform
//====================================================================== //======================================================================
@@ -1363,13 +1354,8 @@ void IntPatch_Intersection::GeomGeomPerfom(const Handle(Adaptor3d_Surface)& theS
const GeomAbs_SurfaceType theTyps2, const GeomAbs_SurfaceType theTyps2,
const Standard_Boolean theIsReqToKeepRLine) const Standard_Boolean theIsReqToKeepRLine)
{ {
IntPatch_ImpImpIntersection interii; IntPatch_ImpImpIntersection interii(theS1,theD1,theS2,theD2,
myTolArc,myTolTang, theIsReqToKeepRLine);
if (myUseAngularTolerance)
{
interii.SetAngularTolerance(myAngularTolerance);
}
interii.Perform(theS1, theD1, theS2, theD2, myTolArc, myTolTang, theIsReqToKeepRLine);
if (!interii.IsDone()) if (!interii.IsDone())
{ {

View File

@@ -62,8 +62,6 @@ public:
//! points in their respective parametric spaces. //! points in their respective parametric spaces.
Standard_EXPORT void SetTolerances (const Standard_Real TolArc, const Standard_Real TolTang, const Standard_Real UVMaxStep, const Standard_Real Fleche); Standard_EXPORT void SetTolerances (const Standard_Real TolArc, const Standard_Real TolTang, const Standard_Real UVMaxStep, const Standard_Real Fleche);
Standard_EXPORT void SetAngularTolerance (Standard_Real theAngularTolerance);
//! Flag theIsReqToKeepRLine has been entered only for //! Flag theIsReqToKeepRLine has been entered only for
//! compatibility with TopOpeBRep package. It shall be deleted //! compatibility with TopOpeBRep package. It shall be deleted
//! after deleting TopOpeBRep. //! after deleting TopOpeBRep.
@@ -199,8 +197,7 @@ private:
Standard_Real myV1Start; Standard_Real myV1Start;
Standard_Real myU2Start; Standard_Real myU2Start;
Standard_Real myV2Start; Standard_Real myV2Start;
Standard_Real myAngularTolerance;
Standard_Boolean myUseAngularTolerance;
}; };

View File

@@ -0,0 +1,25 @@
puts "========"
puts "OCC32934"
puts "========"
puts ""
###############################################################################################
# BRepExtrema_DistShapeShape BRepExtrema_DistShapeShape returns two solutions instead of one.
###############################################################################################
pload ALL
restore [locate_data_file bug32934.brep] edges
explode edges E
distmini di edges_1 edges_2
if { ([isdraw di2]) } {
puts "Error : result of distmini is wrong"
} else {
checknbshapes di -vertex 1 -edge 0
}
distmini dii edges_2 edges_1
if { ([isdraw dii2]) } {
puts "Error : result of distmini is wrong"
} else {
checknbshapes dii -vertex 1 -edge 0
}