Skip to content

Commit f42e915

Browse files
bourdaisjjourdain
authored andcommitted
doc(examples): local picking and remote vtkCellLocator working together
1 parent 466ba94 commit f42e915

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

examples/validation/PickingLocalView.py

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
from trame.app import get_server
22
from trame.ui.html import DivLayout
3-
from trame.widgets import html, client, vtk as vtk_widgets
4-
3+
from vtk import mutable
4+
from vtkmodules.vtkCommonDataModel import vtkCellLocator
55
from vtkmodules.vtkFiltersSources import vtkConeSource, vtkSphereSource
66
from vtkmodules.vtkRenderingCore import (
7+
vtkActor,
8+
vtkPolyDataMapper,
79
vtkRenderer,
810
vtkRenderWindow,
9-
vtkPolyDataMapper,
10-
vtkActor,
1111
)
1212

13+
from trame.widgets import client, html
14+
from trame.widgets import vtk as vtk_widgets
15+
1316

1417
class PickingExample:
1518
def __init__(self, server=None):
@@ -47,11 +50,39 @@ def __init__(self, server=None):
4750
self.get_scene_object_id(sphere_actor): "Sphere",
4851
}
4952

53+
self.remote_id_to_actor = {
54+
self.get_scene_object_id(cone_actor): cone_actor,
55+
self.get_scene_object_id(sphere_actor): sphere_actor,
56+
}
57+
58+
self.actor_remote_id_to_locator = {}
59+
5060
def on_click(self, event):
5161
if event is None:
5262
print("Click on: --nothing--")
5363
else:
54-
print(f"Click on: {self.vtk_mapping.get(event.get('remoteId'))}")
64+
remote_id = event.get("remoteId")
65+
print(f"Click on: {self.vtk_mapping.get(remote_id)}")
66+
67+
cell_locator = self.actor_remote_id_to_locator.get(remote_id)
68+
69+
if not cell_locator:
70+
cell_locator = vtkCellLocator()
71+
self.actor_remote_id_to_locator[remote_id] = cell_locator
72+
actor = self.remote_id_to_actor[remote_id]
73+
cell_locator.SetDataSet(actor.GetMapper().GetInputDataObject(0, 0))
74+
75+
world_position = event.get("worldPosition")
76+
closes_point = [0.0, 0.0, 0.0]
77+
78+
_subId = mutable(0)
79+
_dist2 = mutable(0.0)
80+
cell_id = mutable(-1)
81+
cell_locator.FindClosestPoint(
82+
world_position, closes_point, cell_id, _subId, _dist2
83+
)
84+
85+
print(f"picked {cell_id=}")
5586

5687
def on_select(self, event):
5788
print(

0 commit comments

Comments
 (0)