我想在一个 .vtu 文件中写入多个非结构化网格。
我在下面尝试过。 MakeHexagonalPrism() 和 MakeHexahedron() 返回 vtkSmartPointer 类型。
结果是输出文件中只有一个非结构化网格。
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
writer->SetFileName(filename.c_str());
writer->SetInputData(MakeHexagonalPrism());
writer->SetInputData(MakeHexahedron());
writer->Write();
我也在下面尝试过。 cellArray1和cellArray2的类型是vtkSmartPointer。结果是输出文件中只有一种类型的非结构化网格。
vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid =
vtkSmartPointer<vtkUnstructuredGrid>::New();
unstructuredGrid->SetPoints(points);
unstructuredGrid->SetCells(VTK_TETRA, cellArray1);
unstructuredGrid->SetCells(VTK_WEDGE, cellArray2);
我不知道如何在一个 .vtu 文件中编写多个非结构化网格。
如果有任何提示,我将不胜感激。
引用自文档vtkXMLUnstructuredGridWriter
可用的here https://www.vtk.org/doc/nightly/html/classvtkXMLUnstructuredGridWriter.html
一个非结构化网格输入可以写入任意数量的一个文件
流片数(如果管道的其余部分支持)。
因此,我认为不可能使用此编写器类将多个非结构化网格数据集写入一个文件。
您是否希望在同一个非结构化网格中包含多种类型的单元格(可以写入单个单元格).vtu
文件)而不是同一个网格中的多个非结构化网格.vtu
文件?如果是,则必须首先将两个元胞数组合并为一个元胞数组,并创建一个int
数组,其中包含总元胞数组中每个元胞的类型。例如,
// Create a Type vector to store cell types
std::vector<int> types;
// Create a new cell array composed of cellArray1 and cellArray2
vtkSmartPointer<vtkCellArray> allCells =
vtkSmartPointer<vtkCellArray>::New();
// Traverse cellArray1 and add it's cells to allCells
vtkSmartPointer<vtkIdList> nextCell =
vtkSmartPointer<vtkIdList>::New();
cellArray1->InitTraversal()
while( cellArray1->GetNextCell( nextCell ) ){
allCells->InsertNextCell( nextCell );
types.push_back( VTK_TETRA );
}
// Traverse cellArray2 and add it's cells to allCells
cellArray2->InitTraversal()
while( cellArray2->GetNextCell( nextCell ) ){
allCells->InsertNextCell( nextCell );
types.push_back( VTK_WEDGE );
}
//Finally, set allCells to unstructuredGrid
unstructuredGrid->SetCells( &(types[0]), allCells );
现在,当您将这个非结构化网格写入.vtu
文件中,我认为您应该在一个文件中同时包含楔形类型和四角形类型的单元格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)