-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
return ids;
}
+ //================================================================================
+ /*!
+ * \brief Return EEntiteMaillage by EGeometrieElement
+ */
+ //================================================================================
+
+ MED::EEntiteMaillage entityByGeom(const MED::EGeometrieElement geom )
+ {
+ return geom == MED::eBALL ? MED::eSTRUCT_ELEMENT : MED::eMAILLE;
+ }
+
//================================================================================
/*!
* \brief Return a map< EGeometrieElement, SMDSAbs_EntityType >
med2smeshTypes[ MED::ePOLYGONE ] = SMDSEntity_Polygon ;
med2smeshTypes[ MED::ePOLYEDRE ] = SMDSEntity_Polyhedra ;
med2smeshTypes[ MED::eNONE ] = SMDSEntity_Node ;
+ med2smeshTypes[ MED::eBALL ] = SMDSEntity_Ball ;
}
return med2smeshTypes;
}
const bool infoAvailable = aFile->ExistInternalObject( hdfGroupName );
if ( infoAvailable )
{
-
HDFgroup* infoHdfGroup = new HDFgroup( hdfGroupName, aFile );
infoHdfGroup->OpenOnDisk();
Tmed2smeshElemTypeMap::const_iterator me2smeEnd = med2smeshElemTypeMap().end();
for ( ; me2sme != me2smeEnd; ++me2sme )
{
- int nbElems = aMed->GetNbCells( medMeshInfo, MED::eMAILLE, me2sme->first );
+ int nbElems = aMed->GetNbCells( medMeshInfo, entityByGeom(me2sme->first), me2sme->first );
if ( nbElems > 0 )
setNb( me2sme->second, nbElems );
}
{
famNums.resize( NbEntities( me2sme->second ));
if ( famNums.empty() ) continue;
- aMed->GetFamilies( medElemInfo, famNums.size(), MED::eMAILLE, me2sme->first );
+ aMed->GetFamilies( medElemInfo, famNums.size(), entityByGeom(me2sme->first), me2sme->first );
// distribute elements of a type among groups
map< int, vector< SMESH_PreMeshInfo* > >::iterator f2infos = famId2grInfo.begin();
for ( size_t i = 0; i < famNums.size(); ++i )
SMESH_PreMeshInfo* meshInfo = _mesh->changePreMeshInfo();
_mesh->changePreMeshInfo() = NULL; // to allow GUI accessing to real info
- ::SMESH_Mesh& mesh = _mesh->GetImpl();
+ ::SMESH_Mesh& mesh = _mesh->GetImpl();
SMESHDS_Mesh* meshDS = mesh.GetMeshDS();
PreMeshInfo_TRY;
SMESHDS_Mesh* meshDS = _mesh->GetImpl().GetMeshDS();
+ // issue 0020693. Restore _isModified flag
+ if ( aTopGroup->ExistInternalObject( "_isModified" ))
+ {
+ HDFdataset* aDataset = new HDFdataset( "_isModified", aTopGroup );
+ aDataset->OpenOnDisk();
+ hdf_size size = aDataset->GetSize();
+ int* isModified = new int[ size ];
+ aDataset->ReadFromDisk( isModified );
+ aDataset->CloseOnDisk();
+ _mesh->GetImpl().SetIsModified( bool(*isModified));
+ }
+
bool submeshesInFamilies = ( ! aTopGroup->ExistInternalObject( "Submeshes" ));
if ( submeshesInFamilies ) // from MED
{
types->length( 4 );
int nbTypes = 0;
- if (NbEdges())
- types[nbTypes++] = SMESH::EDGE;
- if (NbFaces())
- types[nbTypes++] = SMESH::FACE;
- if (NbVolumes())
- types[nbTypes++] = SMESH::VOLUME;
- if (Nb0DElements())
- types[nbTypes++] = SMESH::ELEM0D;
+ if (NbEdges()) types[nbTypes++] = SMESH::EDGE;
+ if (NbFaces()) types[nbTypes++] = SMESH::FACE;
+ if (NbVolumes()) types[nbTypes++] = SMESH::VOLUME;
+ if (Nb0DElements()) types[nbTypes++] = SMESH::ELEM0D;
+ if (NbBalls()) types[nbTypes++] = SMESH::BALL;
types->length( nbTypes );
return types._retn();