]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
0021347: [CEA 497] Visualisation into SMESH and VISU of hexagonal prism cells (MED_OC...
authoreap <eap@opencascade.com>
Fri, 16 Dec 2011 09:30:53 +0000 (09:30 +0000)
committereap <eap@opencascade.com>
Fri, 16 Dec 2011 09:30:53 +0000 (09:30 +0000)
0021380: EDF 1937 SMESH: Take into account QUAD9 and HEXA27

In CopyMesh(), copy free nodes as well

src/SMESH_I/SMESH_Gen_i.cxx

index fe51eac073a890124681924732cabf88f7aeb93d..7112663e507c22d77b8cc9d5b37fc2306611be34 100644 (file)
@@ -2436,12 +2436,13 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
 
   // 3. Get elements to copy
 
-  SMDS_ElemIteratorPtr srcElemIt;
+  SMDS_ElemIteratorPtr srcElemIt; SMDS_NodeIteratorPtr srcNodeIt;
   TIDSortedElemSet srcElems;
   SMESH::array_of_ElementType_var srcElemTypes = meshPart->GetTypes();
   if ( SMESH::DownCast<SMESH_Mesh_i*>( meshPart ))
   {
     srcElemIt = srcMeshDS->elementsIterator();
+    srcNodeIt = srcMeshDS->nodesIterator();
   }
   else
   {
@@ -2515,6 +2516,23 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
     }
   }
 
+  // 4(b). Copy free nodes
+
+  if ( srcNodeIt && srcMeshDS->NbNodes() != newMeshDS->NbNodes() )
+  {
+    while ( srcNodeIt->more() )
+    {
+      nSrc = srcNodeIt->next();
+      if ( nSrc->NbInverseElements() == 0 )
+      {
+        if ( toKeepIDs )
+          nTgt = newMeshDS->AddNodeWithID( nSrc->X(), nSrc->Y(), nSrc->Z(), nSrc->GetID());
+        else
+          n2nMap[ nSrc ] = newMeshDS->AddNode( nSrc->X(), nSrc->Y(), nSrc->Z() );
+      }
+    }
+  }
+
   // 5. Copy groups
 
   int nbNewGroups = 0;