我有一个由两部分组成的 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)类似的问题,至少就我的目的而言,没有得到令人满意的回答。我应该注意的任何更新?