Python + MXS


We’re developing a system which:

Keeps track of every job and what its status is.
Each deliverable’s version/revision number.
Is tied into our time card software to keep track of bids and available time.
Keeps naming conventions consistant.
And in the future will develop front ends for the client to actually interact with the deliverable making limited changes through a python/php interface.

We also want to in the near future open up our internal pipeline status in a limited way to clients so they can review the status of their job and check in on the latest deliverables in a more transparent manner.

And a bunch of other cool stuff which is all on the drawing board.

Edit: We also have a lot of asset tracking with thousands of objects which need to be called on nearly instantly we’re considering moving all of this to a database from CSV files.


Thank you so much for the DLX, ehulser :buttrock:

You’re the man! :thumbsup:


My GDC talk “Python for Technical Artists” was today. I’ve posted my slides and code sample files here:

The Python examples include several scripts in a few Tech Art-oriented categories:

  • Data mining (large XML files)
  • Data Serialization/Persistence
  • Screen scraping
  • Textures
  • Databases (MySQL, etc)
  • Windows COM

The COM group includes examples on driving 3ds Max and Maya in various ways from outside of those apps, using Python. There’s a fun example that uses a 360 controller to fly a camera around a 3ds Max scene and place world objects on a landscape, with just a few lines of embedded MaxScript.

Check out the examples, let me know what you think.


Awesome, Adam. Thanks a lot for posting this!

– MartinB


Thanks a lot vScourge, I really appretiate sharing this with us! :buttrock:


Thanks Adam.


Thanks Adam this is really good stuff, I especially like work you have done to parent a wx.Frame to max window, this will undoubtedly make some of tools of ours look cleaner and allot more native.

Nice work!



hi all,

first, thx all for sahre your experience, yours tips and your code
it’s very really interessant

ehulser : have you possibility for compile a x64 release ?

thx again



Very welcome.

I picked up that window-linking trickery from Aloys Baillet from Animal Logic. He posted an example of that in this XSI-related blog he posted, so hats off to him. I just tweaked it to work with 3ds Max instead.

Another cool thing that isn’t actually shown-off in my example scripts is the ability to create modal dialogs (warning pop-ups, etc) from your external Python script, so that the 3ds Max window is properly disabled as well. There’s code to do that via the “show_modal_dialog” class method in the “” file, but the examples don’t call it anywhere.

You might also notice some commented-out code in that file that was the start of my attempt to create a bi-directional COM setup that would allow 3ds Max to instigate/call code inside that same Python script. Meaning, you could have MaxScript-ed callbacks that actually tell the Python script to update its UI or whatever. As it stands, with Max being the COM server and Python the client, you can only use Python to instigate an event, not vice-versa. I didn’t get to work much on the bi-directional COM thing before GDC, but hope to play with it more soon.

In any case, I’d love to hear more examples of how people use stuff like this.


We have been using this for photoshop. because we all know how fun scripting is in PS :banghead:


That’s quote interesting…

I had a very quick look at this and they only way I could find that would make this work was to create a COM server of my own and have max connect to it. The original idea was to allow the app to talk to max and max to talk back within the same context, but I havn’t yet quite gotten around to setting it up and testing it.

I’d be interested in know how you intended to achieve this



Hi Guys,

 I wrote some a class for working with back burner a couple weekends ago, at the moment I have the ability to read data from the back burner manager, I am working on seting values and adding new job etc now. 
 Thought some of you who are still using back burner might find this useful. I have used it to create Web interfaces and SMS alerts since writing it.
 I have some more code that I will post soon (depending on how busy I am) that implements "Events" that can be used as callbacks. For example when a render fails it triggers an event (that's how I implemented SMS alerts).

In the zip is the source and a pdf with simple (very simple) flow chart showing the data structure.

 Anyways, if you find any bugs or have any suggestions just post them.


Hi guys,

I wrote a simple demo to show the usage of pyBurner, basically a dumbed down version of the Back Burner Monitor. I have attached a screen shot, I will upload the source tomorrow.

Screen Cap:



I gotta ask.

Any news on the blurPython.dlx recompile for x64 as well as Max 2009 x86/x64? Would be so much appretiated! :bowdown:


Yeah I have been hanging out for an x64 build as well…



Can you elaborate on using python for photoshop? Sounds really useful!



somes infos for use python with photoshop



Wow. Thanks for the Photoshop link, that’s killer… I think I’ll just delete all my .jsx files… ha ha…


hey guys, sorry its been a while - I’ve been busy with other things and will still be busy for a little while, but we’re slowly trying to integrate python throughout the studio for all our production tracking needs, with that will come much more improvements to the Max DLL’s. Pretty much, right now I’m waiting on Python for x64 libs to link to create a x64 bit version for max, we don’t have Max 2009 yet, so I don’t have any of the SDK changes or an install of the latest compiler so hopefully i will get to that sometime in the summer.



Hi guys,

I’ve created a cgWiki entry to start consolidating the examples and discussion presented here:

I’m also in the process of setting one up for dotNet.

If you can see concise ways to add the code examples or correct and expand on what i’ve said, please feel free to go nuts. :smiley:

The two links for the articles extend from the main Maxscript article here: