是否可以通过 Revit API 或 FORGE API 在 Revit 模型中加载新的云 (BIM 360) 链接?

Is it possible to load new Cloud (BIM 360) links in a Revit model either through the Revit API or FORGE API?

我有一个由两部分组成的 WPF 应用程序和 Revit 插件,它运行一系列例程以通过 FORGE BIM 360 API 创建和激活新的 BIM 360 项目,启动 Revit 并创建和设置一个来自 "seed" Revit 模型的 Revit 模型集合。 主要要求是在此过程中实现零用户交互:完全自动化。

鉴于该背景,我在将新保存的 BIM 360 模型link相互转换时遇到问题。我可以选择在带有 Revit API 挂钩(首选)的 Revit 插件中执行此操作,或者在创建模型后通过带有 FORGE API REST 调用的管理器 WPF 应用程序执行此操作。

两者都可以吗?

我已经成功地 link 编辑了缓存的本地模型,如 here and here 所述。但是,这并不完全满足要求,因为当任何其他用户(除了自动化机器用户)打开模型时,link 未找到。

Screenshot of links Not Found.

当前"sort-of-working"代码:

var wId = GetWorksetId(doc, w);
if (wId != null)
{
    string localPath = settings.CloudModels.Where(x => x.ModelName == _linkModelNames[i]).Select(x => x.LocalFilePath).First();
    ModelPath path = ModelPathUtils.ConvertUserVisiblePathToModelPath(localPath);

    using (var options = new RevitLinkOptions(true))
    {
        using (var t = new Transaction(doc, w))
        {
            t.Start();
            doc.GetWorksetTable().SetActiveWorksetId(wId);

            using (var result = RevitLinkType.Create(doc, path, options))
            {
                _ = RevitLinkInstance.Create(doc, result.ElementId);
            }

            t.Commit();
            linkPlaced++;
        }
    }
}

由于 this helpful tip. I can save this value in my Addin, close the model, and access the property later after opening a different model (saved in the CloudModels class referenced in the linq statement in the code snippet above). Unfortunately for me RevitLinkType.Create() that takes a ModelPath does not accept the cloud path, so I may have hit another dead end. Unless it is possible with an ExternalResourceReference. Has anyone tried this option? If so, how do you assemble a Revit ExternalResourceReference? I am not familiar with this process, and looking over this course from AU 2017,我能够通过 Revit API 获得正确的 ModelPath,我认为它不一定适用于 BIM 360 云模型。如果可能的话,BIM 360 云示例将非常有帮助。

替代策略:我没有在 FORGE 数据管理 API 或其他 FORGE API 中看到任何关于加载 link 的参考。如果我不知何故错过了,请分享 link.

任何帮助将不胜感激!!

编辑:我发现这两个 (2) 相似的问题,至少就我的目的而言,没有得到令人满意的回答。我应该知道任何更新吗?

我相信可以在 Revit 2019 或更高版本中创建指向云模型的链接(使用 ModelPathUtils.ConvertCloudGUIDsToCloudPath())。您将需要 ProjectGUID 和 ModelGUID 来创建云模型路径。

关于 ExternalResource 方法,它也有效 - 但它超级混乱 - 您可以阅读与现有 BIM360 链接关联的属性,您将看到如何为 BIM360 链接定义 ExternalResource。

最后 - 从今天开始,Forge Design Automation for Revit 方法对您根本不起作用: 1. 无法打开实时云工作共享模型(仅限 published/uploaded 个模型)。 2. 在 Design Automation for Revit 会话中 运行 时无法访问网络。

祝你好运... -马特

截至目前(2020 年 1 月),不幸的是,我们没有 Link API 云模型。它在路线图上。

Revit API 2022 docs提到

The methods:

  • RevitLinkType.Create(Document, ModelPath, RevitLinkOptions)
  • RevitLinkType.LoadFrom(ModelPath, WorksetConfiguration)

have been enhanced to support creation of new cloud model Revit links. You may use ModelPathUtils.ConvertCloudGUIDsToCloudPath() to create a cloud path to use as an argument to these methods.


其他资源: