9
9
from vtkmodules .vtkInteractionStyle import vtkInteractorStyleSwitch # noqa
10
10
11
11
from vtkmodules .vtkCommonColor import vtkNamedColors
12
+ from vtkmodules .vtkCommonTransforms import vtkTransform
12
13
from vtkmodules .vtkFiltersSources import vtkConeSource
13
14
from vtkmodules .vtkInteractionWidgets import vtkBoxWidget2 , vtkBoxRepresentation
14
15
from vtkmodules .vtkRenderingCore import (
@@ -28,7 +29,7 @@ def create_vtk_pipeline():
28
29
cone .SetResolution (20 )
29
30
coneMapper = vtkPolyDataMapper ()
30
31
coneMapper .SetInputConnection (cone .GetOutputPort ())
31
- coneActor = vtkActor ()
32
+ coneActor = vtkActor (user_transform = vtkTransform () )
32
33
coneActor .SetMapper (coneMapper )
33
34
coneActor .GetProperty ().SetColor (colors .GetColor3d ("BurlyWood" ))
34
35
@@ -40,7 +41,7 @@ def create_vtk_pipeline():
40
41
renderer .SetBackground (colors .GetColor3d ("Blue" ))
41
42
renderer .AddActor (coneActor )
42
43
43
- renwin = vtkRenderWindow ()
44
+ renwin = vtkRenderWindow (off_screen_rendering = True )
44
45
renwin .AddRenderer (renderer )
45
46
46
47
# An interactor
@@ -91,9 +92,11 @@ def _on_widget_update(self, widget_state, **_):
91
92
if widget_state is None :
92
93
return
93
94
94
- print (f"{ widget_state = } " )
95
+ # Get new widget corners from state.
96
+ self .widget .representation .corners = widget_state .get ("corners" )
97
+ # Compute user transform for the actor from the new corners.
98
+ self .widget .representation .GetTransform (self .actor .user_transform )
95
99
96
- self .actor .user_transform .SetMatrix (widget_state .get ("transform" ))
97
100
self .html_view .update_throttle ()
98
101
99
102
def toggle_listeners (self ):
@@ -104,10 +107,10 @@ def toggle_listeners(self):
104
107
self .widget_id : {
105
108
"InteractionEvent" : {
106
109
"widget_state" : {
107
- "transform " : (
110
+ "corners " : (
108
111
self .widget_id ,
109
112
"WidgetRepresentation" ,
110
- "Transform " ,
113
+ "Corners " ,
111
114
),
112
115
}
113
116
}
@@ -118,10 +121,10 @@ def one_time_update(self):
118
121
self .html_view .eval (
119
122
{
120
123
"widget_state" : {
121
- "transform " : (
124
+ "corners " : (
122
125
self .widget_id ,
123
126
"WidgetRepresentation" ,
124
- "Transform " ,
127
+ "Corners " ,
125
128
),
126
129
}
127
130
}
@@ -136,7 +139,7 @@ def _ui(self):
136
139
style = "position: absolute; left: 1rem; top: 1rem; z-index: 10;" ,
137
140
)
138
141
html .Button (
139
- "Update cut " ,
142
+ "Update transformation matrix " ,
140
143
click = self .one_time_update ,
141
144
style = "position: absolute; right: 1rem; top: 1rem; z-index: 10;" ,
142
145
)
0 commit comments