Uso do 3ds Max Batch

Para começar a usar o 3ds Max Batch, siga estas etapas:
  1. Abra uma janela de prompt de comando.
  2. Altere o diretório para o local onde o 3ds Max está instalado. O padrão é C:\Program Files\Autodesk\3ds Max <númeroversão>.
  3. Insira o seguinte:

    3dsmaxbatch.exe <script_file> [options]

    Nesta sintaxe, <script_file> é o nome de um MAXScript ou de um script Python, e é um parâmetro necessário. O 3ds Max Batch detecta automaticamente o tipo de script. Ele pode executar todas as extensões do MAXScript e arquivos .py, .pyc e .pyw do Python.

  4. O 3ds Max Batch é iniciado e carrega o arquivo de cena especificado do 3ds Max (se fornecido; este é um parâmetro opcional). Ele executa o script_file e todas as entradas adicionais, se houver. Em seguida, é encerrado.

Opções do 3ds Max Batch

Você pode transmitir um ou mais dos seguintes itens como opções ao arquivo 3dsmaxbatch.exe.

-help
Mostrar todas as opções.
-v arg

Nível de verbosidade do registro do sistema. Argumentos válidos:

  • 0 - erros fatais
  • 1 - erros
  • 2 - avisos
  • 3 - mensagens de informações sobre o processo
  • 4 - todas as mensagens informativas
  • 5 - mensagens sobre nível de depuração

O valor padrão é 2.

Nota: Este parâmetro afeta somente mensagens geradas pelo 3ds Max Batch, e não pelo 3ds Max. Por exemplo, a definição 5 não exibirá todas as mensagens geradas pelo 3ds Max. Consulte a seção abaixo.
-dateFormat arg

Sequência de caracteres de formato de data para o registro do console. Por exemplo, "yyyy-MM-dd" ou "ddd, MM/dd/yyyy"

Consulte https://docs.microsoft.com/pt-BR/dotnet/standard/base-types/standard-date-and-time-format-strings para obter uma descrição dos formatos de sequências de caracteres de data e hora.

-timeFormat arg

Sequência de caracteres de formato de hora para o registro do console. Por exemplo, "hh:mm:ss" ou "ss : mm"

Consulte https://docs.microsoft.com/pt-BR/dotnet/standard/base-types/standard-date-and-time-format-strings para obter uma descrição dos formatos de sequências de caracteres de data e hora.

-i arg

O arquivo de configuração do 3ds (.ini). Adota o arquivo de configuração padrão por usuário (3dsmax.ini).

-p arg

O arquivo de configuração de plug-in do 3ds Max (.ini). Adota o arquivo de configuração de plug-in padrão por usuário (Plugin.UserSettings.ini)

Consulte o tópico "Plugin.ini" no guia do desenvolvedor do 3ds Max para obter mais informações.

-listenerlog arg

O arquivo de registro do 3ds Max Listener para capturar a saída do ouvinte. Nenhum registro de ouvinte é criado por padrão.

Consulte o tópico sobre "ativação do registro do Listener" no Guia do MAXScript para obter mais informações.

-log arg

O arquivo de registro de sistema do 3ds Max. Os erros e exceções de script são registrados neste arquivo. Adota como padrão o arquivo de registro de sistema por usuário (Max.log)

-dm arg

Estado do Monitor de caixa de diálogo. Quando ativado, o monitor de caixa de diálogo detecta e fecha caixas de diálogo de plug-ins. Seleções válidas: 'on|off', 'yes|no', '1|0' e 'true|false'.

O padrão adotado é off.

Para obter mais informações sobre o Monitor de caixa de diálogo, consulte o tópico sobre "interface: DialogMonitorOPS" no Guia do MAXScript.

-mxsString arg

Opção de Parâmetro de sequência de caracteres do MAXScript, em que arg = <key>:<value> .

<value> é acessível como sequência de caracteres do MAXScript em <script_file> por meio do dicionário maxOps.mxsCmdLineArgs usando-se <key> como a chave de dicionário.

A sequência de caracteres deve ser do MAXScript, ou seja, deve estar entre aspas, e todas as aspas e outros caracteres especiais dentro da sequência de caracteres devem ser tratados como sequências de escape. A sequência de caracteres deve ter o prefixo '@', indicando que é do tipo literal. Consulte o tópico sobre "Literais de sequência de caracteres" no Guia do MAXScript para obter mais informações.

Podem ser especificados várias vezes.

-mxsValue arg

Opção de parâmetro de valor do MAXScript, em que arg = <key>:<value>.

<value> é acessível como sequência de caracteres do MAXScript em <script_file> por meio do dicionário maxOps.mxsCmdLineArgs usando-se <key> como a chave de dicionário.

O parâmetro <value> deve ficar entre aspas.

Podem ser especificados várias vezes.

-sceneFile arg

O arquivo de cena de entrada do 3ds Max a ser carregado antes de <script_file> ser executado.

-safescene <ON|OFF>
Especifica se o recurso Execução de script de cena segura deve ser ativado ou desativado para esta sessão do 3ds Max. Essa configuração substitui a da guia Preferências de segurança.

