Salome HOME
SALOME Forum bug: http://www.salome-platform.org/forum/forum_10/967838025
authoreap <eap@opencascade.com>
Fri, 23 Aug 2013 13:15:52 +0000 (13:15 +0000)
committereap <eap@opencascade.com>
Fri, 23 Aug 2013 13:15:52 +0000 (13:15 +0000)
Re-fix "Regression of XSMESH_TEST/SMESHCOMMON/SMESH_TEST/Grids/smesh/bugs12/M6"
previously fixed by revision 1.23.2.9.
Use TElemOfElemListMap with new comparator TIDTypeCompare instead of
TElemOfElemListMap declared in SMESH_TypeDefs.hxx which uses
TIDCompare (whose behavior has been just restored)

src/SMESH/SMESH_MeshEditor.cxx
src/SMESH/SMESH_MeshEditor.hxx

index 00521f94cbc208e971718ac26932319bfe764c0a..f1be17ded67725d6cf9560e10038938a16274e83 100644 (file)
@@ -4200,7 +4200,7 @@ void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement*               elem,
 //=======================================================================
 
 void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap &     mapNewNodes,
-                                  TElemOfElemListMap &     newElemsMap,
+                                  TTElemOfElemListMap &    newElemsMap,
                                   TElemOfVecOfNnlmiMap &   elemNewNodesMap,
                                   TIDSortedElemSet&        elemSet,
                                   const int                nbSteps,
@@ -4245,7 +4245,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap &     mapNewNodes,
   // Make a ceiling for each element ie an equal element of last new nodes.
   // Find free links of faces - make edges and sweep them into faces.
 
