From 2c9f9981e256fc29f3c27c7af495316d9452567f Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Tue, 10 Nov 2015 01:49:32 +0000 Subject: [PATCH] polishing of addRectiliearGridData. subsumed functionality of addVoxelgridData into it. --- processing/post/vtk_addRectilinearGridData.py | 23 +-- processing/post/vtk_addVoxelgridData.py | 181 ------------------ 2 files changed, 9 insertions(+), 195 deletions(-) delete mode 100755 processing/post/vtk_addVoxelgridData.py diff --git a/processing/post/vtk_addRectilinearGridData.py b/processing/post/vtk_addRectilinearGridData.py index 42198cf29..fa02d2576 100755 --- a/processing/post/vtk_addRectilinearGridData.py +++ b/processing/post/vtk_addRectilinearGridData.py @@ -83,7 +83,7 @@ for name in filenames: table = damask.ASCIItable(name = name, buffered = False, readonly = True) except: continue - damask.util.croak(damask.util.emph(scriptName)+(': '+name if name else '')) + damask.util.report(scriptName, name) # --- interpret header ---------------------------------------------------------------------------- @@ -101,15 +101,13 @@ for name in filenames: for i,dim in enumerate(table.label_dimension(label)): me = label[i] if dim == -1: remarks.append('{} "{}" not found...'.format(datatype,me)) - elif dim > dimension: remarks.append('"{}" not of dimension{}...'.format(me,dimension)) + elif dim > dimension: remarks.append('"{}" not of dimension {}...'.format(me,dimension)) else: - damask.util.croak('adding {} {}'.format(datatype,me)) + remarks.append('adding {} "{}"...'.format(datatype,me)) active[datatype].append(me) - if datatype in ['scalar','vector']: - VTKarray[me] = vtk.vtkDoubleArray() - elif datatype == 'color': - VTKarray[me] = vtk.vtkUnsignedCharArray() + if datatype in ['scalar','vector']: VTKarray[me] = vtk.vtkDoubleArray() + elif datatype == 'color': VTKarray[me] = vtk.vtkUnsignedCharArray() VTKarray[me].SetNumberOfComponents(dimension) VTKarray[me].SetName(label[i]) @@ -117,7 +115,7 @@ for name in filenames: if remarks != []: damask.util.croak(remarks) if errors != []: damask.util.croak(errors) - table.close(dismiss=True) + table.close(dismiss = True) continue # ------------------------------------------ process data --------------------------------------- @@ -127,12 +125,9 @@ for name in filenames: for datatype,labels in active.items(): # loop over scalar,color for me in labels: # loop over all requested items theData = [table.data[i] for i in table.label_indexrange(me)] # read strings - if datatype == 'color': - VTKarray[me].InsertNextTuple3(*map(lambda x: int(255.*float(x)),theData)) - elif datatype == 'vector': - VTKarray[me].InsertNextTuple3(*map(float,theData)) - elif datatype == 'scalar': - VTKarray[me].InsertNextValue(float(theData[0])) + if datatype == 'color': VTKarray[me].InsertNextTuple3(*map(lambda x: int(255.*float(x)),theData)) + elif datatype == 'vector': VTKarray[me].InsertNextTuple3(*map(float,theData)) + elif datatype == 'scalar': VTKarray[me].InsertNextValue(float(theData[0])) # ------------------------------------------ add data --------------------------------------- diff --git a/processing/post/vtk_addVoxelgridData.py b/processing/post/vtk_addVoxelgridData.py deleted file mode 100755 index 228f98a28..000000000 --- a/processing/post/vtk_addVoxelgridData.py +++ /dev/null @@ -1,181 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 no BOM -*- - -import os,sys,string,vtk -import damask -from collections import defaultdict -from optparse import OptionParser - -scriptID = string.replace('$Id$','\n','\\n') -scriptName = os.path.splitext(scriptID.split()[1])[0] - -# -------------------------------------------------------------------- -# MAIN -# -------------------------------------------------------------------- - -parser = OptionParser(option_class=damask.extendableOption, usage='%prog options [file[s]]', description = """ -Add scalar and RGB tuples from ASCIItable to existing VTK voxel grid (.vtr/.vtk). - -""", version = scriptID) - -parser.add_option('-v', '--vtk', dest='vtk', type='string', - help = 'VTK file name') -parser.add_option('-s', '--scalar', dest='scalar', action='extend', - help = 'scalar values') -parser.add_option('-c', '--color', dest='color', action='extend', - help = 'RGB color tuples') -parser.add_option('-r', '--render', dest='render', action='store_true', - help = 'open output in VTK render window') - -parser.set_defaults(scalar = []) -parser.set_defaults(color = []) -parser.set_defaults(render = False) - -(options, filenames) = parser.parse_args() - -datainfo = { # list of requested labels per datatype - 'scalar': {'len':1, - 'label':[]}, - 'color': {'len':3, - 'label':[]}, - } - -if options.vtk == None or not os.path.exists(options.vtk): - parser.error('VTK file does not exist') - -if os.path.splitext(options.vtk)[1] == '.vtr': - reader = vtk.vtkXMLRectilinearGridReader() - reader.SetFileName(options.vtk) - reader.Update() - rGrid = reader.GetOutput() -elif os.path.splitext(options.vtk)[1] == '.vtk': - reader = vtk.vtkGenericDataObjectReader() - reader.SetFileName(options.vtk) - reader.Update() - rGrid = reader.GetRectilinearGridOutput() -else: - parser.error('unsupported VTK file type extension') - -Npoints = rGrid.GetNumberOfPoints() -Ncells = rGrid.GetNumberOfCells() - -#if Npoints != Ncells or Npoints != Nvertices: -# parser.error('Number of points, cells, and vertices in VTK differ from each other'); sys.exit() -if options.scalar != None: datainfo['scalar']['label'] += options.scalar -if options.color != None: datainfo['color']['label'] += options.color - -# ------------------------------------------ setup file handles --------------------------------------- - -files = [] -if filenames == []: - files.append({'name':'STDIN', 'input':sys.stdin, 'output':sys.stdout, 'croak':sys.stderr}) -else: - for name in filenames: - if os.path.exists(name): - files.append({'name':name, 'input':open(name), 'output':sys.stderr, 'croak':sys.stderr}) - -#--- loop over input files ------------------------------------------------------------------------ -for file in files: - if file['name'] != 'STDIN': file['croak'].write('\033[1m'+scriptName+'\033[0m: '+file['name']+'\n') - else: file['croak'].write('\033[1m'+scriptName+'\033[0m\n') - - table = damask.ASCIItable(file['input'],file['output'],False) # make unbuffered ASCII_table - table.head_read() # read ASCII header info - -# --------------- figure out columns to process - active = defaultdict(list) - column = defaultdict(dict) - array = defaultdict(dict) - - for datatype,info in datainfo.items(): - for label in info['label']: - foundIt = False - for key in ['1_'+label,label]: - if key in table.labels: - foundIt = True - active[datatype].append(label) - column[datatype][label] = table.labels.index(key) # remember columns of requested data - if datatype == 'scalar': - array[datatype][label] = vtk.vtkDoubleArray() - array[datatype][label].SetNumberOfComponents(1) - array[datatype][label].SetName(label) - elif datatype == 'color': - array[datatype][label] = vtk.vtkUnsignedCharArray() - array[datatype][label].SetNumberOfComponents(3) - array[datatype][label].SetName(label) - if not foundIt: - file['croak'].write('column %s not found...\n'%label) - -# ------------------------------------------ process data --------------------------------------- - - while table.data_read(): # read next data line of ASCII table - - for datatype,labels in active.items(): # loop over scalar,color - for label in labels: # loop over all requested items - theData = table.data[column[datatype][label]:\ - column[datatype][label]+datainfo[datatype]['len']] # read strings - if datatype == 'color': - theData = map(lambda x: int(255.*float(x)),theData) - array[datatype][label].InsertNextTuple3(theData[0],theData[1],theData[2],) - elif datatype == 'scalar': - array[datatype][label].InsertNextValue(float(theData[0])) - - file['input'].close() # close input ASCII table - -# ------------------------------------------ add data --------------------------------------- - - for datatype,labels in active.items(): # loop over scalar,color - if datatype == 'color': -# Polydata.GetPointData().SetScalars(array[datatype][labels[0]]) - rGrid.GetCellData().SetScalars(array[datatype][labels[0]]) - for label in labels: # loop over all requested items -# Polydata.GetPointData().AddArray(array[datatype][label]) - rGrid.GetCellData().AddArray(array[datatype][label]) - - rGrid.Modified() - if vtk.VTK_MAJOR_VERSION <= 5: - rGrid.Update() - -# ------------------------------------------ output result --------------------------------------- - -writer = vtk.vtkXMLRectilinearGridWriter() -writer.SetDataModeToBinary() -writer.SetCompressorTypeToZLib() -writer.SetFileName(os.path.splitext(options.vtk)[0]+'_added.vtr') -if vtk.VTK_MAJOR_VERSION <= 5: - writer.SetInput(rGrid) -else: - writer.SetInputData(rGrid) -writer.Write() - -# ------------------------------------------ render result --------------------------------------- - -if options.render: - mapper = vtk.vtkDataSetMapper() - mapper.SetInputData(rGrid) - actor = vtk.vtkActor() - actor.SetMapper(mapper) - - # Create the graphics structure. The renderer renders into the - # render window. The render window interactor captures mouse events - # and will perform appropriate camera or actor manipulation - # depending on the nature of the events. - - ren = vtk.vtkRenderer() - - renWin = vtk.vtkRenderWindow() - renWin.AddRenderer(ren) - - ren.AddActor(actor) - ren.SetBackground(1, 1, 1) - renWin.SetSize(200, 200) - - iren = vtk.vtkRenderWindowInteractor() - iren.SetRenderWindow(renWin) - - #ren.ResetCamera() - #ren.GetActiveCamera().Zoom(1.5) - - iren.Initialize() - renWin.Render() - iren.Start()