From bfef80c4ed565e02c23c033524738d0bb5666679 Mon Sep 17 00:00:00 2001 From: rnv Date: Mon, 10 Jul 2017 12:17:26 +0300 Subject: [PATCH] Porting to DEV version of OCCT. --- src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx | 4 ++ src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx | 52 ++++++++++++++++++++ src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx | 5 ++ src/GEOMAlgo/GEOMAlgo_Splitter.cxx | 3 ++ src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx | 4 ++ src/GEOMAlgo/GEOMAlgo_WireSolid.cxx | 4 ++ src/GEOMImpl/GEOMImpl_BooleanDriver.cxx | 30 +++++++++-- src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx | 6 +++ src/GEOMImpl/GEOMImpl_PartitionDriver.cxx | 12 ++++- src/GEOMImpl/GEOMImpl_ShapeDriver.cxx | 4 ++ 10 files changed, 120 insertions(+), 4 deletions(-) diff --git a/src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx b/src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx index 0a7ca1e67..a50bdc204 100644 --- a/src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx +++ b/src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx @@ -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; diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx index db3b69bbb..85e51c440 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx @@ -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; diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx index 67dea8adf..b39dce44e 100644 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx +++ b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx @@ -37,6 +37,7 @@ #include #include +#include #include @@ -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; } diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.cxx b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx index 0df4a628b..fb5b8099b 100644 --- a/src/GEOMAlgo/GEOMAlgo_Splitter.cxx +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx @@ -41,6 +41,7 @@ #include +#include 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; diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx index e8b763617..182df0d41 100644 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx +++ b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx @@ -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; } diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx index 0f65ecc50..1b87f5f32 100644 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx +++ b/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx @@ -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; } diff --git a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx b/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx index 6c2e34a89..803c2e2ee 100644 --- a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx @@ -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"); } } diff --git a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx b/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx index 170878a03..e7500023b 100644 --- a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx @@ -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; diff --git a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx index 63e7e5284..5628babb7 100644 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx @@ -44,6 +44,9 @@ #include #include #include +#if OCC_VERSION_LARGE > 0x07010000 +#include +#endif #include #include #include @@ -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; diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx index b7947fdf7..00ff9dde0 100644 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx @@ -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(); }