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 | Date | |
---|---|---|---|
|
7a0a64d727 |
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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);
|
|
||||||
}
|
|
||||||
|
@@ -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 :
|
||||||
|
@@ -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:
|
||||||
|
|
||||||
|
@@ -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;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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;
|
|
||||||
}
|
|
||||||
|
@@ -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&,
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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())
|
||||||
{
|
{
|
||||||
|
@@ -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;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
25
tests/bugs/modalg_7/bug32934
Normal file
25
tests/bugs/modalg_7/bug32934
Normal 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
|
||||||
|
}
|
Reference in New Issue
Block a user