Salome HOME
Some helpers to convert VTK files to medcoupling mesh object in memory
[tools/medcoupling.git] / src / MEDCoupling_Swig / vtk2medcoupling.py
1 import vtk
2 from vtk.util import numpy_support
3 import medcoupling as mc
4 import numpy as np
5
6 def mesh_convertor(fileName):
7     reader = vtk.vtkDataSetReader()
8     reader.SetFileName(fileName)
9     reader.Update()
10     ug = reader.GetOutput()
11     return mesh_convertor_mem(ug),ug
12     
13 def mesh_convertor_mem(ug):
14     pts = numpy_support.vtk_to_numpy(ug.GetPoints().GetData())
15     #
16     cla = numpy_support.vtk_to_numpy(ug.GetCellLocationsArray())
17     ctvtk = numpy_support.vtk_to_numpy(ug.GetCellTypesArray())
18     conn = numpy_support.vtk_to_numpy(ug.GetCells().GetData())
19     #
20     ct=mc.DataArrayInt(np.array(ctvtk,dtype=np.int32))[:]
21     c=mc.DataArrayInt(conn)[:]
22     ci=mc.DataArrayInt(cla)[:]
23     #
24     vtk2med = mc.DataArrayInt(mc.vtk2med_cell_types())
25     #
26     ct.transformWithIndArr(vtk2med)
27     c[ci]=ct
28     ci = mc.DataArrayInt.Aggregate([ci,mc.DataArrayInt([len(c)])])
29     #
30
31     m=mc.MEDCouplingUMesh("mesh",2)
32     m.setCoords(mc.DataArrayDouble(np.array(pts,dtype=np.float64)))
33     m.setConnectivity(c,ci,True)
34     m.checkConsistencyLight()
35     #
36     return m