Revit记录6. 获取元素的族名

Revit获取元素的族名


写在前面

太啰嗦不想看,直接跳到获取元素族名的方法

本来想写《Revit CurveLoop、Plane和多边形面积比(一)》第二篇的,但好像忘了些东西,回想啊,整理资料啊,画示例图哇这些东西可能要不少时间。然后最近项目又有点赶,事儿多得。

就先简单写个吧,写完还得加班呢ಥ_ಥ。


族、族类型,元素

简单回顾一下,在《获取元素内嵌族》这篇中,提到了Revit族的几种分类。而对于获取元素名称方面,可按照系统族非系统族这两类区别获取。

在给出名称的获取方法之前,我们先了解以下Revit中的族、族类型、元素的区别与联系。

Element(元素):Revit中,基本上所有可操作图元都可以称为元素,从开发角度上看,很多东西都是由Element类派生而来。

​→ → 元素有个名称Element.Name,填啥都行,不填也行,默认是族类型名

Family(族):Revit API中介绍说“表示自定义族(不是系统族)的元素”。我们通俗的理解,就是那些可以摆弄的模型、标注、符号等,都是族。文档中括号里“不是系统族”这个可以不理会,那是从软件层面解释的,不是应用层面。

​ → → 族有个名称Family.Name,对于非系统族,就是文件名,且在一个文档中,必须唯一。

FamilySymbol (族类型):还是从应用角度看,比如有个仓库放专门放凳子,打开仓库一看,有木腿儿的,有皮垫的,有靠背的。这些就是类型。

​ → → 族类型有个名称FamilySymbol.Name ,在一个族中不同类型不重名即可,叫啥随意。一般一个族就一个类型,其名称默认和族名一样。

在这里插入图片描述

族、族类型可以互相获取,可在API文档中查看。

// FamilyInstance.Symbol
// FamilySymbol.Family

补充:上图“风管附件”是族类别(Category ),是由族样板决定的,不同样板具有不同的特性,具体的我没有了解。


获取方法

从API上来看,很简单就能想到,要获取族名,可以通过判断是否为FamilyInstance,再使用FamilyInstance.Symbol.FamilyName,或者FamilyInstance.Symbol.Family.Name,就能拿到族名。但是对于系统族呢,系统族可没有Family,如果直接从Element.Name拿,只能拿到类型名,而我们知道,系统族都是有丰富的类型的,因此,这种方法对于系统族行不通。

那有没有其它方法获取族名称呢,嘿~当然是有的。

获取方法:从元素参数BuiltInParameter.ELEM_FAMILY_PARAM中获取元素族名称。

// 扩展方法
// 其实直接获取参数值返回就行,不需要空判断。
public static string GetFamilyName(this Element element)
{
    Parameter parameter = element.GetParameter(BuiltInParameter.ELEM_FAMILY_PARAM); // 这行要,GetParameter也是扩展方法,自带的返回是一个List
    if (parameter == null) { return element.Name; }

    string familyName = parameter?.AsValueString();  // 直接返回AsValueString(),其它的可以省略

    if (string.IsNullOrEmpty(familyName)) { return element.Name; }
    else { return familyName; }
}

后记

参数中还有其它有用的东西哟,可以去翻翻看看。

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值