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

31/10/2019

Design Automation для Inventor. Запуск правила ILogic без AppBundle

Design Automation для Inventor. Запуск правила ILogic без AppBundle

Обычно при работе с Design Automation API требуется:
1) Создать AppBundle
2) Создать Activity, использующую AppBundle
3) Запустить WorkItem, созданную на основе Activity

Тем не менее, Вы можете воспользоваться преимуществами правил iLogic, которые уже существуют в моделях, с которыми Вы работаете. Вы можете запустить код, который уже задан в модели.

Для этого нужно использовать /s параметр командной строки commandLine Вашей Activity

Activity:

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

Как можно увидеть, settings.script.value содержит код, который нужно запустить, а в командной строкеcommandLine указывается $(settings[script].path) в параметре /s.

Мы будем использовать эту Activity с моделью, содержащей правило iLogic "MyRule", и запустим её, создав 

WorkItem:

Код - JavaScript: [Выделить]
  1. {
  2.   "inputFile": {
  3.     "verb": "get",
  4.     "localName": "inputFile.ipt",
  5.     "url": "https://developer.api.autodesk.com/oss/v2/buckets/adam_poc/objects/Box_With_iLogic.ipt",
  6.     "headers": {
  7.       "Authorization": "Bearer <access token>",
  8.       "Content-type": "application/octet-stream"
  9.     }
  10.   },
  11.   "outputFile": {
  12.     "verb": "put",
  13.     "localName": "inputFile.ipt",
  14.     "url": "https://developer.api.autodesk.com/oss/v2/buckets/adam_poc/objects/Box_With_iLogic_Result.ipt",
  15.     "headers": {
  16.       "Authorization": "Bearer <access token>",
  17.       "Content-type": "application/octet-stream"
  18.     }
  19.   }
  20. }

Как Вы можете видеть, в WorkItem нет ничего особенного - мы просто передаем url-ы, откуда сервис Design Automation сможет скачать исходные файлы и куда он сможет загрузить результаты выполнения.

В результатах выполнения WorkItem можно посмотреть, что происходит:

Код - HTML: [Выделить]
  1. ...
  2. [10/30/2019 17:16:07] InventorCoreConsole.exe Information: 0 : Start of MyRule
  3. [10/30/2019 17:16:07] InventorCoreConsole.exe Information: 0 : Setting height to 2 in
  4. [10/30/2019 17:16:07] InventorCoreConsole.exe Information: 0 : Updating document
  5. [10/30/2019 17:16:07] InventorCoreConsole.exe Information: 0 : Saving changes
  6. [10/30/2019 17:16:09] InventorCoreConsole.exe Information: 0 : End of MyRule
  7. [10/30/2019 17:16:09] InventorCoreConsole.exe Information: 0 : Performing iLogic diagnostics...
  8. [10/30/2019 17:16:09] InventorCoreConsole.exe Information: 0 : End of iLogic diagnostics...
  9. ...

 

Источник: https://forge.autodesk.com/blog/run-ilogic-rule-without-appbundle

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