Verwenden von 3ds Max Batch

Dieses Thema befasst sich mit der Verwendung von 3ds Max Batch im Lieferumfang von 3ds Max 2018.4 Update und höher. Informationen zur Verwendung von 3ds Max Batch im Rahmen von 3ds Max 2018.2 Update und 2018.3 Update finden Sie unter Verwenden der älteren 3ds Max Batch-Version.

Um 3ds Max Batch zu verwenden, führen Sie zunächst folgende Schritte durch:
  1. Öffnen Sie ein Eingabeaufforderungsfenster.
  2. Ändern Sie das Verzeichnis in das Installationsverzeichnis von 3ds Max. Die Vorgabe lautet C:\Program Files\Autodesk\3ds Max <Versionsnummer>.
  3. Geben Sie Folgendes ein:

    3dsmaxbatch.exe <script_file> [options]

    In dieser Syntax ist <script_file> der Name eines MAXScript- oder Python-Skripts und ein erforderlicher Parameter. 3ds Max Batch erkennt den Skripttyp automatisch.

  4. 3ds Max Batch wird gestartet und lädt die angegebene 3ds Max-Szenendatei (falls verfügbar – dies ist ein optionaler Parameter). Anschließend werden script_file und jegliche zusätzliche Eingaben, sofern vorhanden, ausgeführt. Anschließend wird das Programm beendet.

Optionen für 3ds Max Batch

Sie können eine oder mehrere der folgenden Optionen an 3dsmaxbatch.exe übergeben.

-help
Zeigt alle Optionen an.
-v arg

Ausführlichkeitsstufe des Systemprotokolls. Gültige Argumente sind:

  • 0 – schwerwiegende Fehler
  • 1 – Fehler
  • 2 – Warnungen
  • 3 – Prozessinformationsmeldungen
  • 4 – alle Informationsmeldungen
  • 5 – Meldungen auf Fehlerbehebungsebene.

Der Standardwert ist 2.

Anmerkung: Dieser Parameter wirkt sich ausschließlich auf Meldungen von 3ds Max Batch und nicht auf Meldungen von 3ds Max ´aus. So zeigt die Einstellung 5 beispielsweise nicht alle von 3ds Max generierten Meldungen an. Weitere Informationen finden Sie im folgenden Abschnitt.
-dateFormat arg

Datumsformat-Zeichenfolge für das Konsolenprotokoll. Beispiel: yyyy-MM-dd oder ddd, MM/dd/yyyy

Eine Beschreibung der Formate für Datums- und Uhrzeitzeichenfolgen finden Sie unter https://docs.microsoft.com/de-DE/dotnet/standard/base-types/standard-date-and-time-format-strings.

-timeFormat arg

Zeitformat-Zeichenfolge für das Konsolenprotokoll. Beispiel: hh:mm:ss oder ss : mm

Eine Beschreibung der Formate für Datums- und Uhrzeitzeichenfolgen finden Sie unter https://docs.microsoft.com/de-DE/dotnet/standard/base-types/standard-date-and-time-format-strings.

-i arg

Die 3ds Max-Konfigurationsdatei (.ini). Vorgabemäßig handelt es sich dabei um die benutzerspezifische Vorgabe-Konfigurationsdatei (3dsmax.ini).

-p arg

Die Konfigurationsdatei für das 3ds Max-Plug-in (.ini). Vorgabemäßig handelt es sich dabei um die benutzerspezifische Vorgabe-Plug-in-Konfigurationsdatei (Plugin.UserSettings.ini)

Schlagen Sie unter „Plugin.ini“ im 3ds Max-Entwicklerhandbuch nach, um weitere Informationen zu erhalten.

-listenerlog arg

Die Aufzeichnungsprotokolldatei von 3ds Max zur Erfassung der Ausgabe der Aufzeichnungsfunktion. Vorgabemäßig wird kein Aufzeichnungsprotokoll erstellt.

Schlagen Sie unter „Aufzeichnungsprotokoll aktivieren“ im MAXScript-Handbuch nach, um weitere Informationen zu erhalten.

-log arg

Die Systemprotokolldatei von 3ds Max. In dieser Datei werden Skriptfehler und Ausnahmen protokolliert. Vorgabemäßig handelt es sich dabei um die benutzerspezifische Systemprotokolldatei (Max.log)

-dm arg

Zustand des Dialogfeld-Monitors. Ist diese Option aktiviert, überprüft der Dialogfeld-Monitor auf von Plug-ins stammende Dialogfelder und schließt diese. Gültige Optionen sind: on|off, yes|no, 1|0 und true|false.

Die Vorgabe lautet off.

Weitere Informationen über den Dialogfeld-Monitor finden Sie unter „Benutzeroberfläche: DialogMonitorOPS“ im Handbuch zu MAXScript.

