Porting to DEV version of OCCT.

This commit is contained in:
rnv 2017-07-10 12:17:26 +03:00
parent b2668a7b37
commit bfef80c4ed
10 changed files with 120 additions and 4 deletions

View File

@ -225,7 +225,11 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
aSB.SetContext(myContext);
aSB.SetShapes(aSFS);
aSB.Perform();
#if OCC_VERSION_LARGE > 0x07010000
iErr=aSB.HasErrors();
#else
iErr=aSB.ErrorStatus();
#endif
if (iErr) {
myErrorStatus=20; // SolidBuilder failed
return;

View File

@ -101,7 +101,9 @@ GEOMAlgo_ShellSolidBuilder::~GEOMAlgo_ShellSolidBuilder()
//=======================================================================
void GEOMAlgo_ShellSolidBuilder::PerformInternal(const BOPAlgo_PaveFiller& theFiller)
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
myPaveFiller=(BOPAlgo_PaveFiller*)&theFiller;
myDS=myPaveFiller->PDS();
@ -109,57 +111,97 @@ void GEOMAlgo_ShellSolidBuilder::PerformInternal(const BOPAlgo_PaveFiller& theFi
//
// 1. CheckData
CheckData();
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 2. Prepare
Prepare();
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 3. Fill Images
// 3.1 Vertice
FillImagesVertices();
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_VERTEX);
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
// 3.2 Edges
FillImagesEdges();
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_EDGE);
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 3.3 Wires
FillImagesContainers(TopAbs_WIRE);
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_WIRE);
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
// 3.4 Faces
FillImagesFaces();
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_FACE);
#if OCC_VERSION_LARGE > 0x07010000
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
}
@ -186,7 +228,9 @@ GEOMAlgo_ShellSolid::~GEOMAlgo_ShellSolid()
//=======================================================================
void GEOMAlgo_ShellSolid::Perform()
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
try {
Standard_Integer aNbArgs, iRank, iErr, iBeg, iEnd, i, aNbSp;
@ -207,7 +251,11 @@ void GEOMAlgo_ShellSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010000
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}
@ -251,7 +299,11 @@ void GEOMAlgo_ShellSolid::Perform()
GEOMAlgo_ShellSolidBuilder aSSB;
//
aSSB.PerformWithFiller(*myDSFiller);
#if OCC_VERSION_LARGE > 0x07010000
iErr=aSSB.HasErrors();
#else
iErr=aSSB.ErrorStatus();
#endif
if (iErr) {
myErrorStatus=15;
return;

View File

@ -37,6 +37,7 @@
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <Basics_OCCTVersion.hxx>
#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
@ -84,7 +85,11 @@ void GEOMAlgo_SolidSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010000
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -41,6 +41,7 @@
#include <BOPTools.hxx>
#include <Basics_OCCTVersion.hxx>
static
void TreatCompound(const TopoDS_Shape& aC,
@ -149,7 +150,9 @@ void GEOMAlgo_Splitter::Clear()
//=======================================================================
void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
TopAbs_ShapeEnum aType;
BRep_Builder aBB;

View File

@ -90,7 +90,11 @@ void GEOMAlgo_VertexSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010000
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -80,7 +80,11 @@ void GEOMAlgo_WireSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010000
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -150,11 +150,19 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aShape2);
aCSI.SetArguments(aList1);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0)
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0)
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
aCSI.SetArguments(aList2);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0)
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0)
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
@ -205,7 +213,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList1.Append(aShape);
aCSI.SetArguments(aList1);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -229,7 +241,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aShape2);
aCSI.SetArguments(aList2);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -270,7 +286,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList1.Append(aShape);
aCSI.SetArguments(aList1);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -300,7 +320,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aTool);
aCSI.SetArguments(aList2);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}

View File

@ -145,7 +145,9 @@ GEOMImpl_IMeasureOperations::ShapeKind GEOMImpl_IMeasureOperations::KindOfShape
GEOMAlgo_ShapeInfoFiller aSF;
aSF.SetShape(aShape);
aSF.Perform();
Standard_Integer iErr = aSF.ErrorStatus();
if (iErr) {
SetErrorCode("Error in GEOMAlgo_ShapeInfoFiller");
return SK_NO_SHAPE;
@ -1574,7 +1576,11 @@ bool GEOMImpl_IMeasureOperations::CheckSelfIntersections
// 1. Launch the checker
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010000
Standard_Boolean iErr = aCSI.HasErrors();
#else
Standard_Integer iErr = aCSI.ErrorStatus();
#endif
//
Standard_Integer aNbS, n1, n2;

View File

@ -44,6 +44,9 @@
#include <Standard_NullObject.hxx>
#include <StdFail_NotDone.hxx>
#include <BOPAlgo_CheckerSI.hxx>
#if OCC_VERSION_LARGE > 0x07010000
#include <BOPAlgo_Alerts.hxx>
#endif
#include <BOPCol_IndexedDataMapOfShapeListOfShape.hxx>
#include <BOPCol_ListOfShape.hxx>
#include <BOPDS_DS.hxx>
@ -106,8 +109,11 @@ static void CheckSelfIntersection(const TopoDS_Shape &theShape)
aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
aCSI.SetArguments(aList);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010000
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Partition operation will not be performed, because argument shape is self-intersected");
}
}
@ -411,7 +417,11 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(LOGBOOK& log) const
aShape = PS.Shape();
if (aShape.IsNull()) {
// Mantis issue 22009
#if OCC_VERSION_LARGE > 0x07010000
if (PS.HasError(STANDARD_TYPE(BOPAlgo_AlertTooFewArguments)) && PS.Tools().Extent() == 0 && PS.Arguments().Extent() == 1)
#else
if (PS.ErrorStatus() == 100 && PS.Tools().Extent() == 0 && PS.Arguments().Extent() == 1)
#endif
aShape = PS.Arguments().First();
else
return 0;

View File

@ -770,7 +770,11 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(LOGBOOK& log) const
aMV.SetArguments(aLS);
aMV.SetIntersect(aCI.GetIsIntersect());
aMV.Perform();
#if OCC_VERSION_LARGE > 0x07010000
if (aMV.HasErrors()) return 0;
#else
if (aMV.ErrorStatus()) return 0;
#endif
aShape = aMV.Shape();
}