mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +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:
parent
d347054cd0
commit
cfdd99315c
@ -338,54 +338,60 @@ void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
|
|||||||
BOPDS_VectorOfInterfFZ& aFZs=theDS->InterfFZ();
|
BOPDS_VectorOfInterfFZ& aFZs=theDS->InterfFZ();
|
||||||
BOPDS_VectorOfInterfZZ& aZZs=theDS->InterfZZ();
|
BOPDS_VectorOfInterfZZ& aZZs=theDS->InterfZZ();
|
||||||
//
|
//
|
||||||
const Standard_Integer aNbTypeInt=10;
|
Standard_Integer aNbTypeInt, aTypeInt, i, nI1, nI2;
|
||||||
Standard_Integer aTypeInt, i, nI1, nI2;
|
Standard_Integer aNb[] = {
|
||||||
Standard_Integer aNb[aNbTypeInt] = {
|
|
||||||
aVVs.Extent(), aVEs.Extent(), aEEs.Extent(),
|
aVVs.Extent(), aVEs.Extent(), aEEs.Extent(),
|
||||||
aVFs.Extent(), aEFs.Extent(), aFFs.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;
|
BOPDS_Interf* aInt=NULL;
|
||||||
//
|
//
|
||||||
|
aNbTypeInt=BOPDS_DS::NbInterfTypes();
|
||||||
for (aTypeInt = 0; aTypeInt < aNbTypeInt; ++aTypeInt) {
|
for (aTypeInt = 0; aTypeInt < aNbTypeInt; ++aTypeInt) {
|
||||||
for (i = 0; i < aNb[aTypeInt]; ++i) {
|
for (i = 0; i < aNb[aTypeInt]; ++i) {
|
||||||
switch(aTypeInt) {
|
switch(aTypeInt) {
|
||||||
case 0:
|
case 0:
|
||||||
aInt=(BOPDS_Interf*)(&aVVs(i));
|
aInt=(BOPDS_Interf*)(&aVVs(i));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
aInt=(BOPDS_Interf*)(&aVEs(i));
|
aInt=(BOPDS_Interf*)(&aVEs(i));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
aInt=(BOPDS_Interf*)(&aEEs(i));
|
aInt=(BOPDS_Interf*)(&aEEs(i));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
aInt=(BOPDS_Interf*)(&aVFs(i));
|
aInt=(BOPDS_Interf*)(&aVFs(i));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
aInt=(BOPDS_Interf*)(&aEFs(i));
|
aInt=(BOPDS_Interf*)(&aEFs(i));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
aInt=(BOPDS_Interf*)(&aFFs(i));
|
aInt=(BOPDS_Interf*)(&aFFs(i));
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
aInt=(BOPDS_Interf*)(&aVZs(i));
|
aInt=(BOPDS_Interf*)(&aVZs(i));
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
aInt=(BOPDS_Interf*)(&aEZs(i));
|
aInt=(BOPDS_Interf*)(&aEZs(i));
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
aInt=(BOPDS_Interf*)(&aFZs(i));
|
aInt=(BOPDS_Interf*)(&aFZs(i));
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
aInt=(BOPDS_Interf*)(&aZZs(i));
|
aInt=(BOPDS_Interf*)(&aZZs(i));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
aInt=NULL;
|
aInt=NULL;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
aInt->Indices(nI1, nI2);
|
aInt->Indices(nI1, nI2);
|
||||||
if (nI1 == nI2) {
|
if (nI1 == nI2) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
if (theDS->IsNewShape(nI1) || theDS->IsNewShape(nI2)) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (aTypeInt == 4) {
|
if (aTypeInt == 4) {
|
||||||
|
@ -125,7 +125,6 @@ void BOPAlgo_CheckerSI::Init()
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void BOPAlgo_CheckerSI::Perform()
|
void BOPAlgo_CheckerSI::Perform()
|
||||||
{
|
{
|
||||||
|
|
||||||
try {
|
try {
|
||||||
OCC_CATCH_SIGNALS
|
OCC_CATCH_SIGNALS
|
||||||
//
|
//
|
||||||
@ -143,42 +142,46 @@ void BOPAlgo_CheckerSI::Perform()
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
BOPAlgo_PaveFiller::Perform();
|
BOPAlgo_PaveFiller::Perform();
|
||||||
if (myErrorStatus) {
|
//
|
||||||
return;
|
if (!myErrorStatus) {
|
||||||
|
PerformVZ();
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
PerformVZ();
|
if (!myErrorStatus) {
|
||||||
if (myErrorStatus) {
|
PerformEZ();
|
||||||
return;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
PerformEZ();
|
|
||||||
if (myErrorStatus) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
PerformFZ();
|
if (!myErrorStatus) {
|
||||||
if (myErrorStatus) {
|
PerformFZ();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
PerformZZ();
|
if (!myErrorStatus) {
|
||||||
if (myErrorStatus) {
|
PerformZZ();
|
||||||
return;
|
}
|
||||||
|
//
|
||||||
|
if (!myErrorStatus) {
|
||||||
|
PostTreat();
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
PostTreat();
|
if (myNonDestructive) {
|
||||||
if (myErrorStatus) {
|
Standard_Integer iErr;
|
||||||
return;
|
//
|
||||||
|
iErr=myErrorStatus;
|
||||||
|
//
|
||||||
|
PostTreatCopy();
|
||||||
|
if (!myErrorStatus) {
|
||||||
|
myErrorStatus=iErr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
}
|
||||||
|
//
|
||||||
|
catch (Standard_Failure) {
|
||||||
if (myNonDestructive) {
|
if (myNonDestructive) {
|
||||||
PostTreatCopy();
|
PostTreatCopy();
|
||||||
}
|
}
|
||||||
}
|
//
|
||||||
catch (Standard_Failure) {
|
|
||||||
myErrorStatus=11;
|
myErrorStatus=11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -202,6 +205,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
for (i=0; i!=aNb; ++i) {
|
for (i=0; i!=aNb; ++i) {
|
||||||
const BOPDS_InterfVV& aVV=aVVs(i);
|
const BOPDS_InterfVV& aVV=aVVs(i);
|
||||||
aVV.Indices(n1, n2);
|
aVV.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
@ -212,6 +218,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
for (i=0; i!=aNb; ++i) {
|
for (i=0; i!=aNb; ++i) {
|
||||||
const BOPDS_InterfVE& aVE=aVEs(i);
|
const BOPDS_InterfVE& aVE=aVEs(i);
|
||||||
aVE.Indices(n1, n2);
|
aVE.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
@ -222,6 +231,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
for (i=0; i!=aNb; ++i) {
|
for (i=0; i!=aNb; ++i) {
|
||||||
const BOPDS_InterfEE& aEE=aEEs(i);
|
const BOPDS_InterfEE& aEE=aEEs(i);
|
||||||
aEE.Indices(n1, n2);
|
aEE.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
@ -232,6 +244,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
for (i=0; i!=aNb; ++i) {
|
for (i=0; i!=aNb; ++i) {
|
||||||
const BOPDS_InterfVF& aVF=aVFs(i);
|
const BOPDS_InterfVF& aVF=aVFs(i);
|
||||||
aVF.Indices(n1, n2);
|
aVF.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
@ -245,6 +260,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
aEF.Indices(n1, n2);
|
aEF.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
@ -304,6 +322,9 @@ void BOPAlgo_CheckerSI::PostTreat()
|
|||||||
//
|
//
|
||||||
const BOPDS_InterfVZ& aVZ=aVZs(i);
|
const BOPDS_InterfVZ& aVZ=aVZs(i);
|
||||||
aVZ.Indices(n1, n2);
|
aVZ.Indices(n1, n2);
|
||||||
|
if (myDS->IsNewShape(n1) || myDS->IsNewShape(n2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
aPK.SetIds(n1, n2);
|
aPK.SetIds(n1, n2);
|
||||||
aMPK.Add(aPK);
|
aMPK.Add(aPK);
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,13 @@
|
|||||||
|
|
||||||
#include <Draw.hxx>
|
#include <Draw.hxx>
|
||||||
#include <DrawTrSurf.hxx>
|
#include <DrawTrSurf.hxx>
|
||||||
|
|
||||||
|
#include <BRepBuilderAPI_Copy.hxx>
|
||||||
|
|
||||||
|
#include <BOPCol_ListOfShape.hxx>
|
||||||
|
|
||||||
|
#include <BOPDS_DS.hxx>
|
||||||
|
|
||||||
#include <BOPAlgo_CheckerSI.hxx>
|
#include <BOPAlgo_CheckerSI.hxx>
|
||||||
#include <BOPDS_VectorOfInterfVV.hxx>
|
#include <BOPDS_VectorOfInterfVV.hxx>
|
||||||
#include <BOPDS_VectorOfInterfVE.hxx>
|
#include <BOPDS_VectorOfInterfVE.hxx>
|
||||||
@ -35,12 +42,13 @@
|
|||||||
#include <BOPDS_VectorOfInterfVF.hxx>
|
#include <BOPDS_VectorOfInterfVF.hxx>
|
||||||
#include <BOPDS_VectorOfInterfEF.hxx>
|
#include <BOPDS_VectorOfInterfEF.hxx>
|
||||||
#include <BOPDS_VectorOfInterfFF.hxx>
|
#include <BOPDS_VectorOfInterfFF.hxx>
|
||||||
#include <BOPDS_DS.hxx>
|
#include <BOPDS_VectorOfInterfVZ.hxx>
|
||||||
|
#include <BOPDS_VectorOfInterfEZ.hxx>
|
||||||
|
#include <BOPDS_VectorOfInterfFZ.hxx>
|
||||||
|
#include <BOPDS_VectorOfInterfZZ.hxx>
|
||||||
|
|
||||||
#include <BOPCol_ListOfShape.hxx>
|
|
||||||
#include <BOPAlgo_ArgumentAnalyzer.hxx>
|
#include <BOPAlgo_ArgumentAnalyzer.hxx>
|
||||||
#include <BOPAlgo_CheckResult.hxx>
|
#include <BOPAlgo_CheckResult.hxx>
|
||||||
#include <BRepBuilderAPI_Copy.hxx>
|
|
||||||
|
|
||||||
static
|
static
|
||||||
Standard_Integer bopcheck (Draw_Interpretor&, Standard_Integer, const char** );
|
Standard_Integer bopcheck (Draw_Interpretor&, Standard_Integer, const char** );
|
||||||
@ -79,46 +87,61 @@ Standard_Integer bopcheck
|
|||||||
(Draw_Interpretor& di, Standard_Integer n, const char** a )
|
(Draw_Interpretor& di, Standard_Integer n, const char** a )
|
||||||
{
|
{
|
||||||
if (n<2) {
|
if (n<2) {
|
||||||
di << " Use >bopcheck Shape [level of check: 0 - 5" << "\n";
|
di << " Use >bopcheck Shape [level of check: 0 - 9" << "\n";
|
||||||
di << " The level of check defines ";
|
di << " The level of check defines ";
|
||||||
di << " which interferferences will be checked:\n";
|
di << " which interferences will be checked:\n";
|
||||||
di << " 0 - only V/V;\n";
|
di << " 0 - V/V only\n";
|
||||||
di << " 1 - V/V and V/E;\n";
|
di << " 1 - V/V, V/E\n";
|
||||||
di << " 2 - V/V, V/E and E/E;\n";
|
di << " 2 - V/V, V/E, E/E\n";
|
||||||
di << " 3 - V/V, V/E, E/E and V/F;\n";
|
di << " 3 - V/V, V/E, E/E , V/F\n";
|
||||||
di << " 4 - V/V, V/E, E/E, V/F and E/F;\n";
|
di << " 4 - V/V, V/E, E/E, V/F , E/F\n";
|
||||||
di << " 5 - all interferences, default value.\n";
|
di << " 5 - V/V, V/E, E/E, V/F, E/F, F/F;\n";
|
||||||
|
di << " 6 - V/V, V/E, E/E, V/F, E/F, F/F, V/Z\n";
|
||||||
|
di << " 7 - V/V, V/E, E/E, V/F, E/F, F/F, E/Z\n";
|
||||||
|
di << " 8 - V/V, V/E, E/E, V/F, E/F, F/F, E/Z, F/Z\n";
|
||||||
|
di << " 9 - V/V, V/E, E/E, V/F, E/F, F/F, E/Z, F/Z, Z/Z\n";
|
||||||
|
di << " Default level is 9\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
//
|
||||||
TopoDS_Shape aS1 = DBRep::Get(a[1]);
|
TopoDS_Shape aS = DBRep::Get(a[1]);
|
||||||
if (aS1.IsNull()) {
|
if (aS.IsNull()) {
|
||||||
di << "null shapes are not allowed here!";
|
di << "null shapes are not allowed here!";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
TopoDS_Shape aS = aS1;
|
|
||||||
//
|
//
|
||||||
Standard_Integer iErr, aTypeInt, i, ind, j;
|
Standard_Integer theLevelOfCheck, aNbInterfTypes;
|
||||||
Standard_Integer nI1, nI2, theLevelOfCheck;
|
//
|
||||||
Standard_Boolean bSelfInt, bFFInt;
|
aNbInterfTypes=BOPDS_DS::NbInterfTypes();
|
||||||
|
//
|
||||||
|
theLevelOfCheck = (n==3) ? Draw::Atoi(a[2]) : aNbInterfTypes-1;
|
||||||
|
if (theLevelOfCheck > aNbInterfTypes-1) {
|
||||||
|
di << "Invalid level";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------
|
||||||
char buf[256];
|
char buf[256];
|
||||||
char type[6][4] = {"V/V", "V/E", "E/E","V/F", "E/F", "F/F"};
|
char type[10][4] = {
|
||||||
|
"V/V", "V/E", "E/E","V/F", "E/F", "F/F", "V/Z", "E/Z", "F/Z", "Z/Z"
|
||||||
theLevelOfCheck = (n==3) ? Draw::Atoi(a[2]) : 5;
|
};
|
||||||
if (theLevelOfCheck >= 0 && theLevelOfCheck < 5) {
|
Standard_Integer iErr, aTypeInt, i, ind, j, nI1, nI2;
|
||||||
|
Standard_Boolean bSelfInt, bFFInt;
|
||||||
|
//
|
||||||
|
if (theLevelOfCheck >= 0 && theLevelOfCheck < aNbInterfTypes) {
|
||||||
di << "Info:\nThe level of check is set to "
|
di << "Info:\nThe level of check is set to "
|
||||||
<< type[theLevelOfCheck] << ", i.e. intersection(s)\n";
|
<< type[theLevelOfCheck] << ", i.e. intersection(s)\n";
|
||||||
for (i=theLevelOfCheck+1; i<=5; ++i) {
|
for (i=theLevelOfCheck+1; i<aNbInterfTypes; ++i) {
|
||||||
di << type[i];
|
di << type[i];
|
||||||
if (i<5) {
|
if (i<aNbInterfTypes-1) {
|
||||||
di << ", ";
|
di << ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
di << " will not be checked.\n\n";
|
di << " will not be checked.\n\n";
|
||||||
}
|
}
|
||||||
|
//
|
||||||
BOPAlgo_CheckerSI aChecker;
|
BOPAlgo_CheckerSI aChecker;
|
||||||
BOPCol_ListOfShape anArgs;
|
BOPCol_ListOfShape anArgs;
|
||||||
|
//
|
||||||
anArgs.Append(aS);
|
anArgs.Append(aS);
|
||||||
aChecker.SetArguments(anArgs);
|
aChecker.SetArguments(anArgs);
|
||||||
aChecker.SetLevelOfCheck(theLevelOfCheck);
|
aChecker.SetLevelOfCheck(theLevelOfCheck);
|
||||||
@ -133,23 +156,59 @@ Standard_Integer bopcheck
|
|||||||
BOPDS_VectorOfInterfVF& aVFs=theDS->InterfVF();
|
BOPDS_VectorOfInterfVF& aVFs=theDS->InterfVF();
|
||||||
BOPDS_VectorOfInterfEF& aEFs=theDS->InterfEF();
|
BOPDS_VectorOfInterfEF& aEFs=theDS->InterfEF();
|
||||||
BOPDS_VectorOfInterfFF& aFFs=theDS->InterfFF();
|
BOPDS_VectorOfInterfFF& aFFs=theDS->InterfFF();
|
||||||
|
BOPDS_VectorOfInterfVZ& aVZs=theDS->InterfVZ();
|
||||||
|
BOPDS_VectorOfInterfEZ& aEZs=theDS->InterfEZ();
|
||||||
|
BOPDS_VectorOfInterfFZ& aFZs=theDS->InterfFZ();
|
||||||
|
BOPDS_VectorOfInterfZZ& aZZs=theDS->InterfZZ();
|
||||||
//
|
//
|
||||||
Standard_Integer aNb[6] ={
|
Standard_Integer aNb[] ={
|
||||||
aVVs.Extent(), aVEs.Extent(), aEEs.Extent(),
|
aVVs.Extent(), aVEs.Extent(), aEEs.Extent(),
|
||||||
aVFs.Extent(), aEFs.Extent(), aFFs.Extent()
|
aVFs.Extent(), aEFs.Extent(), aFFs.Extent(),
|
||||||
|
aVZs.Extent(), aEZs.Extent(), aFZs.Extent(),
|
||||||
|
aZZs.Extent(),
|
||||||
};
|
};
|
||||||
//
|
//
|
||||||
bSelfInt = Standard_False;
|
bSelfInt = Standard_False;
|
||||||
ind = 0;
|
ind = 0;
|
||||||
for (aTypeInt = 0; aTypeInt < 6; ++aTypeInt) {
|
for (aTypeInt = 0; aTypeInt < aNbInterfTypes; ++aTypeInt) {
|
||||||
|
|
||||||
for (i = 0; i < aNb[aTypeInt]; ++i) {
|
for (i = 0; i < aNb[aTypeInt]; ++i) {
|
||||||
BOPDS_Interf* aInt =
|
BOPDS_Interf* aInt=NULL;
|
||||||
(aTypeInt==0) ? (BOPDS_Interf*)(&aVVs(i)) :
|
//
|
||||||
((aTypeInt==1) ? (BOPDS_Interf*)(&aVEs(i)) :
|
switch(aTypeInt) {
|
||||||
((aTypeInt==2) ? (BOPDS_Interf*)(&aEEs(i)) :
|
case 0:
|
||||||
((aTypeInt==3) ? (BOPDS_Interf*)(&aVFs(i)) :
|
aInt=(BOPDS_Interf*)(&aVVs(i));
|
||||||
((aTypeInt==4) ? (BOPDS_Interf*)(&aEFs(i)) :
|
break;
|
||||||
(BOPDS_Interf*)(&aFFs(i))))));
|
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:
|
||||||
|
break;
|
||||||
|
}
|
||||||
//
|
//
|
||||||
nI1 = aInt->Index1();
|
nI1 = aInt->Index1();
|
||||||
nI2 = aInt->Index2();
|
nI2 = aInt->Index2();
|
||||||
@ -157,6 +216,10 @@ Standard_Integer bopcheck
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
if(theDS->IsNewShape(nI1) || theDS->IsNewShape(nI2)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//
|
||||||
if (aTypeInt == 4) {
|
if (aTypeInt == 4) {
|
||||||
BOPDS_InterfEF& aEF=aEFs(i);
|
BOPDS_InterfEF& aEF=aEFs(i);
|
||||||
if (aEF.CommonPart().Type()==TopAbs_SHAPE) {
|
if (aEF.CommonPart().Type()==TopAbs_SHAPE) {
|
||||||
|
32
tests/bugs/modalg_5/bug24764
Executable file
32
tests/bugs/modalg_5/bug24764
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
puts "================"
|
||||||
|
puts "OCC24764"
|
||||||
|
puts "================"
|
||||||
|
puts ""
|
||||||
|
#######################################################################################
|
||||||
|
# Alien subshapes occured in result of 'bopcheck' operation
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
restore [locate_data_file bug24764_qa.brep] a
|
||||||
|
|
||||||
|
bopcheck a 4
|
||||||
|
|
||||||
|
set N 16
|
||||||
|
set qz {}
|
||||||
|
|
||||||
|
lappend qz a
|
||||||
|
for {set i 0} {$i < $N} {incr i} {
|
||||||
|
lappend qz x${i}
|
||||||
|
}
|
||||||
|
eval compound $qz result
|
||||||
|
|
||||||
|
set nb_v_good 24
|
||||||
|
set nb_e_good 24
|
||||||
|
set nb_w_good 2
|
||||||
|
set nb_f_good 1
|
||||||
|
set nb_sh_good 0
|
||||||
|
set nb_sol_good 0
|
||||||
|
set nb_compsol_good 0
|
||||||
|
set nb_compound_good 2
|
||||||
|
set nb_shape_good 53
|
||||||
|
|
||||||
|
set 2dviewer 1
|
Loading…
x
Reference in New Issue
Block a user