mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-06 18:26:22 +03:00
0023060: Exception is raised during intersection of two edges.
This commit is contained in:
parent
46def2b567
commit
a28f034bfa
@ -162,7 +162,8 @@ BOPTools_PaveFiller::BOPTools_PaveFiller()
|
|||||||
// function: SectionAttribute
|
// function: SectionAttribute
|
||||||
// purpose:
|
// purpose:
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
const BOPTools_SSIntersectionAttribute& BOPTools_PaveFiller::SectionAttribute() const
|
const BOPTools_SSIntersectionAttribute&
|
||||||
|
BOPTools_PaveFiller::SectionAttribute() const
|
||||||
{
|
{
|
||||||
return mySectionAttribute;
|
return mySectionAttribute;
|
||||||
}
|
}
|
||||||
@ -182,16 +183,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
{
|
{
|
||||||
return myContext;
|
return myContext;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
//=======================================================================
|
|
||||||
// function: ChangeContext
|
|
||||||
// purpose:
|
|
||||||
//=======================================================================
|
|
||||||
IntTools_Context& BOPTools_PaveFiller::ChangeContext()
|
|
||||||
{
|
|
||||||
return myContext;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// function: Perform
|
// function: Perform
|
||||||
// purpose:
|
// purpose:
|
||||||
@ -270,7 +261,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
// function: PartialPerform
|
// function: PartialPerform
|
||||||
// purpose:
|
// purpose:
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void BOPTools_PaveFiller::PartialPerform(const TColStd_SetOfInteger& anObjSubSet,
|
void BOPTools_PaveFiller::PartialPerform
|
||||||
|
(const TColStd_SetOfInteger& anObjSubSet,
|
||||||
const TColStd_SetOfInteger& aToolSubSet)
|
const TColStd_SetOfInteger& aToolSubSet)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@ -579,9 +571,10 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
//
|
//
|
||||||
Standard_Real aTolE1, aTolE2, aDeflection=0.01;
|
Standard_Real aTolE1, aTolE2, aDeflection=0.01;
|
||||||
Standard_Integer aDiscretize=30;
|
Standard_Integer aDiscretize=30;
|
||||||
|
TopoDS_Edge aE1, aE2;
|
||||||
const TopoDS_Edge& aE1=TopoDS::Edge(myDS->GetShape(nE1));
|
//
|
||||||
const TopoDS_Edge& aE2=TopoDS::Edge(myDS->GetShape(nE2));
|
aE1=TopoDS::Edge(myDS->GetShape(nE1));
|
||||||
|
aE2=TopoDS::Edge(myDS->GetShape(nE2));
|
||||||
//
|
//
|
||||||
if (BRep_Tool::Degenerated(aE1)){
|
if (BRep_Tool::Degenerated(aE1)){
|
||||||
continue;
|
continue;
|
||||||
@ -840,8 +833,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
anIndexIn=aEEs.Append(anInterf);
|
anIndexIn=aEEs.Append(anInterf);
|
||||||
myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
|
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;
|
BOPTools_CommonBlock aCB;
|
||||||
if (aTolE1>=aTolE2) {
|
if (aTolE1>=aTolE2) {
|
||||||
aCB.SetPaveBlock1(aPB1);
|
aCB.SetPaveBlock1(aPB1);
|
||||||
@ -851,7 +842,6 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
aCB.SetPaveBlock1(aPB2);
|
aCB.SetPaveBlock1(aPB2);
|
||||||
aCB.SetPaveBlock2(aPB1);
|
aCB.SetPaveBlock2(aPB1);
|
||||||
}
|
}
|
||||||
//modified by NIZNHY-PKV Fri May 26 15:48:24 2006t
|
|
||||||
BOPTools_ListOfCommonBlock& aLCB1=myCommonBlockPool(myDS->RefEdge(aWhat));
|
BOPTools_ListOfCommonBlock& aLCB1=myCommonBlockPool(myDS->RefEdge(aWhat));
|
||||||
aLCB1.Append(aCB);
|
aLCB1.Append(aCB);
|
||||||
BOPTools_ListOfCommonBlock& aLCB2=myCommonBlockPool(myDS->RefEdge(aWith));
|
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();
|
tV=aPave.Param();
|
||||||
if (aSide==0) { // Left
|
if (aSide==0) { // Left
|
||||||
if (aCPRange.Last() > aSR.First()) {
|
if (aCPRange.Last() > aSR.First()) {
|
||||||
tNV=aCPRange.Last();
|
tNV=aCPRange.Last();
|
||||||
tNV=tV+aCoeff*(tNV-tV);
|
tNV=tV+aCoeff*(tNV-tV);
|
||||||
aNewRange.SetFirst(tNV);
|
aNewRange.SetFirst(tNV);
|
||||||
aNewRange.SetLast (aSR.Last());
|
t2=aSR.Last();
|
||||||
|
aNewRange.SetLast (t2);
|
||||||
if(aNewRange.First() > aNewRange.Last()) {
|
if(tNV < t2) {
|
||||||
|
//if(aNewRange.First() > aNewRange.Last()) {
|
||||||
aShrunkRange.SetShrunkRange(aNewRange);
|
aShrunkRange.SetShrunkRange(aNewRange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1305,10 +1296,11 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
if (aCPRange.First() < aSR.Last()) {
|
if (aCPRange.First() < aSR.Last()) {
|
||||||
tNV=aCPRange.First();
|
tNV=aCPRange.First();
|
||||||
tNV=tV-aCoeff*(tV-tNV);
|
tNV=tV-aCoeff*(tV-tNV);
|
||||||
aNewRange.SetFirst(aSR.First());
|
t1=aSR.First();
|
||||||
|
aNewRange.SetFirst(t1);
|
||||||
aNewRange.SetLast (tNV);
|
aNewRange.SetLast (tNV);
|
||||||
|
if(tNV > t1) {
|
||||||
if(aNewRange.First() < aNewRange.Last()) {
|
//if(aNewRange.First() < aNewRange.Last()) {
|
||||||
aShrunkRange.SetShrunkRange(aNewRange);
|
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).
|
// these vertices formally (to obtain Shrunk Ranges for e.g).
|
||||||
// In reality this vertex(-es) does not belong to the INF Edge.
|
// In reality this vertex(-es) does not belong to the INF Edge.
|
||||||
// It just has reference in the DS.
|
// It just has reference in the DS.
|
||||||
// PKV Tue Apr 23 10:21:45 2002
|
|
||||||
{
|
{
|
||||||
Standard_Real aT1, aT2, aTolE;
|
Standard_Real aT1, aT2, aTolE;
|
||||||
Standard_Boolean bInf1, bInf2;
|
Standard_Boolean bInf1, bInf2;
|
||||||
@ -1536,7 +1527,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
// function: FindSDVertex
|
// function: FindSDVertex
|
||||||
// purpose:
|
// 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;
|
Standard_Integer i, aNb, anIndex1, anIndex2, aNewShape=0;
|
||||||
|
|
||||||
@ -1559,7 +1551,8 @@ const Handle(IntTools_Context)& BOPTools_PaveFiller::Context() const
|
|||||||
// function:IsSuccesstorsComputed
|
// function:IsSuccesstorsComputed
|
||||||
// purpose:
|
// purpose:
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Boolean BOPTools_PaveFiller::IsSuccesstorsComputed(const Standard_Integer aN1,
|
Standard_Boolean BOPTools_PaveFiller::IsSuccesstorsComputed
|
||||||
|
(const Standard_Integer aN1,
|
||||||
const Standard_Integer aN2)const
|
const Standard_Integer aN2)const
|
||||||
{
|
{
|
||||||
Standard_Integer nSuc, n1, n2;
|
Standard_Integer nSuc, n1, n2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user