Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按向量大小为vtkun结构网格着色_Python_Qt_Vtk_Paraview - Fatal编程技术网

Python 按向量大小为vtkun结构网格着色

Python 按向量大小为vtkun结构网格着色,python,qt,vtk,paraview,Python,Qt,Vtk,Paraview,我正在尝试在Qt/VTK应用程序中显示EnSight文件。更准确地说,我想显示一个特定的EnSight部分,并根据其中一个向量变量的大小对其进行着色。据我所知,VTK读取器的输出是一个vtkMultiBlockDataSet,每个部分有一个块。每个块都是一个vtkUnstructuredGrid,变量是点数据中的特定数组 到目前为止,我的代码如下。不幸的是,它显示了统一的颜色(当在ParaView中加载相同的文件时,它显示了一些局部变化) 很明显我遗漏了什么,但我不知道在哪里。如有任何提示,我将

我正在尝试在Qt/VTK应用程序中显示EnSight文件。更准确地说,我想显示一个特定的EnSight部分,并根据其中一个向量变量的大小对其进行着色。据我所知,VTK读取器的输出是一个
vtkMultiBlockDataSet
,每个部分有一个块。每个块都是一个
vtkUnstructuredGrid
,变量是
点数据中的特定数组

到目前为止,我的代码如下。不幸的是,它显示了统一的颜色(当在ParaView中加载相同的文件时,它显示了一些局部变化)

很明显我遗漏了什么,但我不知道在哪里。如有任何提示,我将不胜感激

casefile = "data/Results/exported/blahblah.case"
part_id = 0
var_id = 2

reader = vtk.vtkGenericEnSightReader()
reader.SetCaseFileName(casefile)
reader.Update()

# Color map
colormap = vtk.vtkLookupTable()
colormap.SetHueRange(0.667, 0.0)
colormap.SetVectorModeToMagnitude()
colormap.Build()

multiblock = reader.GetOutput()
ugrid = multiblock.GetBlock(part_id)
pointdata = ugrid.GetPointData()
data = pointdata.GetArray(var_id)
data_range = data.GetRange(-1)

mesh_mapper = vtk.vtkDataSetMapper()
mesh_mapper.SetInput(ugrid)
mesh_mapper.SetColorModeToDefault()
mesh_mapper.SetScalarRange(data_range)
mesh_mapper.SetScalarVisibility(True)
mesh_mapper.SetLookupTable(colormap)
#
mesh_actor = vtk.vtkActor()
mesh_actor.SetMapper(mesh_mapper)
mesh_actor.GetProperty().SetDiffuseColor(1., 1., 1.)

renderer = vtk.vtkRenderer()
renderer.AddActor(mesh_actor)
renderer.AddActor2D(colorbar)
将生成范围介于0和1之间的lookuptable。这是示例数据中的数据范围吗

如果没有,请将数据范围设置为
data\u range
元组中的最小/最大值,然后调用
Build()
-我认为这会有所帮助-您有示例数据吗

colormap = vtk.vtkLookupTable()
colormap.SetHueRange(0.667, 0.0)
colormap.SetVectorModeToMagnitude()
colormap.Build()