1#!/usr/bin/env python 2 3import os 4import vtk 5from vtk.util.misc import vtkGetDataRoot 6from vtk.util.misc import vtkGetTempDir 7 8VTK_DATA_ROOT = vtkGetDataRoot() 9VTK_TEMP_DIR = vtkGetTempDir() 10 11file0 = VTK_TEMP_DIR + '/sgFile0.vts' 12file1 = VTK_TEMP_DIR + '/sgFile1.vts' 13file2 = VTK_TEMP_DIR + '/sgFile2.vts' 14 15# Create a reader and write out the field 16combReader = vtk.vtkMultiBlockPLOT3DReader() 17combReader.SetXYZFileName(VTK_DATA_ROOT + "/Data/combxyz.bin") 18combReader.SetQFileName(VTK_DATA_ROOT + "/Data/combq.bin") 19combReader.SetScalarFunctionNumber(100) 20combReader.Update() 21output = combReader.GetOutput().GetBlock(0) 22 23 24# extract to reduce extents of grid 25extract = vtk.vtkExtractGrid() 26extract.SetInputData(output) 27extract.SetVOI(0, 28, 0, 32, 0, 24) 28extract.Update() 29 30# write just a piece (extracted piece) as well as the whole thing 31gridWriter = vtk.vtkXMLStructuredGridWriter() 32gridWriter.SetFileName(file0) 33gridWriter.SetInputConnection(extract.GetOutputPort()) 34gridWriter.SetDataModeToAscii() 35gridWriter.Write() 36 37gridWriter.SetInputData(output) 38gridWriter.SetFileName(file1) 39gridWriter.SetDataModeToAppended() 40gridWriter.SetNumberOfPieces(2) 41gridWriter.Write() 42 43gridWriter.SetFileName(file2) 44gridWriter.SetDataModeToBinary() 45gridWriter.SetWriteExtent(8, 56, 4, 16, 1, 24) 46gridWriter.Write() 47 48# read the extracted grid 49reader = vtk.vtkXMLStructuredGridReader() 50reader.SetFileName(file0) 51reader.WholeSlicesOff() 52reader.Update() 53 54sg = vtk.vtkStructuredGrid() 55sg.DeepCopy(reader.GetOutput()) 56cF0 = vtk.vtkContourFilter() 57cF0.SetInputData(sg) 58cF0.SetValue(0, 0.38) 59 60mapper0 = vtk.vtkPolyDataMapper() 61mapper0.SetInputConnection(cF0.GetOutputPort()) 62mapper0.ScalarVisibilityOff() 63 64actor0 = vtk.vtkActor() 65actor0.SetMapper(mapper0) 66 67 68# read the whole image 69reader.SetFileName(file1) 70reader.WholeSlicesOn() 71reader.Update() 72 73sg1 = vtk.vtkStructuredGrid() 74sg1.DeepCopy(reader.GetOutput()) 75cF1 = vtk.vtkContourFilter() 76cF1.SetInputData(sg1) 77cF1.SetValue(0, 0.38) 78 79mapper1 = vtk.vtkPolyDataMapper() 80mapper1.SetInputConnection(cF1.GetOutputPort()) 81mapper1.ScalarVisibilityOff() 82 83actor1 = vtk.vtkActor() 84actor1.SetMapper(mapper1) 85actor1.SetPosition(0, -10, 0) 86 87 88# read the partially written grid 89reader.SetFileName(file2) 90reader.Update() 91 92cF2 = vtk.vtkContourFilter() 93cF2.SetInputConnection(reader.GetOutputPort()) 94cF2.SetValue(0, 0.38) 95 96mapper2 = vtk.vtkPolyDataMapper() 97mapper2.SetInputConnection(cF2.GetOutputPort()) 98mapper2.ScalarVisibilityOff() 99 100actor2 = vtk.vtkActor() 101actor2.SetMapper(mapper2) 102actor2.SetPosition(0, 10, 0) 103 104# Create the RenderWindow, Renderer and both Actors 105# 106ren = vtk.vtkRenderer() 107renWin = vtk.vtkRenderWindow() 108renWin.AddRenderer(ren) 109iren = vtk.vtkRenderWindowInteractor() 110iren.SetRenderWindow(renWin) 111 112# Add the actors to the renderer, set the background and size 113# 114ren.AddActor(actor0) 115ren.AddActor(actor1) 116ren.AddActor(actor2) 117 118renWin.SetSize(300, 300) 119renWin.Render() 120 121os.remove(file0) 122os.remove(file1) 123os.remove(file2) 124