X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPlugins%2FMEDWriter%2FIO%2FvtkMEDWriter.cxx;h=69e1cba972de2130a23de132e524909984f7c71c;hb=4d49d57d0982b36816f120eaa8bd46233e14a726;hp=d268f5e451e3a6b8b96446431bed27cf21f43f8b;hpb=f8c7a434ba8797c580c2fe4c532a4cbac580d309;p=modules%2Fparavis.git diff --git a/src/Plugins/MEDWriter/IO/vtkMEDWriter.cxx b/src/Plugins/MEDWriter/IO/vtkMEDWriter.cxx index d268f5e4..69e1cba9 100644 --- a/src/Plugins/MEDWriter/IO/vtkMEDWriter.cxx +++ b/src/Plugins/MEDWriter/IO/vtkMEDWriter.cxx @@ -22,6 +22,7 @@ #include "vtkAdjacentVertexIterator.h" #include "vtkIntArray.h" +#include "vtkLongArray.h" #include "vtkCellData.h" #include "vtkPointData.h" #include "vtkFloatArray.h" @@ -152,6 +153,13 @@ DataArrayInt *ConvertVTKArrayToMCArrayInt(vtkDataArray *data) std::copy(pt,pt+nbElts,ptOut); return ret.retn(); } + vtkLongArray *d1(vtkLongArray::SafeDownCast(data)); + if(d1) + { + const long *pt(d1->GetPointer(0)); + std::copy(pt,pt+nbElts,ptOut); + return ret.retn(); + } std::ostringstream oss; oss << "ConvertVTKArrayToMCArrayInt : unrecognized array \"" << typeid(*data).name() << "\" type !"; throw MZCException(oss.str()); @@ -201,7 +209,8 @@ DataArray *ConvertVTKArrayToMCArray(vtkDataArray *data) if(d0 || d1) return ConvertVTKArrayToMCArrayDouble(data); vtkIntArray *d2(vtkIntArray::SafeDownCast(data)); - if(d2) + vtkLongArray *d3(vtkLongArray::SafeDownCast(data)); + if(d2 || d3) return ConvertVTKArrayToMCArrayInt(data); std::ostringstream oss; oss << "ConvertVTKArrayToMCArray : unrecognized array \"" << typeid(*data).name() << "\" type !"; @@ -486,7 +495,14 @@ void AddNodeFields(MEDFileData *mfd, vtkDataSetAttributes *dsa) MEDFileUMesh *mmu(dynamic_cast(mm)); if(!mmu) throw MZCException("AddNodeFields : internal error 2 !"); - MCAuto mesh(mmu->getMeshAtLevel(0)); + MCAuto mesh; + if(!mmu->getNonEmptyLevels().empty()) + mesh=mmu->getMeshAtLevel(0); + else + { + mesh=MEDCouplingUMesh::Build0DMeshFromCoords(mmu->getCoords()); + mesh->setName(mmu->getName()); + } int nba(dsa->GetNumberOfArrays()); for(int i=0;igetMaxValue(dummy)); MCAuto levs(lev->getDifferentValues()); std::vector< MicroField > ms; vtkIdTypeArray *faces(ds->GetFaces()),*faceLoc(ds->GetFaceLocations());