Revit API ExternalResourceReference.CreateLocalResource 返回 null

问题描述 投票:0回答:0

我有一个 Revit 应用程序,它注册了一个外部资源服务器并使用一个外部事件来更改基调表,但我遇到了一些奇怪的行为。一般的想法是,当我通过 UI 给它一个路径时,它会告诉 Revit 在该路径加载基调表,它可以是我的外部资源服务器上的资源。这是代码的相关部分:

...preceeding code...

var knt = KeynoteTable.GetKeynoteTable(app.ActiveUIDocument.Document);

var mp = ModelPathUtils.ConvertUserVisiblePathToModelPath(_dbManager.ActiveDB.FilePath);
var extRef = ExternalResourceReference.CreateLocalResource(app.ActiveUIDocument.Document,
    ExternalResourceTypes.BuiltInExternalResourceTypes.KeynoteTable, mp, PathType.Absolute);

if (knt == null) throw new Exception("Keynote table was null on reload, could not change files");
if (mp == null) throw new Exception("Model path was null, could not change files");
if (extRef == null) throw new Exception("External Resource Reference was null, could not change files");

...following code...

简而言之,它获取主题表对象,从给定的文件路径(保存在

_dbManager.ActiveDB.FilePath
中)创建模型路径,然后从中创建外部引用对象。然后它稍后使用它从以下位置加载主题表:

using (var t = new Transaction(app.ActiveUIDocument.Document, "Change Keynote File"))
{
    t.Start();
    knt.LoadFrom(extRef, null);
    t.Commit();
}

使用我的服务器通常具有的单个文件夹路径就可以正常工作,例如

RDCloud://Something/File.txt
。但是,当您获得像
RDCloud://Something/AnotherThing/File.txt
这样的更深层次的路径时(这种情况在我的应用程序中发生的频率要低得多,但确实会发生),获取
extRef
对象的调用返回 null,因此它最终会抛出异常。

关于为什么这里为空的任何想法?这是预期的吗?我在这里做错了什么吗?

revit-api
© www.soinside.com 2019 - 2024. All rights reserved.