Understanding pymxs without documentation

Hello! Im new to 3ds in general, but more specifically to pymxs. We little to no documentation and it is slowing me down exponentially as I dont know how the methods work, what are the equivalencies, and at the end I end up executing a lot of maxscript anyway.

The documentation says pymxs is equivalent to maxscript, but thats not the case as there is a huge amount of syntax of maxscript that doesnt have an intuitive equivalent in Python, so there is a grueling trial and error process and it slows down everything. For example, I haven’t figured out how to define MouseTools in Python, because there is no syntax equivalent in Python for how is done in maxscript, and Im basically blocked. There are multiple instances like this.

Are there any suggestions, recommendations, rules you can give me to understand pymxs better given the lack of documentation.

Thanks

After asking this very question in Autodesk Forum they linked me to their freshly published new documentation you can find here:

https://help.autodesk.com/view/MAXDEV/2022/ENU/?guid=Max_Python_API_using_pymxs_html&_ga=2.200167086.164844258.1619425512-152813055.1601369191

I dont think is as comprehensive as I would like, but is a step forward.

There is a common misconception that pymxs is a different thing to maxscript. pymxs merely wraps maxscript so the comprehensive maxscript documentation can be used to decipher how to use it, you just need to apply python syntax.

As it stands you will only be able to use python for about 90% of what you want to do. Anything that has to evaluate in the scene needs to be maxscript. The cool thing is you can call python from maxscript and vice versa so you can cover every aspect with a bit of imagination.

I feel the need to leave this as part of the discussion as it might help push Autodesk by making their users aware of the problems.

You are wrong.

It is not a misconception based on my experience and the one from my coworkers who have way more time me working with pymxs in AAA production env (as Im doing now with them).

It is true pymxs is a wrapper for maxscript, and I think thats a very good step towards integrability, but they dont translate intuitively. The example above is one of many that we have encountered: there is no ‘creative’, ‘intuitive’, ‘imaginative’ way to create Tools nor Plugins as a translation of maxscript, so much so there is no actual way to do it, and there is no documentation saying so (until now). There is a lot of instances in which Python syntax clashes with maxscript, and you need to trial and error which type of parameter and how it needs to be fed to the function that you discovered might be related (string parameters comes to mind). And that doesnt mean you might find the way.

In an AAA production environment with deadlines and goals, I dont want to purely rely on imagination when a proper documentation could save a lot of problems and time, I dont have time to ‘decipher’ how the wrapper works, I need to solve the problem I have at hands. That should be a given in the documentation and thats just a bare minimum. You can actually visit the new documentation and see how examples can change sharply between how is done in maxscript and in pymxs. Im not saying this is the rule, but it is far from uncommon.

Autodesk itself (through forum answers from their employees) have acknowledge this in the past, it is not hard to find.

pymxs has a serious problem of documentation and they took a step further towards solving it.

Denying it wont help anybody.

Cheers.

1 Like

Wowsers - I hope your aren’t this abrasive with the people you work with.
Your points are valid - just as valid as mine.
Calling someone straight up wrong because you are pissed off is not a particularly decent way of communicating with someone who is trying to help you, in fact directly answering your initial question for help understanding pymxs.

Good luck to you.

As someone who’s recently had to jump into pymxs, I definitely feel your pain - AD aren’t technically wrong when they say that maxscript is directly equivalent - it’s direct to a fault.

However, as you point out, the pain pain point is that direct syntax, and working out what pieces of maxscript translate to strings, classes, object properties, Name objects etc.

Best advice I can give is to look at all the pymxs examples you can get your hands on, there are patterns to it. If you’re new to 3d, all I can say is sorry, you’re playing on hard mode.

1 Like