2 from vtk.util import numpy_support
3 import medcoupling as mc
6 def mesh_convertor(fileName):
7 reader = vtk.vtkDataSetReader()
8 reader.SetFileName(fileName)
10 ug = reader.GetOutput()
11 return mesh_convertor_mem(ug),ug
13 def mesh_convertor_mem(ug):
14 from distutils.version import LooseVersion
16 pts = numpy_support.vtk_to_numpy(ug.GetPoints().GetData())
18 cla = numpy_support.vtk_to_numpy(ug.GetCellLocationsArray())
19 ctvtk = numpy_support.vtk_to_numpy(ug.GetCellTypesArray())
20 conn = numpy_support.vtk_to_numpy(ug.GetCells().GetData())
22 ct=mc.DataArrayInt(np.array(ctvtk,dtype=np.int32))[:]
23 c=mc.DataArrayInt(conn)[:]
24 ci=mc.DataArrayInt(cla)[:]
26 if LooseVersion(vtk.VTK_VERSION) >= LooseVersion("8.90.0"):
27 ci = ci.deltaShiftIndex()+1
28 ci.computeOffsetsFull()
30 vtk2med = mc.DataArrayInt(mc.vtk2med_cell_types())
32 ct.transformWithIndArr(vtk2med)
34 ci = mc.DataArrayInt.Aggregate([ci,mc.DataArrayInt([len(c)])])
37 m=mc.MEDCouplingUMesh("mesh",2)
38 m.setCoords(mc.DataArrayDouble(np.array(pts,dtype=np.float64)))
39 m.setConnectivity(c,ci,True)
40 m.checkConsistencyLight()