Utilisation de 3ds Max Batch

Cette rubrique explique comment utiliser le programme 3ds Max Batch, inclus dans 3ds Max 2018.4 Update et les versions ultérieures de 3ds Max 2018. Pour en savoir plus sur l'utilisation de 3ds Max Batch avec 3ds Max 2018.2 Update et 3ds Max 2018.3 Update, consultez la rubrique Utilisation de la version antérieure de 3ds Max Batch.

Pour commencer à utiliser 3ds Max Batch, procédez comme suit :
  1. Ouvrez une fenêtre d'invite de commande.
  2. Accédez au répertoire d'installation de 3ds Max dont l'emplacement par défaut est : C:\Program Files\Autodesk\3ds Max <n° de version>.
  3. Saisissez ce qui suit :

    3dsmaxbatch.exe <script_file> [options]

    Dans cette syntaxe, <script_file> correspond au nom d'un fichier MAXScript ou Python. Il s'agit d'un paramètre obligatoire. 3ds Max Batch détecte automatiquement le type de script.

  4. L'application démarre et charge le fichier de scène 3ds Max spécifié, le cas échéant (paramètre facultatif). Elle exécute le fichier script_file et les autres éléments fournis, le cas échant. Ensuite, l'application se ferme.

Options de 3ds Max Batch

Vous pouvez utiliser une ou plusieurs des options suivantes avec 3dsmaxbatch.exe:

-help
Afficher toutes les options.
-v arg

Niveau de détail du journal système. Les arguments valides sont les suivants :

  • 0 - Erreurs irrécupérables
  • 1 - Erreurs
  • 2 - Avertissements
  • 3 - Messages d'information liés aux processus
  • 4 - Tous les messages d'information
  • 5 - Messages de débogage

La valeur par défaut est 2.

Remarque : Ce paramètre affecte uniquement les messages générés par 3ds Max Batch et non par 3ds Max. Par exemple, la valeur 5 n'affichera pas tous les messages générés par 3ds Max. Pour en savoir plus, consultez la rubrique ci-dessous.
-dateFormat arg

Chaîne définissant le format de la date pour le journal de la console. Exemples : "yyyy-MM-dd" ou "ddd, MM/dd/yyyy"

Pour en savoir plus sur les formats de date et d'heure, consultez la page https://docs.microsoft.com/fr-FR/dotnet/standard/base-types/standard-date-and-time-format-strings.

-timeFormat arg

Chaîne définissant le format de l'heure pour le journal de la console. Exemples : "hh:mm:ss" ou "ss : mm"

Pour en savoir plus sur les formats de date et d'heure, consultez la page https://docs.microsoft.com/fr-FR/dotnet/standard/base-types/standard-date-and-time-format-strings.

-i arg

Fichier de configuration 3ds Max (.ini). Par défaut, il s'agit du fichier de configuration spécifique à l'utilisateur (3dsmax.ini).

-p arg

Fichier de configuration de plug-in 3ds Max (.ini). Par défaut, il s'agit du fichier de configuration de plug-in spécifique à l'utilisateur (Plugin.UserSettings.ini)

Consultez la rubrique "Plugin.ini" du Guide du développeur de 3ds Max pour plus d'informations.

-listenerlog arg

Fichier journal 3ds Max Listener qui enregistre les informations en provenance du récepteur. Par défaut, ce fichier n'est pas généré.

Consultez la rubrique "Activation du journal du récepteur" du Guide de MAXScript pour plus d'informations.

-log arg

Fichier journal système de 3ds Max. Les exceptions et les erreurs liées aux scripts sont consignées dans ce fichier. Par défaut, il s'agit du fichier journal système spécifique à l'utilisateur (Max.log)

-dm arg

Etat du système Dialog Monitor. Lorsque ce système est actif, il détecte les boîtes de dialogue ouvertes par les plug-ins et les ferme. Les valeurs suivantes peuvent être utilisées : "on|off", "yes|no", "1|0" et "true|false".

La valeur par défaut est "off".

Pour en savoir plus sur le système Dialog Monitor, consultez la rubrique "Interface : DialogMonitorOPS" du Guide de MAXScript.

-mxsString arg

Paramètre de chaîne MAXScript, où arg = <key>:<value>.

<value> est accessible en tant que chaîne MAXScript dans <script_file> via le dictionnaire maxOps.mxsCmdLineArgs avec <key> comme clé de dictionnaire.

La chaîne doit être en langage MAXScript. Autrement dit, elle doit être placée entre des guillemets. Tous les autres guillemets et caractères spéciaux qu'elle comporte doivent être accompagnés d'un caractère d'échappement. Le caractère "@" peut être utilisé au début de la chaîne pour indiquer qu'elle contient du texte. Pour en savoir plus, consultez la rubrique dédiée aux littéraux de chaîne dans le Guide de MAXScript pour plus d'informations.

Peut s'utiliser plusieurs fois.

-mxsValue arg

Paramètre de valeur MAXScript, où arg = <key>:<value>.

<value> est accessible en tant que valeur MAXScript dans <script_file> via le dictionnaire maxOps.mxsCmdLineArgs avec <key> comme clé de dictionnaire.

Le paramètre <value> doit être placé entre guillemets.