-mxsString arg

MAXScript-Zeichenfolgenparameteroption, wobei arg = <key>:<value> ist.

<value> kann als MAXScript-Zeichenfolge in <script_file> über das Wörterbuch maxOps.mxsCmdLineArgs mit <key> als Wörterbuchschlüssel abgerufen werden.

Die Zeichenfolge muss eine MAXScript-Zeichenfolge, d. h. in Anführungszeichen eingeschlossen sein, wobei Anführungszeichen und andere Sonderzeichen innerhalb der Zeichenfolge das Escape-Zeichen aufweisen müssen. Das Präfix @ vor der Zeichenfolge bedeutet, dass es sich um eine wortwörtliche Zeichenfolge handelt. Konsultieren Sie das Thema zu Zeichenfolgenliteralen im MAXScript-Handbuch, um weitere Informationen zu erhalten.

Es sind mehrfache Angaben möglich.

-mxsValue arg

MAXScript-Wertparameteroption, wobei arg = <key>:<value> ist.

<value> kann als MAXScript-Wert in <script_file> über das Wörterbuch maxOps.mxsCmdLineArgs mit <key> als Wörterbuchschlüssel abgerufen werden.

Der Parameter <value> muss in Anführungszeichen gesetzt werden.

Es sind mehrfache Angaben möglich.

-sceneFile arg

Die 3ds Max-Eingabeszenendatei, die vor der Ausführung von <script_file> zu laden ist.

-python3Warning arg

Gibt an, ob der Python-3-Warnmodus aktiviert werden soll, in dem Elemente in Python-Skripts, die nicht mit Python 3 kompatibel sind, Warnungen auslösen. Gültige Werte für "arg" sind "1/0", "on/off", "yes/no" und "true/false", wobei der jeweils erste Wert den Modus aktiviert und der jeweils zweite Wert den Modus deaktiviert. Der Modus ist vorgabemäßig deaktiviert. Konsultieren Sie den Abschnitt über den Python-3-Warnmodus in der Hilfe zur 3ds Max Python-API, um weitere Informationen zu diesem Modus zu erhalten.

Als Argumente übergebene Pfade sind relativ zum aktuellen Verzeichnis, sofern sie nicht vollständig qualifiziert sind.

Übergeben von Informationen an das 3ds Max Batch-Skript

Anhand der beiden Befehlszeilenoptionen -mxsString und -mxsValue können Sie Zeichenfolgen bzw. Werte an die ausgeführte MAXScript-Datei übergeben. Die Werte stehen im Wörterbuch maxOps.mxsCmdLineArgs innerhalb von MAXScript als Schlüssel/Wert-Datenpaare zur Verfügung.

Beispiel für einen Befehlszeilenaufruf:

<3dsmaxpath>3dsmaxbatch demo_mxscmdline.ms -mxsString string1:"Hello"  -mxsValue value1:"[3,12,22]" -mxsValue value2:"Point3 3 8 2.3" -listenerLog "test.log"

Und das Skript demo_mxscmdline.ms:

opts = maxOps.mxsCmdLineArgs

for k in opts.keys do (
	format "% == % class: %\n" k opts[k] (classOf opts[k])
)

Das Aufzeichnungsprotokoll test.log wird die folgende Ausgabe aufweisen:

#string1 == Hello class: String
#value2 == [3,8,2.3] class: Point3
#value1 == [3,12,22] class: Point3

Mit Python-Skripten kann auf diese Werte über das Objekt pymxs.runtime zugegriffen werden.

Das gleiche Skript in Python würde folgendermaßen aussehen:

# demo using pymxs
from pymxs import runtime as rt

opts = rt.maxops.mxsCmdLineArgs

for k in opts.keys:
    print "{} == {} class: {}\n".format(k, opts[k], rt.classof(opts[k]))

# you can also get dict values using runtime.name, for example:
# value1 = opts[rt.name('value1')]
# or using runtime.execute to run MAXScript code
# value1=rt.execute("GetDictValue maxops.mxsCmdLineArgs #value1")

Abrufen von Informationen über einen 3ds Max Batch-Auftrag

Um Fehler in Stapelverarbeitungsskripten zu finden und zu beheben, können Sie zunächst das Skript in 3ds Max ausführen. Wenn das Skript korrekt ausgeführt wird, können Sie es in 3ds Max Batch ausführen. Es gibt zwei wichtige Protokolle, die beim Ausführen von Skripten hilfreiche Informationen bieten:
  • Das MAXScript-Aufzeichnungsprotokoll erfasst alle ausgegeben Befehle und gedruckten Ausgaben in einer Textdatei. Vorgabemäßig wird von 3dsmaxbatch kein Aufzeichnungsprotokoll erstellt, Sie können jedoch ein Protokoll durch Festlegen der Option -listenerlog angeben.
  • Das 3ds Max-Sitzungsprotokoll erfasst Ihre Sitzung vorgabegemäß in der Datei %LOCALAPPDATA%3dsMax\<Versionsnummer>-64bit\<Sprache>\network\Max.log. Sie können den Dateipfad mithilfe der Befehlszeilenoption -log anpassen. Fehler in MAXScript- und Python-Skripten werden in dieser Datei protokolliert.
