0

我正在做一个项目,我需要创建多个 revit 文件,将它们全部压缩在一起,然后下载 zip 文件作为 Revit 设计自动化 API 中的输出。

我的项目在我的本地机器上完全按预期工作,但是当我上传我的 appbundle 并执行我的工作项时,我得到一个“failedInstructions”状态。

我不知道是否可以在设计自动化 API 中创建多个 revit 文件

以下是我尝试过的:

这是我的工作项 json,您会看到我正在传递一个带有墙上示例数据的 json 数组。

 "arguments":{
        "ElementParams":{
            "url":"{'elementdata':[[{'Keys':'Sytème','Value':'Wall_1'},{'Keys':'Thickness','Value':'120.00'},{'Keys':'Length','Value':'2500.00'},{'Keys':'Height','Value':'1200.00'}],[{'Keys':'Sytème','Value':'Wall_2'},{'Keys':'Thickness','Value':'120.00'},{'Keys':'Length','Value':'2500.00'},{'Keys':'Height','Value':'1200.00'}],[{'Keys':'Sytème','Value':'Wall_3'},{'Keys':'Thickness','Value':'120.00'},{'Keys':'Length','Value':'2500.00'},{'Keys':'Height','Value':'1200.00'}],[{'Keys':'Sytème','Value':'Wall_4'},{'Keys':'Thickness','Value':'120.00'},{'Keys':'Length','Value':'2500.00'},{'Keys':'Height','Value':'1200.00'}]]}"
            },

        "resultFamily":{
            "verb":"put",
            "url":"https://storage.googleapis.com/bucketname/RevitObjects.zip?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "headers": {
              "Authorization": "",
              "Content-Type": "application/octet-stream"
            }
        }
    }



在我的代码中,我循环创建了一个新文档。

Document doc = app.NewProjectDocument(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + "DefaultTemplates.rte");



并保存并关闭当前文档

SaveAsOptions options = new SaveAsOptions();
options.OverwriteExistingFile = true;
doc.SaveAs(Assembly.GetExecutingAssembly().Location) + "\\" + fileName, options);

doc.Close(); //Closing the document

List<string> files = Directory.GetFiles(Assembly.GetExecutingAssembly().Location) + "\\").Where(a => a.Contains(Path.GetFileNameWithoutExtension(fileName)) && a.Split('.').Count() > 2).ToList();
foreach (var fl in files)
{
if (File.Exists(fl))
File.Delete(fl);
}

byte[] filebytes = File.ReadAllBytes(GlobalData.TemplatePath + "\\" + GlobalData.DestinationFile);
GlobalData.FileList.Add(GlobalData.DestinationFile, filebytes);


这里文件名是Wall_1、Wall_2、Wall_3 和Wall_4,它们会循环出现
这里我正在做的是保存创建的revit 文件示例Wall_1
关闭文档后,有一个创建的文件示例Wall_1.0001.rvt 的副本。我删除所有创建的附加文件并保留一个最终版本并将其添加到文件字节中。

然后使用 byte[] filebytes 添加的数据创建一个名为“RevitObjects.zip”的 zip 文件,
然后我删除所有文件。

这个过程在我的本地机器上完美运行,但是当我执行工作项时,创建的日志显示以下内容:

[07/03/2019 13:47:38] Error: An unexpected error happened during phase CoreEngineExecution of job.
[07/03/2019 13:47:38] Job finished with result FailedExecution
[07/03/2019 13:47:38] Job Status:
{
  "status": "failedInstructions",

日志中没有说明其他错误消息。

让我知道是否可以在设计自动化 api for revit 中创建多个 revit 文档
我们不允许在工作目录中执行删除操作。
我尝试创建一个文件夹并执行上述相同的操作,但我收到了拒绝访问的消息。
让我知道我哪里出错了。也将不胜感激任何完成任务的指导
谢谢

4

2 回答 2

0

首先,是的,Design Automation系统支持多个revit文件输出,您只需将输出的参数zip设置为“true”,然后在您的插件中,将所有输出文件保存到一个文件夹中。正如您在“localName”的输出参数中命名的那样,请查看我在https://forge.autodesk.com/blog/how-generate-dynamic-number-output-design-automation-revit-v3上的博客文章了解所有细节。

您不能访问除当前工作文件夹之外的任何其他文件夹,您可以在当前工作文件夹下创建子文件夹并将所有文件放在那里。

希望能帮助到你。

于 2019-07-03T23:49:18.330 回答
0

如果 json 参数非常大,您可以提供“inputParameters.json”作为输入文件,而不是传递 WorkItem 有效负载中的所有内容

于 2019-07-05T21:21:08.057 回答