Os caminhos transmitidos como argumentos são relativos ao diretório atual, a menos que sejam totalmente qualificados.

Transmissão de informações ao Script do 3ds Max Batch

Duas opções da linha de comando permitem transmitir informações ao arquivo MAXScript executado: -mxsString e -mxsValue, que transmitem respectivamente sequências e valores. Os valores podem ser acessados dentro do MAXScript, no dicionário maxOps.mxsCmdLineArgs como DataPairs de chave/valor.

Por exemplo, considere esta chamada de linha de comando:

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

E o script demo_mxscmdline.ms:

opts = maxOps.mxsCmdLineArgs

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

O registro de ouvinte test.log deve conter a saída:

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

Os scripts Python também podem acessar esses valores por meio do objeto pymxs.runtime.

O mesmo script escrito em Python teria esta aparência:

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

Obter informações sobre o seu trabalho do 3ds Max Batch

Para localizar e corrigir erros no processamento de scripts em lote, é possível executar o script primeiro no 3ds Max. Com o script funcionando corretamente, você pode executá-lo no 3ds Max Batch. Há dois registros principais que fornecem informações úteis à execução de scripts:
  • O Registro do MAXScript Listener captura os seus comandos e toda a saída impressa em um arquivo de texto. Por padrão, o 3dsmaxbatch não cria um registro de ouvinte, mas você pode fazer isso especificando a opção -listenerlog.
  • Por padrão, o Registro da sessão do 3ds Max captura a sua sessão em %LOCALAPPDATA%3dsMax\<númeroversão>-64bit\<idioma>\network\Max.log. Você pode personalizar o caminho de arquivo usando a opção de linha de comando -log. Os erros de scripts MAXScript e Python são registrados nesse arquivo
Nota: Recomendamos que você sempre ative o registro do Listener, para aproveitar a saída da execução do script para fins de informação e depuração.

Você também pode adicionar mensagens ao arquivo de registro por meio do MAXScript. Use a função logsystem.logEntry <string> broadcast:true no MAXScript para registrar o andamento do script. O parâmetro broadcast:true indica que o 3ds Max deve transmitir essa mensagem de registro ao 3ds Max Batch.

Você pode carregar um arquivo de cena do 3ds Max como argumento em (-sceneFile) do 3ds Max Batch, ou no seu próprio script, com loadMaxFile(). O método escolhido vai depender de como você deseja reagir aos plug-ins e refexs ausentes. O método loadMaxFile() fornece argumentos para lidar com a ausência de plug-ins, refexs etc., para que seu script possa reagir corretamente (consulte o tópico sobre "modo de saída" no Guia do MAXScript). O carregamento de um arquivo através de -sceneFile imprimirá informações sobre plug-ins e refexs ausentes no console para serem usadas pelo script de automação que chama o 3ds Max Batch.

Seu script pode usar o método MAXScript maxops.isInNonInteractiveMode() para determinar se ele está em execução em uma sessão do 3ds Max que tem uma interface de usuário ou no 3ds Max Batch. Consulte o tópico "Interface: maxops" no Guia do MAXScript para obter mais informações.

Códigos de saída

O 3ds Max Batch reportará um código de saída diferente de zero quando o 3ds Max registrar um erro.

Além disso, ele também reportará o código de saída do 3ds Max, caso seja diferente de "sucesso" (0).

Sua ferramenta de automação pode verificar os códigos de saída do 3ds Max Batchx e do 3ds Max para determinar se o trabalho foi bem-sucedido e, caso tenha havido algum problema, qual foi a causa. Em caso de sucesso, o 3ds Max Batch sai com o código de saída 0. O 3ds Max Batch reportará esses códigos de saída se houver erro nos parâmetros transmitidos a ele ou na comunicação com o 3ds Max:

Código de saída Significado
0 Sucesso
-100 Argumentos ausentes, ou os argumentos especificados não são válidos.
-110 Não foi possível iniciar o processo do 3ds Max; o motivo específico está registrado no console.
-120 Não foi possível estabelecer ou manter a comunicação com o processo do 3ds Max.
-130 O 3ds Max reportou um erro durante a execução dos comandos.
Códigos de erro fatal adicionais:
-1 Falha genérica, exceção tratada
-2 Exceção não tratada
-3 O processo apresentou erro fatal ao processar WM_CLOSE
-4 O processo apresentou erro fatal ao processar WM_DESTROY
-5 O processo apresentou erro fatal antes do final de WinMain()
-6 Sem memória
-7 Não foi possível criar um dispositivo gráfico válido
-8 Erro de licença
-9 Não foi possível criar o aplicativo

O MAXScript também permite sair do 3ds Max com um código de saída definido pelo usuário. Para isso, chame quitMax com o argumento exicode. Por exemplo, este MAXScript:

quitMAX quiet:true exitCode:-314159

O código de saída -314159 será impresso no 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
Nota: O nível de verbosidade deve ser definido como "depurar" (5), para que o código de saída seja impresso no console. Por exemplo:
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5