赞
踩
vtk实战(二十四)——读入vtu数据
vtk实战(三十)——写入vtu数据
从网络示例和在线文档中,我收集了一些信息,创建一个完整的1-piece文件:
调用vtkXMLPloyDataWriter::SetInputData(vtkDataObject)
你传入一个vtkPolyData,你首先使用以下方法设置它:
SetVerts
SetLines
SetPolys
SetStrips
和父方法
SetPoints
但是我还没有弄清楚如何设置vtp字段PointData和CellData。
如何设置vtp字段PointData和CellData???
要设置点数据,您可以先获取点数据对象
vtkPointData* pointData = polydata->GetPointData();
然后你可以向它添加数组:
vtkFloatArray* myArray = vtkFloatArray::New();
myArray->SetName("myArray");
myArray->SetNumberOfComponents(1);
myArray->SetNumberOfTuples(polydata->GetNumberOfPoints());
// 这里设置数组元素...
pointData->AddArray(myArray);
单元格数据也是如此,只需将 PointData 替换为 CellData 即可,
并将元组的数量设置为单元格的数量而不是Point的数量
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();
生成的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>
ParaView显示效果:
vtk实战(二十五)——读入vtp数据
vtk实战(三十一)——写入vtp数据
vtk实战(十)—文本格式转vtp格式
VTK学习笔记1:vtkXMLPolyDataWriter
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。