Autodesk.Revit.DB.FamilySymbol 类表示Revit族的类型。一个Revit族可以有多个类型,每个类型被称为一个FamilySymbol。例如,门族可以有单扇门、双扇门、滑动门等多个类型。
Autodesk.Revit.DB.FamilySymbol 类有以下重要属性:
Family:获取族模板Name:获取或设置族类型的名称FamilyName:获取族模板的名称Category:获取该族类型的类别LineStyle:获取族类型的线型Family.GetFamilyTypeParameterIds():获取族模板参数的IDAutodesk.Revit.DB.FamilySymbol 类包含以下方法:
FamilySymbol.Duplicate(string name):创建该族类型的副本FamilySymbol.Activate():激活该族类型创建一个门族类型 myDoor1,该类型基于门族的模板 doorTemplate:
// 获取门族模板
FilteredElementCollector famCollector = new FilteredElementCollector(doc);
ElementClassFilter familyFilter = new ElementClassFilter(typeof(Family));
IEnumerable<Family> familyIterator = famCollector.WherePasses(familyFilter).Cast<Family>();
Family doorFamily = familyIterator.FirstOrDefault(q => q.Name == "门");
if (doorFamily == null) return;
// 获取门族类型
FilteredElementCollector symbolsCollector = new FilteredElementCollector(doc);
symbolsCollector.OfCategory(BuiltInCategory.OST_Doors);
IEnumerable<FamilySymbol> symbolsIterator = symbolsCollector.WhereElementIsElementType().Cast<FamilySymbol>();
FamilySymbol doorSymbol = symbolsIterator.FirstOrDefault(q => q.Name == "单扇门");
if (doorSymbol == null) return;
// 创建门族类型副本
FamilySymbol myDoor1 = doorSymbol.Duplicate("myDoor1") as FamilySymbol;
if (myDoor1 == null) return;
// 激活门族类型
myDoor1.Activate();
以上示例中,我们首先获取门族的模板,然后获取门族的类型 单扇门。接着,我们通过 Duplicate 方法创建了一个名为 myDoor1 的门族类型副本,并通过 Activate 方法激活该副本。现在,我们可以在项目中使用 myDoor1 类型的门了。