#!/usr/local/bin/python

from libVTKCommonPython import *
from libVTKGraphicsPython import *

#catch  load vtktcl 
# get the interactor ui
#source ../../examplesTcl/vtkInt.tcl

# Create the RenderWindow, Renderer and both Actors
#
ren = vtkRenderer()
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

# create spring profile (a circle)
#
points = vtkPoints()
points.InsertPoint(0,1.0,0.0,0.0)
points.InsertPoint(1,1.0732,0.0,-0.1768)
points.InsertPoint(2,1.25,0.0,-0.25)
points.InsertPoint(3,1.4268,0.0,-0.1768)
points.InsertPoint(4,1.5,0.0,0.00)
points.InsertPoint(5,1.4268,0.0,0.1768)
points.InsertPoint(6,1.25,0.0,0.25)
points.InsertPoint(7,1.0732,0.0,0.1768)
poly = vtkCellArray()
poly.InsertNextCell(8) #number.of.points
poly.InsertCellPoint(0)
poly.InsertCellPoint(1)
poly.InsertCellPoint(2)
poly.InsertCellPoint(3)
poly.InsertCellPoint(4)
poly.InsertCellPoint(5)
poly.InsertCellPoint(6)
poly.InsertCellPoint(7)
profile = vtkPolyData()
profile.SetPoints(points)
profile.SetPolys(poly)

# extrude profile to make spring
#
extrude = vtkRotationalExtrusionFilter()
extrude.SetInput(profile)
extrude.SetResolution(360)
extrude.SetTranslation(6)
extrude.SetDeltaRadius(1.0)
extrude.SetAngle(2160.0) #six.revolutions
    
normals = vtkPolyDataNormals()
normals.SetInput(extrude.GetOutput())
normals.SetFeatureAngle(60)

map = vtkPolyDataMapper()
map.SetInput(normals.GetOutput())

spring = vtkActor()
spring.SetMapper(map)
spring.GetProperty().SetColor(0.6902,0.7686,0.8706)
spring.GetProperty().SetDiffuse(0.7)
spring.GetProperty().SetSpecular(0.4)
spring.GetProperty().SetSpecularPower(20)
spring.GetProperty().BackfaceCullingOn()

# Add the actors to the renderer, set the background and size
#
ren.AddActor(spring)
ren.SetBackground(1,1,1)
renWin.SetSize(500,500)

cam1=ren.GetActiveCamera()
cam1.Azimuth(90)

renWin.Render()
#renWin SetFileName "spring.tcl.ppm"
#renWin SaveImageAsPPM


# prevent the tk window from showing up then start the event loop
#wm withdraw .



iren.Start()