Peut s'utiliser plusieurs fois.

-sceneFile arg

Fichier de scène 3ds Max à charger avant l'exécution du fichier <script_file>.

-python3Warning arg

Spécifie si le mode d'avertissement de Python 3 est activé/désactivé. Quand ce mode est activé, les scripts Python non compatibles avec Python 3 sont signalés par des avertissements. Valeurs d'argument (arg) possibles : 1/0, on/off, yes/no et true/false. Dans ces paires de valeurs, la première active le mode d'avertissement tandis que la seconde le désactive. Par défaut, le mode d'avertissement est activé. Consultez l'article relatif au mode d'avertissement Python 3 dans l' Aide de 3ds Max Python API pour en savoir plus.

Les chemins transférés en tant qu'arguments sont relatifs au répertoire actuel, sauf s'ils sont entièrement qualifiés.

Transfert d'informations vers le script 3ds Max Batch

Deux options de ligne de commande permettent de transférer des informations vers le fichier MAXScript exécuté : -mxsString pour les chaînes et -mxsValue pour les valeurs. Les valeurs sont accessibles dans le dictionnaire MAXScript maxOps.mxsCmdLineArgs en tant que paires de données clé/valeur.

Voici un appel de ligne de commande à titre d'exemple :

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

Le script demo_mxscmdline.ms est celui-ci :

opts = maxOps.mxsCmdLineArgs

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

Le journal du récepteur test.log contient les lignes de commande générées :

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

Les scripts Python peuvent également accéder à ces valeurs par le biais de l'objet pymxs.runtime.

Le même script écrit en langage Python serait celui-ci :

# 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")

En savoir plus sur une tâche 3ds Max Batch

Pour rechercher et corriger les erreurs dans les scripts de traitement par lot, vous pouvez exécuter chaque script dans 3ds Max. Une fois qu'ils fonctionnent correctement, ces scripts peuvent être exécutés dans 3ds Max Batch. Deux journaux principaux fournissent des informations utiles lors de l'exécution des scripts :
  • Le journal du récepteur MAXScript capture les commandes et toutes les sorties imprimées dans un fichier texte. Par défaut, le programme 3ds Max Batch ne génère pas de journal pour l'écouteur. Vous pouvez toutefois utiliser l'option -listenerlog pour en spécifier un.
  • Le journal de session de 3ds Max consigne les activités de la session à l'emplacement %LOCALAPPDATA%3dsMax\<n° de version>-64bit\<lang>\network\Max.log par défaut. Vous pouvez changer cet emplacement avec l'option de ligne de commande -log. Les erreurs liées aux scripts MAXScript et Python sont consignées dans ce fichier.
Remarque : Nous vous conseillons de toujours activer le journal du récepteur afin de pouvoir utiliser la sortie d'exécution du script à des fins d'information et de débogage.

Vous pouvez aussi ajouter des messages au fichier journal via MAXScript. Utilisez la fonction logsystem.logEntry <string> broadcast:true dans MAXScript pour consigner la progression du script. Le paramètre broadcast:true indique que 3ds Max doit diffuser ce message du journal dans 3ds Max Batch.

Vous pouvez charger un fichier de scène 3ds Max comme argument dans 3ds Max Batch (-sceneFile) ou dans un script avec loadMaxFile(). La méthode choisie dépend de la réaction attendue en cas d'absence de plug-ins ou de xréfs. La méthode loadmaxfile() fournit des arguments pour gérer les plug-ins manquants, xréfs, etc., de sorte que votre script réagisse en conséquence (pour en savoir plus, consultez la rubrique "Mode silencieux" du Guide de MAXScript). Le chargement d'un fichier via -sceneFile imprime les informations des plug-ins et xréfs manquants dans la console, de sorte que le script d'automatisation qui appelle 3ds Max Batch puisse traiter ces informations.

Votre script peut utiliser la méthode MAXScript maxops.isInNonInteractiveMode() pour déterminer s'il est exécuté dans une session 3ds Max comportant une interface utilisateur ou dans 3ds Max Batch. Consultez la rubrique relative à l'interface maxOps du Guide de MAXScript pour plus d'informations.

Codes de sortie

L'outil d'automatisation peut contrôler les codes de sortie de 3ds Max Batch et 3ds Max pour déterminer si la tâche a été correctement exécutée ou identifier le problème en cas d'erreur. Une fois la tâche exécutée, 3ds Max Batch se ferme avec le code de sortie 0. 3ds Max Batch génère les codes de sortie suivants en cas d'erreur au niveau des paramètres transférés ou de la communication avec 3ds Max :

3ds Max Batch génère un code de sortie différent de zéro lorsque 3ds Max consigne une erreur.

3ds Max Batch génère aussi le code de sortie de 3ds Max en cas d'échec (0).

MAXScript permet aussi de quitter 3ds Max à l'aide d'un code de sortie défini par l'utilisateur. Pour ce faire, appelez quitMax avec l'argument exicode. Par exemple, ce script MAXScript :

quitMAX quiet:true exitCode:-314159

Ceci imprime le code de sortie -314159 sur la console :

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
Remarque : Pour que le code de sortie s'imprime sur la console, le niveau de verbosité doit être défini sur "debug" (5). Par exemple :
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5