Anmerkung: Wir empfehlen, das Aufzeichnungsprotokoll immer zu aktivieren, um die Ausgaben der Skriptausführung zur Information und für die Fehlerbehebung zu nutzen.

Mit MAXScript können Sie auch Nachrichten zur Protokolldatei hinzufügen. Verwenden Sie die MAXScript-Funktion logsystem.logEntry <string> broadcast:true, um Skriptfortschritte zu protokollieren. Der Parameter broadcast:true gibt an, dass 3ds Max diese Protokollmeldung an 3ds Max Batch senden sollte.

Sie können eine 3ds Max-Szenendatei als ein Argument in 3ds Max Batch (-sceneFile) oder in Ihrem Skript mit loadMaxFile() laden. Welche Methode Sie letztendlich verwenden, hängt davon ab, wie Sie mit fehlenden Plug-ins und XRefs umgehen möchten. Die Methode loadMaxFile() bietet Argumente für den Umgang mit fehlenden Plug-Ins oder XRefs, auf deren Basis Ihr Skript entsprechend angepasst wird (siehe „Ruhemodus“ im MAXScript-Handbuch). Beim Laden einer Datei über -sceneFile werden Informationen zu den fehlenden Plug-ins und XRefs auf der Konsole ausgegeben, sodass das automatisierte 3ds Max Batch-Skript diese Informationen verarbeiten kann.

Das Skript kann die MAXScript-Methode maxops.isInNonInteractiveMode() verwenden, um zu ermitteln, ob es in einer 3ds Max-Sitzung mit Benutzeroberfläche oder in 3ds Max Batch ausgeführt wird. Weitere Informationen finden Sie im Thema "Benutzeroberfläche: maxops" im MAXScript-Handbuch, um weitere Informationen zu erhalten.

Exit-Codes

Ihr Automatisierungswerkzeug kann die Exit-Codes aus 3ds Max Batch und 3ds Max überprüfen, um festzustellen, ob der Auftrag erfolgreich ausgeführt wurde oder nicht und was gegebenenfalls die Ursache des Problems war. Bei erfolgreicher Ausführung wird 3ds Max Batch mit dem Exit-Code 0 beendet. Bei fehlerhafter Ausführung meldet 3ds Max Batch die folgenden Exit-Codes zusammen mit den übergebenen Parametern oder mit der Kommunikation mit 3ds Max:

Wenn 3ds Max einen Fehler protokolliert, meldet 3ds Max Batch einen Exit-Code, der ungleich null ist.

Bei nicht erfolgreicher Ausführung meldet 3ds Max Batch zudem den Exit-Code von 3ds Max (0).

MAXScript unterstützt nunmehr das Beenden von 3ds Max mit einem benutzerdefinierten Exit-Code. Rufen Sie dazu quitMax mit dem Argument exicode auf. Beispielsweise dieses MAXScript:

quitMAX quiet:true exitCode:-314159

Hierdurch wird der Exit-Code -314159 auf der Konsole ausgegeben:

6/12/2018 15:46:05 PM; Specified option script: testscript.ms
6/12/2018 15:46:05 PM; Defaulted option dm: 0
6/12/2018 15:46:05 PM; Defaulted option li: 0
6/12/2018 15:46:05 PM; 3ds Max Install Location: C:\Program Files\Autodesk\3ds Max 2019\
6/12/2018 15:46:05 PM; 3ds Max Executable: 3dsmax.exe
6/12/2018 15:46:05 PM; Secure Mode: 'OFF'
6/12/2018 15:46:05 PM; Dialog Monitor: Off
6/12/2018 15:46:05 PM; Script command: " -mxs "(filein @\"C:\Program Files\Autodesk\3ds Max 2019\testscript.ms\")""
6/12/2018 15:46:06 PM; Product version: 3ds Max 2019.2 Update (21.2.0.2095)
6/12/2018 15:46:06 PM; Data collection and use is 'OFF'.
6/12/2018 15:46:30 PM; 3ds Max Exit Code = -314159
Anmerkung: Die Ausführlichkeitsstufe muss auf "Debug" (5) festgelegt werden, damit der Exit-Code in der Konsole ausgegeben werden kann. Beispiel:
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5