mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0024764: Alien subshapes occured in result of 'bopcheck' operation
class BOPAlgo_ArgumentAnalyzer - method: void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences() The new shapes has been excluded from the treatment void BOPAlgo_CheckerSI::PostTreat() The new shapes has been excluded from the treatment Standard_Integer bopcheck (Draw_Interpretor& di, Standard_Integer n, const char** a ) The new shapes has been excluded from the treatment. The interferences of the type */Solid has been included in the treatment. Test case for issue CR24764
This commit is contained in:
@@ -338,54 +338,60 @@ void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
|
||||
BOPDS_VectorOfInterfFZ& aFZs=theDS->InterfFZ();
|
||||
BOPDS_VectorOfInterfZZ& aZZs=theDS->InterfZZ();
|
||||
//
|
||||
const Standard_Integer aNbTypeInt=10;
|
||||
Standard_Integer aTypeInt, i, nI1, nI2;
|
||||
Standard_Integer aNb[aNbTypeInt] = {
|
||||
Standard_Integer aNbTypeInt, aTypeInt, i, nI1, nI2;
|
||||
Standard_Integer aNb[] = {
|
||||
aVVs.Extent(), aVEs.Extent(), aEEs.Extent(),
|
||||
aVFs.Extent(), aEFs.Extent(), aFFs.Extent(),
|
||||
aVZs.Extent(), aEZs.Extent(), aFZs.Extent(), aZZs.Extent()};
|
||||
aVZs.Extent(), aEZs.Extent(), aFZs.Extent(),
|
||||
aZZs.Extent()
|
||||
};
|
||||
//
|
||||
BOPDS_Interf* aInt=NULL;
|
||||
//
|
||||
aNbTypeInt=BOPDS_DS::NbInterfTypes();
|
||||
for (aTypeInt = 0; aTypeInt < aNbTypeInt; ++aTypeInt) {
|
||||
for (i = 0; i < aNb[aTypeInt]; ++i) {
|
||||
switch(aTypeInt) {
|
||||
case 0:
|
||||
aInt=(BOPDS_Interf*)(&aVVs(i));
|
||||
break;
|
||||
case 1:
|
||||
aInt=(BOPDS_Interf*)(&aVEs(i));
|
||||
break;
|
||||
case 2:
|
||||
aInt=(BOPDS_Interf*)(&aEEs(i));
|
||||
break;
|
||||
case 3:
|
||||
aInt=(BOPDS_Interf*)(&aVFs(i));
|
||||
break;
|
||||
case 4:
|
||||
aInt=(BOPDS_Interf*)(&aEFs(i));
|
||||
break;
|
||||
case 5:
|
||||
aInt=(BOPDS_Interf*)(&aFFs(i));
|
||||
break;
|
||||
case 6:
|
||||
aInt=(BOPDS_Interf*)(&aVZs(i));
|
||||
break;
|
||||
case 7:
|
||||
aInt=(BOPDS_Interf*)(&aEZs(i));
|
||||
break;
|
||||
case 8:
|
||||
aInt=(BOPDS_Interf*)(&aFZs(i));
|
||||
break;
|
||||
case 9:
|
||||
aInt=(BOPDS_Interf*)(&aZZs(i));
|
||||
break;
|
||||
default:
|
||||
aInt=NULL;
|
||||
}
|
||||
switch(aTypeInt) {
|
||||
case 0:
|
||||
aInt=(BOPDS_Interf*)(&aVVs(i));
|
||||
break;
|
||||
case 1:
|
||||
aInt=(BOPDS_Interf*)(&aVEs(i));
|
||||
break;
|
||||
case 2:
|
||||
aInt=(BOPDS_Interf*)(&aEEs(i));
|
||||
break;
|
||||
case 3:
|
||||
aInt=(BOPDS_Interf*)(&aVFs(i));
|
||||
break;
|
||||
case 4:
|
||||
aInt=(BOPDS_Interf*)(&aEFs(i));
|
||||
break;
|
||||
case 5:
|
||||
aInt=(BOPDS_Interf*)(&aFFs(i));
|
||||
break;
|
||||
case 6:
|
||||
aInt=(BOPDS_Interf*)(&aVZs(i));
|
||||
break;
|
||||
case 7:
|
||||
aInt=(BOPDS_Interf*)(&aEZs(i));
|
||||
break;
|
||||
case 8:
|
||||
aInt=(BOPDS_Interf*)(&aFZs(i));
|
||||
break;
|
||||
case 9:
|
||||
aInt=(BOPDS_Interf*)(&aZZs(i));
|
||||
break;
|
||||
default:
|
||||
aInt=NULL;
|
||||
}
|
||||
//
|
||||
aInt->Indices(nI1, nI2);
|
||||
aInt->Indices(nI1, nI2);
|
||||
if (nI1 == nI2) {
|
||||
continue;
|
||||
}
|
||||
if (theDS->IsNewShape(nI1) || theDS->IsNewShape(nI2)) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
if (aTypeInt == 4) {
|
||||
|
@@ -125,7 +125,6 @@ void BOPAlgo_CheckerSI::Init()
|
||||
//=======================================================================
|
||||
void BOPAlgo_CheckerSI::Perform()
|
||||
{
|
||||
|
||||
try {
|
||||
OCC_CATCH_SIGNALS
|
||||
//
|
||||
@@ -143,42 +142,46 @@ void BOPAlgo_CheckerSI::Perform()
|
||||
}
|
||||
//
|
||||
BOPAlgo_PaveFiller::Perform();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
//
|
||||
if (!myErrorStatus) {
|
||||
PerformVZ();
|
||||
}
|
||||
//
|
||||
PerformVZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PerformEZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
if (!myErrorStatus) {
|
||||
PerformEZ();
|
||||
}
|
||||
//
|
||||
PerformFZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
if (!myErrorStatus) {
|
||||
PerformFZ();
|
||||
}
|
||||
//
|
||||
PerformZZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
if (!myErrorStatus) {
|
||||
PerformZZ();
|
||||
}
|
||||
//
|
||||
if (!myErrorStatus) {
|
||||
PostTreat();
|
||||
}
|
||||
//
|
||||
PostTreat();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
if (myNonDestructive) {
|
||||
Standard_Integer iErr;
|
||||
//
|
||||
iErr=myErrorStatus;
|
||||
//
|
||||
PostTreatCopy();
|
||||
if (!myErrorStatus) {
|
||||
myErrorStatus=iErr;
|
||||
}
|
||||
}
|
||||
//
|
||||
}
|
||||
//
|
||||
catch (Standard_Failure) {
|
||||
if (myNonDestructive) {
|
||||
PostTreatCopy();
|
||||
}
|
||||
}
|
||||
catch (Standard_Failure) {
|
||||
//
|
||||
myErrorStatus=11;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -202,6 +205,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
const BOPDS_InterfVV& aVV=aVVs(i);
|
||||
aVV.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
@@ -212,6 +218,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
const BOPDS_InterfVE& aVE=aVEs(i);
|
||||
aVE.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
@@ -222,6 +231,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
const BOPDS_InterfEE& aEE=aEEs(i);
|
||||
aEE.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
@@ -232,6 +244,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
const BOPDS_InterfVF& aVF=aVFs(i);
|
||||
aVF.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
@@ -245,6 +260,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
continue;
|
||||
}
|
||||
aEF.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
@@ -304,6 +322,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
//
|
||||
const BOPDS_InterfVZ& aVZ=aVZs(i);
|
||||
aVZ.Indices(n1, n2);
|
||||
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||
continue;
|
||||
}
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
|
Reference in New Issue
Block a user