-  TElemOfElemListMap::iterator   itElem      = newElemsMap.begin();
+  TTElemOfElemListMap::iterator  itElem      = newElemsMap.begin();
   TElemOfVecOfNnlmiMap::iterator itElemNodes = elemNewNodesMap.begin();
   for ( ; itElem != newElemsMap.end(); itElem++, itElemNodes++ )
   {
@@ -4630,7 +4630,7 @@ SMESH_MeshEditor::RotationSweep(TIDSortedElemSet & theElems,
 
   TNodeOfNodeListMap mapNewNodes;
   TElemOfVecOfNnlmiMap mapElemNewNodes;
-  TElemOfElemListMap newElemsMap;
+  TTElemOfElemListMap newElemsMap;
 
   const bool isQuadraticMesh = bool( myMesh->NbEdges(ORDER_QUADRATIC) +
                                      myMesh->NbFaces(ORDER_QUADRATIC) +
@@ -4772,13 +4772,13 @@ const SMDS_MeshNode* SMESH_MeshEditor::CreateNode(const double x,
 //=======================================================================
 
 SMESH_MeshEditor::PGroupIDs
-SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet &  theElems,
-                                  const gp_Vec&       theStep,
-                                  const int           theNbSteps,
-                                  TElemOfElemListMap& newElemsMap,
-                                  const bool          theMakeGroups,
-                                  const int           theFlags,
-                                  const double        theTolerance)
+SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet &   theElems,
+                                  const gp_Vec&        theStep,
+                                  const int            theNbSteps,
+                                  TTElemOfElemListMap& newElemsMap,
+                                  const bool           theMakeGroups,
+                                  const int            theFlags,
+                                  const double         theTolerance)
 {
   ExtrusParam aParams;
   aParams.myDir = gp_Dir(theStep);
@@ -4799,12 +4799,12 @@ SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet &  theElems,
 //=======================================================================
 
 SMESH_MeshEditor::PGroupIDs
-SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet &  theElems,
-                                  ExtrusParam&        theParams,
-                                  TElemOfElemListMap& newElemsMap,
-                                  const bool          theMakeGroups,
-                                  const int           theFlags,
-                                  const double        theTolerance)
+SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet &   theElems,
+                                  ExtrusParam&         theParams,
+                                  TTElemOfElemListMap& newElemsMap,
+                                  const bool           theMakeGroups,
+                                  const int            theFlags,
+                                  const double         theTolerance)
 {
   myLastCreatedElems.Clear();
   myLastCreatedNodes.Clear();
@@ -5468,7 +5468,7 @@ SMESH_MeshEditor::MakeExtrElements(TIDSortedElemSet&                 theElements
 
   TNodeOfNodeListMap   mapNewNodes;
   TElemOfVecOfNnlmiMap mapElemNewNodes;
-  TElemOfElemListMap   newElemsMap;
+  TTElemOfElemListMap  newElemsMap;
   TIDSortedElemSet::iterator itElem;
   // source elements for each generated one
   SMESH_SequenceOfElemPtr srcElems, srcNodes;
index e8b403e6efc467de31d25445f7f18fe96bcecd54..7368e3c0128a697742e3224f36cbfe72679626f7 100644 (file)
@@ -193,6 +193,12 @@ public:
   // If the2D, smoothing is performed using UV parameters of nodes
   // on geometrical faces
 
+  typedef std::map < const SMDS_MeshElement*,
+    std::list<const SMDS_MeshElement*>, TIDTypeCompare >                   TTElemOfElemListMap;
+  typedef std::map<const SMDS_MeshNode*, std::list<const SMDS_MeshNode*> > TNodeOfNodeListMap;
+  typedef TNodeOfNodeListMap::iterator                                     TNodeOfNodeListMapItr;
+  typedef std::vector<TNodeOfNodeListMapItr>                               TVecOfNnlmiMap;
+  typedef std::map<const SMDS_MeshElement*, TVecOfNnlmiMap, TIDCompare >   TElemOfVecOfNnlmiMap;
   typedef std::auto_ptr< std::list<int> > PGroupIDs;
 
   PGroupIDs RotationSweep (TIDSortedElemSet & theElements,
@@ -246,13 +252,13 @@ public:
    * @param theTolerance - uses for comparing locations of nodes if flag
    *   EXTRUSION_FLAG_SEW is set
    */
-  PGroupIDs ExtrusionSweep (TIDSortedElemSet &  theElems,
-                            const gp_Vec&       theStep,
-                            const int           theNbSteps,
-                            TElemOfElemListMap& newElemsMap,
-                            const bool          theMakeGroups,
-                            const int           theFlags = EXTRUSION_FLAG_BOUNDARY,
-                            const double        theTolerance = 1.e-6);
+  PGroupIDs ExtrusionSweep (TIDSortedElemSet &   theElems,
+                            const gp_Vec&        theStep,
+                            const int            theNbSteps,
+                            TTElemOfElemListMap& newElemsMap,
+                            const bool           theMakeGroups,
+                            const int            theFlags = EXTRUSION_FLAG_BOUNDARY,
+                            const double         theTolerance = 1.e-6);
   
   /*!
    * Generate new elements by extrusion of theElements
@@ -264,12 +270,12 @@ public:
    *   EXTRUSION_FLAG_SEW is set
    * @param theParams - special structure for manage of extrusion
    */
-  PGroupIDs ExtrusionSweep (TIDSortedElemSet &  theElems,
-                            ExtrusParam&        theParams,
-                            TElemOfElemListMap& newElemsMap,
-                            const bool          theMakeGroups,
-                            const int           theFlags,
-                            const double        theTolerance);
+  PGroupIDs ExtrusionSweep (TIDSortedElemSet &   theElems,
+                            ExtrusParam&         theParams,
+                            TTElemOfElemListMap& newElemsMap,
+                            const bool           theMakeGroups,
+                            const int            theFlags,
+                            const double         theTolerance);
 
 
   // Generate new elements by extrusion of theElements 
@@ -581,13 +587,6 @@ public:
                            const SMESH_SequenceOfElemPtr& elemGens,
                            const std::string&             postfix,
                            SMESH_Mesh*                    targetMesh=0);
-
-
-  typedef std::map<const SMDS_MeshNode*, std::list<const SMDS_MeshNode*> > TNodeOfNodeListMap;
-  typedef TNodeOfNodeListMap::iterator                                     TNodeOfNodeListMapItr;
-  typedef std::vector<TNodeOfNodeListMapItr>                               TVecOfNnlmiMap;
-  typedef std::map<const SMDS_MeshElement*, TVecOfNnlmiMap, TIDCompare >   TElemOfVecOfNnlmiMap;
-
   /*!
    * \brief Create elements by sweeping an element
    * \param elem - element to sweep
@@ -612,7 +611,7 @@ public:
    * \param srcElements - to append elem for each generated element
    */
   void makeWalls (TNodeOfNodeListMap &     mapNewNodes,
-                  TElemOfElemListMap &     newElemsMap,
+                  TTElemOfElemListMap &    newElemsMap,
                   TElemOfVecOfNnlmiMap &   elemNewNodesMap,
                   TIDSortedElemSet&        elemSet,
                   const int                nbSteps,