我有以下代码片段:
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/