【发布时间】:2022-08-15 09:38:21
【问题描述】:
在 Forge 的设计自动化 API 中执行 WorkItem 时出现错误。 错误是这样的:
Error: The category \'rfaFile\' in \'$(rfaFile)\' is unrecognized. Valid values are args, settings, appbundles, engine, engines.
它发生在report.txt 中的“开始准备脚本和命令行参数”之后。我们不确定为什么会发生这种情况。看起来错误是在活动中引发的。活动如下所示:
function publishActivity() {
return $.ajax({
url: \"/api/forge/design_automation/activities\",
headers: {
\"X-CSRF-Token\": csrfToken,
\"Forge-Token\": forgeToken
},
method: \"POST\",
contentType: \"application/json\",
data: JSON.stringify({
activity: {
\"id\": \"DeleteWallsActivity\",
\"commandLine\": [ \"$(engine.path)\\\\\\\\revitcoreconsole.exe /i \\\"$(args[rfaFile].path)\\\" /al \\\"$(appbundles[TestAppId].path)\\\"\" ],
\"parameters\": {
\"rfaFile\": {
\"zip\": false,
\"ondemand\": false,
\"verb\": \"get\",
\"description\": \"Input Revit model\",
\"required\": true,
\"localName\": \"$(rfaFile)\"
},
\"result\": {
\"zip\": false,
\"ondemand\": false,
\"verb\": \"put\",
\"description\": \"Results\",
\"required\": true,
\"localName\": \"result.rfa\"
},
\"inputJson\": {
\"verb\": \"get\",
\"description\": \"input json\",
\"localName\": \"params.json\",
\"ondemand\": false,
\"required\": false,
\"zip\": false
}
},
\"engine\": \"Autodesk.Revit+2021\",
\"appbundles\": [ \"petar3db.TestAppId+test\" ],
\"description\": \"Deletes walls from Revit file.\"
}
})
}).done(function(data) {
console.log(\"Activity created\");
bundleUploadData = data[\"uploadParameters\"];
}).fail(function(jqXHR, textStatus) {
console.log(\"Failed to create activity\", jqXHR.responseJSON);
console.log(jqXHR, textStatus);
});
}
看起来\"localName\": \"$(rfaFile)\" 造成了麻烦。
让我们看一下我们通过 websockets 执行的 WorkItem 代码:
{
\"headers\": {
\"Authorization\" : \"Bearer <token here>\"
},
\"action\": \"post-workitem\",
\"data\": {
\"activityId\": \"petar3db.DeleteWallsActivity+test\",
\"arguments\": {
\"rfaFile\": {\"url\": \"https://developer.api.autodesk.com/oss/v2/signedresources/da992c60-a3d7-469d-8c3e-d0f089e2e509?region=US\", \"pathInZip\": \"emptyfam.rfa\"},
\"result\": {\"verb\": \"put\", \"url\": \"https://developer.api.autodesk.com/oss/v2/signedresources/b78151c1-93aa-495f-96c8-183bca26e071?region=US\"},
\"inputJson\": {\"localName\": \"params.json\", \"url\": \"the url to the file\"}
}
}
}
真正奇怪的是,当我们将\"inputJson\" 添加到活动和工作项中时,这个过程运行得很好并且开始抛出这个错误。 (我们想通过 WorkItem 向 AppBundle 发送一些 JSON 数据)
可能是什么问题?缺少什么吗?
-
您的帖子中是否有错字,或者这些是确切的值吗?看起来您在名为
rfaFile的活动中有一个参数,但工作项参数是rvtFile。不过,如果是这种情况,我们应该更好地向您报告此错误。 -
@RahulBhobe 是的,这是一个错字,对不起.. 它也不能与 rfaFile 一起使用。
-
好的!你有同样的错误吗?您想要压缩 rfa 文件的任何具体原因?
-
@RahulBhobe 不,在实施艾玛朱的建议后,我们不再有同样的错误。不幸的是,我们有一个新问题:文档错误:\"Document doc = data.RevitDoc;\" 行在插件代码中返回 null,所以我什至无法直接调用 LoadFamily。 zip 文件并没有什么特别之处,但如果我是对的,那根本不是问题,因为 AppBundle 可以处理 .zip 文件?
-
您是想将此系列加载到另一个文档中还是只是打开它?如果你想加载它,那么你想在哪个文档中加载它:-)?从命令行中删除
/i参数,使DA 无法打开任何文档,因此您得到一个空指针。如果您想“打开”家庭文档,请执行以下两个选项之一 -a)将/i参数添加回您的命令行,并且在将家庭文件发送到 DA 时不要压缩家庭文件。 DA 会为您打开。或b)关注艾玛的回答并使用OpenDocumentFile
标签: api autodesk-forge autodesk-designautomation