ADN Open CIS
Сообщество программистов Autodesk в СНГ

31/07/2019

Руководство по Design Automation для 3Ds Max: 2. Создание Activity

Содержание

1. Авторизация

2. Создание Activity

3. Подготовка хранилища в облаке

4. Запуск workitem

5. Загрузка результатов выполнения задачи

Краткое описание

Activity описывает задачу, которая будет запускаться сервисом Design Automation. Создавая Activity, Вы описываете, что конкретно будет выполнять сервис, например, activity данного руководства получает в качестве исходных данных zip-архив с файлом 3ds Max, строку с именем этого файла в архиве, и скрипт 3d Max-а, который будет выполнен после загрузки сцены. Результатом выполнения задачи сервисом Design Automation будет zip-архив со всем содержимым распакованного исходного архива, скриптом 3d Max-а и всеми файлами, созданными в ходе выполнения задачи в рабочей папке/подпапках.

Используемые API

Базовый URL: https://developer.api.autodesk.com/da/us-east
1. Создание новой Activity - URL конечной точки - /v3/activities, метод - POST.

2. Назначение псевдонима (alias) Activity - URL конечной точки - /v3/activities/{id}/aliases, метод - POST.

Подробное описание доступно здесь.

Шаг 1. Создание новой Activity.

Создадим activity с id "ExecuteMaxscript". Запрос:

Код - HTML: [Выделить]
  1. curl -X POST  'https://developer.api.autodesk.com/da/us-east/v3/activities'  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'  -H 'Content-Type: application/json'  -d '{
  2.         "id": "ExecuteMaxscript",
  3.         "commandLine": "\"$(engine.path)/3dsmaxbatch.exe\" -sceneFile \"$(args[InputZip].path)/$(args[MaxFileName].value)\" \"$(args[MaxscriptToExecute].path)\"",
  4.         "description": "Execute a maxscript on a max file provided in a zip",
  5.         "appbundles": [
  6.             ],
  7.         "engine" : "Autodesk.3dsMax+2019",
  8.         "parameters": {
  9.             "InputZip": {
  10.                 "zip": true,
  11.                 "ondemand": false,
  12.                 "verb": "get",
  13.                 "description": "Zip file containing the max file and all its dependencies to be unzipped in the workingFolder",
  14.                 "required": true,
  15.                 "localName": "workingFolder"
  16.             },
  17.             "MaxFileName" : {
  18.                 "zip": false,
  19.                 "description": "Name of the max file in the zip file provided as InputZip parameter",
  20.                 "ondemand": false,
  21.                 "required": true,
  22.                 "verb": "read"
  23.             },
  24.             "MaxscriptToExecute": {
  25.                 "zip": false,
  26.                 "verb": "get",
  27.                 "description": "The maxscript to run using 3dsmaxbatch.exe",
  28.                 "ondemand": false,
  29.                 "required": true,
  30.                 "localName": "maxscriptToExecute.ms"
  31.             },
  32.             "OutputZip": {
  33.                 "zip": true,
  34.                 "ondemand": false,
  35.                 "verb": "put",
  36.                 "description": "Gather everything in the working folder inside a zip for output",
  37.                 "required": true,
  38.                 "localName": "workingFolder"
  39.             }
  40.         }
  41.     }'

Ответ сервера:

Код - JavaScript: [Выделить]
  1. {
  2.     "commandLine": [
  3.         "\"$(engine.path)/3dsmaxbatch.exe\" -sceneFile \"$(args[InputZip].path)/$(args[MaxFileName].value)\" \"$(args[MaxscriptToExecute].path)\""
  4.     ],
  5.     "parameters": {
  6.         "InputZip": {
  7.             "zip": true,
  8.             "verb": "get",
  9.             "description": "Zip file containing the max file and all its dependencies to be unziped in the workingFolder",
  10.             "required": true,
  11.             "localName": "workingFolder"
  12.         },
  13.         "MaxFileName": {
  14.             "verb": "read",
  15.             "description": "Name of the max file in the zip file provided as InputZip parameter",
  16.             "required": true
  17.         },
  18.         "MaxscriptToExecute": {
  19.             "verb": "get",
  20.             "description": "The maxscript to run using 3dsmaxbatch.exe",
  21.             "required": true,
  22.             "localName": "maxscriptToExecute.ms"
  23.         },
  24.         "OutputZip": {
  25.             "zip": true,
  26.             "verb": "put",
  27.             "description": "Gather everything in the working folder inside a zip for output",
  28.             "required": true,
  29.             "localName": "workingFolder"
  30.         }
  31.     },
  32.     "id": "YourNicknameOrForgeAppClientId.ExecuteMaxscript",
  33.     "engine": "Autodesk.3dsMax+2019",
  34.     "appbundles": [],
  35.     "description": "Execute a maxscript on a max file provided in a zip",
  36.     "version": 1
  37. }

Шаг 2. Создание псевдонима (alias) версии Activity.

Создадим псевдоним (alias) "tutorial" для версии 1 activity "ExecuteMaxscript", которую мы только что создали. Псевдоним (alias) указывает на конкретную версию activity и он необходим для получения fully qualified id, который необходим для большинства функций, предоставляемых сервисом Design Automation. Более подробная информация об идентификаторах доступна здесь. Запрос для создания псевдонима:

Код - HTML: [Выделить]
  1. curl -X POST  'https://developer.api.autodesk.com/da/us-east/v3/activities/ExecuteMaxscript/aliases'  -H 'Content-Type: application/json'  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'  -d '{
  2.             "version": 1,
  3.             "id": "tutorial"
  4.         }'

Примечание: обратите особое внимание на строку запроса https://developer.api.autodesk.com/da/us-east/v3/activites/{id}/aliases. Здесь в качестве идентификатора указан unqualified id созданной activity, т.е. ExecuteMaxscript.

Ответ сервера:

Код - JavaScript: [Выделить]
  1. {
  2.     "version": 1,
  3.     "id": "tutorial"
  4. }

Назад к авторизации

Читать далее о подготовке хранилища в облаке

Источник: https://forge.autodesk.com/en/docs/design-automation/v3/tutorials/3dsmax/task-2-create-activity/

Автор перевода: Александр Игнатович
Опубликовано 31.07.2019