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 :
//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.