MXSPyCOM - A Program to Enable Editing of Max Script Files In External Code Editors

A modern version of MXSCOM, to allow for editing & execution of 3ds Max MaxScript and Python files from external code editors.

In 2005 Simon Feltman released the first MXSCOM, a small Visual Basic 6 application that took commands and sent them to Autodesk’s 3ds Max’s internal COM server. This allowed users to choose their own external code editor for editing MaxScript and to be able to have their MaxScript code execute in 3ds Max by way of having the code editor utilize MXSCOM to send the file into 3ds Max and have it executed. Modern versions of Windows can not use Simon Feltman’s old MXSCOM.exe program due to it being ActiveX based.
MXSPyCOM is a C# based replacement for MXSCOM. It offers the same functionality as MXSCOM but can run on modern versions of Windows. It also supports editing of Python files and having them execute in versions of 3ds Max, starting with 3ds Max 2015, that support Python scripts.

To Use:
[li]Put MXSPyCOM.exe on your harddrive.[/li][li]Put the file in %localappdata%\autodesk\3dsmax<Max Version><Country Code>\scripts\startup for instance, %localappdata%\autodesk\3dsmax\2017 - 64bit\scripts\startup[/li][li]In your editor of choice add an external tool. For instance, in UltraEdit ( go to Advanced \ User Tools \ Configure Tools [/li][li]On the Tool Configuration dialog insert a new command. [/li][li]Set the Menu Item Name to something like, “Execute Script in 3ds Max”. [/li][li]Set the command line to the path where MXSPyCOM.exe is located, a -f command switch and “%f”, which UltraEdit replaces with the filepath of the current document. E.g. C:\Program Files\MXSPyCOM\MXSPyCOM.exe -f “%f”[/li][li]Click OK to add the command.[/ul][/li]
Please visit the release page on GitHub for more information on how to set up external code editors (UltraEdit and Visual Studio are provided as examples) and to get the latest release.

A note on Visual Studio: If you use Python Tools for Visual Studio and attach to 3dsmax.exe any breakpoints you have set will get hit. This makes debugging Python scripts for 3ds Max much easier than trying to use 3ds Max’s internal editor, which has no debugger or breakpoint capabilities. Attaching a debugger and utilizing breakpoints is probably also achievable in other Python code editors like WingIDE or PyCharm. If MXSPyCOM users determine how to do that, please include that information on this project’s WIKI page. (4.83 KB)

1 Like

That’s awesome. Thanks for sharing, Jeff. I’m looking forward to trying this out at some point.

I just tested this with the remote debugger in PyCharm 2016.3.2 and it works like a charm.

Thanks for releasing this. Here are some steps that I followed to get remote debugger in PyCharm working alongside MXSPyCOM.

In PyCharm open Settings->Tools->External Tools.
Add a new item, which will open the Edit Tool window.
Fill out Name, Description fields, but most important is to point the Programs field to your MXSPyCom.exe, and in Parameters enter ‘-f $FilePath$’ (without quotes).

PyCharm includes a remote debugging module called pydevd (located under PyCharm installation\helpers\pydevd). You need to initialize a trace from the python script so that the remote debugger can trap any exceptions or breakpoints.
Add the full path to pydevd to your PYTHONPATH or include it in your sys.path dynamically.

Once you successfully import pydevd, make sure to include the following at the beginning of your script code.

import pydevd

pydevd.settrace(host, port=7720, suspend=False)

Last but not least, create a new Python Remoted Debug configuration, and call it whatever you want. Change the port settings to those you set in pydevd.settrace (7720) and run the remote debugger before sending your script to 3dsMax using the MXSPyCom.exe external tool.

1 Like