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

30/11/2020

Design Automation: Передаем аргументы командной строки движку Design Automation при запуске WorkItem-а

Командную строку можно задать в Activity, так каким же образом передать необходимые, специфичные для конкретной задачи, аргументы командной строки при запуске WorkItem?

Самый простой способ - это собрать всю необходимую для запуска WorkItem-а информацию в JSON-файле и передать его аргументом WorkItem-а, как это сделано, например, в руководстве LearnForge, многие так и делают. Но Вы также можете передавать дополнительную информацию в качестве аргумента командной строки движка

Вы, скорее всего, знакомы с тем, как передается информация при обращении к сервисам с использованием REST. Обычно для входных/выходных параметров используется один из: GET, PUSH, PUT. Но Вы также можете использовать READ, что мы и покажем в этой статье.

Видео, с показанным здесь решением, доступно в секции "Design Automation for Inventor" статьи, (секция начинается с 7:40)

Вы можете просто добавить дополнительный параметр в Activity:

Код - JavaScript: [Выделить]
  1. {
  2.   "commandLine": [
  3.     "$(engine.path)\\InventorCoreConsole.exe /al \"$(appbundles[DaSample].path)\" /i \"$(args[inputFile].path)\" $(args[extraParams].value)"
  4.   ],
  5.   "parameters": {
  6.     "inputFile": {
  7.       "verb": "get",
  8.       "localName": "inputFile.ipt"
  9.     },
  10.     "outputFile": {
  11.       "verb": "put",
  12.       "localName": "outputFile.ipt"
  13.     },
  14.     "extraParams": {
  15.       "verb": "read"
  16.     }
  17.   },
  18.   "id": "rGm0mO9jVSsD2yBEDk9MRtXQTwsa61y0.DaSample+prod",
  19.   "engine": "Autodesk.Inventor+24",
  20.   "appbundles": ["rGm0mO9jVSsD2yBEDk9MRtXQTwsa61y0.DaSample+prod"],
  21.   "description": "Running iLogic Rule",
  22.   "version": 1
  23. }

При использовании "verb": "read" в описании параметра, при запуске WorkItem вместо URL Вам нужно передать строковое значение:

Код - JavaScript: [Выделить]
  1. {
  2.   "inputFile": {
  3.     "url": "<url to file>"
  4.   },
  5.   "outputFile": {
  6.     "url": "<url to file>"
  7.   },
  8.   "extraParams": "/width 10 /height 20"
  9. }

Если Вы используете проект Interaction из шаблона Design Automation for Inventor для Visual Studio, тогда строковые аргументы Вы можете задать следующим образом:

Код - C#: [Выделить]
  1. private static Dictionary<string, IArgument> GetWorkItemArgs()
  2. {
  3.     return new Dictionary<string, IArgument>
  4.     {
  5.         {
  6.             Constants.Parameters.InputFile,
  7.             new XrefTreeArgument()
  8.             {
  9.                 Url = "<url of the input file>"
  10.             }
  11.         },
  12.         {
  13.             Constants.Parameters.OutputFile,
  14.             new XrefTreeArgument()
  15.             {
  16.                 Url = "<url of the output file>"
  17.             }
  18.         },
  19.         {
  20.             Constants.Parameters.ExtraParams,
  21.             new StringArgument()
  22.             {
  23.                 Value = "/width 10 /height 20"
  24.             }
  25.         }
  26.     };
  27. }

Источник: https://forge.autodesk.com/blog/pass-custom-command-line-arguments-workitem

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