门(Door)相关FamilyInstance存在两个有效的可用属性ToRoom,FromRoom,在我们判断房间关系和门朝向时是不错的参考信息。但不幸的是,在项目使用过程中,发现在某些情况下直接获取上述两个属性会发生异常。一开始并没有发现导致异常的原因是什么,所以项目中就放弃了使用这两个属性。
后来经过研究发现,应该是当Door的删除阶段(DemolishedPhaseId)存在有效值时,再调用ToRoom和FromRoom时明确会触发异常。所以在使用上述属性时,可以先进性有效值的判断再获取
if (door.DemolishedPhaseId == null||door.DemolishedPhaseId.IntegerValue!=-1)
continue;
var from = door.FromRoom;
var to = door.ToRoom;