Skip to content

ImplicitSelectionLoop

Repository source: ImplicitSelectionLoop

Other languages

See (Cxx)

Question

If you have a question about this example, please use the VTK Discourse Forum

Code

ImplicitSelectionLoop.py

#!/usr/bin/env python3

# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkCommonCore import vtkPoints
from vtkmodules.vtkCommonDataModel import vtkImplicitSelectionLoop
from vtkmodules.vtkFiltersCore import vtkClipPolyData
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkRenderingCore import (
    vtkPolyDataMapper,
    vtkProperty,
    vtkRenderer,
    vtkRenderWindow,
    vtkRenderWindowInteractor
)
from vtkmodules.vtkRenderingLOD import vtkLODActor


def main():
    colors = vtkNamedColors()

    sphere_source = vtkSphereSource(phi_resolution=100, theta_resolution=100)

    selection_points = vtkPoints()

    selection_points.InsertPoint(0, -0.16553, 0.135971, 0.451972)
    selection_points.InsertPoint(1, -0.0880123, -0.134952, 0.4747)
    selection_points.InsertPoint(2, 0.00292618, -0.134604, 0.482459)
    selection_points.InsertPoint(3, 0.0641941, 0.067112, 0.490947)
    selection_points.InsertPoint(4, 0.15577, 0.0734765, 0.469245)
    selection_points.InsertPoint(5, 0.166667, -0.129217, 0.454622)
    selection_points.InsertPoint(6, 0.241259, -0.123363, 0.420581)
    selection_points.InsertPoint(7, 0.240334, 0.0727106, 0.432555)
    selection_points.InsertPoint(8, 0.308529, 0.0844311, 0.384357)
    selection_points.InsertPoint(9, 0.32672, -0.121674, 0.359187)
    selection_points.InsertPoint(10, 0.380721, -0.117342, 0.302527)
    selection_points.InsertPoint(11, 0.387804, 0.0455074, 0.312375)
    selection_points.InsertPoint(12, 0.43943, -0.111673, 0.211707)
    selection_points.InsertPoint(13, 0.470984, -0.0801913, 0.147919)
    selection_points.InsertPoint(14, 0.436777, 0.0688872, 0.233021)
    selection_points.InsertPoint(15, 0.44874, 0.188852, 0.109882)
    selection_points.InsertPoint(16, 0.391352, 0.254285, 0.176943)
    selection_points.InsertPoint(17, 0.373274, 0.154162, 0.294296)
    selection_points.InsertPoint(18, 0.274659, 0.311654, 0.276609)
    selection_points.InsertPoint(19, 0.206068, 0.31396, 0.329702)
    selection_points.InsertPoint(20, 0.263789, 0.174982, 0.387308)
    selection_points.InsertPoint(21, 0.213034, 0.175485, 0.417142)
    selection_points.InsertPoint(22, 0.169113, 0.261974, 0.390286)
    selection_points.InsertPoint(23, 0.102552, 0.25997, 0.414814)
    selection_points.InsertPoint(24, 0.131512, 0.161254, 0.454705)
    selection_points.InsertPoint(25, 0.000192443, 0.156264, 0.475307)
    selection_points.InsertPoint(26, -0.0392091, 0.000251724, 0.499943)
    selection_points.InsertPoint(27, -0.096161, 0.159646, 0.46438)

    loop = vtkImplicitSelectionLoop(loop=selection_points)

    clip = vtkClipPolyData(clip_function=loop, value=0.0)

    clip_mapper = vtkPolyDataMapper(scalar_visibility=False)
    sphere_source >> clip >> clip_mapper

    back_prop = vtkProperty()
    back_prop.color = colors.GetColor3d('Tomato')

    clip_actor = vtkLODActor(mapper=clip_mapper, backface_property=back_prop)
    clip_actor.property.color = colors.GetColor3d('Banana')

    renderer = vtkRenderer(background=colors.GetColor3d('SlateGray'))

    render_window = vtkRenderWindow(size=(500, 500), window_name='ImplicitSelectionLoop')
    render_window.AddRenderer(renderer)

    renderer.AddActor(clip_actor)

    interactor = vtkRenderWindowInteractor()
    interactor.render_window = render_window

    # Get a good orientation.
    renderer.ResetCamera()
    renderer.active_camera.Azimuth(22.5)
    renderer.active_camera.Elevation(10.0)
    renderer.active_camera.Zoom(1.5)



    render_window.Render()
    interactor.Start()


if __name__ == '__main__':
    main()