Automate 3ds Max with MAXScript and Python — scene manipulation, object creation, material assignment, camera setup, batch operations, UI tools, and file I/O.
SkillScore91Maintained
Automatic
◆Coding pack
Last verified 10/7/2026
What it changes
Passed 20 of 22 test cases with the skill, and 13 of 22 without it.
Without skill59%
With skill91%
Checks it passed that the model alone missed
Positioning mode property mode is set to 0.
Object instantiation uses the Sun_Positioner class.
Sets resolution dimensions using -w:4000 and -h:2250.
and 9 more in the full report
7 fixed13 passed either way2 still failing0 broke
Pass-rate lift
+32 pp
Tokens
+107%
Agent turns
0%
Response time
-43%
Model gemini-3.6-flashMeasured 10/7/2026v220 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 7
Prompt
Write the Windows command-line string to install the external 'pillow' Python package into the 3ds Max 2027 Python environment using pip.
What was checked, without and with the skill
Checked
Without skill
With skill
Command targets python.exe located inside the 3ds Max 2027 installation directory.
case-12 · gemini-3.6-flash · 10/7/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md275 linessingle file
3ds Max Scripting
Overview
3ds Max has two scripting interfaces. MAXScript is the built-in language; its reference (the MAXScript Help) documents the classes, properties and functions used below. Python talks to the same runtime through the pymxs module, so the classes and functions in the MAXScript reference are available as pymxs.runtime.<name> (max ... commands are not; run them with pymxs.runtime.execute("max quick render")). Python 2 and the MaxPlus API were removed in 3ds Max 2022.
3ds Max
Python
Qt binding
2022
3.7
PySide2 5.15
2023
3.9
PySide2
2024
3.10
PySide2
2025, 2026
3.11
PySide6 6.5
2027
3.13
PySide6 6.8
Instructions
Run a script
Listener (F11): type an expression and press Enter; switch the prompt to Python by choosing the Python radio button (there, Ctrl+Enter runs multi-line input).
MAXScript Editor: Tools > Evaluate All (Ctrl+E), or Shift+Enter for the selected lines. Set Language > Python for .py files.
From MAXScript: python.ExecuteFile "D:/tools/scene_audit.py".
Headless: 3dsmaxbatch.exe (see Batch Operations) runs .ms and .py files without the UI.
Objects and Scene
-- Parentheses create a local scope; undeclared variables at the top level are globals
(
local b = Box width:100 height:50 length:100 pos:[0, 0, 0] name:"Plinth"
local s = Sphere radius:25 pos:[200, 0, 25] segs:32
local p = Plane width:500 length:500 pos:[0, 0, 0]
-- Access objects
local obj = getNodeByName "Plinth" -- by name; $Plinth is the path-name form
-- objects, geometry, lights, cameras and selection are live scene collections
-- Transform
obj.pos = [100, 200, 0]
obj.rotation = eulerAngles 0 0 45 -- degrees
obj.scale = [2, 2, 2]