整理于 https://www.icourse163.org/course/BIT-1001871001(Python科学计算三维可视化)
TVTK数据加载
vtk提供文件读取BOJ、PLY、STL
STL文件的调用格式如下:
s = tvtk.STLReader(file_name = 'slt文件名')
举例:
def ivtk_scene(actors):
from tvtk.tools import ivtk
win = ivtk.IVTKWithCrustAndBrowser() #创建crust窗口
win.open()
win.scene.add_actor(actors)
dialog = win.control.centralWidget().widget(0).widget(0) #窗口错误修正
from pyface.qt import QtCore
dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000))
dialog.show()
return win
def event_loop():
from pyface.api import GUI
gui = GUI()
gui.start_event_loop()
s = tvtk.STLReader(file_name = 'python.stl')
m = tvtk.PolyDataMapper(input_connect = s.output_port) #传递给映射器
a = tvtk.Actor(mapper = m) #通过映射器构建实体
win = ivtk_scene(a)
win.scene.iscmetric_view()
event_loop()
Plot3D+++++++++++++++++++++++++++++
分成几种文件,网格文件(xyz文件)、空气动力学文件(Q文件)、通用结果
from tvtk.api import tvtk
def read_data():
plot3d = tvtk.MultiBlockPLOT3DReader(
xyz_file_name = 'combxyz.bin',#网格文件
q_file_name = 'combq.bin',#空气动力学结果文件
scalar_function_number = 100,#设置标量数据数量
vector_function_number = 200
)
plot3d.update()#读取数据
return plot3d#返回一个plot3d的对象
plot3d = read_data()
grid = plot3d.output.get_block(0)
可以手动查看
type(plot3d.output)#返回plot3d.output的对象类型
type(plot3d.output.get_block(0))#可以获得structured_grid的类型
grid.dimensions #返回[57 33 25],数据集是57X33X25的网格
grid.points.to_array()#返回各点坐标
grid.cell_data.number_of_arrays #返回0,网格中没有数据
grid.point_data.number_of_arrays #返回4,#网格中有四种数据
grid.point_data.scalars.name #返回Density,给出标量数组scalars的名字
grid.point_data.vectors.name #返回Velocity,给出矢量数组vectors的名字