-//================================================================================
-/*!
- * \brief Update myLastCreated* or myPreviewData
- * \param anEditor - it contains last modification results
- */
-//================================================================================
-
-void SMESH_MeshEditor_i::storeResult(::SMESH_MeshEditor& anEditor)
-{
- if ( myPreviewMode ) { // --- MeshPreviewStruct filling ---
-
- list<int> aNodesConnectivity;
- typedef map<int, int> TNodesMap;
- TNodesMap nodesMap;
-
- TPreviewMesh * aPreviewMesh = dynamic_cast< TPreviewMesh* >( anEditor.GetMesh() );
- SMDSAbs_ElementType previewType = aPreviewMesh->myPreviewType;
-
- SMESHDS_Mesh* aMeshDS = anEditor.GetMeshDS();
- int nbEdges = aMeshDS->NbEdges();
- int nbFaces = aMeshDS->NbFaces();
- int nbVolum = aMeshDS->NbVolumes();
- switch ( previewType ) {
- case SMDSAbs_Edge : nbFaces = nbVolum = 0; break;
- case SMDSAbs_Face : nbEdges = nbVolum = 0; break;
- case SMDSAbs_Volume: nbEdges = nbFaces = 0; break;
- default:;
- }
- myPreviewData->nodesXYZ.length(aMeshDS->NbNodes());
- myPreviewData->elementTypes.length(nbEdges + nbFaces + nbVolum);
- int i = 0, j = 0;
- SMDS_ElemIteratorPtr itMeshElems = aMeshDS->elementsIterator();
-
- while ( itMeshElems->more() ) {
- const SMDS_MeshElement* aMeshElem = itMeshElems->next();
- if ( previewType != SMDSAbs_All && aMeshElem->GetType() != previewType )
- continue;
-
- SMDS_ElemIteratorPtr itElemNodes = aMeshElem->nodesIterator();
- while ( itElemNodes->more() ) {
- const SMDS_MeshNode* aMeshNode =
- static_cast<const SMDS_MeshNode*>( itElemNodes->next() );
- int aNodeID = aMeshNode->GetID();
- TNodesMap::iterator anIter = nodesMap.find(aNodeID);
- if ( anIter == nodesMap.end() ) {
- // filling the nodes coordinates
- myPreviewData->nodesXYZ[j].x = aMeshNode->X();
- myPreviewData->nodesXYZ[j].y = aMeshNode->Y();
- myPreviewData->nodesXYZ[j].z = aMeshNode->Z();
- anIter = nodesMap.insert( make_pair(aNodeID, j) ).first;
- j++;
- }
- aNodesConnectivity.push_back(anIter->second);
- }
-
- // filling the elements types
- SMDSAbs_ElementType aType;
- bool isPoly;
- /*if (aMeshElem->GetType() == SMDSAbs_Volume) {
- aType = SMDSAbs_Node;
- isPoly = false;
- }
- else*/ {
- aType = aMeshElem->GetType();
- isPoly = aMeshElem->IsPoly();
- }
-
- myPreviewData->elementTypes[i].SMDS_ElementType = (SMESH::ElementType) aType;
- myPreviewData->elementTypes[i].isPoly = isPoly;
- myPreviewData->elementTypes[i].nbNodesInElement = aMeshElem->NbNodes();
- i++;
-
- }
- myPreviewData->nodesXYZ.length( j );
-
- // filling the elements connectivities
- list<int>::iterator aConnIter = aNodesConnectivity.begin();
- myPreviewData->elementConnectivities.length(aNodesConnectivity.size());
- for( int i = 0; aConnIter != aNodesConnectivity.end(); aConnIter++, i++ )
- myPreviewData->elementConnectivities[i] = *aConnIter;
-
- return;
- }
-
- {
- // append new nodes into myLastCreatedNodes
- const SMESH_SequenceOfElemPtr& aSeq = anEditor.GetLastCreatedNodes();
- int j = myLastCreatedNodes->length();
- int newLen = j + aSeq.Length();
- myLastCreatedNodes->length( newLen );
- for(int i=0; j<newLen; i++,j++)
- myLastCreatedNodes[j] = aSeq.Value(i+1)->GetID();
- }
- {
- // append new elements into myLastCreatedElems
- const SMESH_SequenceOfElemPtr& aSeq = anEditor.GetLastCreatedElems();
- int j = myLastCreatedElems->length();
- int newLen = j + aSeq.Length();
- myLastCreatedElems->length( newLen );
- for(int i=0; j<newLen; i++,j++)
- myLastCreatedElems[j] = aSeq.Value(i+1)->GetID();
- }
-}
-
-//================================================================================
-/*!
- * Return data of mesh edition preview
- */
-//================================================================================
-
-SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
-{
- return myPreviewData._retn();
-}
-
-//================================================================================
-/*!
- * \brief Returns list of it's IDs of created nodes
- * \retval SMESH::long_array* - list of node ID
- */
-//================================================================================
-
-SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedNodes()
-{
- return myLastCreatedNodes._retn();
-}
-
-//================================================================================
-/*!
- * \brief Returns list of it's IDs of created elements
- * \retval SMESH::long_array* - list of elements' ID
- */
-//================================================================================
-
-SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedElems()
-{
- return myLastCreatedElems._retn();
-}
-