Fem: Better VTK version check

This commit is contained in:
marioalexis
2025-09-15 11:22:44 -03:00
committed by Chris Hennes
parent c75bb47bff
commit def22ad234
2 changed files with 36 additions and 2 deletions

View File

@@ -41,6 +41,7 @@
#include "FemPostPipeline.h"
#include "FemVTKTools.h"
#include <LibraryVersions.h>
#include <vtkVersionMacros.h>
#endif
#ifdef FC_USE_VTK_PYTHON
@@ -83,6 +84,12 @@ public:
add_varargs_method("getVtkVersion",
&Module::getVtkVersion,
"Returns the VTK version FreeCAD is linked against");
add_varargs_method("getVtkVersionNumber",
&Module::getVtkVersionNumber,
"Returns the VTK version FreeCAD is linked against as a number");
add_varargs_method("vtkVersionCheck",
&Module::vtkVersionCheck,
"Returns VTK version number from `major`, `minor` and `build` values");
#ifdef FC_USE_VTK_PYTHON
add_varargs_method(
"isVtkCompatible",
@@ -342,6 +349,27 @@ private:
return Py::String(fcVtkVersion);
}
Py::Object getVtkVersionNumber(const Py::Tuple& args)
{
if (!PyArg_ParseTuple(args.ptr(), "")) {
throw Py::Exception();
}
return Py::Long(VTK_VERSION_NUMBER);
}
Py::Object vtkVersionCheck(const Py::Tuple& args)
{
int major;
int minor;
int build = 0;
if (!PyArg_ParseTuple(args.ptr(), "ii|i", &major, &minor, &build)) {
throw Py::Exception();
}
return Py::Long(VTK_VERSION_CHECK(major, minor, build));
}
#ifdef FC_USE_VTK_PYTHON
Py::Object isVtkCompatible(const Py::Tuple& args)
{

View File

@@ -37,7 +37,11 @@ from vtkmodules.vtkCommonCore import vtkVersion
from vtkmodules.vtkCommonDataModel import vtkTable
from vtkmodules.vtkFiltersGeneral import vtkSplitColumnComponents
if vtkVersion.GetVTKMajorVersion() >= 9 and vtkVersion.GetVTKMinorVersion() >= 3:
from Fem import vtkVersionCheck
if vtkVersionCheck(
vtkVersion.GetVTKMajorVersion(), vtkVersion.GetVTKMinorVersion()
) >= vtkVersionCheck(9, 3):
from vtkmodules.vtkFiltersCore import vtkAttributeDataToTableFilter
else:
from vtkmodules.vtkInfovisCore import vtkDataObjectToTable
@@ -125,7 +129,9 @@ class DataExtraction(_BasePostTaskPanel):
if not algo:
self.data_model.setTable(vtkTable())
if vtkVersion.GetVTKMajorVersion() >= 9 and vtkVersion.GetVTKMinorVersion() >= 3:
if vtkVersionCheck(
vtkVersion.GetVTKMajorVersion(), vtkVersion.GetVTKMinorVersion()
) >= vtkVersionCheck(9, 3):
filter = vtkAttributeDataToTableFilter()
else:
filter = vtkDataObjectToTable()