Temporarily rolling back the last integration

This commit is contained in:
san 2005-10-21 07:58:14 +00:00
parent 423f097f5e
commit 22f20048e0
2 changed files with 28 additions and 90 deletions

View File

@ -2410,45 +2410,14 @@ void SMESH_MeshEditor::RotationSweep(set<const SMDS_MeshElement*> & 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<const SMDS_MeshNode*> (itn->next());
gp_Pnt P2(aN->X(),aN->Y(),aN->Z());
if(P1.Distance(P2)<tolnode)
return aN;
}
// create new node and return it
const SMDS_MeshNode* NewNode = aMesh->AddNode(x,y,z);
return NewNode;
}
//=======================================================================
//function : ExtrusionSweep
//purpose :
//=======================================================================
void SMESH_MeshEditor::ExtrusionSweep
(set<const SMDS_MeshElement*> & theElems,
const gp_Vec& theStep,
const int theNbSteps,
TElemOfElemListMap& newElemsMap,
const int theFlags,
const double theTolerance)
void SMESH_MeshEditor::ExtrusionSweep(set<const SMDS_MeshElement*> & 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<const SMDS_MeshElement*> tmpList = newElemsMap[elem];
for(list<const SMDS_MeshElement*>::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 );
}
//=======================================================================

View File

@ -35,9 +35,8 @@
#include <list>
#include <map>
typedef map<const SMDS_MeshElement*,
list<const SMDS_MeshElement*> > TElemOfElemListMap;
//#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
#include <SMESH_DataMapOfElemPtrSequenceOfElemPtr.hxx>
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<const SMDS_MeshElement*> & theElements,
// const gp_Vec& theStep,
// const int theNbSteps);
void ExtrusionSweep
(set<const SMDS_MeshElement*> & 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<const SMDS_MeshElement*> & 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