当前位置:   article > 正文

VTK学习笔记3:IO操作读取写入xml文件和vtk文件_ase.io.vtkxml

ase.io.vtkxml

1.vtu文件

vtk实战(二十四)——读入vtu数据
vtk实战(三十)——写入vtu数据

2.vtp文件

2.1读入vtp文件

2.2 创建vtp文件

从网络示例和在线文档中,我收集了一些信息,创建一个完整的1-piece文件:
调用vtkXMLPloyDataWriter::SetInputData(vtkDataObject)
你传入一个vtkPolyData,你首先使用以下方法设置它:

SetVerts
SetLines
SetPolys
SetStrips
  • 1
  • 2
  • 3
  • 4

和父方法

SetPoints
  • 1

但是我还没有弄清楚如何设置vtp字段PointData和CellData。

如何设置vtp字段PointData和CellData???

要设置点数据,您可以先获取点数据对象

vtkPointData* pointData = polydata->GetPointData();
  • 1

然后你可以向它添加数组:

vtkFloatArray* myArray = vtkFloatArray::New();
myArray->SetName("myArray");
myArray->SetNumberOfComponents(1);
myArray->SetNumberOfTuples(polydata->GetNumberOfPoints());
// 这里设置数组元素...

pointData->AddArray(myArray);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

单元格数据也是如此,只需将 PointData 替换为 CellData 即可,
并将元组的数量设置为单元格的数量而不是Point的数量

sample1

source.vtp文件包含两个Point,一条Line
Point:

(0,0,0)和(1,0,0)

vtkSmartPointer<vtkPolyData> source = nullptr;
	if (source == nullptr)
	{
		vtkNew<vtkPolyData> defaultSource;
		defaultSource->Allocate();
		vtkNew<vtkPoints> defaultPoints;
		defaultPoints->Allocate(6);
		defaultPoints->InsertNextPoint(0, 0, 0);
		defaultPoints->InsertNextPoint(1, 0, 0);
		vtkIdType defaultPointIds[2];
		defaultPointIds[0] = 0;
		defaultPointIds[1] = 1;
		defaultSource->SetPoints(defaultPoints);
		defaultSource->InsertNextCell(VTK_LINE, 2, defaultPointIds);
		source = defaultSource;
	}
	vtkSmartPointer <vtkXMLPolyDataWriter> polyWriter = vtkSmartPointer <vtkXMLPolyDataWriter>::New();
	polyWriter->SetFileName("source.vtp");
	polyWriter->SetInputData(source);
	polyWriter->SetDataModeToAscii();
	polyWriter->Write();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

生成的vtp文件:

<?xml version="1.0"?>
<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
  <PolyData>
    <Piece NumberOfPoints="2" NumberOfVerts="0" NumberOfLines="1" NumberOfStrips="0" NumberOfPolys="0">
      <PointData>
      </PointData>
      <CellData>
      </CellData>
      <Points>
        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="ascii" RangeMin="0" RangeMax="1">
          0 0 0 1 0 0
          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
            <Value index="0">
              0
            </Value>
            <Value index="1">
              1
            </Value>
          </InformationKey>
        </DataArray>
      </Points>
      <Verts>
        <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
        <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
      </Verts>
      <Lines>
        <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="0" RangeMax="1">
          0 1
        </DataArray>
        <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="2" RangeMax="2">
          2
        </DataArray>
      </Lines>
      <Strips>
        <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
        <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
      </Strips>
      <Polys>
        <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
        <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="1e+299" RangeMax="-1e+299">
        </DataArray>
      </Polys>
    </Piece>
  </PolyData>
</VTKFile>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

ParaView显示效果:
在这里插入图片描述

vtk实战(二十五)——读入vtp数据
vtk实战(三十一)——写入vtp数据
vtk实战(十)—文本格式转vtp格式
VTK学习笔记1:vtkXMLPolyDataWriter

相关文档:

vtk实战(十四)——解析vtk XML 文件的内容

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/996089
推荐阅读
相关标签
  

闽ICP备14008679号