C++使用vtkXMLUnstructuredGridWriter输出一个vtu文件其含有两个piece第一个piece含三角形的vtkUnstructuredGrid第二个piece是四边形的vtkUnstructuredGrid
以下是示例代码,其中包含两个piece的输出:
#include <vtkSmartPointer.h>
#include <vtkXMLUnstructuredGridWriter.h>
#include <vtkUnstructuredGrid.h>
#include <vtkPoints.h>
#include <vtkCellArray.h>
#include <vtkTriangle.h>
#include <vtkQuad.h>
int main(int argc, char* argv[])
{
// Create the first unstructured grid with triangles
vtkSmartPointer<vtkUnstructuredGrid> ug1 =
vtkSmartPointer<vtkUnstructuredGrid>::New();
// Create points
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(1, 0, 0);
points->InsertNextPoint(0, 1, 0);
points->InsertNextPoint(1, 1, 0);
ug1->SetPoints(points);
// Create cells
vtkSmartPointer<vtkCellArray> cells =
vtkSmartPointer<vtkCellArray>::New();
vtkSmartPointer<vtkTriangle> triangle1 =
vtkSmartPointer<vtkTriangle>::New();
triangle1->GetPointIds()->SetId(0, 0);
triangle1->GetPointIds()->SetId(1, 1);
triangle1->GetPointIds()->SetId(2, 2);
vtkSmartPointer<vtkTriangle> triangle2 =
vtkSmartPointer<vtkTriangle>::New();
triangle2->GetPointIds()->SetId(0, 1);
triangle2->GetPointIds()->SetId(1, 3);
triangle2->GetPointIds()->SetId(2, 2);
cells->InsertNextCell(triangle1);
cells->InsertNextCell(triangle2);
ug1->SetCells(VTK_TRIANGLE, cells);
// Create the second unstructured grid with quads
vtkSmartPointer<vtkUnstructuredGrid> ug2 =
vtkSmartPointer<vtkUnstructuredGrid>::New();
// Create points
vtkSmartPointer<vtkPoints> points2 =
vtkSmartPointer<vtkPoints>::New();
points2->InsertNextPoint(1, 0, 0);
points2->InsertNextPoint(2, 0, 0);
points2->InsertNextPoint(2, 1, 0);
points2->InsertNextPoint(1, 1, 0);
ug2->SetPoints(points2);
// Create cells
vtkSmartPointer<vtkCellArray> cells2 =
vtkSmartPointer<vtkCellArray>::New();
vtkSmartPointer<vtkQuad> quad =
vtkSmartPointer<vtkQuad>::New();
quad->GetPointIds()->SetId(0, 0);
quad->GetPointIds()->SetId(1, 1);
quad->GetPointIds()->SetId(2, 2);
quad->GetPointIds()->SetId(3, 3);
cells2->InsertNextCell(quad);
ug2->SetCells(VTK_QUAD, cells2);
// Write both unstructured grids to a single file
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
writer->SetFileName("output.vtu");
writer->SetInputData(0, ug1);
writer->SetInputData(1, ug2);
writer->Write();
return 0;
}
该程序创建了两个不同的vtkUnstructuredGrid,分别包含三角形和四边形。然后,它将这两个vtkUnstructuredGrid作为两个不同的piece传递给vtkXMLUnstructuredGridWriter,并将它们写入一个名为“output.vtu”的文件中
原文地址: https://www.cveoy.top/t/topic/frAp 著作权归作者所有。请勿转载和采集!