以下是一个简单的示例:

#include <vtkMultiTimeStepAlgorithm.h>

class MyTimeData : public vtkMultiTimeStepAlgorithm { public: static MyTimeData* New(); vtkTypeMacro(MyTimeData, vtkMultiTimeStepAlgorithm);

void SetTimeData(int t, vtkDataObject* data) { if (t < 0 || t >= this->GetNumberOfTimeSteps()) { vtkErrorMacro("Invalid time step!"); return; }

this->TimeData[t] = data;

}

vtkDataObject* GetTimeData(int t) { if (t < 0 || t >= this->GetNumberOfTimeSteps()) { vtkErrorMacro("Invalid time step!"); return nullptr; }

return this->TimeData[t];

}

protected: MyTimeData() { // default number of time steps is 1 this->SetNumberOfTimeSteps(1); }

~MyTimeData() override = default;

void Execute() override {}

private: vtkDataObject** TimeData = nullptr; };

vtkStandardNewMacro(MyTimeData)

使用方法:

MyTimeData* timeData = MyTimeData::New(); timeData->SetNumberOfTimeSteps(10);

vtkSmartPointer imageData = vtkSmartPointer::New(); // set image data for time step 0 timeData->SetTimeData(0, imageData);

vtkSmartPointer polyData = vtkSmartPointer::New(); // set poly data for time step 1 timeData->SetTimeData(1, polyData);

// get image data for time step 0 vtkImageData* imageData0 = vtkImageData::SafeDownCast(timeData->GetTimeData(0));

timeData->Delete()


原文地址: https://www.cveoy.top/t/topic/fjO5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录