Scripting provides an Plug-ins vs. Scripts for extending ‘’modo’’. Scripts can be used to automate or streamline processes for the user.

Supported Languages

modo supports four scripting languages:

*Macros, the simplest script, which simply executes a series of commands in order. *Python_API. *Perl, a powerful language known for its string processing. *Lua, a popular embedded language often used in game development.

Click the links above to see articles detailing how to use each language with modo.

Interpreter Lifespan

When a fire-and-script is Command System: Executing Scripts for that language is spawned, the script is parsed and executed, and the interpreter is destroyed. Each interpreter exists only for the life of the executing script, and does not persist beyond that. This ensures that each interpreter has its own unique state.

For the Python API, there is a single application-wide interpreter that all Python plug-ins are loaded into. This is also used by the Command History viewport when it is set to Python mode.

Support Commands

Each scripting language has its own series of extensions that allow them to interact with modo. For the most part, these focus on Command System: Executing.

There are a few commands that exist primarily for use by the scripting system.

  • ScriptQuery Overview#The query Command interfaces.

  • Dialog Commands, used to open system dialogs and choice simple dialogs.

  • User Values, used to store script state in the config and provide basic user interfaces for scripts.

  • App.undoSuspend, which can significantly reduce memory usage for large operations at the expense of being able to undo them.

Examples for the various scripting languages can be found in the Scripting Examples category.