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