From 50d4798371085d17938a7820cd90a2417d568ef1 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 14 Nov 2017 21:15:33 +0300 Subject: [PATCH] 23491: EDF 15591 - Duplicate Elements / Nodes Make AffectedElemGroupsInRegion() universal, make it available in Duplicate dialog --- doc/salome/gui/SMESH/images/duplicate01.png | Bin 23304 -> 22372 bytes doc/salome/gui/SMESH/images/duplicate02.png | Bin 28256 -> 27495 bytes doc/salome/gui/SMESH/images/duplicate03.png | Bin 20681 -> 18420 bytes doc/salome/gui/SMESH/images/duplicate04.png | Bin 22084 -> 19200 bytes .../gui/SMESH/input/double_nodes_page.doc | 8 +- src/SMESH/SMESH_MeshEditor.cxx | 731 ++++++++++++++---- src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx | 153 ++-- src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h | 3 +- src/SMESHGUI/SMESH_msg_en.ts | 4 + src/SMESHUtils/SMESH_MeshAlgos.hxx | 48 ++ src/SMESH_I/SMESH_2smeshpy.cxx | 21 +- src/SMESH_I/SMESH_MeshEditor_i.cxx | 96 ++- src/SMESH_SWIG/smeshBuilder.py | 4 +- 13 files changed, 807 insertions(+), 261 deletions(-) diff --git a/doc/salome/gui/SMESH/images/duplicate01.png b/doc/salome/gui/SMESH/images/duplicate01.png index f7acf902545a20eed3ce03fd5f5d6e7a04206dff..af668e1952de18b1299a0bada2ffc2c51359d248 100644 GIT binary patch literal 22372 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 E06kmCkN^Mx literal 23304 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%0Do(%_;r^2J*dlB;*Yiu!_HH_<G5I^ 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 diff --git a/doc/salome/gui/SMESH/images/duplicate04.png b/doc/salome/gui/SMESH/images/duplicate04.png index eab51a1fb8c3e03a8e82a9428e9433552a93bb52..7bab0dac4947334759482c64f3bb46ea19ee9159 100644 GIT binary patch literal 19200 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 literal 22084 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 diff --git a/doc/salome/gui/SMESH/input/double_nodes_page.doc b/doc/salome/gui/SMESH/input/double_nodes_page.doc index 955d0cffe..1d5a5ddd4 100644 --- a/doc/salome/gui/SMESH/input/double_nodes_page.doc +++ b/doc/salome/gui/SMESH/input/double_nodes_page.doc @@ -42,7 +42,10 @@ Parameters to be defined in this mode:
  • Group of nodes to duplicate (mandatory): these nodes will be duplicated.
  • Group of elements to replace nodes with new ones - (optional): the new nodes will replace the duplicated nodes within these elements.
  • + (optional): the new nodes will replace the duplicated nodes + within these elements. \b Generate button automatically creates + these groups. +
  • Construct group with newly created nodes option (checked by default): if checked - the group with newly created nodes will be built.
  • @@ -73,7 +76,8 @@ Parameters to be defined in this mode: group of nodes at crack bottom which will not be duplicated.
  • Group of elements to replace nodes with new ones (mandatory): the new nodes will replace the nodes to - duplicate within these elements.
  • + duplicate within these elements. \b Generate button automatically + creates these groups.
  • Construct group with newly created elements option (checked by default): if checked - the group of newly created elements will be built.
  • diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 83066678d..62bb61a72 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -93,6 +93,7 @@ #include #include +#include #include #include @@ -4567,11 +4568,7 @@ void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement* elem, std::swap( itNN[0], itNN[1] ); std::swap( prevNod[0], prevNod[1] ); std::swap( nextNod[0], nextNod[1] ); -#if defined(__APPLE__) std::swap( isSingleNode[0], isSingleNode[1] ); -#else - isSingleNode.swap( isSingleNode[0], isSingleNode[1] ); -#endif if ( nbSame > 0 ) sames[0] = 1 - sames[0]; iNotSameNode = 1 - iNotSameNode; @@ -10596,6 +10593,559 @@ SMESH_MeshEditor::FindMatchingNodes(set& theSide1, return SEW_OK; } +namespace // automatically find theAffectedElems for DoubleNodes() +{ + bool isOut( const SMDS_MeshNode* n, const gp_XYZ& norm, const SMDS_MeshElement* elem ); + + //-------------------------------------------------------------------------------- + // Nodes shared by adjacent FissureBorder's. + // 1 node if FissureBorder separates faces + // 2 nodes if FissureBorder separates volumes + struct SubBorder + { + const SMDS_MeshNode* _nodes[2]; + int _nbNodes; + + SubBorder( const SMDS_MeshNode* n1, const SMDS_MeshNode* n2 = 0 ) + { + _nodes[0] = n1; + _nodes[1] = n2; + _nbNodes = bool( n1 ) + bool( n2 ); + if ( _nbNodes == 2 && n1 > n2 ) + std::swap( _nodes[0], _nodes[1] ); + } + bool operator<( const SubBorder& other ) const + { + for ( int i = 0; i < _nbNodes; ++i ) + { + if ( _nodes[i] < other._nodes[i] ) return true; + if ( _nodes[i] > other._nodes[i] ) return false; + } + return false; + } + }; + + //-------------------------------------------------------------------------------- + // Map a SubBorder to all FissureBorder it bounds + struct FissureBorder; + typedef std::map< SubBorder, std::vector< FissureBorder* > > TBorderLinks; + typedef TBorderLinks::iterator TMappedSub; + + //-------------------------------------------------------------------------------- + /*! + * \brief Element border (volume facet or face edge) at a fissure + */ + struct FissureBorder + { + std::vector< const SMDS_MeshNode* > _nodes; // border nodes + const SMDS_MeshElement* _elems[2]; // volume or face adjacent to fissure + + std::vector< TMappedSub > _mappedSubs; // Sub() in TBorderLinks map + std::vector< const SMDS_MeshNode* > _sortedNodes; // to compare FissureBorder's + + FissureBorder( FissureBorder && from ) // move constructor + { + std::swap( _nodes, from._nodes ); + std::swap( _sortedNodes, from._sortedNodes ); + _elems[0] = from._elems[0]; + _elems[1] = from._elems[1]; + } + + FissureBorder( const SMDS_MeshElement* elemToDuplicate, + std::vector< const SMDS_MeshElement* > & adjElems) + : _nodes( elemToDuplicate->NbCornerNodes() ) + { + for ( size_t i = 0; i < _nodes.size(); ++i ) + _nodes[i] = elemToDuplicate->GetNode( i ); + + SMDSAbs_ElementType type = SMDSAbs_ElementType( elemToDuplicate->GetType() + 1 ); + findAdjacent( type, adjElems ); + } + + FissureBorder( const SMDS_MeshNode** nodes, + const size_t nbNodes, + const SMDSAbs_ElementType adjElemsType, + std::vector< const SMDS_MeshElement* > & adjElems) + : _nodes( nodes, nodes + nbNodes ) + { + findAdjacent( adjElemsType, adjElems ); + } + + void findAdjacent( const SMDSAbs_ElementType adjElemsType, + std::vector< const SMDS_MeshElement* > & adjElems) + { + _elems[0] = _elems[1] = 0; + adjElems.clear(); + if ( SMDS_Mesh::GetElementsByNodes( _nodes, adjElems, adjElemsType )) + for ( size_t i = 0; i < adjElems.size() && i < 2; ++i ) + _elems[i] = adjElems[i]; + } + + bool operator<( const FissureBorder& other ) const + { + return GetSortedNodes() < other.GetSortedNodes(); + } + + const std::vector< const SMDS_MeshNode* >& GetSortedNodes() const + { + if ( _sortedNodes.empty() && !_nodes.empty() ) + { + FissureBorder* me = const_cast( this ); + me->_sortedNodes = me->_nodes; + std::sort( me->_sortedNodes.begin(), me->_sortedNodes.end() ); + } + return _sortedNodes; + } + + size_t NbSub() const + { + return _nodes.size(); + } + + SubBorder Sub(size_t i) const + { + return SubBorder( _nodes[i], NbSub() > 2 ? _nodes[ (i+1)%NbSub() ] : 0 ); + } + + void AddSelfTo( TBorderLinks& borderLinks ) + { + _mappedSubs.resize( NbSub() ); + for ( size_t i = 0; i < NbSub(); ++i ) + { + TBorderLinks::iterator s2b = + borderLinks.insert( std::make_pair( Sub(i), TBorderLinks::mapped_type() )).first; + s2b->second.push_back( this ); + _mappedSubs[ i ] = s2b; + } + } + + void Clear() + { + _nodes.clear(); + } + + const SMDS_MeshElement* GetMarkedElem() const + { + if ( _nodes.empty() ) return 0; // cleared + if ( _elems[0] && _elems[0]->isMarked() ) return _elems[0]; + if ( _elems[1] && _elems[1]->isMarked() ) return _elems[1]; + return 0; + } + + gp_XYZ GetNorm() const // normal to the border + { + gp_XYZ norm; + if ( _nodes.size() == 2 ) + { + gp_XYZ avgNorm( 0,0,0 ); // sum of normals of adjacent faces + if ( SMESH_MeshAlgos::FaceNormal( _elems[0], norm )) + avgNorm += norm; + if ( SMESH_MeshAlgos::FaceNormal( _elems[1], norm )) + avgNorm += norm; + + gp_XYZ bordDir( SMESH_NodeXYZ( _nodes[0] ) - SMESH_NodeXYZ( _nodes[1] )); + norm = bordDir ^ avgNorm; + } + else + { + SMESH_NodeXYZ p0( _nodes[0] ); + SMESH_NodeXYZ p1( _nodes[1] ); + SMESH_NodeXYZ p2( _nodes[2] ); + norm = ( p0 - p1 ) ^ ( p2 - p1 ); + } + if ( isOut( _nodes[0], norm, GetMarkedElem() )) + norm.Reverse(); + + return norm; + } + + void ChooseSide() // mark an _elem located at positive side of fissure + { + _elems[0]->setIsMarked( true ); + gp_XYZ norm = GetNorm(); + double maxX = norm.Coord(1); + if ( Abs( maxX ) < Abs( norm.Coord(2)) ) maxX = norm.Coord(2); + if ( Abs( maxX ) < Abs( norm.Coord(3)) ) maxX = norm.Coord(3); + if ( maxX < 0 ) + { + _elems[0]->setIsMarked( false ); + _elems[1]->setIsMarked( true ); + } + } + + }; // struct FissureBorder + + //-------------------------------------------------------------------------------- + /*! + * \brief Classifier of elements at fissure edge + */ + class FissureNormal + { + std::vector< gp_XYZ > _normals; + bool _bothIn; + + public: + void Add( const SMDS_MeshNode* n, const FissureBorder& bord ) + { + _bothIn = false; + _normals.reserve(2); + _normals.push_back( bord.GetNorm() ); + if ( _normals.size() == 2 ) + _bothIn = !isOut( n, _normals[0], bord.GetMarkedElem() ); + } + + bool IsIn( const SMDS_MeshNode* n, const SMDS_MeshElement* elem ) const + { + bool isIn = false; + switch ( _normals.size() ) { + case 1: + { + isIn = !isOut( n, _normals[0], elem ); + break; + } + case 2: + { + bool in1 = !isOut( n, _normals[0], elem ); + bool in2 = !isOut( n, _normals[1], elem ); + isIn = _bothIn ? ( in1 && in2 ) : ( in1 || in2 ); + } + } + return isIn; + } + }; + + //================================================================================ + /*! + * \brief Classify an element by a plane passing through a node + */ + //================================================================================ + + bool isOut( const SMDS_MeshNode* n, const gp_XYZ& norm, const SMDS_MeshElement* elem ) + { + SMESH_NodeXYZ p = n; + double sumDot = 0; + for ( int i = 0, nb = elem->NbCornerNodes(); i < nb; ++i ) + { + SMESH_NodeXYZ pi = elem->GetNode( i ); + sumDot += norm * ( pi - p ); + } + return sumDot < -1e-100; + } + + //================================================================================ + /*! + * \brief Find FissureBorder's by nodes to duplicate + */ + //================================================================================ + + void findFissureBorders( const TIDSortedElemSet& theNodes, + std::vector< FissureBorder > & theFissureBorders ) + { + TIDSortedElemSet::const_iterator nIt = theNodes.begin(); + const SMDS_MeshNode* n = dynamic_cast< const SMDS_MeshNode*>( *nIt ); + if ( !n ) return; + SMDSAbs_ElementType elemType = SMDSAbs_Volume; + if ( n->NbInverseElements( elemType ) == 0 ) + { + elemType = SMDSAbs_Face; + if ( n->NbInverseElements( elemType ) == 0 ) + return; + } + // unmark elements touching the fissure + for ( ; nIt != theNodes.end(); ++nIt ) + SMESH_MeshAlgos::MarkElems( cast2Node(*nIt)->GetInverseElementIterator(), false ); + + // loop on elements touching the fissure to get their borders belonging to the fissure + std::set< FissureBorder > fissureBorders; + std::vector< const SMDS_MeshElement* > adjElems; + std::vector< const SMDS_MeshNode* > nodes; + SMDS_VolumeTool volTool; + for ( nIt = theNodes.begin(); nIt != theNodes.end(); ++nIt ) + { + SMDS_ElemIteratorPtr invIt = cast2Node(*nIt)->GetInverseElementIterator( elemType ); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + if ( elemType == SMDSAbs_Volume ) + { + volTool.Set( eInv ); + int iQuad = eInv->IsQuadratic() ? 2 : 1; + for ( int iF = 0, nbF = volTool.NbFaces(); iF < nbF; ++iF ) + { + const SMDS_MeshNode** nn = volTool.GetFaceNodes( iF ); + int nbN = volTool.NbFaceNodes( iF ) / iQuad; + nodes.clear(); + bool allOnFissure = true; + for ( int iN = 0; iN < nbN && allOnFissure; iN += iQuad ) + if (( allOnFissure = theNodes.count( nn[ iN ]))) + nodes.push_back( nn[ iN ]); + if ( allOnFissure ) + fissureBorders.insert( std::move( FissureBorder( &nodes[0], nodes.size(), + elemType, adjElems ))); + } + } + else // elemType == SMDSAbs_Face + { + const SMDS_MeshNode* nn[2] = { eInv->GetNode( eInv->NbCornerNodes()-1 ), 0 }; + bool onFissure0 = theNodes.count( nn[0] ), onFissure1; + for ( int iN = 0, nbN = eInv->NbCornerNodes(); iN < nbN; ++iN ) + { + nn[1] = eInv->GetNode( iN ); + onFissure1 = theNodes.count( nn[1] ); + if ( onFissure0 && onFissure1 ) + fissureBorders.insert( std::move( FissureBorder( nn, 2, elemType, adjElems ))); + nn[0] = nn[1]; + onFissure0 = onFissure1; + } + } + } + } + + theFissureBorders.reserve( theFissureBorders.size() + fissureBorders.size()); + std::set< FissureBorder >::iterator bord = fissureBorders.begin(); + for ( ; bord != fissureBorders.end(); ++bord ) + { + theFissureBorders.push_back( std::move( const_cast( *bord ) )); + } + return; + } // findFissureBorders() + + //================================================================================ + /*! + * \brief Find elements on one side of a fissure defined by elements or nodes to duplicate + * \param [in] theElemsOrNodes - elements or nodes to duplicate + * \param [in] theNodesNot - nodes not to duplicate + * \param [out] theAffectedElems - the found elements + */ + //================================================================================ + + void findAffectedElems( const TIDSortedElemSet& theElemsOrNodes, + TIDSortedElemSet& theAffectedElems) + { + if ( theElemsOrNodes.empty() ) return; + + // find FissureBorder's + + std::vector< FissureBorder > fissure; + std::vector< const SMDS_MeshElement* > elemsByFacet; + + TIDSortedElemSet::const_iterator elIt = theElemsOrNodes.begin(); + if ( (*elIt)->GetType() == SMDSAbs_Node ) + { + findFissureBorders( theElemsOrNodes, fissure ); + } + else + { + fissure.reserve( theElemsOrNodes.size() ); + for ( ; elIt != theElemsOrNodes.end(); ++elIt ) + fissure.push_back( std::move( FissureBorder( *elIt, elemsByFacet ))); + } + if ( fissure.empty() ) + return; + + // fill borderLinks + + TBorderLinks borderLinks; + + for ( size_t i = 0; i < fissure.size(); ++i ) + { + fissure[i].AddSelfTo( borderLinks ); + } + + // get theAffectedElems + + // unmark elements having nodes on the fissure, theAffectedElems elements will be marked + for ( size_t i = 0; i < fissure.size(); ++i ) + for ( size_t j = 0; j < fissure[i]._nodes.size(); ++j ) + { + SMESH_MeshAlgos::MarkElemNodes( fissure[i]._nodes[j]->GetInverseElementIterator(), + false, /*markElem=*/true ); + } + + std::vector facetNodes; + std::map< const SMDS_MeshNode*, FissureNormal > fissEdgeNodes2Norm; + boost::container::flat_set< const SMDS_MeshNode* > fissureNodes; + + // choose a side of fissure + fissure[0].ChooseSide(); + theAffectedElems.insert( fissure[0].GetMarkedElem() ); + + size_t nbCheckedBorders = 0; + while ( nbCheckedBorders < fissure.size() ) + { + // find a FissureBorder to treat + FissureBorder* bord = 0; + for ( size_t i = 0; i < fissure.size() && !bord; ++i ) + if ( fissure[i].GetMarkedElem() ) + bord = & fissure[i]; + for ( size_t i = 0; i < fissure.size() && !bord; ++i ) + if ( fissure[i].NbSub() > 0 && fissure[i]._elems[0] ) + { + bord = & fissure[i]; + bord->ChooseSide(); + theAffectedElems.insert( bord->GetMarkedElem() ); + } + if ( !bord ) return; + ++nbCheckedBorders; + + // treat FissureBorder's linked to bord + fissureNodes.clear(); + fissureNodes.insert( bord->_nodes.begin(), bord->_nodes.end() ); + for ( size_t i = 0; i < bord->NbSub(); ++i ) + { + TBorderLinks::iterator l2b = bord->_mappedSubs[ i ]; + if ( l2b == borderLinks.end() || l2b->second.empty() ) continue; + std::vector< FissureBorder* >& linkedBorders = l2b->second; + const SubBorder& sb = l2b->first; + const SMDS_MeshElement* bordElem = bord->GetMarkedElem(); + + if ( linkedBorders.size() == 1 ) // fissure edge reached, fill fissEdgeNodes2Norm + { + for ( int j = 0; j < sb._nbNodes; ++j ) + fissEdgeNodes2Norm[ sb._nodes[j] ].Add( sb._nodes[j], *bord ); + continue; + } + + // add to theAffectedElems elems sharing nodes of a SubBorder and a node of bordElem + // until an elem adjacent to a neighbour FissureBorder is found + facetNodes.clear(); + facetNodes.insert( facetNodes.end(), sb._nodes, sb._nodes + sb._nbNodes ); + facetNodes.resize( sb._nbNodes + 1 ); + + while ( bordElem ) + { + // check if bordElem is adjacent to a neighbour FissureBorder + for ( size_t j = 0; j < linkedBorders.size(); ++j ) + { + FissureBorder* bord2 = linkedBorders[j]; + if ( bord2 == bord ) continue; + if ( bordElem == bord2->_elems[0] || bordElem == bord2->_elems[1] ) + bordElem = 0; + else + fissureNodes.insert( bord2->_nodes.begin(), bord2->_nodes.end() ); + } + if ( !bordElem ) + break; + + // find the next bordElem + const SMDS_MeshElement* nextBordElem = 0; + for ( int iN = 0, nbN = bordElem->NbCornerNodes(); iN < nbN && !nextBordElem; ++iN ) + { + const SMDS_MeshNode* n = bordElem->GetNode( iN ); + if ( fissureNodes.count( n )) continue; + + facetNodes[ sb._nbNodes ] = n; + elemsByFacet.clear(); + if ( SMDS_Mesh::GetElementsByNodes( facetNodes, elemsByFacet ) > 1 ) + { + for ( size_t iE = 0; iE < elemsByFacet.size(); ++iE ) + if ( elemsByFacet[ iE ] != bordElem && + !elemsByFacet[ iE ]->isMarked() ) + { + theAffectedElems.insert( elemsByFacet[ iE ]); + elemsByFacet[ iE ]->setIsMarked( true ); + if ( elemsByFacet[ iE ]->GetType() == bordElem->GetType() ) + nextBordElem = elemsByFacet[ iE ]; + } + } + } + bordElem = nextBordElem; + + } // while ( bordElem ) + + linkedBorders.clear(); // not to treat this link any more + + } // loop on SubBorder's of a FissureBorder + + bord->Clear(); + + } // loop on FissureBorder's + + + // add elements sharing only one node of the fissure, except those sharing fissure edge nodes + + // mark nodes of theAffectedElems + SMESH_MeshAlgos::MarkElemNodes( theAffectedElems.begin(), theAffectedElems.end(), true ); + + // unmark nodes of the fissure + elIt = theElemsOrNodes.begin(); + if ( (*elIt)->GetType() == SMDSAbs_Node ) + SMESH_MeshAlgos::MarkElems( elIt, theElemsOrNodes.end(), false ); + else + SMESH_MeshAlgos::MarkElemNodes( elIt, theElemsOrNodes.end(), false ); + + std::vector< gp_XYZ > normVec; + + // loop on nodes of the fissure, add elements having marked nodes + for ( elIt = theElemsOrNodes.begin(); elIt != theElemsOrNodes.end(); ++elIt ) + { + const SMDS_MeshElement* e = (*elIt); + if ( e->GetType() != SMDSAbs_Node ) + e->setIsMarked( true ); // avoid adding a fissure element + + for ( int iN = 0, nbN = e->NbCornerNodes(); iN < nbN; ++iN ) + { + const SMDS_MeshNode* n = e->GetNode( iN ); + if ( fissEdgeNodes2Norm.count( n )) + continue; + + SMDS_ElemIteratorPtr invIt = n->GetInverseElementIterator(); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + SMDS_ElemIteratorPtr nIt = eInv->nodesIterator(); + while( nIt->more() ) + if ( nIt->next()->isMarked()) + { + theAffectedElems.insert( eInv ); + SMESH_MeshAlgos::MarkElems( eInv->nodesIterator(), true ); + n->setIsMarked( false ); + break; + } + } + } + } + + // add elements on the fissure edge + std::map< const SMDS_MeshNode*, FissureNormal >::iterator n2N; + for ( n2N = fissEdgeNodes2Norm.begin(); n2N != fissEdgeNodes2Norm.end(); ++n2N ) + { + const SMDS_MeshNode* edgeNode = n2N->first; + const FissureNormal & normals = n2N->second; + + SMDS_ElemIteratorPtr invIt = edgeNode->GetInverseElementIterator(); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + // classify eInv using normals + bool toAdd = normals.IsIn( edgeNode, eInv ); + if ( toAdd ) // check if all nodes lie on the fissure edge + { + bool notOnEdge = false; + for ( int iN = 0, nbN = eInv->NbCornerNodes(); iN < nbN && !notOnEdge; ++iN ) + notOnEdge = !fissEdgeNodes2Norm.count( eInv->GetNode( iN )); + toAdd = notOnEdge; + } + if ( toAdd ) + { + theAffectedElems.insert( eInv ); + } + } + } + + return; + } // findAffectedElems() +} // namespace + //================================================================================ /*! * \brief Create elements equal (on same nodes) to given ones @@ -10613,7 +11163,6 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) SMDSAbs_ElementType type = SMDSAbs_All; SMDS_ElemIteratorPtr elemIt; - vector< const SMDS_MeshElement* > allElems; if ( theElements.empty() ) { if ( mesh->NbNodes() == 0 ) @@ -10629,12 +11178,7 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) type = types[i]; break; } - // put all elements in the vector - allElems.reserve( mesh->GetMeshInfo().NbElements( type )); elemIt = mesh->elementsIterator( type ); - while ( elemIt->more() ) - allElems.push_back( elemIt->next()); - elemIt = elemSetIterator( allElems ); } else { @@ -10676,8 +11220,7 @@ bool SMESH_MeshEditor::DoubleNodes( const TIDSortedElemSet& theElems, const TIDSortedElemSet& theNodesNot, const TIDSortedElemSet& theAffectedElems ) { - myLastCreatedElems.Clear(); - myLastCreatedNodes.Clear(); + ClearLastCreated(); if ( theElems.size() == 0 ) return false; @@ -10722,8 +11265,8 @@ bool SMESH_MeshEditor::doubleNodes(SMESHDS_Mesh* theMeshDS, for ( ; elemItr != theElems.end(); ++elemItr ) { const SMDS_MeshElement* anElem = *elemItr; - if (!anElem) - continue; + // if (!anElem) + // continue; // duplicate nodes to duplicate element bool isDuplicate = false; @@ -10777,8 +11320,7 @@ bool SMESH_MeshEditor::doubleNodes(SMESHDS_Mesh* theMeshDS, bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, const std::list< int >& theListOfModifiedElems ) { - myLastCreatedElems.Clear(); - myLastCreatedNodes.Clear(); + ClearLastCreated(); if ( theListOfNodes.size() == 0 ) return false; @@ -10794,8 +11336,7 @@ bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, std::list< int >::const_iterator aNodeIter; for ( aNodeIter = theListOfNodes.begin(); aNodeIter != theListOfNodes.end(); ++aNodeIter ) { - int aCurr = *aNodeIter; - SMDS_MeshNode* aNode = (SMDS_MeshNode*)aMeshDS->FindNode( aCurr ); + const SMDS_MeshNode* aNode = aMeshDS->FindNode( *aNodeIter ); if ( !aNode ) continue; @@ -10810,49 +11351,28 @@ bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, } } - // Create map of new nodes for modified elements + // Change nodes of elements - std::map< SMDS_MeshElement*, vector > anElemToNodes; + std::vector aNodeArr; std::list< int >::const_iterator anElemIter; - for ( anElemIter = theListOfModifiedElems.begin(); - anElemIter != theListOfModifiedElems.end(); ++anElemIter ) + for ( anElemIter = theListOfModifiedElems.begin(); + anElemIter != theListOfModifiedElems.end(); + anElemIter++ ) { - int aCurr = *anElemIter; - SMDS_MeshElement* anElem = (SMDS_MeshElement*)aMeshDS->FindElement( aCurr ); + const SMDS_MeshElement* anElem = aMeshDS->FindElement( *anElemIter ); if ( !anElem ) continue; - vector aNodeArr( anElem->NbNodes() ); - - SMDS_ElemIteratorPtr anIter = anElem->nodesIterator(); - int ind = 0; - while ( anIter->more() ) - { - SMDS_MeshNode* aCurrNode = (SMDS_MeshNode*)anIter->next(); - if ( aCurr && anOldNodeToNewNode.find( aCurrNode ) != anOldNodeToNewNode.end() ) - { - const SMDS_MeshNode* aNewNode = anOldNodeToNewNode[ aCurrNode ]; - aNodeArr[ ind++ ] = aNewNode; - } - else - aNodeArr[ ind++ ] = aCurrNode; - } - anElemToNodes[ anElem ] = aNodeArr; - } - - // Change nodes of elements - - std::map< SMDS_MeshElement*, vector >::iterator - anElemToNodesIter = anElemToNodes.begin(); - for ( ; anElemToNodesIter != anElemToNodes.end(); ++anElemToNodesIter ) - { - const SMDS_MeshElement* anElem = anElemToNodesIter->first; - vector aNodeArr = anElemToNodesIter->second; - if ( anElem ) + aNodeArr.assign( anElem->begin_nodes(), anElem->end_nodes() ); + for( size_t i = 0; i < aNodeArr.size(); ++i ) { - aMeshDS->ChangeElementNodes( anElem, &aNodeArr[ 0 ], anElem->NbNodes() ); + std::map< const SMDS_MeshNode*, const SMDS_MeshNode* >::iterator n2n = + anOldNodeToNewNode.find( aNodeArr[ i ]); + if ( n2n != anOldNodeToNewNode.end() ) + aNodeArr[ i ] = n2n->second; } + aMeshDS->ChangeElementNodes( anElem, &aNodeArr[ 0 ], aNodeArr.size() ); } return true; @@ -10874,8 +11394,8 @@ namespace { { gp_XYZ centerXYZ (0, 0, 0); SMDS_ElemIteratorPtr aNodeItr = theElem->nodesIterator(); - while (aNodeItr->more()) - centerXYZ += SMESH_TNodeXYZ(cast2Node( aNodeItr->next())); + while ( aNodeItr->more() ) + centerXYZ += SMESH_NodeXYZ( aNodeItr->next() ); gp_Pnt aPnt = centerXYZ / theElem->NbNodes(); theClassifier.Perform(aPnt, theTol); @@ -10930,9 +11450,9 @@ namespace { (select elements with a gravity center on the side given by faces normals). This mode (null shape) is faster, but works only when theElems are faces, with coherents orientations. The replicated nodes should be associated to affected elements. - \return groups of affected elements + \return true \sa DoubleNodeElemGroupsInRegion() - */ +*/ //================================================================================ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theElems, @@ -10942,94 +11462,7 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl { if ( theShape.IsNull() ) { - std::set alreadyCheckedNodes; - std::set alreadyCheckedElems; - std::set edgesToCheck; - alreadyCheckedNodes.clear(); - alreadyCheckedElems.clear(); - edgesToCheck.clear(); - - // --- iterates on elements to be replicated and get elements by back references from their nodes - - TIDSortedElemSet::const_iterator elemItr = theElems.begin(); - for ( ; elemItr != theElems.end(); ++elemItr ) - { - SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; - if (!anElem || (anElem->GetType() != SMDSAbs_Face)) - continue; - gp_XYZ normal; - SMESH_MeshAlgos::FaceNormal( anElem, normal, /*normalized=*/true ); - std::set nodesElem; - nodesElem.clear(); - SMDS_ElemIteratorPtr nodeItr = anElem->nodesIterator(); - while ( nodeItr->more() ) - { - const SMDS_MeshNode* aNode = cast2Node(nodeItr->next()); - nodesElem.insert(aNode); - } - std::set::iterator nodit = nodesElem.begin(); - for (; nodit != nodesElem.end(); nodit++) - { - const SMDS_MeshNode* aNode = *nodit; - if ( !aNode || theNodesNot.find(aNode) != theNodesNot.end() ) - continue; - if (alreadyCheckedNodes.find(aNode) != alreadyCheckedNodes.end()) - continue; - alreadyCheckedNodes.insert(aNode); - SMDS_ElemIteratorPtr backElemItr = aNode->GetInverseElementIterator(); - while ( backElemItr->more() ) - { - const SMDS_MeshElement* curElem = backElemItr->next(); - if (alreadyCheckedElems.find(curElem) != alreadyCheckedElems.end()) - continue; - if (theElems.find(curElem) != theElems.end()) - continue; - alreadyCheckedElems.insert(curElem); - double x=0, y=0, z=0; - int nb = 0; - SMDS_ElemIteratorPtr nodeItr2 = curElem->nodesIterator(); - while ( nodeItr2->more() ) - { - const SMDS_MeshNode* anotherNode = cast2Node(nodeItr2->next()); - x += anotherNode->X(); - y += anotherNode->Y(); - z += anotherNode->Z(); - nb++; - } - gp_XYZ p; - p.SetCoord( x/nb -aNode->X(), - y/nb -aNode->Y(), - z/nb -aNode->Z() ); - if (normal*p > 0) - { - theAffectedElems.insert( curElem ); - } - else if (curElem->GetType() == SMDSAbs_Edge) - edgesToCheck.insert(curElem); - } - } - } - // --- add also edges lying on the set of faces (all nodes in alreadyCheckedNodes) - std::set::iterator eit = edgesToCheck.begin(); - for( ; eit != edgesToCheck.end(); eit++) - { - bool onside = true; - const SMDS_MeshElement* anEdge = *eit; - SMDS_ElemIteratorPtr nodeItr = anEdge->nodesIterator(); - while ( nodeItr->more() ) - { - const SMDS_MeshNode* aNode = cast2Node(nodeItr->next()); - if (alreadyCheckedNodes.find(aNode) == alreadyCheckedNodes.end()) - { - onside = false; - break; - } - } - if (onside) - { - theAffectedElems.insert(anEdge); - } - } + findAffectedElems( theElems, theAffectedElems ); } else { @@ -11050,9 +11483,7 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl TIDSortedElemSet::const_iterator elemItr = theElems.begin(); for ( ; elemItr != theElems.end(); ++elemItr ) { - SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; - if (!anElem) - continue; + SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; SMDS_ElemIteratorPtr nodeItr = anElem->nodesIterator(); while ( nodeItr->more() ) { @@ -11064,9 +11495,9 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl { const SMDS_MeshElement* curElem = backElemItr->next(); if ( curElem && theElems.find(curElem) == theElems.end() && - ( bsc3d.get() ? - isInside( curElem, *bsc3d, aTol ) : - isInside( curElem, *aFaceClassifier, aTol ))) + ( bsc3d.get() ? + isInside( curElem, *bsc3d, aTol ) : + isInside( curElem, *aFaceClassifier, aTol ))) theAffectedElems.insert( curElem ); } } diff --git a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx index 297a85d47..e9e235766 100644 --- a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx @@ -165,21 +165,23 @@ SMESHGUI_DuplicateNodesDlg::SMESHGUI_DuplicateNodesDlg( SMESHGUI* theModule ) mySelectButton3->setIcon(iconSelect); myLineEdit3 = new QLineEdit(myGroupArguments); myLineEdit3->setReadOnly(true); + myGenerateButton3 = new QPushButton(tr("GENERATE_GROUPS"), myGroupArguments); myCheckBox1 = new QCheckBox(tr("CONSTRUCT_NEW_GROUP_ELEMENTS"), myGroupArguments); myCheckBox2 = new QCheckBox(tr("CONSTRUCT_NEW_GROUP_NODES"), myGroupArguments); - aGroupArgumentsLayout->addWidget(myTextLabel1, 0, 0); - aGroupArgumentsLayout->addWidget(mySelectButton1, 0, 1); - aGroupArgumentsLayout->addWidget(myLineEdit1, 0, 2); - aGroupArgumentsLayout->addWidget(myTextLabel2, 1, 0); - aGroupArgumentsLayout->addWidget(mySelectButton2, 1, 1); - aGroupArgumentsLayout->addWidget(myLineEdit2, 1, 2); - aGroupArgumentsLayout->addWidget(myTextLabel3, 2, 0); - aGroupArgumentsLayout->addWidget(mySelectButton3, 2, 1); - aGroupArgumentsLayout->addWidget(myLineEdit3, 2, 2); - aGroupArgumentsLayout->addWidget(myCheckBox1, 3, 0); - aGroupArgumentsLayout->addWidget(myCheckBox2, 4, 0); + aGroupArgumentsLayout->addWidget(myTextLabel1, 0, 0); + aGroupArgumentsLayout->addWidget(mySelectButton1, 0, 1); + aGroupArgumentsLayout->addWidget(myLineEdit1, 0, 2, 1, 2); + aGroupArgumentsLayout->addWidget(myTextLabel2, 1, 0); + aGroupArgumentsLayout->addWidget(mySelectButton2, 1, 1); + aGroupArgumentsLayout->addWidget(myLineEdit2, 1, 2, 1, 2); + aGroupArgumentsLayout->addWidget(myTextLabel3, 2, 0); + aGroupArgumentsLayout->addWidget(mySelectButton3, 2, 1); + aGroupArgumentsLayout->addWidget(myLineEdit3, 2, 2); + aGroupArgumentsLayout->addWidget(myGenerateButton3,2, 3); + aGroupArgumentsLayout->addWidget(myCheckBox1, 3, 0); + aGroupArgumentsLayout->addWidget(myCheckBox2, 4, 0); aGroupArgumentsLayout->setRowStretch(5, 1); // Buttons @@ -226,6 +228,7 @@ SMESHGUI_DuplicateNodesDlg::SMESHGUI_DuplicateNodesDlg( SMESHGUI* theModule ) connect(mySelectButton1, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); connect(mySelectButton2, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); connect(mySelectButton3, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); + connect(myGenerateButton3, SIGNAL (clicked()), this, SLOT(onGenerate())); connect(myCheckBox2, SIGNAL(stateChanged(int)), SLOT(updateButtons())); @@ -302,20 +305,21 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) // Set text to the group of arguments and to the first two labels myGroupArguments->setTitle(tr("DUPLICATION_WITHOUT_ELEMS")); myTextLabel1->setText(tr("GROUP_NODES_TO_DUPLICATE")); - myTextLabel2->setText(tr("GROUP_NODES_TO_REPLACE")); + myTextLabel3->setText(tr("GROUP_NODES_TO_REPLACE")); myCheckBox1->hide(); myCheckBox2->show(); myCheckBox2->setText( tr("CONSTRUCT_NEW_GROUP_NODES")); - // Hide the third field - myTextLabel2->show(); - mySelectButton2->show(); - myLineEdit2->show(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); - + // Hide the 2nd field + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->show(); + mySelectButton3 ->show(); + myLineEdit3 ->show(); + myGenerateButton3->show(); + break; } case 1: @@ -331,13 +335,14 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox1->setText( tr("CONSTRUCT_NEW_GROUP_ELEMENTS")); myCheckBox2->setText( tr("CONSTRUCT_NEW_GROUP_NODES")); - // Show the third field - myTextLabel2->show(); - mySelectButton2->show(); - myLineEdit2->show(); - myTextLabel3->show(); - mySelectButton3->show(); - myLineEdit3->show(); + // Show the 2nd field + myTextLabel2 ->show(); + mySelectButton2 ->show(); + myLineEdit2 ->show(); + myTextLabel3 ->show(); + mySelectButton3 ->show(); + myLineEdit3 ->show(); + myGenerateButton3->show(); break; } @@ -352,12 +357,13 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox2->hide(); // Hide the second and the third field - myTextLabel2->hide(); - mySelectButton2->hide(); - myLineEdit2->hide(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->hide(); + mySelectButton3 ->hide(); + myLineEdit3 ->hide(); + myGenerateButton3->hide(); break; } @@ -373,12 +379,13 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox2->setText( tr("ON_ALL_BOUNDARIES")); // Hide the second and the third field - myTextLabel2->hide(); - mySelectButton2->hide(); - myLineEdit2->hide(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->hide(); + mySelectButton3 ->hide(); + myLineEdit3 ->hide(); + myGenerateButton3->hide(); break; } @@ -410,7 +417,7 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() QStringList anEntryList; try { - SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); + SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor(); switch ( operationMode ) { @@ -421,9 +428,9 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() for ( int i = 0; i < myGroups1.count(); i++ ) g1[i] = myGroups1[i]; SMESH::ListOfGroups_var g2 = new SMESH::ListOfGroups(); - g2->length( myGroups2.count() ); - for ( int i = 0; i < myGroups2.count(); i++ ) - g2[i] = myGroups2[i]; + g2->length( myGroups3.count() ); + for ( int i = 0; i < myGroups3.count(); i++ ) + g2[i] = myGroups3[i]; if ( toCreateNodeGroup ) { SMESH::SMESH_GroupBase_var aNewGroup = @@ -504,10 +511,10 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() SalomeApp_Tools::QtCatchCorbaException(S_ex); } catch ( const std::exception& exc ) { - INFOS( "Follow exception was cought:\n\t" << exc.what() ); + INFOS( "Follow exception was caught:\n\t" << exc.what() ); } catch (...) { - INFOS( "Unknown exception was cought !!!" ); + INFOS( "Unknown exception was caught !!!" ); } if (!result) { @@ -638,6 +645,9 @@ void SMESHGUI_DuplicateNodesDlg::updateButtons() bool isDataValid = isValid(); myButtonOk->setEnabled( isDataValid ); myButtonApply->setEnabled( isDataValid ); + + int operationMode = myGroupConstructors->checkedId(); + myGenerateButton3->setEnabled( operationMode <= 1 && !myGroups1.empty() ); } /*! @@ -690,6 +700,59 @@ void SMESHGUI_DuplicateNodesDlg::onDeactivate() } } +/*! + \brief SLOT called when Generate button is clicked +*/ +void SMESHGUI_DuplicateNodesDlg::onGenerate() +{ + if ( mySMESHGUI->isActiveStudyLocked() ) + return; + + SUIT_OverrideCursor aWaitCursor; + BusyLocker lock( myBusy ); + + try { + SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); + SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor(); + + SMESH::ListOfGroups_var g1 = new SMESH::ListOfGroups(); + g1->length( myGroups1.count() ); + for ( int i = 0; i < myGroups1.count(); i++ ) + g1[i] = myGroups1[i]; + SMESH::ListOfGroups_var g2 = new SMESH::ListOfGroups(); + g2->length( myGroups2.count() ); + for ( int i = 0; i < myGroups2.count(); i++ ) + g2[i] = myGroups2[i]; + + SMESH::ListOfGroups_var newGroups = + aMeshEditor->AffectedElemGroupsInRegion( g1, g2, GEOM::GEOM_Object::_nil() ); + + QString text; + switch ( newGroups->length() ) { + case 0: break; + case 1: text = SMESH::toQStr( newGroups[0]->GetName() ); break; + default: text = tr( "SMESH_OBJECTS_SELECTED" ).arg( newGroups->length() ); + } + myLineEdit3->setText( text ); + + myGroups3.clear(); + for ( CORBA::ULong i = 0; i < newGroups->length(); ++i ) + myGroups3 << SMESH::SMESH_GroupBase::_duplicate( newGroups[i] ); + } + catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } + catch ( const std::exception& exc ) { + INFOS( "Follow exception was caught:\n\t" << exc.what() ); + } + catch (...) { + INFOS( "Unknown exception was caught !!!" ); + } + + mySMESHGUI->updateObjBrowser(true); + updateButtons(); +} + /*! \brief Receive dialog enter events. Activates the dialog when the mouse cursor enters. diff --git a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h index 337638f87..feb0207ac 100644 --- a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h +++ b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h @@ -80,8 +80,8 @@ private slots: void onEditCurrentArgument(); void onSelectionChanged(); - void onDeactivate(); + void onGenerate(); void updateButtons(); @@ -97,6 +97,7 @@ private: QPushButton* mySelectButton1; QPushButton* mySelectButton2; QPushButton* mySelectButton3; + QPushButton* myGenerateButton3; QLineEdit* myLineEdit1; QLineEdit* myLineEdit2; QLineEdit* myLineEdit3; diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 31d955416..9ab185bdb 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -7212,6 +7212,10 @@ It is impossible to read point coordinates from file ON_ALL_BOUNDARIES On all boundaries + + GENERATE_GROUPS + Generate + SMESHGUI_Make2DFrom3DDlg diff --git a/src/SMESHUtils/SMESH_MeshAlgos.hxx b/src/SMESHUtils/SMESH_MeshAlgos.hxx index 1114bfe02..0bf9c49b5 100644 --- a/src/SMESHUtils/SMESH_MeshAlgos.hxx +++ b/src/SMESHUtils/SMESH_MeshAlgos.hxx @@ -154,6 +154,54 @@ namespace SMESH_MeshAlgos std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1, const SMDS_MeshElement* e2); + /*! + * \brief Mark elements given by SMDS_Iterator + */ + template< class ElemIter > + void MarkElems( ElemIter it, const bool isMarked ) + { + while ( it->more() ) it->next()->setIsMarked( isMarked ); + } + /*! + * \brief Mark elements given by std iterators + */ + template< class ElemIter > + void MarkElems( ElemIter it, ElemIter end, const bool isMarked ) + { + for ( ; it != end; ++it ) (*it)->setIsMarked( isMarked ); + } + /*! + * \brief Mark nodes of elements given by SMDS_Iterator + */ + template< class ElemIter > + void MarkElemNodes( ElemIter it, const bool isMarked, const bool markElem = false ) + { + if ( markElem ) + while ( it->more() ) { + const SMDS_MeshElement* e = it->next(); + e->setIsMarked( isMarked ); + MarkElems( e->nodesIterator(), isMarked ); + } + else + while ( it->more() ) + MarkElems( it->next()->nodesIterator(), isMarked ); + } + /*! + * \brief Mark elements given by std iterators + */ + template< class ElemIter > + void MarkElemNodes( ElemIter it, ElemIter end, const bool isMarked, const bool markElem = false ) + { + if ( markElem ) + for ( ; it != end; ++it ) { + (*it)->setIsMarked( isMarked ); + MarkElems( (*it)->nodesIterator(), isMarked ); + } + else + for ( ; it != end; ++it ) + MarkElems( (*it)->nodesIterator(), isMarked ); + } + /*! * \brief Return SMESH_NodeSearcher. The caller is responsible for deleteing it */ diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index 220e3d581..9ae41bf3d 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -740,15 +740,16 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand else if ( method == "MakeBoundaryElements") meshID = aCommand->GetResultValue(2); - if ( method.Search("MakeGroups") != -1 || - method == "ExtrusionAlongPathX" || - method == "ExtrusionAlongPathObjX" || - method == "DoubleNodeGroupNew" || - method == "DoubleNodeGroupsNew" || - method == "DoubleNodeElemGroupNew" || - method == "DoubleNodeElemGroupsNew"|| - method == "DoubleNodeElemGroup2New"|| - method == "DoubleNodeElemGroups2New" + if ( method.Search("MakeGroups") != -1 || + method == "ExtrusionAlongPathX" || + method == "ExtrusionAlongPathObjX" || + method == "DoubleNodeGroupNew" || + method == "DoubleNodeGroupsNew" || + method == "DoubleNodeElemGroupNew" || + method == "DoubleNodeElemGroupsNew" || + method == "DoubleNodeElemGroup2New" || + method == "DoubleNodeElemGroups2New" || + method == "AffectedElemGroupsInRegion" ) groups = aCommand->GetResultValue(); else if ( method == "MakeBoundaryMesh" ) @@ -2436,7 +2437,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand) "Scale","ScaleMakeMesh","RotateMakeMesh","RotateObjectMakeMesh","MakeBoundaryMesh", "MakeBoundaryElements", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms", "DoubleElements","DoubleNodes","DoubleNode","DoubleNodeGroup","DoubleNodeGroups", - "DoubleNodeElem","DoubleNodeElemInRegion","DoubleNodeElemGroup", + "DoubleNodeElem","DoubleNodeElemInRegion","DoubleNodeElemGroup","AffectedElemGroupsInRegion", "DoubleNodeElemGroupInRegion","DoubleNodeElemGroups","DoubleNodeElemGroupsInRegion", "DoubleNodesOnGroupBoundaries","CreateFlatElementsOnFacesGroups","CreateHoleSkin" ,"" }; // <- mark of the end diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index 1c93dc90a..b5a9d4f06 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -5546,10 +5546,7 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroup(SMESH::SMESH_GroupBase_ptr th if ( !CORBA::is_nil( theModifiedElems ) ) aModifiedElems = theModifiedElems->GetListOfID(); else - { aModifiedElems = new SMESH::long_array; - aModifiedElems->length( 0 ); - } TPythonDump pyDump; // suppress dump by the next line @@ -6262,12 +6259,9 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl { SMESH_TRY; SMESH::ListOfGroups_var aListOfGroups = new SMESH::ListOfGroups(); - bool isEdgeGroup = false; - bool isFaceGroup = false; - bool isVolumeGroup = false; - SMESH::SMESH_Group_var aNewEdgeGroup = myMesh_i->CreateGroup(SMESH::EDGE, "affectedEdges"); - SMESH::SMESH_Group_var aNewFaceGroup = myMesh_i->CreateGroup(SMESH::FACE, "affectedFaces"); - SMESH::SMESH_Group_var aNewVolumeGroup = myMesh_i->CreateGroup(SMESH::VOLUME, "affectedVolumes"); + SMESH::SMESH_Group_var aNewEdgeGroup = SMESH::SMESH_Group::_nil(); + SMESH::SMESH_Group_var aNewFaceGroup = SMESH::SMESH_Group::_nil(); + SMESH::SMESH_Group_var aNewVolumeGroup = SMESH::SMESH_Group::_nil(); initData(); @@ -6275,75 +6269,75 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl SMESHDS_Mesh* aMeshDS = getMeshDS(); TIDSortedElemSet anElems, aNodes; - listOfGroupToSet(theElems, aMeshDS, anElems, false); + bool isNodeGrp = theElems.length() ? theElems[0]->GetType() == SMESH::NODE : false; + listOfGroupToSet(theElems, aMeshDS, anElems, isNodeGrp); listOfGroupToSet(theNodesNot, aMeshDS, aNodes, true); TopoDS_Shape aShape = SMESH_Gen_i::GetSMESHGen()->GeomObjectToShape(theShape); TIDSortedElemSet anAffected; bool aResult = aMeshEditor.AffectedElemGroupsInRegion(anElems, aNodes, aShape, anAffected); - declareMeshModified( /*isReComputeSafe=*/ !aResult ); TPythonDump pyDump; - if (aResult) + if ( aResult && anAffected.size() > 0 ) { - int lg = anAffected.size(); SMESH::long_array_var volumeIds = new SMESH::long_array; - volumeIds->length(lg); - SMESH::long_array_var faceIds = new SMESH::long_array; - faceIds->length(lg); - SMESH::long_array_var edgeIds = new SMESH::long_array; - edgeIds->length(lg); + SMESH::long_array_var faceIds = new SMESH::long_array; + SMESH::long_array_var edgeIds = new SMESH::long_array; + volumeIds->length( anAffected.size() ); + faceIds ->length( anAffected.size() ); + edgeIds ->length( anAffected.size() ); + int ivol = 0; int iface = 0; int iedge = 0; - TIDSortedElemSet::const_iterator eIt = anAffected.begin(); for (; eIt != anAffected.end(); ++eIt) { const SMDS_MeshElement* anElem = *eIt; - if (!anElem) - continue; int elemId = anElem->GetID(); - if (myMesh->GetElementType(elemId, true) == SMDSAbs_Volume) - volumeIds[ivol++] = elemId; - else if (myMesh->GetElementType(elemId, true) == SMDSAbs_Face) - faceIds[iface++] = elemId; - else if (myMesh->GetElementType(elemId, true) == SMDSAbs_Edge) - edgeIds[iedge++] = elemId; + switch ( anElem->GetType() ) { + case SMDSAbs_Volume: volumeIds[ivol++] = elemId; break; + case SMDSAbs_Face: faceIds[iface++] = elemId; break; + case SMDSAbs_Edge: edgeIds[iedge++] = elemId; break; + default:; + } } volumeIds->length(ivol); faceIds->length(iface); edgeIds->length(iedge); - aNewVolumeGroup->Add(volumeIds); - aNewFaceGroup->Add(faceIds); - aNewEdgeGroup->Add(edgeIds); - isVolumeGroup = (aNewVolumeGroup->Size() > 0); - isFaceGroup = (aNewFaceGroup->Size() > 0); - isEdgeGroup = (aNewEdgeGroup->Size() > 0); + int nbGroups = 0; + if ( ivol > 0 ) + { + aNewVolumeGroup = myMesh_i->CreateGroup(SMESH::VOLUME, + generateGroupName("affectedVolumes").c_str()); + aNewVolumeGroup->Add(volumeIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewVolumeGroup._retn(); + } + if ( iface > 0 ) + { + aNewFaceGroup = myMesh_i->CreateGroup(SMESH::FACE, + generateGroupName("affectedFaces").c_str()); + aNewFaceGroup->Add(faceIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewFaceGroup._retn(); + } + if ( iedge > 0 ) + { + aNewEdgeGroup = myMesh_i->CreateGroup(SMESH::EDGE, + generateGroupName("affectedEdges").c_str()); + aNewEdgeGroup->Add(edgeIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewEdgeGroup._retn(); + } } - int nbGroups = 0; - if (isEdgeGroup) nbGroups++; - if (isFaceGroup) nbGroups++; - if (isVolumeGroup) nbGroups++; - aListOfGroups->length(nbGroups); - - int i = 0; - if (isEdgeGroup) aListOfGroups[i++] = aNewEdgeGroup._retn(); - if (isFaceGroup) aListOfGroups[i++] = aNewFaceGroup._retn(); - if (isVolumeGroup) aListOfGroups[i++] = aNewVolumeGroup._retn(); - // Update Python script - pyDump << "[ "; - if (isEdgeGroup) pyDump << aNewEdgeGroup << ", "; - if (isFaceGroup) pyDump << aNewFaceGroup << ", "; - if (isVolumeGroup) pyDump << aNewVolumeGroup << ", "; - pyDump << "] = "; - pyDump << this << ".AffectedElemGroupsInRegion( " + pyDump << aListOfGroups << " = " << this << ".AffectedElemGroupsInRegion( " << &theElems << ", " << &theNodesNot << ", " << theShape << " )"; return aListOfGroups._retn(); @@ -6355,7 +6349,7 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl //================================================================================ /*! \brief Generated skin mesh (containing 2D cells) from 3D mesh - The created 2D mesh elements based on nodes of free faces of boundary volumes + The created 2D mesh elements based on nodes of free faces of boundary volumes \return TRUE if operation has been completed successfully, FALSE otherwise */ //================================================================================ diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index f2bbcaccc..bd5cde5a7 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -4904,12 +4904,12 @@ class Mesh: ## Identify the elements that will be affected by node duplication (actual duplication is not performed. # This method is the first step of DoubleNodeElemGroupsInRegion. - # @param theElems - list of groups of elements (edges or faces) to be replicated + # @param theElems - list of groups of nodes or elements (edges or faces) to be replicated # @param theNodesNot - list of groups of nodes not to replicated # @param theShape - shape to detect affected elements (element which geometric center # located on or inside shape). # The replicated nodes should be associated to affected elements. - # @return groups of affected elements + # @return groups of affected elements in order: volumes, faces, edges # @ingroup l2_modif_duplicat def AffectedElemGroupsInRegion(self, theElems, theNodesNot, theShape): return self.editor.AffectedElemGroupsInRegion(theElems, theNodesNot, theShape) -- 2.39.2