def vtu_readvf3d(name):
        
    #generate reader and read file
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(name)
    reader.Update()
    vtkdata = reader.GetOutput()
    
    #Obtain vectors and points from data in file
    nPoints = vtkdata.GetNumberOfPoints()
    pointData = vtkdata.GetPointData()
    vectorData = pointData.GetVectors()
    scalarData = pointData.GetScalars()    
    try:
        vect_list = vtk2np(vectorData)
    except AttributeError:
        print 'there is no vector data'
        vect_list = None
    try:
        scal_list = vtk2np(scalarData)
    except AttributeError:
        #print 'there is no scalar data'
        scal_list = None
    pnts_list = N.array([vtkdata.GetPoint(i) for i in range(nPoints)])

    #rearange data to 3d matices    
    bounds = vtkdata.GetBounds()#(Xmin,Xmax,Ymin,Ymax,Zmin,Zmax) 
    [X,Y,Z,U,V,W] = ijk(pnts_list,bounds,vect_list) 
    
    return [X,Y,Z,U,V,W]
Ejemplo n.º 2
0
def _get_cells(obj):
    """Extract cells and cell_data from a vtkDataSet and sort it by types."""
    cells, cell_data = {}, {}
    data = _get_data(obj.GetCellData())
    arr = vtk2np(obj.GetCells().GetData())
    loc = vtk2np(obj.GetCellLocationsArray())
    types = vtk2np(obj.GetCellTypesArray())

    for typ in VTK_TYP:
        if not isinstance(typ, int):
            continue
        cell_name = VTK_TYP[typ]
        n_no = NODE_NO[cell_name]
        cell_loc_i = np.where(types == typ)[0]
        loc_i = loc[cell_loc_i]
        # if there are no cells of the actual type continue
        if len(loc_i) == 0:
            # if not loc_i:
            continue
        arr_i = np.empty((len(loc_i), n_no), dtype=int)
        for i in range(n_no):
            arr_i[:, i] = arr[loc_i + i + 1]
        cells[cell_name] = arr_i
        cell_data_i = {}
        for data_i in data:
            cell_data_i[data_i] = data[data_i][cell_loc_i]
        if cell_data_i != {}:
            cell_data[cell_name] = cell_data_i

    return cells, cell_data
def vtu_readvf3d(name):

    #generate reader and read file
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(name)
    reader.Update()
    vtkdata = reader.GetOutput()

    #Obtain vectors and points from data in file
    nPoints = vtkdata.GetNumberOfPoints()
    pointData = vtkdata.GetPointData()
    vectorData = pointData.GetVectors()
    scalarData = pointData.GetScalars()
    try:
        vect_list = vtk2np(vectorData)
    except AttributeError:
        print 'there is no vector data'
        vect_list = None
    try:
        scal_list = vtk2np(scalarData)
    except AttributeError:
        #print 'there is no scalar data'
        scal_list = None
    pnts_list = N.array([vtkdata.GetPoint(i) for i in range(nPoints)])

    #rearange data to 3d matices
    bounds = vtkdata.GetBounds()  #(Xmin,Xmax,Ymin,Ymax,Zmin,Zmax)
    [X, Y, Z, U, V, W] = ijk(pnts_list, bounds, vect_list)

    return [X, Y, Z, U, V, W]
Ejemplo n.º 4
0
def _poly_data_read(obj):
    """Reader for vtk polygonal data objects."""
    output = {}
    output["points"] = vtk2np(obj.GetPoints().GetData())
    output["verts"] = _deflat_data(vtk2np(obj.GetVerts().GetData()))
    output["lines"] = _deflat_data(vtk2np(obj.GetLines().GetData()))
    output["polygons"] = _deflat_data(vtk2np(obj.GetPolys().GetData()))
    output["strips"] = _deflat_data(vtk2np(obj.GetStrips().GetData()))
    output["point_data"] = _get_data(obj.GetPointData())
    output["cell_data"] = _get_data(obj.GetCellData())
    output["field_data"] = _get_data(obj.GetFieldData())
    return output
Ejemplo n.º 5
0
def _unst_grid_read(obj):
    """Reader for vtk unstructured grid objects."""
    output = {}
    output["field_data"] = _get_data(obj.GetFieldData())
    output["points"] = vtk2np(obj.GetPoints().GetData())
    output["point_data"] = _get_data(obj.GetPointData())
    output["cells"], output["cell_data"] = _get_cells(obj)
    return output
Ejemplo n.º 6
0
def _get_data(data):
    """Extract data as numpy arrays from a vtkObject."""
    arr_dict = {}
    no_of_arr = data.GetNumberOfArrays()
    for i in range(no_of_arr):
        arr = data.GetArray(i)
        if arr:
            arr_dict[arr.GetName()] = vtk2np(arr)
    return arr_dict
Ejemplo n.º 7
0
def _rect_grid_read(obj):
    """Reader for vtk rectangular grid objects."""
    output = {}
    output["dimensions"] = np.array(obj.GetDimensions())
    output["x"] = vtk2np(obj.GetXCoordinates())
    output["y"] = vtk2np(obj.GetYCoordinates())
    output["z"] = vtk2np(obj.GetZCoordinates())
    output["field_data"] = _get_data(obj.GetFieldData())
    output["point_data"] = _get_data(obj.GetPointData())
    output["cell_data"] = _get_data(obj.GetCellData())
    # reshape cell and point data according to the give dimensions
    dim = output["dimensions"]
    for arr in output["cell_data"]:
        output["cell_data"][arr] = np.squeeze(
            np.reshape(output["cell_data"][arr],
                       np.maximum(dim - 1, 1),
                       order="F"))
    for arr in output["point_data"]:
        output["point_data"][arr] = np.reshape(output["point_data"][arr],
                                               dim,
                                               order="F")
    return output
Ejemplo n.º 8
0
 def translate_mesh_points(mesh, r):
     coords = vtk2np(mesh.GetPoints().GetData())
     coords += np.array(r, dtype=np.float32).reshape(1, 3)
     mesh.GetPoints().SetData(np2vtk(coords))
     return mesh