ContourWidget
VTKExamples/Python/Widgets/ContourWidget
Description¶
Click on the white dots to select them and to deform the red line.
- Contributed by Jim McCusker
Code¶
ContourWidget.py
#!/usr/bin/python import vtk import random import sys import math # Create the RenderWindow, Renderer and both Actors renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) renderer.SetBackground(0.1, 0.2, 0.4) renderWindow.SetSize(600, 600) contourRep = vtk.vtkOrientedGlyphContourRepresentation() contourRep.GetLinesProperty().SetColor(1, 0, 0) # set color to red contourWidget = vtk.vtkContourWidget() contourWidget.SetInteractor(interactor) contourWidget.SetRepresentation(contourRep) contourWidget.On() for arg in sys.argv: if "-Shift" == arg: contourWidget.GetEventTranslator().RemoveTranslation( vtk.vtkCommand.LeftButtonPressEvent) contourWidget.GetEventTranslator().SetTranslation( vtk.vtkCommand.LeftButtonPressEvent, vtk.vtkWidgetEvent.Translate ) elif "-Scale" == arg: contourWidget.GetEventTranslator().RemoveTranslation( vtk.vtkCommand.LeftButtonPressEvent ) contourWidget.GetEventTranslator().SetTranslation( vtk.vtkCommand.LeftButtonPressEvent, vtk.vtkWidgetEvent.Scale ) pd = vtk.vtkPolyData() points = vtk.vtkPoints() lines = vtk.vtkCellArray() for i in range(0,21): angle = 2.0 * math.pi * i / 20.0 points.InsertPoint(i, 0.1 * math.cos(angle), 0.1 * math.sin(angle), 0.0 ) lines.InsertNextCell(i) pd.SetPoints(points) pd.SetLines(lines) contourWidget.Initialize(pd, 1) contourWidget.Render() renderer.ResetCamera() renderWindow.Render() interactor.Initialize() interactor.Start() contourWidget.Off()