def Mesh2VTKUGrid(mesh): vtkcelltypes=((),(vtk.VTK_EMPTY_CELL,vtk.VTK_VERTEX,vtk.VTK_LINE),(vtk.VTK_EMPTY_CELL,vtk.VTK_VERTEX,vtk.VTK_LINE,vtk.VTK_TRIANGLE,vtk.VTK_QUAD,vtk.VTK_POLYGON,vtk.VTK_POLYGON),(vtk.VTK_EMPTY_CELL,vtk.VTK_VERTEX,vtk.VTK_LINE,vtk.VTK_TRIANGLE,vtk.VTK_TETRA,vtk.VTK_CONVEX_POINT_SET,vtk.VTK_CONVEX_POINT_SET,vtk.VTK_CONVEX_POINT_SET,vtk.VTK_HEXAHEDRON)) npoints=mesh.num_vertices() geom=mesh.geometry() pts=vtk.vtkPoints() pts.SetNumberOfPoints(npoints) for i in xrange(npoints): p=geom.point(i) pts.SetPoint(i,p.x(),p.y(),p.z()) dim = mesh.topology().dim() ncells=mesh.num_cells() cells=vtk.vtkCellArray() cellTypes=vtk.vtkUnsignedCharArray() cellTypes.SetNumberOfTuples(ncells) cellLocations=vtk.vtkIdTypeArray() cellLocations.SetNumberOfTuples(ncells) loc=0 for (cell,i) in zip(mesh.cells(),xrange(ncells)) : ncellpoints=len(cell) cells.InsertNextCell(ncellpoints) for cpoint in cell: cells.InsertCellPoint(cpoint) cellTypes.SetTuple1(i,vtkcelltypes[dim][ncellpoints]) cellLocations.SetTuple1(i,loc) loc+=1+ncellpoints ugrid = vtk.vtkUnstructuredGrid() ugrid.SetPoints(pts) ugrid.SetCells(cellTypes,cellLocations,cells) return ugrid
if not oldArray: print 'Attribute "%s" does not exists!' % arrayName continue valid_tuples = [] for idx, val in idx_vals_tuples: if idx < 0 or idx >= nPoints: print 'Skipping invalid tuples (%d, %lf)' % (idx, val) continue valid_tuples.append((idx, val)) if len(valid_tuples) == 0: continue vtkPropIdx = vtk.vtkIdTypeArray() vtkPropIdx.SetName("PropIdx" + arrayName) vtkPropIdx.SetNumberOfValues(len(valid_tuples)) vtkPropVals = vtk.vtkDoubleArray() vtkPropVals.SetName("PropVals" + arrayName) vtkPropVals.SetNumberOfValues(len(valid_tuples)) # Record changes for i, (idx, val) in enumerate(valid_tuples): vtkPropIdx.SetValue(i, idx) vtkPropVals.SetValue(i, val) # Set new array pdo.GetFieldData().AddArray(vtkPropIdx) pdo.GetFieldData().AddArray(vtkPropVals)