【发布时间】: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 应用程序执行此操作。
有两种可能吗?
我已成功链接到缓存的本地模型,如 here 和 here 所述。但是,这并不能完全满足要求,因为当任何其他用户(除了自动化机器用户)打开模型时,链接都找不到。
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 中加载链接的参考。如果我错过了,请分享一个链接。
任何帮助将不胜感激!
【问题讨论】:
-
我之前已经提到过这篇文章,但我不明白这篇文章应该有什么帮助。你能更具体一点吗?它首先查看现有链接。当模型还没有链接时,我想创建新的云模型链接。我想我可以窥探测试模型中的一个,获取云链接外部引用的属性结构,然后尝试在新模型中镜像该结构。在我看来,我似乎不太可能以这种方式找到可靠的成功,尽管如果它不是一个记录在案的解决方案。我错过了什么吗?
-
添加了一个新答案。
标签: autodesk-forge revit-api autodesk-bim360