1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-05-16 10:54:53 +03:00

0023060: Exception is raised during intersection of two edges.

This commit is contained in:
pkv 2012-04-03 08:09:49 +04:00
parent 46def2b567
commit a28f034bfa

View File

@ -162,7 +162,8 @@ BOPTools_PaveFiller::BOPTools_PaveFiller()
// function: SectionAttribute
// purpose:
//=======================================================================
const BOPTools_SSIntersectionAttribute& BOPTools_PaveFiller::SectionAttribute() const
const BOPTools_SSIntersectionAttribute&
BOPTools_PaveFiller::SectionAttribute() const
{
return mySectionAttribute;
}
@ -182,16 +183,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
{
return myContext;
}
/*
//=======================================================================
// function: ChangeContext
// purpose:
//=======================================================================
IntTools_Context& BOPTools_PaveFiller::ChangeContext()
{
return myContext;
}
*/
//=======================================================================
// function: Perform
// purpose:
@ -270,7 +261,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
// function: PartialPerform
// purpose:
//=======================================================================
void BOPTools_PaveFiller::PartialPerform(const TColStd_SetOfInteger& anObjSubSet,
void BOPTools_PaveFiller::PartialPerform
(const TColStd_SetOfInteger& anObjSubSet,
const TColStd_SetOfInteger& aToolSubSet)
{
try {
@ -579,9 +571,10 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
//
Standard_Real aTolE1, aTolE2, aDeflection=0.01;
Standard_Integer aDiscretize=30;
const TopoDS_Edge& aE1=TopoDS::Edge(myDS->GetShape(nE1));
const TopoDS_Edge& aE2=TopoDS::Edge(myDS->GetShape(nE2));
TopoDS_Edge aE1, aE2;
//
aE1=TopoDS::Edge(myDS->GetShape(nE1));
aE2=TopoDS::Edge(myDS->GetShape(nE2));
//
if (BRep_Tool::Degenerated(aE1)){
continue;
@ -840,8 +833,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
anIndexIn=aEEs.Append(anInterf);
myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
//
//modified by NIZNHY-PKV Fri May 26 15:48:21 2006f
//BOPTools_CommonBlock aCB(aPB1, aPB2);
BOPTools_CommonBlock aCB;
if (aTolE1>=aTolE2) {
aCB.SetPaveBlock1(aPB1);
@ -851,7 +842,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
aCB.SetPaveBlock1(aPB2);
aCB.SetPaveBlock2(aPB1);
}
//modified by NIZNHY-PKV Fri May 26 15:48:24 2006t
BOPTools_ListOfCommonBlock& aLCB1=myCommonBlockPool(myDS->RefEdge(aWhat));
aLCB1.Append(aCB);
BOPTools_ListOfCommonBlock& aLCB2=myCommonBlockPool(myDS->RefEdge(aWith));
@ -1287,16 +1277,17 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
}
Standard_Real aCoeff=1.05, tV, tNV;
Standard_Real aCoeff=1.05, tV, tNV, t2, t1;
tV=aPave.Param();
if (aSide==0) { // Left
if (aCPRange.Last() > aSR.First()) {
tNV=aCPRange.Last();
tNV=tV+aCoeff*(tNV-tV);
aNewRange.SetFirst(tNV);
aNewRange.SetLast (aSR.Last());
if(aNewRange.First() > aNewRange.Last()) {
t2=aSR.Last();
aNewRange.SetLast (t2);
if(tNV < t2) {
//if(aNewRange.First() > aNewRange.Last()) {
aShrunkRange.SetShrunkRange(aNewRange);
}
}
@ -1305,10 +1296,11 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
if (aCPRange.First() < aSR.Last()) {
tNV=aCPRange.First();
tNV=tV-aCoeff*(tV-tNV);
aNewRange.SetFirst(aSR.First());
t1=aSR.First();
aNewRange.SetFirst(t1);
aNewRange.SetLast (tNV);
if(aNewRange.First() < aNewRange.Last()) {
if(tNV > t1) {
//if(aNewRange.First() < aNewRange.Last()) {
aShrunkRange.SetShrunkRange(aNewRange);
}
}
@ -1378,7 +1370,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
// these vertices formally (to obtain Shrunk Ranges for e.g).
// In reality this vertex(-es) does not belong to the INF Edge.
// It just has reference in the DS.
// PKV Tue Apr 23 10:21:45 2002
{
Standard_Real aT1, aT2, aTolE;
Standard_Boolean bInf1, bInf2;
@ -1536,7 +1527,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
// function: FindSDVertex
// purpose:
//=======================================================================
Standard_Integer BOPTools_PaveFiller::FindSDVertex(const Standard_Integer nV)const
Standard_Integer BOPTools_PaveFiller::FindSDVertex
(const Standard_Integer nV)const
{
Standard_Integer i, aNb, anIndex1, anIndex2, aNewShape=0;
@ -1559,7 +1551,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
// function:IsSuccesstorsComputed
// purpose:
//=======================================================================
Standard_Boolean BOPTools_PaveFiller::IsSuccesstorsComputed(const Standard_Integer aN1,
Standard_Boolean BOPTools_PaveFiller::IsSuccesstorsComputed
(const Standard_Integer aN1,
const Standard_Integer aN2)const
{
Standard_Integer nSuc, n1, n2;