]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Issues 0023327, 023428 V8_4_0a2
authorvsr <vsr@opencascade.com>
Tue, 29 Aug 2017 14:12:24 +0000 (17:12 +0300)
committervsr <vsr@opencascade.com>
Tue, 29 Aug 2017 14:12:24 +0000 (17:12 +0300)
- 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
src/GEOMImpl/GEOMImpl_IShapesOperations.cxx

index f7ae8fc8e82a29a7217fa2d1dbebecc175e989ee..b8d540a74f0b99f58e0b18ebddf1e0c6c0068c99 100644 (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
index fd5f459f9fb2160e7d99c4569fd3112e5cc5a380..53f3c9269ff93e8cf2ecd36e6a66e8db83050074 100644 (file)
 #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);