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

31/05/2020

Design Automation: Inventor Run() и RunWithArguments()

Design Automation API для Inventor вызывает либо Run(), либо RunWithArguments() плагина в AppBundle, в зависимости от указанной командной строки (параметра commandLine в Activity, использующей AppBundle)

- Run(Document doc) вызывается только, если параметр commandLine содержит только аргументы, обрабатываемые InventorCoreConsole. На текущий момент это:
/al: путь к загружаемой AppBundle
/i: путь к загружаемому документу
/s: путь к файлу запускаемого скрипта (см Run command from an AutoCAD AppBundle и Run iLogic Rule without AppBundle
т. е. что-то вроде:

Код - HTML: [Выделить]
  1. $(engine.path)\\InventorCoreConsole.exe /i $(args[inputFile].path) /s $(settings[script].path)

- RunWithArguments(Document doc, NameValueMap map) вызывается в случае наличия дополнительных аргументов, обрабатываемых InventorCoreConsole, например:

Код - HTML: [Выделить]
  1. $(engine.path)\\InventorCoreConsole.exe /i $(args[inputFile].path) /s $(settings[script].path) params.json

Код - HTML: [Выделить]
  1. $(engine.path)\\InventorCoreConsole.exe /i $(args[inputFile].path) /s $(settings[script].path) /j $(args[inputParams].path)

Дополнительные аргументы командной строки будут доступны в параметре map. Ключами NameValueMap будут "_1", "_2" … Например, для следующей commandLine

Код - HTML: [Выделить]
  1. "$(engine.path)\\InventorCoreConsole.exe /al $(appbundles[{Constants.Activity.Id}].path) /j $(args[{Constants.Parameters.InputJson}].path) /k \"justatest\""

следующие значения NameValueMapбудут перечислены в логах Workitem-а:

Код - HTML: [Выделить]
  1. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : RunWithArguments called
  2. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : List of values in 'map':
  3. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : _1 = /j
  4. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : _2 = T:\Aces\Jobs\9fbed84f067b4181b6f3d38cc447ab48\input.json
  5. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : _3 = /k
  6. [03/21/2020 13:18:39]     InventorCoreConsole.exe Information: 0 : _4 = just a test

Для вывода этой информации в логи был использован следующий код:

Код - C#: [Выделить]
  1. public void RunWithArguments(Document doc, NameValueMap map)
  2. {
  3.     LogTrace("RunWithArguments called");
  4.  
  5.     Trace.TraceInformation("List of values in 'map':");
  6.  
  7.     for (int i = 1; i <= map.Count; i++)
  8.     {
  9.         Trace.TraceInformation($"{map.Name[i]} = {map.Item[i]}");
  10.     }
  11. }

Другой способ считывания аргументов командной строки показан в статье Handle command line arguments

 

Источник: https://forge.autodesk.com/blog/run-vs-runwitharguments

 

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