20
20
BaseInterfaceInputSpec )
21
21
from warnings import warn
22
22
23
- have_tvtk = False
24
- try :
25
- import os
26
- os .environ ['ETS_TOOLKIT' ] = 'null'
27
- from tvtk .api import tvtk
28
- have_tvtk = True
29
- except ImportError :
30
- pass
31
-
32
- if have_tvtk :
33
- from tvtk .tvtk_classes .vtk_version import vtk_build_version
34
- vtk_major = int (vtk_build_version [0 ])
35
-
36
23
iflogger = logging .getLogger ('interface' )
37
24
38
25
39
26
class TVTKBaseInterface (BaseInterface ):
40
27
_redirect_x = True
28
+ _vtk_major = 6
41
29
42
30
def __init__ (self , ** inputs ):
43
- if not have_tvtk :
44
- raise RuntimeError ('Interface requires tvtk' )
31
+ try :
32
+ from tvtk .tvtk_classes .vtk_version import vtk_build_version
33
+ self ._vtk_major = int (vtk_build_version [0 ])
34
+ except ImportError :
35
+ iflogger .warning ('VTK version-major inspection using tvtk failed.' )
36
+
45
37
super (TVTKBaseInterface , self ).__init__ (** inputs )
46
38
47
39
@@ -103,6 +95,11 @@ def _run_interface(self, runtime):
103
95
import numpy as np
104
96
from scipy import ndimage
105
97
98
+ try :
99
+ from tvtk .api import tvtk
100
+ except ImportError :
101
+ raise ImportError ('Interface requires tvtk' )
102
+
106
103
r = tvtk .PolyDataReader (file_name = self .inputs .points )
107
104
r .update ()
108
105
mesh = r .output
@@ -133,7 +130,7 @@ def _run_interface(self, runtime):
133
130
newpoints = [p + d for p , d in zip (points , disps )]
134
131
mesh .points = newpoints
135
132
w = tvtk .PolyDataWriter ()
136
- if vtk_major <= 5 :
133
+ if self . _vtk_major <= 5 :
137
134
w .input = mesh
138
135
else :
139
136
w .set_input_data_object (mesh )
@@ -218,6 +215,11 @@ def _triangle_area(self, A, B, C):
218
215
return area
219
216
220
217
def _run_interface (self , runtime ):
218
+ try :
219
+ from tvtk .api import tvtk
220
+ except ImportError :
221
+ raise ImportError ('Interface requires tvtk' )
222
+
221
223
r1 = tvtk .PolyDataReader (file_name = self .inputs .surface1 )
222
224
r2 = tvtk .PolyDataReader (file_name = self .inputs .surface2 )
223
225
vtk1 = r1 .output
@@ -266,7 +268,7 @@ def _run_interface(self, runtime):
266
268
writer = tvtk .PolyDataWriter (
267
269
file_name = op .abspath (self .inputs .out_warp ))
268
270
269
- if vtk_major <= 5 :
271
+ if self . _vtk_major <= 5 :
270
272
writer .input = mesh
271
273
else :
272
274
writer .set_input_data_object (mesh )
@@ -340,6 +342,11 @@ class MeshWarpMaths(TVTKBaseInterface):
340
342
output_spec = MeshWarpMathsOutputSpec
341
343
342
344
def _run_interface (self , runtime ):
345
+ try :
346
+ from tvtk .api import tvtk
347
+ except ImportError :
348
+ raise ImportError ('Interface requires tvtk' )
349
+
343
350
r1 = tvtk .PolyDataReader (file_name = self .inputs .in_surf )
344
351
vtk1 = r1 .output
345
352
r1 .update ()
@@ -388,7 +395,7 @@ def _run_interface(self, runtime):
388
395
vtk1 .point_data .vectors = warping
389
396
writer = tvtk .PolyDataWriter (
390
397
file_name = op .abspath (self .inputs .out_warp ))
391
- if vtk_major <= 5 :
398
+ if self . _vtk_major <= 5 :
392
399
writer .input = vtk1
393
400
else :
394
401
writer .set_input_data_object (vtk1 )
@@ -399,7 +406,7 @@ def _run_interface(self, runtime):
399
406
writer = tvtk .PolyDataWriter (
400
407
file_name = op .abspath (self .inputs .out_file ))
401
408
402
- if vtk_major <= 5 :
409
+ if self . _vtk_major <= 5 :
403
410
writer .input = vtk1
404
411
else :
405
412
writer .set_input_data_object (vtk1 )
0 commit comments