ILMAB: export GEOM fields to MED file

Write INT fields as FLOAT ones
This commit is contained in:
eap 2014-03-13 19:40:00 +04:00
parent 7853f15768
commit 7cf31f46c4

View File

@ -3070,7 +3070,7 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
{ {
aMeshName = prepareMeshNameAndGroups(file, overwrite); aMeshName = prepareMeshNameAndGroups(file, overwrite);
_impl->ExportMED( file, aMeshName.c_str(), auto_groups, _impl->ExportMED( file, aMeshName.c_str(), auto_groups,
version, 0, autoDimension, have0dField); version, 0, autoDimension, /*addODOnVertices=*/have0dField);
meshDS = _impl->GetMeshDS(); meshDS = _impl->GetMeshDS();
} }
else else
@ -3090,7 +3090,7 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
} }
SMESH_MeshPartDS* partDS = new SMESH_MeshPartDS( meshPart ); SMESH_MeshPartDS* partDS = new SMESH_MeshPartDS( meshPart );
_impl->ExportMED( file, aMeshName.c_str(), auto_groups, _impl->ExportMED( file, aMeshName.c_str(), auto_groups,
version, partDS, autoDimension, have0dField); version, partDS, autoDimension, /*addODOnVertices=*/have0dField);
meshDS = tmpDSDeleter._obj = partDS; meshDS = tmpDSDeleter._obj = partDS;
} }
@ -3176,7 +3176,7 @@ void SMESH_Mesh_i::exportMEDFields( DriverMED_W_Field& fieldWriter,
name.in(), name.in(),
elemType, elemType,
comps->length(), comps->length(),
( dataType == GEOM::FDT_Int ))) /*isIntData=*/false ))//( dataType == GEOM::FDT_Int )))
continue; continue;
for ( size_t iC = 0; iC < comps->length(); ++iC ) for ( size_t iC = 0; iC < comps->length(); ++iC )
@ -3263,9 +3263,9 @@ void SMESH_Mesh_i::exportMEDFields( DriverMED_W_Field& fieldWriter,
const SMDS_MeshElement* e = elemIt->next(); const SMDS_MeshElement* e = elemIt->next();
const int shapeID = e->getshapeId(); const int shapeID = e->getshapeId();
if ( shapeID < 1 || shapeID >= intVals.size() ) if ( shapeID < 1 || shapeID >= intVals.size() )
fieldWriter.AddValue( noneIntValue ); fieldWriter.AddValue( (double) noneIntValue );
else else
fieldWriter.AddValue( intVals[ shapeID ]); fieldWriter.AddValue( (double) intVals[ shapeID ]);
} }
// write a step // write a step
@ -3303,17 +3303,17 @@ void SMESH_Mesh_i::exportMEDFields( DriverMED_W_Field& fieldWriter,
std::vector< std::string > compNames; std::vector< std::string > compNames;
switch ( geomAssocFields[ iF ]) { switch ( geomAssocFields[ iF ]) {
case 'v': case 'V': case 'v': case 'V':
fieldWriter.Set( meshDS, "_vertices_", SMDSAbs_Node, /*nbComps=*/2, /*isInt=*/true ); fieldWriter.Set( meshDS, "_vertices_", SMDSAbs_Node, /*nbComps=*/2, /*isInt=*/false );
compNames.push_back( "dim" ); compNames.push_back( "dim" );
break; break;
case 'e': case 'E': case 'e': case 'E':
fieldWriter.Set( meshDS, "_edges_", SMDSAbs_Edge, /*nbComps=*/1, /*isInt=*/true ); fieldWriter.Set( meshDS, "_edges_", SMDSAbs_Edge, /*nbComps=*/1, /*isInt=*/false );
break; break;
case 'f': case 'F': case 'f': case 'F':
fieldWriter.Set( meshDS, "_faces_", SMDSAbs_Face, /*nbComps=*/1, /*isInt=*/true ); fieldWriter.Set( meshDS, "_faces_", SMDSAbs_Face, /*nbComps=*/1, /*isInt=*/false );
break; break;
case 's': case 'S': case 's': case 'S':
fieldWriter.Set( meshDS, "_solids_", SMDSAbs_Volume, /*nbComps=*/1, /*isInt=*/true ); fieldWriter.Set( meshDS, "_solids_", SMDSAbs_Volume, /*nbComps=*/1, /*isInt=*/false );
break; break;
default: continue; default: continue;
} }
@ -3334,14 +3334,14 @@ void SMESH_Mesh_i::exportMEDFields( DriverMED_W_Field& fieldWriter,
const int shapeID = e->getshapeId(); const int shapeID = e->getshapeId();
if ( shapeID < 1 ) if ( shapeID < 1 )
{ {
fieldWriter.AddValue( -1 ); fieldWriter.AddValue( (double) -1 );
fieldWriter.AddValue( -1 ); fieldWriter.AddValue( (double) -1 );
} }
else else
{ {
const TopoDS_Shape& S = meshDS->IndexToShape( shapeID ); const TopoDS_Shape& S = meshDS->IndexToShape( shapeID );
fieldWriter.AddValue( S.IsNull() ? -1 : shapeDim[ S.ShapeType() ]); fieldWriter.AddValue( (double) ( S.IsNull() ? -1 : shapeDim[ S.ShapeType() ]));
fieldWriter.AddValue( shapeID ); fieldWriter.AddValue( (double) shapeID );
} }
} }
else else
@ -3350,9 +3350,9 @@ void SMESH_Mesh_i::exportMEDFields( DriverMED_W_Field& fieldWriter,
const SMDS_MeshElement* e = elemIt->next(); const SMDS_MeshElement* e = elemIt->next();
const int shapeID = e->getshapeId(); const int shapeID = e->getshapeId();
if ( shapeID < 1 ) if ( shapeID < 1 )
fieldWriter.AddValue( -1 ); fieldWriter.AddValue( (double) -1 );
else else
fieldWriter.AddValue( shapeID ); fieldWriter.AddValue( (double) shapeID );
} }
// write a step // write a step