const TElementLab& aLabel = anIter->first;
const TRecord& aRec = anIter->second;
if(IsBeam(aRec.fe_descriptor_id)) {
- if((aRec.fe_descriptor_id == 11) || (aRec.fe_descriptor_id == 21)) {
- // edge with two nodes
+ switch ( aRec.node_labels.size() ) {
+ case 2: // edge with two nodes
anElement = myMesh->AddEdgeWithID(aRec.node_labels[0],
aRec.node_labels[1],
aLabel);
- }
- else {
- // quadratic edge (with 3 nodes)
+ break;
+ case 3: // quadratic edge (with 3 nodes)
anElement = myMesh->AddEdgeWithID(aRec.node_labels[0],
- aRec.node_labels[1],
aRec.node_labels[2],
+ aRec.node_labels[1],
aLabel);
}
}
case 42: // Plane Stress Quadratic Triangle - TRI6
case 92: // Thin Shell Quadratic Triangle - TRI6
anElement = myMesh->AddFaceWithID(aRec.node_labels[0],
- aRec.node_labels[1],
aRec.node_labels[2],
- aRec.node_labels[3],
aRec.node_labels[4],
+ aRec.node_labels[1],
+ aRec.node_labels[3],
aRec.node_labels[5],
aLabel);
break;
case 45: // Plane Stress Quadratic Quadrilateral - QUAD8
case 95: // Thin Shell Quadratic Quadrilateral - QUAD8
anElement = myMesh->AddFaceWithID(aRec.node_labels[0],
- aRec.node_labels[1],
aRec.node_labels[2],
- aRec.node_labels[3],
aRec.node_labels[4],
- aRec.node_labels[5],
aRec.node_labels[6],
+ aRec.node_labels[1],
+ aRec.node_labels[3],
+ aRec.node_labels[5],
aRec.node_labels[7],
aLabel);
break;
case 118: // Solid Quadratic Tetrahedron - TET10
anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
- aRec.node_labels[2],
- aRec.node_labels[1],
- aRec.node_labels[3],
- aRec.node_labels[6],
- aRec.node_labels[5],
aRec.node_labels[4],
- aRec.node_labels[7],
+ aRec.node_labels[2],
+
aRec.node_labels[9],
+
+ aRec.node_labels[5],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[6],
aRec.node_labels[8],
+ aRec.node_labels[7],
aLabel);
break;
case 113: // Solid Quadratic Prism - PRISM15
anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[4],
aRec.node_labels[2],
- aRec.node_labels[1],
- aRec.node_labels[3],
+
+ aRec.node_labels[9],
+ aRec.node_labels[13],
+ aRec.node_labels[11],
+
aRec.node_labels[5],
- aRec.node_labels[4],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[14],
+ aRec.node_labels[12],
+ aRec.node_labels[10],
+
+ aRec.node_labels[6],
aRec.node_labels[8],
aRec.node_labels[7],
- aRec.node_labels[6],
- aRec.node_labels[11],
- aRec.node_labels[10],
- aRec.node_labels[9],
- aRec.node_labels[12],
- aRec.node_labels[14],
- aRec.node_labels[13],
aLabel);
break;
case 114: // pyramid of 13 nodes (quadratic) - PIRA13
anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
- aRec.node_labels[3],
- aRec.node_labels[2],
- aRec.node_labels[1],
+ aRec.node_labels[6],
aRec.node_labels[4],
- aRec.node_labels[8],
+ aRec.node_labels[2],
aRec.node_labels[7],
- aRec.node_labels[6],
aRec.node_labels[5],
- aRec.node_labels[9],
- aRec.node_labels[12],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[8],
aRec.node_labels[11],
aRec.node_labels[10],
+ aRec.node_labels[9],
+ aRec.node_labels[12],
aLabel);
break;
for(; anIter != aDataSet2417.end(); anIter++){
const TGroupId& aLabel = anIter->first;
const TRecord& aRec = anIter->second;
- //SMDS_MeshGroup* aNewGroup = (SMDS_MeshGroup*) myGroup->AddSubGroup(SMDSAbs_Edge);
- //myGroupNames.insert(TGroupNamesMap::value_type(aNewGroup, aRec.GroupName));
- //myGroupId.insert(TGroupIdMap::value_type(aNewGroup, aLabel));
int aNodesNb = aRec.NodeList.size();
+ int aElementsNb = aRec.ElementList.size();
+
+ bool useSuffix = ((aNodesNb > 0) && (aElementsNb > 0));
int i;
if (aNodesNb > 0) {
SMDS_MeshGroup* aNodesGroup = (SMDS_MeshGroup*) myGroup->AddSubGroup(SMDSAbs_Node);
- std::string aGrName = aRec.GroupName + "_Nodes";
+ std::string aGrName = (useSuffix) ? aRec.GroupName + "_Nodes" : aRec.GroupName;
myGroupNames.insert(TGroupNamesMap::value_type(aNodesGroup, aGrName));
myGroupId.insert(TGroupIdMap::value_type(aNodesGroup, aLabel));
aNodesGroup->Add(aNode);
}
}
- int aElementsNb = aRec.ElementList.size();
if (aElementsNb > 0){
SMDS_MeshGroup* aEdgesGroup = 0;
SMDS_MeshGroup* aFacesGroup = 0;
+ SMDS_MeshGroup* aVolumeGroup = 0;
+ bool createdGroup = false;
for (i = 0; i < aElementsNb; i++) {
const SMDS_MeshElement* aElement = myMesh->FindElement(aRec.ElementList[i]);
case SMDSAbs_Edge:
if (!aEdgesGroup) {
aEdgesGroup = (SMDS_MeshGroup*) myGroup->AddSubGroup(SMDSAbs_Edge);
- std::string aEdgesGrName = aRec.GroupName + "_Edges";
+ if (!useSuffix && createdGroup) useSuffix = true;
+ std::string aEdgesGrName = (useSuffix) ? aRec.GroupName + "_Edges" : aRec.GroupName;
myGroupNames.insert(TGroupNamesMap::value_type(aEdgesGroup, aEdgesGrName));
myGroupId.insert(TGroupIdMap::value_type(aEdgesGroup, aLabel));
+ createdGroup = true;
}
aEdgesGroup->Add(aElement);
break;
case SMDSAbs_Face:
if (!aFacesGroup) {
aFacesGroup = (SMDS_MeshGroup*) myGroup->AddSubGroup(SMDSAbs_Face);
- std::string aFacesGrName = aRec.GroupName + "_Faces";
+ if (!useSuffix && createdGroup) useSuffix = true;
+ std::string aFacesGrName = (useSuffix) ? aRec.GroupName + "_Faces" : aRec.GroupName;
myGroupNames.insert(TGroupNamesMap::value_type(aFacesGroup, aFacesGrName));
myGroupId.insert(TGroupIdMap::value_type(aFacesGroup, aLabel));
+ createdGroup = true;
}
aFacesGroup->Add(aElement);
break;
+ case SMDSAbs_Volume:
+ if (!aVolumeGroup) {
+ aVolumeGroup = (SMDS_MeshGroup*) myGroup->AddSubGroup(SMDSAbs_Volume);
+ if (!useSuffix && createdGroup) useSuffix = true;
+ std::string aVolumeGrName = (useSuffix) ? aRec.GroupName + "_Volumes" : aRec.GroupName;
+ myGroupNames.insert(TGroupNamesMap::value_type(aVolumeGroup, aVolumeGrName));
+ myGroupId.insert(TGroupIdMap::value_type(aVolumeGroup, aLabel));
+ createdGroup = true;
+ }
+ aVolumeGroup->Add(aElement);
+ break;
}
- }
+ }
}
}
}
}
- }
+ }
}
catch(const std::exception& exc){
INFOS("Follow exception was cought:\n\t"<<exc.what());