mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
0024492: The command bopargcheck produces wrong results for cases.
New features: - class BOPDS_InterfVZ has been added. Purpose: The class BOPDS_InterfVZ is is to store the information about the interference of the type vertex/solid. - class BOPDS_InterfEZ has been added. Purpose: The class BOPDS_InterfEZ is is to store the information about the interference of the type edge/solid. - class BOPDS_InterfFZ has been added. Purpose: The class BOPDS_InterfFZ is is to store the information about the interference of the type face/solid. - class BOPDS_InterfFZ has been added. Purpose: The class BOPDS_InterfZZ is is to store the information about the interference of the type solid/solid. - class BOPDS_DS -methods inline BOPDS_VectorOfInterfVZ& BOPDS_DS::InterfVZ() Purpose: Returns the collection of interferences Vertex/Solid inline BOPDS_VectorOfInterfEZ& BOPDS_DS::InterfEZ() Purpose: Returns the collection of interferences Edge/Solid inline BOPDS_VectorOfInterfFZ& BOPDS_DS::InterfFZ() Purpose: Returns the collection of interferences Face/Solid inline BOPDS_VectorOfInterfZZ& BOPDS_DS::InterfZZ() Purpose: Returns the collection of interferences Solid/Solid inline Standard_Integer BOPDS_DS::NbInterfTypes() Purpose: Returns the number of types of the interferences have been added. - class BOPDS_Tools -method inline Standard_Boolean BOPDS_Tools::IsInterfering (const TopAbs_ShapeEnum theT) has been added. Purpose: Returns true if the type <theT> can be participant of an interference - class BOPDS_ShapeInfo -method inline Standard_Boolean BOPDS_ShapeInfo::IsInterfering()const has been added. Purpose: Returns true if the object can be participant of an interference - class BOPDS_ShapeInfo -methods void BOPAlgo_CheckerSI::PerformVZ() Purpose: Computes Vertex/Solid interferences void BOPAlgo_CheckerSI::PerformEZ() Purpose: Computes Edge/Solid interferences void BOPAlgo_CheckerSI::PerformFZ() Purpose: Computes Face/Solid interferences void BOPAlgo_CheckerSI::PerformZZ() Purpose: Computes Solid/Solid interferences have been added Changes: - class BOPDS_DS - method: Standard_Boolean BOPDS_DS::HasInterfShapeSubShapes (const Standard_Integer theI1, const Standard_Integer theI2, const Standard_Boolean theFlag)const has been modified. Purpose: Returns true if the shape with index theI1 is interfered with - at least one sub-shape of the shape with index theI2 (theFlag=true) --all sub-shapes of the shape with index theI2 (theFlag=false) - class BOPDS_Tools - method: inline Standard_Integer BOPDS_Tools::TypeToInteger (const TopAbs_ShapeEnum aType1, const TopAbs_ShapeEnum aType2) The method has been extended to treat */Solid interfertences. - class BOPDS_Iterator - constructors: BOPDS_Iterator::BOPDS_Iterator(); BOPDS_Iterator::BOPDS_Iterator (const Handle(NCollection_BaseAllocator)& theAllocator); - method: void BOPDS_Iterator::Prepare(); The constant number of types of the interferences has been changed by the call: BOPDS_DS::NbInterfTypes(); - class BOPDS_IteratorSI - method: void BOPDS_IteratorSI::UpdateByLevelOfCheck(const Standard_Integer theLevel) The constant number of types of the interferences has been changed by the call: BOPDS_DS::NbInterfTypes(); - method: void BOPDS_IteratorSI::Intersect() The method has been extended to treat */Solid interfertences. - class BOPAlgo_CheckerSI - constructor: BOPAlgo_CheckerSI::BOPAlgo_CheckerSI() The constant number of types of the interferences has been changed by the call: BOPDS_DS::NbInterfTypes(); - method: void BOPAlgo_CheckerSI::SetLevelOfCheck(const Standard_Integer theLevel) The constant number of types of the interferences has been changed by the call: BOPDS_DS::NbInterfTypes(); - methods: void BOPAlgo_CheckerSI::Perform() void BOPAlgo_CheckerSI::PostTreat() The methods have been extended to treat */Solid interfertences. - class BOPAlgo_ArgumentAnalyzer - method: void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences() The method has been extended to treat */Solid interfertences. Added test case bugs/modalg_5/bug24492
This commit is contained in:
@@ -44,9 +44,9 @@
|
||||
//=======================================================================
|
||||
BOPAlgo_CheckerSI::BOPAlgo_CheckerSI()
|
||||
:
|
||||
BOPAlgo_PaveFiller(),
|
||||
myLevelOfCheck(5)
|
||||
BOPAlgo_PaveFiller()
|
||||
{
|
||||
myLevelOfCheck=BOPDS_DS::NbInterfTypes()-1;
|
||||
}
|
||||
//=======================================================================
|
||||
//function : ~
|
||||
@@ -61,7 +61,10 @@ BOPAlgo_CheckerSI::~BOPAlgo_CheckerSI()
|
||||
//=======================================================================
|
||||
void BOPAlgo_CheckerSI::SetLevelOfCheck(const Standard_Integer theLevel)
|
||||
{
|
||||
if (theLevel >= 0 && theLevel <= 5) {
|
||||
Standard_Integer aNbLists;
|
||||
//
|
||||
aNbLists=BOPDS_DS::NbInterfTypes();
|
||||
if (theLevel >= 0 && theLevel < aNbLists) {
|
||||
myLevelOfCheck = theLevel;
|
||||
}
|
||||
}
|
||||
@@ -104,7 +107,7 @@ void BOPAlgo_CheckerSI::Init()
|
||||
//=======================================================================
|
||||
void BOPAlgo_CheckerSI::Perform()
|
||||
{
|
||||
//modified by NIZNHY-PKV Thu Sep 19 08:14:52 2013f
|
||||
|
||||
try {
|
||||
OCC_CATCH_SIGNALS
|
||||
//
|
||||
@@ -113,19 +116,31 @@ void BOPAlgo_CheckerSI::Perform()
|
||||
return;
|
||||
}
|
||||
//
|
||||
PerformVZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PerformEZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PerformFZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PerformZZ();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PostTreat();
|
||||
}
|
||||
catch (Standard_Failure) {
|
||||
}
|
||||
/*
|
||||
BOPAlgo_PaveFiller::Perform();
|
||||
if (myErrorStatus) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
PostTreat();
|
||||
*/
|
||||
//modified by NIZNHY-PKV Thu Sep 19 08:14:56 2013t
|
||||
|
||||
}
|
||||
//=======================================================================
|
||||
//function : PostTreat
|
||||
@@ -237,4 +252,49 @@ void BOPAlgo_CheckerSI::PostTreat()
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
//
|
||||
//
|
||||
// 6
|
||||
BOPDS_VectorOfInterfVZ& aVZs=myDS->InterfVZ();
|
||||
aNb=aVZs.Extent();
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
//
|
||||
const BOPDS_InterfVZ& aVZ=aVZs(i);
|
||||
aVZ.Indices(n1, n2);
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
//
|
||||
// 7
|
||||
BOPDS_VectorOfInterfEZ& aEZs=myDS->InterfEZ();
|
||||
aNb=aEZs.Extent();
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
//
|
||||
const BOPDS_InterfEZ& aEZ=aEZs(i);
|
||||
aEZ.Indices(n1, n2);
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
//
|
||||
// 8
|
||||
BOPDS_VectorOfInterfFZ& aFZs=myDS->InterfFZ();
|
||||
aNb=aFZs.Extent();
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
//
|
||||
const BOPDS_InterfFZ& aFZ=aFZs(i);
|
||||
aFZ.Indices(n1, n2);
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
//
|
||||
// 9
|
||||
BOPDS_VectorOfInterfZZ& aZZs=myDS->InterfZZ();
|
||||
aNb=aZZs.Extent();
|
||||
for (i=0; i!=aNb; ++i) {
|
||||
//
|
||||
const BOPDS_InterfZZ& aZZ=aZZs(i);
|
||||
aZZ.Indices(n1, n2);
|
||||
aPK.SetIds(n1, n2);
|
||||
aMPK.Add(aPK);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user