vtkInformation
和 vtkInformationVector
vtkInformation
和 vtkInformationVector
實際是maps
存儲着vtk
管線中的數據。
vtkInformationVector
相當於vtkInformation
數組。
import vtk
info = vtk.vtkInformation()
info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_PIECE_NUMBER(), 1)
print vtk.vtkStreamingDemandDrivenPipeline.UPDATE_PIECE_NUMBER()
print (info)
輸出:
vtkInformationIntegerKey (0x7fe688c8fa50)
Reference Count: 1
vtkInformation (0x7fe688e4ff80)
Debug: Off
Modified Time: 66
Reference Count: 1
Registered Events: (none)
UPDATE_PIECE_NUMBER: 1
使用vtkInformation
和 vtkInformationVector
保存整型數值。
import vtk
from vtk.util import keys
# keys.IntegerKey 保存整型
# keys.ObjectBaseKey 保存vtk.vtkObject()
key = keys.MakeKey(keys.IntegerKey, "another key", "some class")
iv = vtk.vtkInformationVector()
i1 = vtk.vtkInformation()
i1.Set(key, 10)
iv.Append(i1)
i2 = vtk.vtkInformation()
i2.Set(key, 20)
iv.Append(i2)
print iv
for i in range(2):
print iv.GetInformationObject(i)
輸出:
vtkInformationVector (0x7ff513e40f10)
Debug: Off
Modified Time: 56
Reference Count: 1
Registered Events: (none)
Number of Information Objects: 2
Information Objects:
vtkInformation(0x7ff513d33c10):
Debug: Off
Modified Time: 60
Reference Count: 2
Registered Events: (none)
another key: 10
vtkInformation(0x7ff513e42230):
Debug: Off
Modified Time: 63
Reference Count: 2
Registered Events: (none)
another key: 20
vtkInformation (0x7ff513d33c10)
Debug: Off
Modified Time: 60
Reference Count: 2
Registered Events: (none)
another key: 10
vtkInformation (0x7ff513e42230)
Debug: Off
Modified Time: 63
Reference Count: 2
Registered Events: (none)
another key: 20
vtk管線的連接
如下圖所示,3 sources (s0, s1 and s2) and 3 filters (f0, f1 and f2)。
s0 = Source()
s1 = Source()
s2 = Source()
f0 = Filter0()
f0.AddInputConnection(0, s0.GetOutputPort())
f0.AddInputConnection(0, s1.GetOutputPort())
f0.SetInputConnection(1, s2.GetOutputPort())
f1 = Filter1()
f1.SetInputConnection(f0.GetOutputPort(0))
f2 = Filter1()
f2.SetInputConnection(f0.GetOutputPort(1))
f1.Update()
f2.Update()
import vtk
from vtk.util.vtkAlgorithm import VTKPythonAlgorithmBase
class Source(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=0,
nOutputPorts=1, outputType='vtkPolyData')
def RequestData(self, request, inInfo, outInfo):
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
print (info)
return 1
class Filter0(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=2, inputType='vtkPolyData',
nOutputPorts=2, outputType='vtkPolyData')
def FillInputPortInformation(self, port, info):
if port == 0:
info.Set(vtk.vtkAlgorithm.INPUT_IS_REPEATABLE(), 1)
return 1
def RequestData(self, request, inInfo, outInfo):
print (inInfo)
print (inInfo[0], inInfo[1])
info = inInfo[0].GetInformationObject(0)
input = vtk.vtkPolyData.GetData(info)
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
return 1
class Filter1(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self,
nInputPorts=1, inputType='vtkPolyData',
nOutputPorts=1, outputType='vtkPolyData')
def RequestData(self, request, inInfo, outInfo):
info = inInfo[0].GetInformationObject(0)
input = vtk.vtkPolyData.GetData(info)
info = outInfo.GetInformationObject(0)
output = vtk.vtkPolyData.GetData(info)
return 1
輸出打印:
vtkInformation (0000017D5487FD90)
Debug: Off
Modified Time: 624
Reference Count: 3
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 0
PRODUCER: vtkCompositeDataPipeline(0000017D54568CF0) port 0
DATA_OBJECT: vtkPolyData(0000017D51CBDC30)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
vtkInformation (0000017D54880A90)
Debug: Off
Modified Time: 626
Reference Count: 3
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 0
PRODUCER: vtkCompositeDataPipeline(0000017D54568700) port 0
DATA_OBJECT: vtkPolyData(0000017D53D82AE0)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
vtkInformation (0000017D548A9C70)
Debug: Off
Modified Time: 628
Reference Count: 3
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 1
PRODUCER: vtkCompositeDataPipeline(0000017D54569B30) port 0
DATA_OBJECT: vtkPolyData(0000017D548982C0)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
((vtkmodules.vtkCommonCore.vtkInformationVector)0000017D55B6D408, (vtkmodules.vtkCommonCore.vtkInformationVector)0000017D55B6D4C8)
vtkInformationVector (0000017D54881310)
Debug: Off
Modified Time: 137
Reference Count: 2
Registered Events: (none)
Number of Information Objects: 2
Information Objects:
vtkInformation(0000017D5487FD90):
Debug: Off
Modified Time: 676
Reference Count: 2
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 0
PRODUCER: vtkCompositeDataPipeline(0000017D54568CF0) port 0
DATA_OBJECT: vtkPolyData(0000017D51CBDC30)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
vtkInformation(0000017D54880A90):
Debug: Off
Modified Time: 710
Reference Count: 2
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 0
PRODUCER: vtkCompositeDataPipeline(0000017D54568700) port 0
DATA_OBJECT: vtkPolyData(0000017D53D82AE0)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0
vtkInformationVector (0000017D54880990)
Debug: Off
Modified Time: 138
Reference Count: 2
Registered Events: (none)
Number of Information Objects: 1
Information Objects:
vtkInformation(0000017D548A9C70):
Debug: Off
Modified Time: 744
Reference Count: 2
Registered Events: (none)
CONSUMERS: vtkCompositeDataPipeline(0000017D54569670) port 1
PRODUCER: vtkCompositeDataPipeline(0000017D54569B30) port 0
DATA_OBJECT: vtkPolyData(0000017D548982C0)
UPDATE_PIECE_NUMBER: 0
UPDATE_NUMBER_OF_PIECES: 1
UPDATE_NUMBER_OF_GHOST_LEVELS: 0