通过询问门的hostID返回NULL指针

时间:2015-10-19 11:24:36

标签: 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个房间,它们之间有一扇门测试案例。

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

1 个答案:

答案 0 :(得分:4)

我相信你不应该需要这个符号:

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