From b59b99da3ee1f2ee07e18f8ffca78e6a9e9a3665 Mon Sep 17 00:00:00 2001 From: vsr Date: Tue, 29 Aug 2017 17:12:24 +0300 Subject: [PATCH] Issues 0023327, 023428 - 23327: EDF - Additional lines in dump study - 23428: [CEA 2072] A dump with "Create Group" creates a lot of lines with "SubShapeAllIDs" and "GetSameIDs" --- src/GEOM/GEOM_Engine.cxx | 52 +++++++++++++++++++++ src/GEOMImpl/GEOMImpl_IShapesOperations.cxx | 45 +++++++++++++++++- 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/src/GEOM/GEOM_Engine.cxx b/src/GEOM/GEOM_Engine.cxx index f7ae8fc8e..b8d540a74 100644 --- a/src/GEOM/GEOM_Engine.cxx +++ b/src/GEOM/GEOM_Engine.cxx @@ -90,6 +90,14 @@ static int MYDEBUG = 0; static int MYDEBUG = 0; #endif +// VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +// Next macro, when defined, causes appearing of SubShapeAllIDs(), SubShapeAllSortedIDs(), GetSameIDs() +// and other such commands in Python dump. +// See also GEOMImpl_IShapesOperations.cxx. +// --------------------------------------- +// #define DUMP_SUBSHAPE_IDS +// --------------------------------------- + typedef std::map< TCollection_AsciiString, TCollection_AsciiString > TSting2StringMap; typedef std::map< TCollection_AsciiString, TObjectData > TSting2ObjDataMap; typedef std::map< TCollection_AsciiString, TObjectData* > TSting2ObjDataPtrMap; @@ -165,6 +173,8 @@ static TCollection_AsciiString GetPublishCommands const TIntToListIntMap &theMapRefs, std::set< int > &thePublished); +void Prettify(TCollection_AsciiString& theScript); + //================================================================================ /*! * \brief Fix up the name of python variable @@ -869,6 +879,11 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID, aScript.Insert( posToInsertGlobalVars, globalVars ); } + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifndef DUMP_SUBSHAPE_IDS + Prettify(aScript); +#endif + return aScript; } @@ -1918,6 +1933,43 @@ TCollection_AsciiString GetPublishCommands return aResult; } +void Prettify(TCollection_AsciiString& theScript) +{ + TCollection_AsciiString output; + static std::list ToRemove; + if (ToRemove.empty()) { + ToRemove.push_back("geompy.SubShapeAllIDs"); + ToRemove.push_back("geompy.SubShapeAllSortedCentresIDs"); + ToRemove.push_back("geompy.SubShapeAllSortedIDs"); + ToRemove.push_back("geompy.GetFreeFacesIDs"); + ToRemove.push_back("geompy.GetShapesOnBoxIDs"); + ToRemove.push_back("geompy.GetShapesOnShapeIDs"); + ToRemove.push_back("geompy.GetShapesOnPlaneIDs"); + ToRemove.push_back("geompy.GetShapesOnPlaneWithLocationIDs"); + ToRemove.push_back("geompy.GetShapesOnCylinderIDs"); + ToRemove.push_back("geompy.GetShapesOnCylinderWithLocationIDs"); + ToRemove.push_back("geompy.GetShapesOnSphereIDs"); + ToRemove.push_back("geompy.GetShapesOnQuadrangleIDs"); + ToRemove.push_back("geompy.GetSameIDs"); + } + + int start = 1; + while (start <= theScript.Length()) { + int end = theScript.Location("\n", start, theScript.Length()); + if (end == -1) end = theScript.Length(); + TCollection_AsciiString line = theScript.SubString(start, end); + bool found = false; + for (std::list::const_iterator it = ToRemove.begin(); it != ToRemove.end() && !found; ++it) + found = line.Search( *it ) != -1; + if (!found) + output += line; + start = end + 1; + } + theScript = output; + + //OK @@@@@@@@@@@@@@@@@@@@@@@@@@@ +} + //================================================================================ /*! * \brief Constructor diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx index fd5f459f9..53f3c9269 100644 --- a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx @@ -105,6 +105,14 @@ #include #include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC +// VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +// Next macro, when defined, causes appearing of SubShapeAllIDs(), SubShapeAllSortedIDs(), GetSameIDs() +// and other such commands in Python dump. +// See also GEOM_Engine.cxx. +// --------------------------------------- +// #define DUMP_SUBSHAPE_IDS +// --------------------------------------- + namespace { void AddFlatSubShapes(const TopoDS_Shape& S, TopTools_ListOfShape& L, TopTools_MapOfShape& M) @@ -1675,6 +1683,8 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS //Make a Python command GEOM::TPythonDump pd (aFunction, /*append=*/true); pd << "listSubShapeIDs = geompy.SubShapeAll"; @@ -1691,6 +1701,7 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs break; default: ; } +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -2250,9 +2261,12 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetFreeFacesIDs //The explode doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS //Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listFreeFacesIDs = geompy.GetFreeFacesIDs(" << theShape << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -2712,6 +2726,8 @@ Handle(TColStd_HSequenceOfInteger) // The GetShapesOnBox() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theBox)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnBoxIDs = geompy.GetShapesOnBoxIDs(" @@ -2719,6 +2735,7 @@ Handle(TColStd_HSequenceOfInteger) << theShape << ", " << TopAbs_ShapeEnum(theShapeType) << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeqOfIDs; @@ -2907,13 +2924,16 @@ Handle(TColStd_HSequenceOfInteger) Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theCheckShape)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) - << "listShapesOnBoxIDs = geompy.GetShapesOnShapeIDs(" + << "listShapesOnShapeIDs = geompy.GetShapesOnShapeIDs(" << theCheckShape << ", " << theShape << ", " << TopAbs_ShapeEnum(theShapeType) << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeqOfIDs; @@ -3915,10 +3935,13 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneI // The GetShapesOnPlaneIDs() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAx1)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnPlane = geompy.GetShapesOnPlaneIDs" << "(" << theShape << "," << aShapeType << "," << theAx1 << "," << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -3982,10 +4005,13 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneW // The GetShapesOnPlaneIDs() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAx1)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnPlane = geompy.GetShapesOnPlaneWithLocationIDs" << "(" << theShape << ", " << aShapeType << ", " << theAx1 << ", "<< thePnt << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -4028,11 +4054,14 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylind // The GetShapesOnCylinder() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAxis)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnCylinder = geompy.GetShapesOnCylinderIDs" << "(" << theShape << ", " << aShapeType << ", " << theAxis << ", " << theRadius << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -4096,11 +4125,14 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylind Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape, GEOM::GetCreatedLast(thePnt,theAxis))->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnCylinder = geompy.GetShapesOnCylinderWithLocationIDs" << "(" << theShape << ", " << aShapeType << ", " << theAxis << ", " << thePnt << ", " << theRadius << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -4146,11 +4178,14 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnSphere // The GetShapesOnSphere() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theCenter)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) - << "listShapesOnCylinder = geompy.GetShapesOnSphereIDs" + << "listShapesOnSphere = geompy.GetShapesOnSphereIDs" << "(" << theShape << ", " << aShapeType << ", " << theCenter << ", " << theRadius << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeq; @@ -4390,6 +4425,8 @@ Handle(TColStd_HSequenceOfInteger) lastObj = GEOM::GetCreatedLast(lastObj,theBottomLeftPoint); Handle(GEOM_Function) aFunction = lastObj->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS GEOM::TPythonDump(aFunction, /*append=*/true) << "listShapesOnQuadrangle = geompy.GetShapesOnQuadrangleIDs(" << theShape << ", " @@ -4399,6 +4436,7 @@ Handle(TColStd_HSequenceOfInteger) << theBottomLeftPoint << ", " << theBottomRigthPoint << ", " << theState << ")"; +#endif // DUMP_SUBSHAPE_IDS SetErrorCode(OK); return aSeqOfIDs; @@ -5112,11 +5150,14 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetSameIDs // The GetSameIDs() doesn't change object so no new function is required. Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShapeWhere,theShapeWhat)->GetLastFunction(); + // VSR 29/08/2017: 0023327, 0023428: eliminate unnecessary lines in Python dump +#ifdef DUMP_SUBSHAPE_IDS // Make a Python command GEOM::TPythonDump(aFunction, /*append=*/true) << "listSameIDs = geompy.GetSameIDs(" << theShapeWhere << ", " << theShapeWhat << ")"; +#endif // DUMP_SUBSHAPE_IDS return aSeq; } else { SetErrorCode(NOT_FOUND_ANY); -- 2.39.2