首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将vtk遗留文件转换为vtu格式

如何将vtk遗留文件转换为vtu格式
EN

Stack Overflow用户
提问于 2014-10-02 10:06:08
回答 2查看 5.7K关注 0票数 2

我希望将遗留的.vtk文件转换为二进制文件,最好是.vtu文件,因为我使用的是非结构化网格。为此,我修改了来自http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/ConvertFile的转换文件示例

代码语言:javascript
运行
复制
#include <string>
#include <vtkSmartPointer.h>
#include <vtkGenericDataObjectReader.h>
#include <vtkVersion.h>
#include <vtkXMLUnstructuredGridWriter.h>
#include <vtkUnstructuredGrid.h>
    
int main(int argc, char *argv[])
{
  if(argc < 3)
    {
    std::cerr << "Required arguments: input.vtk output.vtu" << std::endl;
    return EXIT_FAILURE;
    }

  std::string inputFileName = argv[1];
  std::string outputFileName = argv[2];

  vtkSmartPointer<vtkGenericDataObjectReader> reader = vtkSmartPointer<vtkGenericDataObjectReader>::New();
  reader->SetFileName(inputFileName.c_str());
  reader->Update();

  vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
  writer->SetFileName(outputFileName.c_str());
  writer->SetInputConnection(reader->GetOutputPort());
  writer->Update();

  return EXIT_SUCCESS;
}

但是,当我使用它来转换我的遗留文件时,我会在第一组之后丢失所有的Cell数据。在我的遗留文件的最小示例中,Scal_1在.vtu文件中,但Scal_2不在。

代码语言:javascript
运行
复制
# vtk DataFile Version 3.1
Lattice Boltzmann data
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 9 INT 
0 0 0 1 0 0 2 0 0 
0 1 0 1 1 0 2 1 0 
0 2 0 1 2 0 2 2 0 

CELLS 4 20
4 0 1 3 4 
4 1 2 4 5 
4 3 4 6 7 
4 4 5 7 8 

CELL_TYPES 4
8 8 8 8 

CELL_DATA 4
SCALARS Scal_1 DOUBLE
LOOKUP_TABLE default
1 2 1 0 

SCALARS Scal_2 DOUBLE
LOOKUP_TABLE default
1 3 2 1

我还是vtk的新手。我应该用另一个读者或作家吗?还是完全不对劲?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-03 17:14:51

这里的问题是,您选择的读取器被包含两个单元格数据数组的输入文件标记为标量而感到困惑。因此,读取器只输出一个单元格数据数组。我的建议是使用ParaView,特别是pvpython可执行文件来转换文件。对应的Python代码如下所示:

代码语言:javascript
运行
复制
from paraview.simple import *
r = LegacyVTKReader( FileNames=['input.vtk'] )
w = XMLUnstructuredGridWriter()
w.FileName = 'output.vtu'
w.UpdatePipeline()
票数 4
EN

Stack Overflow用户

发布于 2019-03-08 09:46:02

您可以只使用中雄 (我的一个项目)。安装用

代码语言:javascript
运行
复制
pip3 install meshio

然后跑

代码语言:javascript
运行
复制
meshio-convert in.vtk out.vtu
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26158599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档