Salome HOME
0020945: EDF 1465 SMESH: create a new mesh from a selected group or from selected...
authoreap <eap@opencascade.com>
Tue, 30 Nov 2010 10:41:04 +0000 (10:41 +0000)
committereap <eap@opencascade.com>
Tue, 30 Nov 2010 10:41:04 +0000 (10:41 +0000)
   make AddElement() create SMDSAbs_Node element as well

src/SMESH/SMESH_MeshEditor.cxx

index b802540f09405bf6c1902001f5da04a41d31a499..fd3fbba38e5db712cba2dba0a970048bc419e75a 100644 (file)
@@ -125,19 +125,7 @@ SMESH_MeshEditor::AddElement(const vector<const SMDS_MeshNode*> & node,
   int nbnode = node.size();
   SMESHDS_Mesh* mesh = GetMeshDS();
   switch ( type ) {
-  case SMDSAbs_0DElement:
-    if ( nbnode == 1 )
-      if ( ID ) e = mesh->Add0DElementWithID(node[0], ID);
-      else      e = mesh->Add0DElement      (node[0] );
-    break;
-  case SMDSAbs_Edge:
-    if ( nbnode == 2 )
-      if ( ID ) e = mesh->AddEdgeWithID(node[0], node[1], ID);
-      else      e = mesh->AddEdge      (node[0], node[1] );
-    else if ( nbnode == 3 )
-      if ( ID ) e = mesh->AddEdgeWithID(node[0], node[1], node[2], ID);
-      else      e = mesh->AddEdge      (node[0], node[1], node[2] );
-    break;
+
   case SMDSAbs_Face:
     if ( !isPoly ) {
       if      (nbnode == 3)
@@ -161,6 +149,7 @@ SMESH_MeshEditor::AddElement(const vector<const SMDS_MeshNode*> & node,
       else      e = mesh->AddPolygonalFace      (node    );
     }
     break;
+
   case SMDSAbs_Volume:
     if ( !isPoly ) {
       if      (nbnode == 4)
@@ -218,6 +207,29 @@ SMESH_MeshEditor::AddElement(const vector<const SMDS_MeshNode*> & node,
                                             node[12],node[13],node[14],node[15],
                                             node[16],node[17],node[18],node[19] );
     }
+    break;
+
+  case SMDSAbs_Edge:
+    if ( nbnode == 2 )
+      if ( ID ) e = mesh->AddEdgeWithID(node[0], node[1], ID);
+      else      e = mesh->AddEdge      (node[0], node[1] );
+    else if ( nbnode == 3 )
+      if ( ID ) e = mesh->AddEdgeWithID(node[0], node[1], node[2], ID);
+      else      e = mesh->AddEdge      (node[0], node[1], node[2] );
+    break;
+
+  case SMDSAbs_0DElement:
+    if ( nbnode == 1 )
+      if ( ID ) e = mesh->Add0DElementWithID(node[0], ID);
+      else      e = mesh->Add0DElement      (node[0] );
+    break;
+
+  case SMDSAbs_Node:
+    if ( ID ) e = mesh->AddNodeWithID(node[0]->X(), node[0]->Y(), node[0]->Z(), ID);
+    else      e = mesh->AddNode      (node[0]->X(), node[0]->Y(), node[0]->Z());
+    break;
+
+  default:;
   }
   return e;
 }