From 22f20048e0fb430a15d242af597ec57a904fbb19 Mon Sep 17 00:00:00 2001 From: san Date: Fri, 21 Oct 2005 07:58:14 +0000 Subject: [PATCH] Temporarily rolling back the last integration --- src/SMESH/SMESH_MeshEditor.cxx | 65 ++++++++++------------------------ src/SMESH/SMESH_MeshEditor.hxx | 53 ++++++--------------------- 2 files changed, 28 insertions(+), 90 deletions(-) diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index b73f854d2..846a3cc31 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -2410,45 +2410,14 @@ void SMESH_MeshEditor::RotationSweep(set & theElems, makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes, theElems ); } - - -//======================================================================= -//function : CreateNode -//purpose : -//======================================================================= -const SMDS_MeshNode* SMESH_MeshEditor::CreateNode(const double x, - const double y, - const double z, - const double tolnode) -{ - gp_Pnt P1(x,y,z); - SMESHDS_Mesh * aMesh = myMesh->GetMeshDS(); - // try to search in sequence of existing nodes - SMDS_NodeIteratorPtr itn = aMesh->nodesIterator(); - while(itn->more()) { - const SMDS_MeshNode* aN = static_cast (itn->next()); - gp_Pnt P2(aN->X(),aN->Y(),aN->Z()); - if(P1.Distance(P2)AddNode(x,y,z); - return NewNode; -} - - //======================================================================= //function : ExtrusionSweep //purpose : //======================================================================= -void SMESH_MeshEditor::ExtrusionSweep - (set & theElems, - const gp_Vec& theStep, - const int theNbSteps, - TElemOfElemListMap& newElemsMap, - const int theFlags, - const double theTolerance) +void SMESH_MeshEditor::ExtrusionSweep(set & theElems, + const gp_Vec& theStep, + const int theNbSteps) { gp_Trsf aTrsf; aTrsf.SetTranslation( theStep ); @@ -2457,7 +2426,7 @@ void SMESH_MeshEditor::ExtrusionSweep TNodeOfNodeListMap mapNewNodes; TElemOfVecOfNnlmiMap mapElemNewNodes; - //TElemOfElemListMap newElemsMap; + TElemOfElemListMap newElemsMap; // loop on theElems set< const SMDS_MeshElement* >::iterator itElem; @@ -2488,25 +2457,27 @@ void SMESH_MeshEditor::ExtrusionSweep double coord[] = { node->X(), node->Y(), node->Z() }; for ( int i = 0; i < theNbSteps; i++ ) { aTrsf.Transforms( coord[0], coord[1], coord[2] ); - if( theFlags & EXTRUSION_FLAG_SEW ) { - const SMDS_MeshNode * newNode = CreateNode(coord[0], coord[1], - coord[2], theTolerance); - listNewNodes.push_back( newNode ); - } - else { - const SMDS_MeshNode * newNode = aMesh->AddNode( coord[0], coord[1], coord[2] ); - listNewNodes.push_back( newNode ); - } + const SMDS_MeshNode * newNode = aMesh->AddNode( coord[0], coord[1], coord[2] ); + listNewNodes.push_back( newNode ); } } newNodesItVec.push_back( nIt ); } // make new elements sweepElement( aMesh, elem, newNodesItVec, newElemsMap[elem] ); + + // fill history + SMESH_SequenceOfElemPtr SeqNewME; + list tmpList = newElemsMap[elem]; + for(list::iterator ite = tmpList.begin(); + ite!=tmpList.end(); ite++) { + SeqNewME.Append(*ite); + } + myExtrusionHistory.Bind(elem,SeqNewME); + // end fill history + } - if( theFlags & EXTRUSION_FLAG_BOUNDARY ) { - makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes, theElems ); - } + makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes, theElems ); } //======================================================================= diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index ea02a7a7c..6c4dc76c8 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -35,9 +35,8 @@ #include #include - -typedef map > TElemOfElemListMap; +//#include +#include class SMDS_MeshElement; class SMDS_MeshFace; @@ -143,46 +142,9 @@ class SMESH_MeshEditor { // Generate new elements by rotation of theElements around theAxis // by theAngle by theNbSteps - /*! - * Auxilary flag for advanced extrusion. - * BOUNDARY: create or not boundary for result of extrusion - * SEW: try to use existing nodes or create new nodes in any case - */ - enum ExtrusionFlags { - EXTRUSION_FLAG_BOUNDARY = 0x01, - EXTRUSION_FLAG_SEW = 0x02 - }; - - /*! - * Create new node in the mesh with given coordinates - * (auxilary for advanced extrusion) - */ - const SMDS_MeshNode* CreateNode(const double x, - const double y, - const double z, - const double tolnode); - - /*! - * Generate new elements by extrusion of theElements - * by theStep by theNbSteps - * param theHistory returns history of extrusion - * param theFlags set flags for performing extrusion (see description - * of enum ExtrusionFlags for additional information) - * param theTolerance - uses for comparing locations of nodes if flag - * EXTRUSION_FLAG_SEW is set - */ - //void ExtrusionSweep (std::set & theElements, - // const gp_Vec& theStep, - // const int theNbSteps); - void ExtrusionSweep - (set & theElems, - const gp_Vec& theStep, - const int theNbSteps, - TElemOfElemListMap& newElemsMap, - //SMESH_DataMapOfElemPtrSequenceOfElemPtr& theHistory, - const int theFlags = EXTRUSION_FLAG_BOUNDARY, - const double theTolerance = 1.e-6); - + void ExtrusionSweep (std::set & theElements, + const gp_Vec& theStep, + const int theNbSteps); // Generate new elements by extrusion of theElements // by theStep by theNbSteps @@ -344,10 +306,15 @@ class SMESH_MeshEditor { SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); } + const SMESH_DataMapOfElemPtrSequenceOfElemPtr& GetExtrusionHistory() const + { return myExtrusionHistory; } + private: SMESH_Mesh * myMesh; + SMESH_DataMapOfElemPtrSequenceOfElemPtr myExtrusionHistory; + }; #endif -- 2.30.2