c# - 询问门的 hostID 返回 NULL 指针

标签 c# nullreferenceexception revit revit-api

我有以下代码片段:

var familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance));
var doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors);
var doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);
List<Element> doors = new FilteredElementCollector(doc)
    .WherePasses(doorInstancesFilter)
    .ToList();
FamilyInstance doorFI = (FamilyInstance)doors[0];
ElementId wallid = doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM)
    .AsElementId();

我尝试获取包含门的墙的 ID。但是,如果我运行此代码,则 ElementId wallid =doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM).AsElementId(); 行会引发空指针异常。我已经检查过有问题的门确实在墙内,因此应该有一个父对象。

我正在运行的测试场景是一个简单的 2 个房间,中间有一扇门测试用例。

请注意,我知道什么是空引用expcetion,我知道doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM)返回null,我想知道它如何/为什么返回null。 如果还有什么不清楚的地方,请随时发表评论,以便我改进这个问题。

最佳答案

我相信您不需要该符号:

doorFI.get_Parameter(BuiltInParameter.HOST_ID_PARAM).AsElementId();

关于c# - 询问门的 hostID 返回 NULL 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213169/

相关文章:

c# - 获取 Schedule 和 Material Takeoff 的所有参数

c# - 根据大小计算文件组

c# - C# 中的继承 + 嵌套类

silverlight - 在 Visual Studio 2010 中使用所有 silverlight 业务应用程序时,始终在设计器中看到 NullReference 异常

java - 如何从空引用访问静态变量?

mysql - 不确定如何处理 NullReferenceException

c# - 如何复制一个实际上是结构的对象(不是它的引用)?

c# - ObservableCollection.Remove 不起作用,即使该对象在列表中

python - Revit.ini 文件 - MissingSectionHeaderError : File contains no section headers. 文件 : Revit. ini,行:1 '\xff\xfe\r\x00\n'

windows - 如何让某人进入测试?