From 211c8198b38008ef702baea8cd4cfca806d0e389 Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 23 Aug 2013 13:15:52 +0000 Subject: [PATCH] SALOME Forum bug: http://www.salome-platform.org/forum/forum_10/967838025 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 | 34 ++++++++++++++-------------- src/SMESH/SMESH_MeshEditor.hxx | 41 +++++++++++++++++----------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 00521f94c..f1be17ded 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -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; diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index e8b403e6e..7368e3c01 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -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, TIDTypeCompare > TTElemOfElemListMap; + typedef std::map > TNodeOfNodeListMap; + typedef TNodeOfNodeListMap::iterator TNodeOfNodeListMapItr; + typedef std::vector TVecOfNnlmiMap; + typedef std::map TElemOfVecOfNnlmiMap; typedef std::auto_ptr< std::list > 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 > TNodeOfNodeListMap; - typedef TNodeOfNodeListMap::iterator TNodeOfNodeListMapItr; - typedef std::vector TVecOfNnlmiMap; - typedef std::map 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,