对于自定义的族,我们可以使用如下方式,先从FamilyInstance获取FamilySymbol,然后从FamilySymbol.Family拿到对应的族,最后调用Name属性。
FamilyInstance instance;
var typeid = instance.GetTypeId();
var symbol = RevitDoc.GetElement(typeid) as FamilySymbol;
var familyName = symbol.Family.Name;
但是对于系统族是获取不到Family的。我们的解决办法是:
1. 如果使用的是Revit 2014以前的版本,可以尝试使用一个隐藏的内建参数“族名称” SYMBOL_FAMILY_NAME_PARAM,使用方法如下:
Parameter symbolNameParameter = ceilingType.get_Parameter(
BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM);
if (symbolNameParameter != null &&
symbolNameParameter.StorageType == StorageType.String)
{
string symbolName = symbolNameParameter.AsString();
}
2. 如果您使用的是Revit 2015或者之后的版本,除了可以使用上面的方法,还可以用一个更简便的方法ElementType.FamilyName:
string symbolName = ceilingType.FamilyName;
其中FamilyName是ElementType的新的属性。
同样这个方法适用于FamilySymbol:
FamilyInstance instance;
var typeid = instance.GetTypeId();
var symbol = RevitDoc.GetElement(typeid) as FamilySymbol;
var familyName = symbol.FamilyName;