我有以下代码段:
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个房间,它们之间有一扇门测试案例。
请注意,我知道null引用expcetion是什么,我知道doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM)返回null,我想知道它是如何/为什么返回null。 如果还有什么不清楚,请随时发表评论,以便我可以改进这个问题。
答案 0 :(得分:4)
我相信你不应该需要这个符号:
doorFI.get_Parameter(BuiltInParameter.HOST_ID_PARAM).AsElementId();