def get_vtk_cell_data( self, position, point_offset, cell_offset ): cells = [] for triangle in self.rt_triangles:#TODO:offset can be done simpler cells.append( triangle[1] + point_offset ) point_offset += triangle[0].shape[0] vtk_cells = vstack( cells ) # vtk_cells = vstack([triangle[1] # for triangle in self.rt_triangles]) #print "vtk_cells_array", vtk_cells n_cell_points = vtk_cells.shape[1] n_cells = vtk_cells.shape[0] vtk_cell_array = hstack( ( ones( ( n_cells, 1 ), dtype = int ) * n_cell_points, vtk_cells ) ) vtk_cell_offsets = arange( n_cells, dtype = int ) * ( n_cell_points + 1 ) + cell_offset if n_cell_points == 3: cell_str = 'Triangle' elif n_cell_points == 2: cell_str = 'Line' cell_class = tvtk_helper.get_class( cell_str ) cell_type = cell_class().cell_type vtk_cell_types = ones( n_cells, dtype = int ) * cell_type if self.debug_cell_data: print 'vtk_cells_array', vtk_cell_array print 'vtk_cell_offsets', vtk_cell_offsets print 'vtk_cell_types', vtk_cell_types return vtk_cell_array.flatten(), vtk_cell_offsets, vtk_cell_types
def _get_vtk_ip_cell_data( self ): n_ip_pnts = self.ip_coords.shape[0] from enthought.tvtk.api import tvtk from tvtk_classes import tvtk_helper cell_types = array( [( tvtk_helper.get_class( 'PolyVertex' )() ).cell_type ] ) return ( array( [0, ], dtype = int ), array( [n_ip_pnts], dtype = int ), arange( n_ip_pnts ), cell_types )
def _get_vtk_node_cell_data( self ): n_cells = len( self.vtk_cells ) #check if vtk_cell_types is a list, if not make one if isinstance( self.vtk_cell_types, str ): cell_classes = [ self.vtk_cell_types for i in range( n_cells ) ] else: cell_classes = self.vtk_cell_types cell_types = [] for cell_str in cell_classes: cell_class = tvtk_helper.get_class( cell_str ) cell_types.append( cell_class().cell_type ) if isinstance( self.vtk_cells[0], int ): # just a single cell defined return ( array( [0, ], dtype = int ), array( self.vtk_cells.shape[0], dtype = int ), array( self.vtk_cells, dtype = int ), cell_types ) offset_list = [] length_list = [] cell_list = [] vtk_offset = 0 for cell in self.vtk_cells: cell_len = len( cell ) cell_list += cell length_list.append( cell_len ) offset_list.append( vtk_offset ) vtk_offset += cell_len + 1 return ( array( offset_list, dtype = int ), array( length_list, dtype = int ), array( cell_list, dtype = int ), array( cell_types, dtype = int ) )