Files
ThirdParty-6/ParaView-5.0.1/VTK/Examples/Infovis/Python/tables_adv.py

140 lines
4.3 KiB
Python

#!/usr/bin/env python
"""
This file contains Python code illustrating the creation and manipulation of
vtkTable objects.
"""
from __future__ import print_function
from vtk import *
#------------------------------------------------------------------------------
# Some Helper Functions
#------------------------------------------------------------------------------
def add_row_to_vtkTable(vtk_table, new_row=None):
""" Python helper function to add a new row of data to a vtkTable object. """
# Just a couple of sanity checks.
if new_row == None:
print("ERROR: No data provided for new table row.")
return False
if len(new_row) != vtk_table.GetNumberOfColumns():
print("ERROR: Number of entries in new row does not match # of columns in table.")
return False
for i in range(vtk_table.GetNumberOfColumns()):
vtk_table.GetColumn(i).InsertNextValue( new_row[i] )
return True
def get_vtkTableHeaders(vtk_table):
""" Returns the vtkTable headers (column names) as a Python list """
headers = []
for icol in range( vtk_table.GetNumberOfColumns() ):
headers.append( vtk_table.GetColumn(icol).GetName() )
return headers
def get_vtkTableRow(vtk_table, row_number):
""" Returns a row from a vtkTable object as a Python list. """
row = []
for icol in range( vtk_table.GetNumberOfColumns() ):
row.append( vtk_table.GetColumn(icol).GetValue(row_number) )
return row
def get_vtkTableAsDelimitedText(vtk_table, sep="\t"):
""" return a nicely formatted string version of a vtkTable """
s = ""
hdrs = get_vtkTableHeaders(vtk_table)
for i in hdrs:
s += "%s%s"%(i,sep)
s = s.rstrip(sep)
s += "\n"
for irow in range(vtk_table.GetNumberOfRows()):
rowdata = get_vtkTableRow(vtk_table, irow)
for i in rowdata:
s += "%s%s"%(str(i),sep)
s = s.rstrip(sep)
s += "\n"
return s
#------------------------------------------------------------------------------
# Script Entry Point (i.e., main() )
#------------------------------------------------------------------------------
if __name__ == "__main__":
""" Main entry point of this python script """
#----------------------------------------------------------
# Create an empty table
T = vtkTable()
#----------------------------------------------------------
# Create Column 1 (IDs)
col1 = vtkIntArray()
col1.SetName("ID")
for i in range(1, 8):
col1.InsertNextValue(i)
T.AddColumn(col1)
#----------------------------------------------------------
# Create Column 2 (Names)
namesList = ['Bob', 'Ann', 'Sue', 'Bill', 'Joe', 'Jill', 'Rick']
col2 = vtkStringArray()
col2.SetName("Name")
for val in namesList:
col2.InsertNextValue(val)
T.AddColumn(col2)
#----------------------------------------------------------
# Create Column 3 (Ages)
agesList = [12, 25, 72, 11, 31, 36, 32]
col3 = vtkIntArray()
col3.SetName("Age")
for val in agesList:
col3.InsertNextValue(val)
T.AddColumn(col3)
#----------------------------------------------------------
# Add a row to the table
new_row = [8, "Luis", 68]
# we can't really use vtkTable.InsertNextRow() since it takes a vtkVariantArray
# as its argument (and the SetValue, etc. methods on that are not wrapped into
# Python) We can just append to each of the column arrays.
if not add_row_to_vtkTable(T, new_row):
print("Whoops!")
#----------------------------------------------------------
# Call PrintSelf() on a VTK object is done simply by printing the object
print(25*"=")
print("Calling PrintSelf():")
print(T)
#----------------------------------------------------------
# Here are a couple of ways to print out our table in Python using
# the helper functions that appear earlier in this script.
# The accessor methods used here can be adapted to do more interesting
# things with a vtkTable from within Python.
# print out our table
print(25*"=")
print("Rows as lists:")
print(get_vtkTableHeaders(T))
for i in range(T.GetNumberOfRows()):
print(get_vtkTableRow(T,i))
print("")
print(25*"=")
print("Delimited text:")
print(get_vtkTableAsDelimitedText(T))
print("vtkTable Python Example Completed.")