Design Automation: Передаем аргументы командной строки движку Design Automation при запуске WorkItem-а
Командную строку можно задать в Activity, так каким же образом передать необходимые, специфичные для конкретной задачи, аргументы командной строки при запуске WorkItem?
Самый простой способ - это собрать всю необходимую для запуска WorkItem-а информацию в JSON-файле и передать его аргументом WorkItem-а, как это сделано, например, в руководстве LearnForge, многие так и делают. Но Вы также можете передавать дополнительную информацию в качестве аргумента командной строки движка
Вы, скорее всего, знакомы с тем, как передается информация при обращении к сервисам с использованием REST. Обычно для входных/выходных параметров используется один из: GET, PUSH, PUT. Но Вы также можете использовать READ, что мы и покажем в этой статье.
Видео, с показанным здесь решением, доступно в секции "Design Automation for Inventor" статьи, (секция начинается с 7:40)
Вы можете просто добавить дополнительный параметр в Activity:
- {
- "commandLine": [
- "$(engine.path)\\InventorCoreConsole.exe /al \"$(appbundles[DaSample].path)\" /i \"$(args[inputFile].path)\" $(args[extraParams].value)"
- ],
- "parameters": {
- "inputFile": {
- "verb": "get",
- "localName": "inputFile.ipt"
- },
- "outputFile": {
- "verb": "put",
- "localName": "outputFile.ipt"
- },
- "extraParams": {
- "verb": "read"
- }
- },
- "id": "rGm0mO9jVSsD2yBEDk9MRtXQTwsa61y0.DaSample+prod",
- "engine": "Autodesk.Inventor+24",
- "appbundles": ["rGm0mO9jVSsD2yBEDk9MRtXQTwsa61y0.DaSample+prod"],
- "description": "Running iLogic Rule",
- "version": 1
- }
При использовании "verb": "read" в описании параметра, при запуске WorkItem вместо URL Вам нужно передать строковое значение:
- {
- "inputFile": {
- "url": "<url to file>"
- },
- "outputFile": {
- "url": "<url to file>"
- },
- "extraParams": "/width 10 /height 20"
- }
Если Вы используете проект Interaction из шаблона Design Automation for Inventor для Visual Studio, тогда строковые аргументы Вы можете задать следующим образом:
- private static Dictionary<string, IArgument> GetWorkItemArgs()
- {
- return new Dictionary<string, IArgument>
- {
- {
- Constants.Parameters.InputFile,
- new XrefTreeArgument()
- {
- Url = "<url of the input file>"
- }
- },
- {
- Constants.Parameters.OutputFile,
- new XrefTreeArgument()
- {
- Url = "<url of the output file>"
- }
- },
- {
- Constants.Parameters.ExtraParams,
- new StringArgument()
- {
- Value = "/width 10 /height 20"
- }
- }
- };
- }
Источник: https://forge.autodesk.com/blog/pass-custom-command-line-arguments-workitem
Опубликовано 30.11.2020
Отредактировано 30.11.2020 в 16:43:56