加载或创建新的族实例时获取 null

Getting null when loading or creating new family instances

我在使用插件时遇到了以下代码片段的问题:

doc.LoadFamilySymbol(@"[filepath here]", "[filename here]", out FamilySymbol symbol);
doc.Create.NewFamilyInstance(mid, symbol, d, GetLevelInformation(d), StructuralType.NonStructural);

据我在调试时所知,在我通过第一行后,FamilySymbol 变量符号为空。 middGetLevelInformation 都有效并包含预期值,所以我怀疑问题出在第一行。

查看 LoadFamilySymbol method overloads,我看到 none 采用您指定的两个参数。要加载特定的族符号,您至少需要指定您需要的族名和族类型名称。您使用的是哪个版本的 Revit?

要解决此问题,请查看一些可用的大量示例代码,例如,在 Revit SDK 示例和 loading a family 上的 The Building Coder 主题组中。

我想我会为那些有类似问题的人更新这个帖子,因为我最终解决了我的问题。答案是我试图使用 Name 参数加载一个 Family,而我真正想要的是 FamilyName 参数。

此问题的解决方法是将 x.Name 更改为 x.FamilyName,如下所示:

FilteredElementCollector collector = new FilteredElementCollector(doc);
            FamilySymbol symbol = collector.OfClass(typeof(FamilySymbol))
                .WhereElementIsElementType()
                .Cast<FamilySymbol>()
                .First(x => x.FamilyName == "[Family Name]");

有区别!感谢杰里米的回复。