天天看點

了解Revit中“Category、Family、 Familysymbol、 FamilyInstance”四者之間的關系與差別 Revit中的Category、Family、FamilySymbol與FamilyInstance

Revit中的Category、Family、FamilySymbol與FamilyInstance

在Revit中除了 Category 這個概念以外,還有Family、 FamilySymbol、FamilyInstance 這三個相關的概念。這裡通過一張圖來說明我對這四個概念的了解:

了解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;

繼續閱讀