Autodesk forge 在Forge API中将Revit图元数据作为JSON返回

Autodesk forge 在Forge API中将Revit图元数据作为JSON返回,autodesk-forge,autodesk-designautomation,Autodesk Forge,Autodesk Designautomation,在使用Forge API的web客户端中,我希望在模型中获得Revit元素的JSON数组。使用Design Automation API,我创建了一个使用FilterDeleteCollector检索元素的活动,但是一旦我拥有了元素,我就不确定在我的web服务中检索这些结果的最佳方法。此活动不需要写回.rvt文件 CountItApp教程将在云存储中创建一个results.txt文件,然后web应用程序将创建该results.txt文件并解析结果。在我的web客户机上,我希望显示这些结果,但文件

在使用Forge API的web客户端中,我希望在模型中获得Revit元素的JSON数组。使用Design Automation API,我创建了一个使用
FilterDeleteCollector
检索元素的活动,但是一旦我拥有了元素,我就不确定在我的web服务中检索这些结果的最佳方法。此活动不需要写回.rvt文件

CountItApp教程将在云存储中创建一个results.txt文件,然后web应用程序将创建该results.txt文件并解析结果。在我的web客户机上,我希望显示这些结果,但文件I/O似乎不是JSON数据的很好解决方案。我考虑过几个备选方案:

  • 将结果写入外部数据库,并在工作项完成后在web应用程序中查询该数据库。据我所知,这是不可能的,因为Forge在一个活动中的网络访问
  • 使用
    onComplete
    回调传递结果。我不知道这是否可能

  • 设计自动化允许您使用
    post
    回调发布带有输出参数的工作项。如果活动生成的输出文件是json文件,则这允许您以
    application/json
    的形式接收输出数据

    设计自动化还允许您在输出url中指定变量
    workitem.id
    。当您的工作项完成时,我们将使用该工作项的id调用此url。此动态变量路径允许您确定与该回调关联的工作项id

    你可以这样做。首先,使用硬编码的本地名称
    result.json来定义具有这样一个输出参数(
    verb:post
    )的活动:

    “结果”:{
    “zip”:假,
    “ondemand”:错误,
    “动词”:“post”,
    “说明”:“结果”,
    “必需”:正确,
    “localName”:“results.json”
    }
    
    在appbundle代码中,使用硬编码名称
    result.json
    将json内容保存到当前工作文件夹中

    使用(StreamWriter sw=File.CreateText(“result.json”))
    {
    WriteLine(JsonConvert.SerializeObject(数据,格式化,缩进));
    sw.Close();
    }
    
    然后您可以发布这样的工作项:

    “结果”:{
    “动词”:“post”,
    “url”:”https://www.yourserver.com/results/$(工作项id)”
    }
    

    在回调的服务器实现中,您将获得json内容作为有效负载。您可以阅读结果,并使用套接字或您与客户的任何其他通信方式,与对应于工作项id的客户进行通信。

    我在回答中添加了更多详细信息。如果这不起作用并且需要更多帮助,请联系[autodesk[DOT]com上的[code>forge[DOT]帮助。谢谢,Rahul。我想这能满足我的需要。