2020 BaseInterfaceInputSpec )
2121from warnings import warn
2222
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-
3623iflogger = logging .getLogger ('interface' )
3724
3825
3926class TVTKBaseInterface (BaseInterface ):
4027 _redirect_x = True
28+ _vtk_major = 6
4129
4230 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+
4537 super (TVTKBaseInterface , self ).__init__ (** inputs )
4638
4739
@@ -103,6 +95,11 @@ def _run_interface(self, runtime):
10395 import numpy as np
10496 from scipy import ndimage
10597
98+ try :
99+ from tvtk .api import tvtk
100+ except ImportError :
101+ raise ImportError ('Interface requires tvtk' )
102+
106103 r = tvtk .PolyDataReader (file_name = self .inputs .points )
107104 r .update ()
108105 mesh = r .output
@@ -133,7 +130,7 @@ def _run_interface(self, runtime):
133130 newpoints = [p + d for p , d in zip (points , disps )]
134131 mesh .points = newpoints
135132 w = tvtk .PolyDataWriter ()
136- if vtk_major <= 5 :
133+ if self . _vtk_major <= 5 :
137134 w .input = mesh
138135 else :
139136 w .set_input_data_object (mesh )
@@ -218,6 +215,11 @@ def _triangle_area(self, A, B, C):
218215 return area
219216
220217 def _run_interface (self , runtime ):
218+ try :
219+ from tvtk .api import tvtk
220+ except ImportError :
221+ raise ImportError ('Interface requires tvtk' )
222+
221223 r1 = tvtk .PolyDataReader (file_name = self .inputs .surface1 )
222224 r2 = tvtk .PolyDataReader (file_name = self .inputs .surface2 )
223225 vtk1 = r1 .output
@@ -266,7 +268,7 @@ def _run_interface(self, runtime):
266268 writer = tvtk .PolyDataWriter (
267269 file_name = op .abspath (self .inputs .out_warp ))
268270
269- if vtk_major <= 5 :
271+ if self . _vtk_major <= 5 :
270272 writer .input = mesh
271273 else :
272274 writer .set_input_data_object (mesh )
@@ -340,6 +342,11 @@ class MeshWarpMaths(TVTKBaseInterface):
340342 output_spec = MeshWarpMathsOutputSpec
341343
342344 def _run_interface (self , runtime ):
345+ try :
346+ from tvtk .api import tvtk
347+ except ImportError :
348+ raise ImportError ('Interface requires tvtk' )
349+
343350 r1 = tvtk .PolyDataReader (file_name = self .inputs .in_surf )
344351 vtk1 = r1 .output
345352 r1 .update ()
@@ -388,7 +395,7 @@ def _run_interface(self, runtime):
388395 vtk1 .point_data .vectors = warping
389396 writer = tvtk .PolyDataWriter (
390397 file_name = op .abspath (self .inputs .out_warp ))
391- if vtk_major <= 5 :
398+ if self . _vtk_major <= 5 :
392399 writer .input = vtk1
393400 else :
394401 writer .set_input_data_object (vtk1 )
@@ -399,7 +406,7 @@ def _run_interface(self, runtime):
399406 writer = tvtk .PolyDataWriter (
400407 file_name = op .abspath (self .inputs .out_file ))
401408
402- if vtk_major <= 5 :
409+ if self . _vtk_major <= 5 :
403410 writer .input = vtk1
404411 else :
405412 writer .set_input_data_object (vtk1 )
0 commit comments