revit获取FamilySymbol的name

因为想解析把Element的CategoryId跟FamilySymbolId解析并存下来,这样就可以还原Revit中项目浏览器,里面的族的结构层次了。

参考:Revit中“Category、Family、 Familysymbol、 FamilyInstance”之间的关系​​​​​​

但是对于wall和floor等无法通过以下方法获取FamilySymbolId

            if (element is FamilyInstance)
            {
                FamilyInstance f = element as FamilyInstance;
                if (f.Symbol != null)
                {
                    strFamily = f.Symbol.FamilyName;
                    familyId= f.Symbol.Id.IntegerValue;
                }
            }

查了下才知道对于wall、floor等有自己的walltype、floortype等,这些个type是和familysymbol一个级别的。再查了下revit的api文档,发现他们这些个都是继承自HostObjAttributes,是系统族;而familysymbol继承自InsertableObject,是标准族

可参考:BKM • Revit二次开发04—Revit二次开发的简单说明 - 知乎

 但是系统族和标准族都继承自ElementType,因此需要用ElementType来读取数据。

ElementType familySymbol = document.GetElement(element.GetTypeId()) as ElementType;
if (familySymbol != null)
{
	strFamily = familySymbol.FamilyName;
	familyId = familySymbol.Id.IntegerValue;
}

试了一下,都顺利读出来了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值