Ok, nevermind. I've found a workaround.
There are 2 possible ways to deal with this. Just have to edit one or two files before installing the bindings (python -m pip install . ).
1) Edit file fbxaxissystem.sip in the Python Bindings sip directory, add 2 lines:
FbxAxisSystem();
FbxAxisSystem(EUpVector pUpVector, EFrontVector pFrontVector, ECoordSystem pCoorSystem);
FbxAxisSystem(const FbxAxisSystem& pAxisSystem);
FbxAxisSystem(const EPreDefinedAxisSystem pAxisSystem);
static bool ParseAxisSystem(const char * pAxes, FbxAxisSystem& pOutput);
virtual ~FbxAxisSystem();
After installing the bindings, the ParseAxisSystem(...) function will be properly bound and available. Could be used like this:
...
axis_system = FbxAxisSystem()
FbxAxisSystem.ParseAxisSystem("xyz", axis_system)
up_vector = axis_system.GetUpVector()
...
It works fine, it allows negative vectors but I'm yet to figure out how to properly get desired output from the string 🙂
2) The second one is actually the one I proposed in my original post - expanding the enums. I tried it before and it didn't work, but turns out I forgot to update *.sip file as well. So, what you need to do is just expand the desired enums in both <python_bindings_path>/sip/fbxaxissystem.sip and <fbx_sdk_path>/include/fbxsdk/scene/fbxaxissystem.h. Example with EFrontVector:
enum EFrontVector
{
eParityOddNegative = -2, # Add this line
eParityEvenNegative = -1, # Add this line
eParityEven = 1,
eParityOdd = 2
};
After installing the bindings, the new values can be used in FbxAxisSystem(...) constructor and are working as expected.