1#!/usr/bin/env python 2import vtk 3from vtk.util.misc import vtkGetDataRoot 4VTK_DATA_ROOT = vtkGetDataRoot() 5 6# demonstrates the use of vtkPropAssembly 7# create four parts: a top level assembly and three primitives 8# 9sphere = vtk.vtkSphereSource() 10sphereMapper = vtk.vtkPolyDataMapper() 11sphereMapper.SetInputConnection(sphere.GetOutputPort()) 12sphereActor = vtk.vtkActor() 13sphereActor.SetMapper(sphereMapper) 14sphereActor.SetOrigin(2,1,3) 15sphereActor.RotateY(6) 16sphereActor.SetPosition(2.25,0,0) 17sphereActor.GetProperty().SetColor(1,0,1) 18cube = vtk.vtkCubeSource() 19cubeMapper = vtk.vtkPolyDataMapper() 20cubeMapper.SetInputConnection(cube.GetOutputPort()) 21cubeActor = vtk.vtkActor() 22cubeActor.SetMapper(cubeMapper) 23cubeActor.SetPosition(0.0,.25,0) 24cubeActor.GetProperty().SetColor(0,0,1) 25cone = vtk.vtkConeSource() 26coneMapper = vtk.vtkPolyDataMapper() 27coneMapper.SetInputConnection(cone.GetOutputPort()) 28coneActor = vtk.vtkActor() 29coneActor.SetMapper(coneMapper) 30coneActor.SetPosition(0,0,.25) 31coneActor.GetProperty().SetColor(0,1,0) 32cylinder = vtk.vtkCylinderSource() 33#top part 34cylinderMapper = vtk.vtkPolyDataMapper() 35cylinderMapper.SetInputConnection(cylinder.GetOutputPort()) 36cylinderActor = vtk.vtkActor() 37cylinderActor.SetMapper(cylinderMapper) 38cylinderActor.GetProperty().SetColor(1,0,0) 39compositeAssembly = vtk.vtkAssembly() 40compositeAssembly.AddPart(cylinderActor) 41compositeAssembly.AddPart(sphereActor) 42compositeAssembly.AddPart(cubeActor) 43compositeAssembly.AddPart(coneActor) 44compositeAssembly.SetOrigin(5,10,15) 45compositeAssembly.AddPosition(5,0,0) 46compositeAssembly.RotateX(15) 47# Build the prop assembly out of a vtkActor and a vtkAssembly 48assembly = vtk.vtkPropAssembly() 49assembly.AddPart(compositeAssembly) 50assembly.AddPart(coneActor) 51# Create the RenderWindow, Renderer and both Actors 52# 53ren1 = vtk.vtkRenderer() 54renWin = vtk.vtkRenderWindow() 55renWin.AddRenderer(ren1) 56iren = vtk.vtkRenderWindowInteractor() 57iren.SetRenderWindow(renWin) 58# Add the actors to the renderer, set the background and size 59# 60ren1.AddViewProp(assembly) 61ren1.SetBackground(0.1,0.2,0.4) 62renWin.SetSize(300,300) 63# Get handles to some useful objects 64# 65iren.Initialize() 66renWin.Render() 67# should create the same image as assembly.tcl 68# prevent the tk window from showing up then start the event loop 69# --- end of script -- 70