MultiBlockDataSet
VTKExamples/Python/CompositeData/MultiBlockDataSet
Other Languages
See (Cxx)
Code¶
MultiBlockDataSet.py
#!/usr/bin/env python import vtk def main(): # PART 1 Make some Data. # Make a tree. root = vtk.vtkMultiBlockDataSet() branch = vtk.vtkMultiBlockDataSet() root.SetBlock(0, branch) # Make some leaves. leaf1 = vtk.vtkSphereSource() leaf1.SetCenter(0,0,0) leaf1.Update() branch.SetBlock(0, leaf1.GetOutput()) leaf2 = vtk.vtkSphereSource() leaf2.SetCenter(1.75,2.5,0) leaf2.SetRadius(1.5) leaf2.Update() branch.SetBlock(1, leaf2.GetOutput()) leaf3 = vtk.vtkSphereSource() leaf3.SetCenter(4,0,0) leaf3.SetRadius(2) leaf3.Update() root.SetBlock(1, leaf3.GetOutput()) # PART 2 Do something with the data # a non composite aware filter, the pipeline will iterate edges = vtk.vtkExtractEdges() edges.SetInputData(root) # PART 3 Show the data # also demonstrate a composite aware filter # this filter aggregates all blocks into one polydata # this is handy for display, although fairly limited # see vtkCompositePolyDataMapper2 for something better polydata = vtk.vtkCompositeDataGeometryFilter() polydata.SetInputConnection(edges.GetOutputPort()) # Create the Renderer, RenderWindow, and RenderWindowInteractor. renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(0, polydata.GetOutputPort(0)) actor = vtk.vtkActor() actor.SetMapper(mapper) # Enable user interface interactor. renderer.AddActor(actor) renderWindowInteractor.Start() if __name__ == '__main__': main()