【问题标题】:Is it possible to load new Cloud (BIM 360) links in a Revit model either through the Revit API or FORGE API?是否可以通过 Revit API 或 FORGE API 在 Revit 模型中加载新的 Cloud (BIM 360) 链接?
【发布时间】:2020-04-21 12:34:34
【问题描述】:

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

鉴于该背景,我无法将新保存的 BIM 360 模型相互关联。我可以选择在带有 Revit API 挂钩(首选)的 Revit Addin 中执行此操作,也可以在创建模型后通过带有 FORGE API REST 调用的管理器 WPF 应用程序执行此操作。

有两种可能吗?

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

Screenshot of links Not Found.

当前的“工作排序”代码:

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,我能够通过 Revit API 获得正确的ModelPath。我可以将此值保存在我的插件中,关闭模型,然后在打开不同的模型后访问该属性(保存在上面代码 sn-p 中的 linq 语句中引用的 CloudModels 类中)。对我来说不幸的是RevitLinkType.Create() 需要ModelPath 不接受云路径,所以我可能又遇到了另一个死胡同。除非可以使用ExternalResourceReference。有没有人尝试过这个选项?如果是这样,您如何组装 Revit ExternalResourceReference?我不熟悉这个过程,查看this course from AU 2017,我认为它不一定适用于 BIM 360 云模型。如果可能的话,BIM 360 云示例将非常有用。

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

任何帮助将不胜感激!

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

【问题讨论】:

  • 我之前已经提到过这篇文章,但我不明白这篇文章应该有什么帮助。你能更具体一点吗?它首先查看现有链接。当模型还没有链接时,我想创建新的云模型链接。我想我可以窥探测试模型中的一个,获取云链接外部引用的属性结构,然后尝试在新模型中镜像该结构。在我看来,我似乎不太可能以这种方式找到可靠的成功,尽管如果它不是一个记录在案的解决方案。我错过了什么吗?
  • 添加了一个新答案。

标签: autodesk-forge revit-api autodesk-bim360


【解决方案1】:

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

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

最后 - 从今天开始,Forge Design Automation for Revit 方法根本不适合您: 1. 无法打开直播云工作共享模型(仅限已发布/上传的模型)。 2. 在 Design Automation for Revit 会话中运行时无法访问网络。

祝你好运... -马特

【讨论】:

  • 感谢您的回复。很高兴知道我可以从我的探索选项中消除 Forge。我在 Revit 2020 中找不到任何有关云模型链接的文档,您能提供一个示例吗?
  • 使用实际的 API 调用对上述内容进行了一些编辑。 revitapidocs.com/2019/cc284f13-a7a9-d37e-e46d-4769bf039a96.htm - 还查看了我之前使用 ExternalResource 信息是如何做到的,这是可能的 - 但只能在线条之外稍微着色。
  • 谢谢。我已经能够得到云ModelPath 没问题。问题在于使用它来创建新链接。 RevitLinkType.Create(Document, ModelPath, RevitLinkOptions) 不接受云 ModelPath(触发 ArgumentExeption)。 revitapidocs.com/2019/0dd0e8bd-5217-9a94-19bb-58dcb840e517.htm您使用什么来创建新的 Revit 云模型链接?
【解决方案2】:

很遗憾,截至目前(2020 年 1 月),我们没有适用于云模型的 Link API。它在路线图上。

【讨论】:

    【解决方案3】:

    Revit API 2022 docs 提及

    方法:

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

    已得到增强以支持创建新的云模型 Revit 链接。 您可以使用ModelPathUtils.ConvertCloudGUIDsToCloudPath() 创建云路径以用作这些方法的参数。


    其他资源:

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 2019-12-19
      • 2021-06-09
      • 2020-02-17
      • 2019-03-06
      • 2021-06-13
      • 2020-11-05
      • 2021-03-13
      • 2020-05-08
      相关资源
      最近更新 更多