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

Autodesk forge 是否可以通过Revit API或FORGE API在Revit模型中加载新的云(BIM 360)链接?,autodesk-forge,revit-api,autodesk-bim360,Autodesk Forge,Revit Api,Autodesk Bim360,我有一个由两部分组成的WPF应用程序和Revit插件,它运行一系列例程,通过FORGE BIM 360 API创建和激活新的BIM 360项目,启动Revit,并从“种子”Revit模型创建和设置Revit模型集合主要要求是在此过程中实现零用户交互:完全自动化。 在这种背景下,我很难将新保存的BIM 360模型相互链接。我可以选择在Revit加载项中使用Revit API挂钩(首选)或在创建模型后通过manager WPF应用程序使用FORGE API REST调用执行此操作 有两种可能吗 我已

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

在这种背景下,我很难将新保存的BIM 360模型相互链接。我可以选择在Revit加载项中使用Revit API挂钩(首选)或在创建模型后通过manager WPF应用程序使用FORGE API REST调用执行此操作

有两种可能吗

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

当前“工作类型”代码:

我能够通过Revit API获得正确的
模型路径
,这要归功于。我可以将此值保存在我的加载项中,关闭模型,然后在打开其他模型(保存在上面代码段中linq语句中引用的CloudModels类中)后访问该属性。不幸的是,采用
ModelPath
RevitLinkType.Create()
不接受云路径,因此我可能遇到了另一个死胡同。除非可以使用
外部资源引用
。有人试过这个选项吗?如果是,如何装配Revit
ExternalResourceReference
?我不熟悉这个过程,回头看,我不认为它一定适用于BIM 360云模型。如果可能,BIM 360云示例将非常有用

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

任何帮助都将不胜感激


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

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

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

最后—到今天为止,Forge Design Automation for Revit方法根本不适用于您: 1.无法打开live cloud工作共享模型(仅限已发布/上载的模型)。 2.在Revit Design Automation会话中运行时,无法访问网络

祝你好运。。。
-Matt

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

谢谢您的回复。很高兴知道我可以将Forge从我的探索选项中剔除。我在Revit 2020中找不到任何有关云模型链接的文档,能否提供一个示例?使用实际的API调用对上述内容进行了一些编辑。-同时也看到了我以前是如何使用ExternalResource信息完成的,这是可能的,但只能通过稍微超出行外的颜色来实现。谢谢。我已经能够获得云
ModelPath
没有问题。问题在于使用它创建新链接
RevitLinkType.Create(文档、模型路径、RevitLinkOptions)
不接受云
ModelPath
(触发
参数选项
)。您使用什么来创建新的Revit cloud模型链接?请看这篇文章:我以前参考过这篇文章,但我看不出这篇文章有什么帮助。你能说得更具体些吗?它从查看现有链接开始。我想在模型还没有链接时创建新的云模型链接。我想我可以在测试模型中窥探其中一个,获取云链接外部引用的属性结构,然后尝试在新模型中镜像该结构。在我看来,我不太可能通过这种方式找到可靠的成功,尽管这不是一个文档化的解决方案。我遗漏了什么吗?补充了一个新的答案。
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++;
        }
    }
}