示例#1
0
    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
示例#2
0
    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 )
示例#3
0
    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 ) )