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"
This commit is contained in:
vsr 2017-08-29 17:12:24 +03:00
parent 4d8c002472
commit b59b99da3e
2 changed files with 95 additions and 2 deletions

View File

@ -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<TCollection_AsciiString> 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<TCollection_AsciiString>::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

View File

@ -105,6 +105,14 @@
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // 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);