mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
140 lines
4.3 KiB
Python
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.")
|