2

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

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

任何一种都可能吗?

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

未找到链接的屏幕截图。

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

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++;
        }
    }
}

ModelPath由于这个有用的提示,我能够通过 Revit API 获得正确的信息。我可以将此值保存在我的插件中,关闭模型,然后在打开不同的模型后访问该属性(保存在上面代码片段中的 linq 语句中引用的 CloudModels 类中)。不幸的是,我不RevitLinkType.Create()接受ModelPath云路径,所以我可能又遇到了死胡同。除非可以使用ExternalResourceReference. 有没有人尝试过这个选项?如果是这样,您如何组装 Revit ExternalResourceReference?我不熟悉这个过程,从 AU 2017 开始查看这门课程,我认为它不一定适用于 BIM 360 云模型。如果可能,BIM 360 云示例将非常有用。

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

任何帮助将不胜感激!

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

4

3 回答 3

1

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

于 2020-01-07T12:18:51.687 回答
0

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

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

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

祝你好运...-马特

于 2020-01-04T03:23:26.523 回答
0

Revit API 2022 文档提到

方法:

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

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


附加资源:

于 2021-12-17T11:06:34.620 回答