1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

Compare commits

..

2 Commits

Author SHA1 Message Date
nmanchen
570e4767e6 Merge branch 'master' into CR28720 2022-12-02 05:42:52 +03:00
nmanchen
5c3adda3e9 CR28720: Modeling Algorithms - HLRBrep_PolyAlgo crash with specific shape
1 link update for each new segment
2022-11-17 07:06:13 +03:00
12 changed files with 484 additions and 582 deletions

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

@@ -20,7 +20,7 @@
#include <Standard_Stream.hxx> #include <Standard_Stream.hxx>
#include <Standard_Type.hxx> #include <Standard_Type.hxx>
IMPLEMENT_STANDARD_RTTIEXT(HLRAlgo_PolyInternalData,Standard_Transient) IMPLEMENT_STANDARD_RTTIEXT(HLRAlgo_PolyInternalData, Standard_Transient)
#ifdef OCCT_DEBUG #ifdef OCCT_DEBUG
static Standard_Integer HLRAlgo_PolyInternalData_TRACE = Standard_False; static Standard_Integer HLRAlgo_PolyInternalData_TRACE = Standard_False;
@@ -44,9 +44,9 @@ HLRAlgo_PolyInternalData::HLRAlgo_PolyInternalData
{ {
Standard_Integer i; Standard_Integer i;
myMxPISeg = 2 + (3 * nbTri + nbNod) / 2; myMxPISeg = 2 + (3 * nbTri + nbNod) / 2;
myTData = new HLRAlgo_HArray1OfTData(0,myMxTData); myTData = new HLRAlgo_HArray1OfTData(0, myMxTData);
myPISeg = new HLRAlgo_HArray1OfPISeg(0,myMxPISeg); myPISeg = new HLRAlgo_HArray1OfPISeg(0, myMxPISeg);
myPINod = new HLRAlgo_HArray1OfPINod(0,myMxPINod); myPINod = new HLRAlgo_HArray1OfPINod(0, myMxPINod);
HLRAlgo_Array1OfPINod& PINod = myPINod->ChangeArray1(); HLRAlgo_Array1OfPINod& PINod = myPINod->ChangeArray1();
Handle(HLRAlgo_PolyInternalNode)* NN = &(PINod.ChangeValue(1)); Handle(HLRAlgo_PolyInternalNode)* NN = &(PINod.ChangeValue(1));
@@ -61,28 +61,32 @@ HLRAlgo_PolyInternalData::HLRAlgo_PolyInternalData
//function : UpdateLinks //function : UpdateLinks
//purpose : //purpose :
//======================================================================= //=======================================================================
void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData, void HLRAlgo_PolyInternalData::UpdateLinks(HLRAlgo_Array1OfTData& theTData,
HLRAlgo_Array1OfPISeg& thePISeg, HLRAlgo_Array1OfPISeg& thePISeg,
HLRAlgo_Array1OfPINod& thePINod) HLRAlgo_Array1OfPINod& thePINod)
{ {
Standard_Integer n1,n2; Standard_Integer n1, n2;
Standard_Integer find,iiii,icsv = 0; Standard_Integer find, iiii, icsv = 0;
HLRAlgo_PolyInternalSegment* aSegIndices = NULL; HLRAlgo_PolyInternalSegment* aSegIndices = NULL;
Standard_Boolean newSeg = Standard_False; Standard_Boolean newSeg = Standard_False;
for (Standard_Integer i = 1; i <= myNbTData; i++) for (Standard_Integer i = 1; i <= myNbTData; i++)
{ {
HLRAlgo_TriangleData* TD = &theTData.ChangeValue (i); HLRAlgo_TriangleData* TD = &theTData.ChangeValue(i);
HLRAlgo_PolyInternalNode::NodeIndices& A1 = thePINod.ChangeValue(TD->Node1)->Indices(); HLRAlgo_PolyInternalNode::NodeIndices& A1 = thePINod.ChangeValue(TD->Node1)->Indices();
HLRAlgo_PolyInternalNode::NodeIndices& A2 = thePINod.ChangeValue(TD->Node2)->Indices(); HLRAlgo_PolyInternalNode::NodeIndices& A2 = thePINod.ChangeValue(TD->Node2)->Indices();
HLRAlgo_PolyInternalNode::NodeIndices& A3 = thePINod.ChangeValue(TD->Node3)->Indices(); HLRAlgo_PolyInternalNode::NodeIndices& A3 = thePINod.ChangeValue(TD->Node3)->Indices();
bool notFound = true;
if (notFound)
{ {
n1 = TD->Node1; n1 = TD->Node1;
n2 = TD->Node2; n2 = TD->Node2;
newSeg = Standard_False; newSeg = Standard_False;
if (A1.NdSg == 0 && A2.NdSg == 0) { if (A1.NdSg == 0 && A2.NdSg == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A1.NdSg = myNbPISeg; A1.NdSg = myNbPISeg;
@@ -94,7 +98,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
find = 0; find = 0;
while (iiii != 0 && find == 0) { while (iiii != 0 && find == 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n1) { if (aSegIndices->LstSg1 == n1) {
if (aSegIndices->LstSg2 == n2) find = iiii; if (aSegIndices->LstSg2 == n2) find = iiii;
else iiii = aSegIndices->NxtSg1; else iiii = aSegIndices->NxtSg1;
@@ -107,6 +111,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (find == 0) { if (find == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg; if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg;
@@ -115,6 +120,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
else aSegIndices->Conex2 = i; else aSegIndices->Conex2 = i;
} }
else { else {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A1.NdSg = myNbPISeg; A1.NdSg = myNbPISeg;
@@ -124,7 +130,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
if (iiii != 0) { if (iiii != 0) {
while (iiii != 0) { while (iiii != 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; } if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; }
else { icsv = 2; iiii = aSegIndices->NxtSg2; } else { icsv = 2; iiii = aSegIndices->NxtSg2; }
} }
@@ -135,7 +141,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (newSeg) { if (newSeg) {
aSegIndices = &thePISeg.ChangeValue (myNbPISeg); aSegIndices = &thePISeg.ChangeValue(myNbPISeg);
aSegIndices->LstSg1 = n1; aSegIndices->LstSg1 = n1;
aSegIndices->LstSg2 = n2; aSegIndices->LstSg2 = n2;
aSegIndices->Conex1 = i; aSegIndices->Conex1 = i;
@@ -145,11 +151,13 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (notFound)
{ {
n1 = TD->Node2; n1 = TD->Node2;
n2 = TD->Node3; n2 = TD->Node3;
newSeg = Standard_False; newSeg = Standard_False;
if (A2.NdSg == 0 && A3.NdSg == 0) { if (A2.NdSg == 0 && A3.NdSg == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A2.NdSg = myNbPISeg; A2.NdSg = myNbPISeg;
@@ -161,7 +169,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
find = 0; find = 0;
while (iiii != 0 && find == 0) { while (iiii != 0 && find == 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n1) { if (aSegIndices->LstSg1 == n1) {
if (aSegIndices->LstSg2 == n2) find = iiii; if (aSegIndices->LstSg2 == n2) find = iiii;
else iiii = aSegIndices->NxtSg1; else iiii = aSegIndices->NxtSg1;
@@ -174,6 +182,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (find == 0) { if (find == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg; if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg;
@@ -182,6 +191,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
else aSegIndices->Conex2 = i; else aSegIndices->Conex2 = i;
} }
else { else {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A2.NdSg = myNbPISeg; A2.NdSg = myNbPISeg;
@@ -191,7 +201,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
if (iiii != 0) { if (iiii != 0) {
while (iiii != 0) { while (iiii != 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; } if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; }
else { icsv = 2; iiii = aSegIndices->NxtSg2; } else { icsv = 2; iiii = aSegIndices->NxtSg2; }
} }
@@ -202,7 +212,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (newSeg) { if (newSeg) {
aSegIndices = &thePISeg.ChangeValue (myNbPISeg); aSegIndices = &thePISeg.ChangeValue(myNbPISeg);
aSegIndices->LstSg1 = n1; aSegIndices->LstSg1 = n1;
aSegIndices->LstSg2 = n2; aSegIndices->LstSg2 = n2;
aSegIndices->Conex1 = i; aSegIndices->Conex1 = i;
@@ -212,11 +222,13 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (notFound)
{ {
n1 = TD->Node3; n1 = TD->Node3;
n2 = TD->Node1; n2 = TD->Node1;
newSeg = Standard_False; newSeg = Standard_False;
if (A3.NdSg == 0 && A1.NdSg == 0) { if (A3.NdSg == 0 && A1.NdSg == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A3.NdSg = myNbPISeg; A3.NdSg = myNbPISeg;
@@ -228,7 +240,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
find = 0; find = 0;
while (iiii != 0 && find == 0) { while (iiii != 0 && find == 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n1) { if (aSegIndices->LstSg1 == n1) {
if (aSegIndices->LstSg2 == n2) find = iiii; if (aSegIndices->LstSg2 == n2) find = iiii;
else iiii = aSegIndices->NxtSg1; else iiii = aSegIndices->NxtSg1;
@@ -241,6 +253,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (find == 0) { if (find == 0) {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg; if (icsv == 1) aSegIndices->NxtSg1 = myNbPISeg;
@@ -249,6 +262,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
else aSegIndices->Conex2 = i; else aSegIndices->Conex2 = i;
} }
else { else {
notFound = false;
newSeg = Standard_True; newSeg = Standard_True;
myNbPISeg++; myNbPISeg++;
A3.NdSg = myNbPISeg; A3.NdSg = myNbPISeg;
@@ -258,7 +272,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
if (iiii != 0) { if (iiii != 0) {
while (iiii != 0) { while (iiii != 0) {
aSegIndices = &thePISeg.ChangeValue (iiii); aSegIndices = &thePISeg.ChangeValue(iiii);
if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; } if (aSegIndices->LstSg1 == n2) { icsv = 1; iiii = aSegIndices->NxtSg1; }
else { icsv = 2; iiii = aSegIndices->NxtSg2; } else { icsv = 2; iiii = aSegIndices->NxtSg2; }
} }
@@ -269,7 +283,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
} }
} }
if (newSeg) { if (newSeg) {
aSegIndices = &thePISeg.ChangeValue (myNbPISeg); aSegIndices = &thePISeg.ChangeValue(myNbPISeg);
aSegIndices->LstSg1 = n1; aSegIndices->LstSg1 = n1;
aSegIndices->LstSg2 = n2; aSegIndices->LstSg2 = n2;
aSegIndices->Conex1 = i; aSegIndices->Conex1 = i;
@@ -285,7 +299,7 @@ void HLRAlgo_PolyInternalData::UpdateLinks (HLRAlgo_Array1OfTData& theTData,
//function : AddNode //function : AddNode
//purpose : //purpose :
//======================================================================= //=======================================================================
Standard_Integer HLRAlgo_PolyInternalData::AddNode (HLRAlgo_PolyInternalNode::NodeData& theNod1RValues, Standard_Integer HLRAlgo_PolyInternalData::AddNode(HLRAlgo_PolyInternalNode::NodeData& theNod1RValues,
HLRAlgo_PolyInternalNode::NodeData& theNod2RValues, HLRAlgo_PolyInternalNode::NodeData& theNod2RValues,
HLRAlgo_Array1OfPINod*& thePINod1, HLRAlgo_Array1OfPINod*& thePINod1,
HLRAlgo_Array1OfPINod*& thePINod2, HLRAlgo_Array1OfPINod*& thePINod2,
@@ -295,7 +309,7 @@ Standard_Integer HLRAlgo_PolyInternalData::AddNode (HLRAlgo_PolyInternalNode::No
const Standard_Real theZ3) const Standard_Real theZ3)
{ {
Standard_Real coef2 = 1 - theCoef1; Standard_Real coef2 = 1 - theCoef1;
IncPINod (thePINod1, thePINod2); IncPINod(thePINod1, thePINod2);
Standard_Integer ip3 = myNbPINod; Standard_Integer ip3 = myNbPINod;
Handle(HLRAlgo_PolyInternalNode)& pip3 = thePINod1->ChangeValue(ip3); Handle(HLRAlgo_PolyInternalNode)& pip3 = thePINod1->ChangeValue(ip3);
pip3 = new HLRAlgo_PolyInternalNode(); pip3 = new HLRAlgo_PolyInternalNode();
@@ -303,7 +317,7 @@ Standard_Integer HLRAlgo_PolyInternalData::AddNode (HLRAlgo_PolyInternalNode::No
HLRAlgo_PolyInternalNode::NodeIndices& aNodeIndices = pip3->Indices(); HLRAlgo_PolyInternalNode::NodeIndices& aNodeIndices = pip3->Indices();
aNodeIndices.NdSg = 0; aNodeIndices.NdSg = 0;
aNodeIndices.Flag = 0; aNodeIndices.Flag = 0;
Nod3RValues.Point = gp_XYZ (theX3, theY3, theZ3); Nod3RValues.Point = gp_XYZ(theX3, theY3, theZ3);
Nod3RValues.UV = coef2 * theNod1RValues.UV + theCoef1 * theNod2RValues.UV; Nod3RValues.UV = coef2 * theNod1RValues.UV + theCoef1 * theNod2RValues.UV;
Nod3RValues.Scal = theNod1RValues.Scal * coef2 + theNod2RValues.Scal * theCoef1; Nod3RValues.Scal = theNod1RValues.Scal * coef2 + theNod2RValues.Scal * theCoef1;
const gp_XYZ aXYZ = coef2 * theNod1RValues.Normal + theCoef1 * theNod2RValues.Normal; const gp_XYZ aXYZ = coef2 * theNod1RValues.Normal + theCoef1 * theNod2RValues.Normal;
@@ -328,7 +342,7 @@ Standard_Integer HLRAlgo_PolyInternalData::AddNode (HLRAlgo_PolyInternalNode::No
//======================================================================= //=======================================================================
void void
HLRAlgo_PolyInternalData::UpdateLinks (const Standard_Integer ip1, HLRAlgo_PolyInternalData::UpdateLinks(const Standard_Integer ip1,
const Standard_Integer ip2, const Standard_Integer ip2,
const Standard_Integer ip3, const Standard_Integer ip3,
HLRAlgo_Array1OfTData*& TData1, HLRAlgo_Array1OfTData*& TData1,
@@ -336,21 +350,21 @@ HLRAlgo_PolyInternalData::UpdateLinks (const Standard_Integer ip1,
HLRAlgo_Array1OfPISeg*& PISeg1, HLRAlgo_Array1OfPISeg*& PISeg1,
HLRAlgo_Array1OfPISeg*& PISeg2, HLRAlgo_Array1OfPISeg*& PISeg2,
HLRAlgo_Array1OfPINod*& PINod1, HLRAlgo_Array1OfPINod*& PINod1,
HLRAlgo_Array1OfPINod*& ) HLRAlgo_Array1OfPINod*&)
{ {
Standard_Integer find,iiii,iisv,icsv,iip2 =0,cnx1 =0,cnx2 =0; Standard_Integer find, iiii, iisv, icsv, iip2 = 0, cnx1 = 0, cnx2 = 0;
HLRAlgo_PolyInternalSegment* aSegIndices = NULL; HLRAlgo_PolyInternalSegment* aSegIndices = NULL;
HLRAlgo_PolyInternalSegment* aSegIndices2 = NULL; HLRAlgo_PolyInternalSegment* aSegIndices2 = NULL;
find = 0; find = 0;
iisv = 0; iisv = 0;
icsv = 0; icsv = 0;
IncPISeg(PISeg1,PISeg2); IncPISeg(PISeg1, PISeg2);
IncPISeg(PISeg1,PISeg2); IncPISeg(PISeg1, PISeg2);
IncPISeg(PISeg1,PISeg2); IncPISeg(PISeg1, PISeg2);
myNbPISeg--; myNbPISeg--;
myNbPISeg--; myNbPISeg--;
IncTData(TData1,TData2); IncTData(TData1, TData2);
IncTData(TData1,TData2); IncTData(TData1, TData2);
myNbTData--; myNbTData--;
myNbTData--; myNbTData--;
HLRAlgo_PolyInternalNode::NodeIndices* aNodIndices1 = HLRAlgo_PolyInternalNode::NodeIndices* aNodIndices1 =
@@ -420,8 +434,8 @@ HLRAlgo_PolyInternalData::UpdateLinks (const Standard_Integer ip1,
aSegIndices2->Conex2 = cnx2; aSegIndices2->Conex2 = cnx2;
aNodIndices3.NdSg = find; aNodIndices3.NdSg = find;
Standard_Integer iOld,iNew,iTr,skip,ip4,itpk[2]; Standard_Integer iOld, iNew, iTr, skip, ip4, itpk[2];
Standard_Integer n1,n2,n3,nOld[3],nNew[3],New[4]; Standard_Integer n1, n2, n3, nOld[3], nNew[3], New[4];
New[0] = cnx1; New[0] = cnx1;
New[2] = myNbTData + 1; New[2] = myNbTData + 1;
if (cnx2 == 0) { if (cnx2 == 0) {
@@ -518,10 +532,10 @@ HLRAlgo_PolyInternalData::UpdateLinks (const Standard_Integer ip1,
} }
for (iTr = 0; iTr <= 3; iTr++) { for (iTr = 0; iTr <= 3; iTr++) {
iNew = New [iTr]; iNew = New[iTr];
if (iTr < 2) skip = iTr; if (iTr < 2) skip = iTr;
else skip = iTr - 2; else skip = iTr - 2;
iOld = New [skip]; iOld = New[skip];
ip4 = itpk[skip]; ip4 = itpk[skip];
if (iNew != 0) { if (iNew != 0) {
HLRAlgo_TriangleData& aTriangle2 = TData1->ChangeValue(iNew); HLRAlgo_TriangleData& aTriangle2 = TData1->ChangeValue(iNew);
@@ -619,7 +633,7 @@ HLRAlgo_PolyInternalData::UpdateLinks (const Standard_Integer ip1,
//purpose : //purpose :
//======================================================================= //=======================================================================
void HLRAlgo_PolyInternalData::Dump () const void HLRAlgo_PolyInternalData::Dump() const
{ {
Standard_Integer i;//,i1,i2,i3; Standard_Integer i;//,i1,i2,i3;
HLRAlgo_Array1OfTData* TData = &myTData->ChangeArray1(); HLRAlgo_Array1OfTData* TData = &myTData->ChangeArray1();
@@ -632,9 +646,9 @@ void HLRAlgo_PolyInternalData::Dump () const
HLRAlgo_PolyInternalNode::NodeData& Nod1RValues = (*pi)->Data(); HLRAlgo_PolyInternalNode::NodeData& Nod1RValues = (*pi)->Data();
std::cout << "Node " << std::setw(6) << i << " : "; std::cout << "Node " << std::setw(6) << i << " : ";
std::cout << std::setw(6) << aNodIndices1.NdSg; std::cout << std::setw(6) << aNodIndices1.NdSg;
std::cout << std::setw(20)<< Nod1RValues.Point.X(); std::cout << std::setw(20) << Nod1RValues.Point.X();
std::cout << std::setw(20)<< Nod1RValues.Point.Y(); std::cout << std::setw(20) << Nod1RValues.Point.Y();
std::cout << std::setw(20)<< Nod1RValues.Point.Z(); std::cout << std::setw(20) << Nod1RValues.Point.Z();
std::cout << std::endl; std::cout << std::endl;
} }
@@ -673,12 +687,12 @@ void HLRAlgo_PolyInternalData::IncTData(
if (HLRAlgo_PolyInternalData_TRACE) if (HLRAlgo_PolyInternalData_TRACE)
std::cout << "HLRAlgo_PolyInternalData::IncTData : " << myMxTData << std::endl; std::cout << "HLRAlgo_PolyInternalData::IncTData : " << myMxTData << std::endl;
#endif #endif
Standard_Integer i,j,k; Standard_Integer i, j, k;
j = myMxTData; j = myMxTData;
k = 2 * j; k = 2 * j;
Handle(HLRAlgo_HArray1OfTData) NwTData = Handle(HLRAlgo_HArray1OfTData) NwTData =
new HLRAlgo_HArray1OfTData(0,k); new HLRAlgo_HArray1OfTData(0, k);
HLRAlgo_Array1OfTData& oTData = myTData->ChangeArray1(); HLRAlgo_Array1OfTData& oTData = myTData->ChangeArray1();
HLRAlgo_Array1OfTData& nTData = NwTData->ChangeArray1(); HLRAlgo_Array1OfTData& nTData = NwTData->ChangeArray1();
@@ -712,11 +726,11 @@ void HLRAlgo_PolyInternalData::IncPISeg(
if (HLRAlgo_PolyInternalData_TRACE) if (HLRAlgo_PolyInternalData_TRACE)
std::cout << "HLRAlgo_PolyInternalData::IncPISeg : " << myMxPISeg << std::endl; std::cout << "HLRAlgo_PolyInternalData::IncPISeg : " << myMxPISeg << std::endl;
#endif #endif
Standard_Integer i,j,k; Standard_Integer i, j, k;
j = myMxPISeg; j = myMxPISeg;
k = 2 * j; k = 2 * j;
Handle(HLRAlgo_HArray1OfPISeg) NwPISeg = Handle(HLRAlgo_HArray1OfPISeg) NwPISeg =
new HLRAlgo_HArray1OfPISeg(0,k); new HLRAlgo_HArray1OfPISeg(0, k);
HLRAlgo_Array1OfPISeg& oPISeg = myPISeg->ChangeArray1(); HLRAlgo_Array1OfPISeg& oPISeg = myPISeg->ChangeArray1();
HLRAlgo_Array1OfPISeg& nPISeg = NwPISeg->ChangeArray1(); HLRAlgo_Array1OfPISeg& nPISeg = NwPISeg->ChangeArray1();
@@ -741,7 +755,7 @@ void HLRAlgo_PolyInternalData::IncPISeg(
//function : IncPINod //function : IncPINod
//purpose : //purpose :
//======================================================================= //=======================================================================
void HLRAlgo_PolyInternalData::IncPINod (HLRAlgo_Array1OfPINod*& PINod1, void HLRAlgo_PolyInternalData::IncPINod(HLRAlgo_Array1OfPINod*& PINod1,
HLRAlgo_Array1OfPINod*& PINod2) HLRAlgo_Array1OfPINod*& PINod2)
{ {
if (myNbPINod >= myMxPINod) if (myNbPINod >= myMxPINod)
@@ -750,10 +764,10 @@ void HLRAlgo_PolyInternalData::IncPINod (HLRAlgo_Array1OfPINod*& PINod1,
if (HLRAlgo_PolyInternalData_TRACE) if (HLRAlgo_PolyInternalData_TRACE)
std::cout << "HLRAlgo_PolyInternalData::IncPINod : " << myMxPINod << std::endl; std::cout << "HLRAlgo_PolyInternalData::IncPINod : " << myMxPINod << std::endl;
#endif #endif
Standard_Integer i,j,k; Standard_Integer i, j, k;
j = myMxPINod; j = myMxPINod;
k = 2 * j; k = 2 * j;
Handle(HLRAlgo_HArray1OfPINod) NwPINod = new HLRAlgo_HArray1OfPINod(0,k); Handle(HLRAlgo_HArray1OfPINod) NwPINod = new HLRAlgo_HArray1OfPINod(0, k);
HLRAlgo_Array1OfPINod& oPINod = myPINod->ChangeArray1(); HLRAlgo_Array1OfPINod& oPINod = myPINod->ChangeArray1();
HLRAlgo_Array1OfPINod& nPINod = NwPINod->ChangeArray1(); HLRAlgo_Array1OfPINod& nPINod = NwPINod->ChangeArray1();
Handle(HLRAlgo_PolyInternalNode)* ON = &(oPINod.ChangeValue(1)); Handle(HLRAlgo_PolyInternalNode)* ON = &(oPINod.ChangeValue(1));

View File

@@ -254,7 +254,7 @@ 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),
@@ -268,39 +268,10 @@ IntAna_QuadQuadGeo::IntAna_QuadQuadGeo(void)
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 = myAngularTolerance;
}
else
{
myEPSILON_ANGLE_CONE = Precision::Angular(); 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;
}; };