0021347: [CEA 497] Visualisation into SMESH and VISU of hexagonal prism cells (MED_OCTA12)

0021380: EDF 1937 SMESH: Take into account QUAD9 and HEXA27

Do not write poly elements as standard ones
This commit is contained in:
eap 2011-12-16 09:26:40 +00:00
parent fd5de6779a
commit 14a1f50419

View File

@ -119,6 +119,7 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
SMDS_FaceIteratorPtr anIter = myMesh->facesIterator(); SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
for(; anIter->more();){ for(; anIter->more();){
const SMDS_MeshFace* anElem = anIter->next(); const SMDS_MeshFace* anElem = anIter->next();
if ( anElem->IsPoly() ) continue;
TElementLab aLabel = anElem->GetID(); TElementLab aLabel = anElem->GetID();
int aNbNodes = anElem->NbNodes(); int aNbNodes = anElem->NbNodes();
TRecord aRec; TRecord aRec;
@ -142,6 +143,10 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
case 8: case 8:
aRec.fe_descriptor_id = 45; aRec.fe_descriptor_id = 45;
break; break;
case 9:
aRec.fe_descriptor_id = 45;
aRec.node_labels.resize( 8 );
break;
default: default:
continue; continue;
} }
@ -162,13 +167,14 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
SMDS_ElemIteratorPtr aNodesIter; SMDS_ElemIteratorPtr aNodesIter;
aNodesIter = anElem->nodesIteratorToUNV(); aNodesIter = anElem->nodesIteratorToUNV();
if ( anElem->IsPoly() ) { if ( anElem->IsPoly() ) {
MESSAGE("anElem->IsPoly"); continue;
if ( const SMDS_VtkVolume* ph = // MESSAGE("anElem->IsPoly");
dynamic_cast<const SMDS_VtkVolume*> (anElem)) // if ( const SMDS_VtkVolume* ph =
{ // dynamic_cast<const SMDS_VtkVolume*> (anElem))
aNbNodes = ph->NbUniqueNodes(); // {
aNodesIter = ph->uniqueNodesIterator(); // aNbNodes = ph->NbUniqueNodes();
} // aNodesIter = ph->uniqueNodesIterator();
// }
} }
int anId = -1; int anId = -1;
@ -197,8 +203,10 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
anId = 113; anId = 113;
break; break;
} }
case 20: { case 20:
case 27: {
anId = 116; anId = 116;
aNbNodes = 20;
break; break;
} }
default: default:
@ -208,7 +216,7 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
TRecord aRec; TRecord aRec;
aRec.fe_descriptor_id = anId; aRec.fe_descriptor_id = anId;
aRec.node_labels.reserve(aNbNodes); aRec.node_labels.reserve(aNbNodes);
for(; aNodesIter->more();){ for(; aNodesIter->more() && aRec.node_labels.size() < aNbNodes; ) {
const SMDS_MeshElement* aNode = aNodesIter->next(); const SMDS_MeshElement* aNode = aNodesIter->next();
aRec.node_labels.push_back(aNode->GetID()); aRec.node_labels.push_back(aNode->GetID());
} }