Building Coder(Revit 二次开发) - 族符号与族类型

原文链接: Family Symbols versus Types and SelectionFilterElement

问题
如果我在一个族文档(RFA)中访问 OwnFamily.Symbols,返回的是空集合。如果我将这个族加载到项目文档中,然后访问 Family.Symbols 属性,返回的就是正确的族类型。为什么这个属性在族文档中无效呢?

Jeremy
在族文档环境里,应该使用 FamilyManager 对象,你可以使用 Document.FamilyManager 属性得到它。族本身并不包含族符号,它只包含族类型。我们可以将一个族类型看成是数据库中的一条表记录,或者称之为行。族参数对应的是表的字段,或者称之为列。族参数和数据库表字段还有很多相似的地方。

族符号并不存在于族文档中。只有当族被加载到另外一个族或者加载到项目中时才会有族符号。你有时候会在一个族文档中发现有效的族符号,不过它们是属于加载到当前族文档的另外一个族的。

简单地说,族类型和族符号是两种的对象,并且用于不同的目的。
  • 族类型可以添加族参数、族公式。但是族符号是只读的,它只能使用在源族中设置的定义。
  • 族类型在运行时可以添加或者删除,而族符号不行。不过族符号可以做一些特殊操作,比方说复制。
  • 族符号可以在它寄宿的文档中被实例化,而族类型不行。

族类型类(FamilyType)并不是派生于元素类(Element),所以族类型并不是元素。我们只有通过 FamilyManager 来访问它的参数。

在族文档中的可以对族类型进行一些特殊操作,例如获取族类型的图片。你可以先将指定的族类型设置为族文档的当前类型(通过设置 FamilyManager.CurrentType),然后使用 Document.Export() 方法导出族文档指定视图的图片。注意导出时使用合适的 ImageExportOptions 参数。

小贴士

SelectionElementFilter 是一个过滤器元素,存储了一个 ElementId 的集合。只有 ElementId 在这个集合中的元素才能通过该过滤器。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值