virtual int FindNearPoint(const gp_Pnt& point,
const double tolerance,
std::vector< const SMDS_MeshNode* >& foundNodes) = 0;
+ virtual ~SMESH_NodeSearcher() {}
};
//=======================================================================
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
*/
CoincidentFreeBorders & foundFreeBordes);
-} // SMESH_MeshAlgos
+ /*!
+ * \brief Find nodes whose merge makes the element invalid
+ *
+ * (Implemented in SMESH_DeMerge.cxx)
+ */
+ SMESHUtils_EXPORT
+ void DeMerge(const SMDS_MeshElement* elem,
+ std::vector< const SMDS_MeshNode* >& newNodes,
+ std::vector< const SMDS_MeshNode* >& noMergeNodes);
+
+} // namespace SMESH_MeshAlgos
#endif