Add ConvertFromQuadratic()

This commit is contained in:
eap 2006-04-26 12:17:48 +00:00
parent d346815d09
commit 3b932ed49d
2 changed files with 61 additions and 0 deletions

View File

@ -6023,6 +6023,62 @@ void SMESH_MeshEditor::ConvertToQuadratic(const bool theForce3d)
delete aHelper;
}
//=======================================================================
//function : ConvertFromQuadratic
//purpose :
//=======================================================================
bool SMESH_MeshEditor::ConvertFromQuadratic()
{
SMESHDS_Mesh* meshDS = GetMeshDS();
SMDS_ElemIteratorPtr aElemItr = meshDS->elementsIterator();
while(aElemItr->more())
{
const SMDS_MeshElement* elem = aElemItr->next();
if(elem)
{
if(!elem->IsQuadratic())
continue;
int id = elem->GetID();
int nbNodes = elem->NbNodes();
vector<const SMDS_MeshNode *> aNds (nbNodes);
for(int i = 0; i < nbNodes; i++)
{
const SMDS_MeshNode* n = elem->GetNode(i);
if( elem->IsMediumNode( n ) )
meshDS->SMDS_Mesh::RemoveFreeElement( n );
else
aNds[i] = n;
}
SMDSAbs_ElementType aType = elem->GetType();
RemoveElemFromGroups (elem, meshDS);
meshDS->SMDS_Mesh::RemoveFreeElement(elem);
SMDS_MeshElement * NewElem = 0;
switch(aType)
{
case SMDSAbs_Edge:
NewElem = meshDS->AddEdgeWithID( ,id );
break;
case SMDSAbs_Face:
if( nbNds==3 )NewElem = meshDS->AddFaceWithID( ,id );
if( nbNds==4 )NewElem = meshDS->AddFaceWithID( ,id );
break;
case SMDSAbs_Volume:
break;
default:
break;
}
AddToSameGroups(NewElem, elem, meshDS);
}
}
return true;
}
//=======================================================================
//function : SewSideElements
//purpose :

View File

@ -344,6 +344,11 @@ class SMESH_MeshEditor {
//converts all mesh to quadratic one, deletes old elements, replacing
//them with quadratic ones with the same id.
bool ConvertFromQuadratic();
//converts all mesh from quadratic to ordinary ones, deletes old quadratic elements, replacing
//them with ordinary mesh elements with the same id.
// static int SortQuadNodes (const SMDS_Mesh * theMesh,
// int theNodeIds[] );
// // Set 4 nodes of a quadrangle face in a good order.