Fem: Add method to rename pipeline VTK data arrays

This commit is contained in:
marioalexis
2025-03-24 01:23:15 -03:00
committed by Benjamin Nauck
parent f1258e36b2
commit 6d376dc77a
4 changed files with 61 additions and 2 deletions

View File

@@ -27,6 +27,7 @@
#include <vtkAppendFilter.h>
#include <vtkDataSetReader.h>
#include <vtkImageData.h>
#include <vtkPointData.h>
#include <vtkRectilinearGrid.h>
#include <vtkStructuredGrid.h>
#include <vtkUnstructuredGrid.h>
@@ -46,8 +47,6 @@
#endif
#include <Base/Console.h>
#include <cmath>
#include <QString>
#include "FemMesh.h"
#include "FemMeshObject.h"
@@ -737,6 +736,38 @@ void FemPostPipeline::onDocumentRestored()
}
}
void FemPostPipeline::renameArrays(const std::map<std::string, std::string>& names)
{
std::vector<vtkSmartPointer<vtkDataSet>> fields;
auto data = Data.getValue();
if (!data) {
return;
}
if (auto dataSet = vtkDataSet::SafeDownCast(data)) {
fields.emplace_back(dataSet);
}
else if (auto blocks = vtkMultiBlockDataSet::SafeDownCast(data)) {
for (unsigned int i = 0; i < blocks->GetNumberOfBlocks(); ++i) {
if (auto dataSet = vtkDataSet::SafeDownCast(blocks->GetBlock(i))) {
fields.emplace_back(dataSet);
}
}
}
for (auto f : fields) {
auto pointData = f->GetPointData();
for (const auto& name : names) {
auto array = pointData->GetAbstractArray(name.first.c_str());
if (array) {
array->SetName(name.second.c_str());
}
}
}
Data.touch();
}
PyObject* FemPostPipeline::getPyObject()
{
if (PythonObject.is(Py::_None())) {