Revit中的Category、Family、FamilySymbol與FamilyInstance
在Revit中除了 Category 這個概念以外,還有Family、 FamilySymbol、FamilyInstance 這三個相關的概念。這裡通過一張圖來說明我對這四個概念的了解:
又如風管類别裡面四者的關系: 風管 - 類别(Category)
圓形風管 - 族(Family)
T形三通 - 族類型(FamilySymbol)
畫出來的圖元 - 族執行個體(FamilyInstance)
在Revit二次開發中,可以用FilteredElementCollector、OfClass、OfCategory等方法來擷取族執行個體、族類型,如
FilteredElementCollector collector = new FilteredElementCollector(m_document.Document);
//擷取門執行個體
collector.OfCategory(BuiltInCategory.OST_Doors).OfClass(typeof(FamilyInstance));
IList<Element> instancelists = collector.ToElements();
//擷取門類型
collector.OfCategory(BuiltInCategory.OST_Doors).OfClass(typeof(FamilySymbol));
IList<Element> symbollists = collector.ToElements();
//擷取門族
collector.OfCategory(BuiltInCategory.OST_Doors).OfClass(typeof(Family));
IList<Element> Familylists = collector.ToElements();
同時,在Revit二次開發中,類别、族、族類型和族執行個體也可以互相擷取。
例如,從族執行個體擷取族類型:
FamilyInstance familyInstance = item as FamilyInstance;
FamilySymbol familysymbol=familyInstance.Symbol;
從族類型擷取族的方式如下:
Family family=familysymbol.Family;