关于这个问了一些人,得出的答案不一样:具体如下:
1\ reference, 它是对Revit中几何对象的稳定引用,
2\Reference估计是参照、对象。他应该是一个几何图元 该Reference 通常应该会对应一个Element,之所以这么说,如下图,是因为他的构造函数有一个唯一的Element传参。

3\在Revit中就是对该构件(element)或者基本几何(line,face)的指代。

4\这个东西,你可以理解成element在内存中使用的时候,一个载体。我是这样子理解的

¥¥¥¥¥¥那么与Reference相关的开发有哪些呢?¥¥¥¥¥

1. 选择构件

2. 标注

标注功能的情况比较多,主要是由于标注功能必须用到ReferenceArray,

涉及:

  1. Line的Reference

  2. Face的Reference

  3. FamilyInstance的Reference

a.在轴网标注功能中,获得轴网的Reference只需要对grid进行new Reference操作即可获得,即:var gridref = new Reference(grid).

b.Face的Reference操作主要用于对墙的标注,这里可能是大家用的最多的。要拿到Face首先要获取Solid,获取Solid就要拿到构件的GeometryElement,这里的描述是逆推,正常的套路如下:

  1. new options(),对options的属性进行设置

  2. 获取构件的GeometryElement

  3. 通过GeometryElement获取GeometryInstance

  4. 通过GeometryInstance拿到Solid

  5. 通过Solid拿到FaceArray

  6. 最后通过Face.Reference属性获取

如果不对options进行设置,得到的Reference就是null。

options的ComputeReferences设置为true,

options的DetailLevel与IncludeNonVisibleObjects的设置会直接影响构件中几何的获取。举个例子,当IncludeNonVisibleObjects设置为false的时候,获取构件的几何可能只包含Solid,而当IncludeNonVisibleObjects设置为true时会发现构件的几何除了包含Solid还可能包含Line等等。所以在IncludeNonVisibleObjects的设置上我建议也是设置为true。

ViewDetailLevel的设置一般为Fine。

c. FamilyInstance的Reference这个是最神奇的,其函数有以下:

  当你在为FamilyInstance进行标注一直找不到Reference的时候,你可以试试这个,因为有的Reference并不是从Solid里去找,也不太像在Line里面找,这时候就要试试上面的函数了,举个最简单的用法:

familyinstance.GetReferences(FamilyInstanceReferenceType.CenterLeftRight).FirstOrDefault());

尽量不要通过GetReferenceByName的方式去找,name并不是区分Reference的标示,FamilyInstanceReferenceType是最保险的:

除了红框中的三个枚举,其它Type从FamilyInstance获取出来应该都是唯一的,大家可以试试。

感谢 BIMCoder梁老师的文章的指点,基本(90%)上转载的他的

revit二次开发--Reference相关推荐

  1. revit二次开发--异形柱翻模

    最近写了一个revit二次开发的异形柱翻模的功能,柱子翻模网上有很多插件可以用,我用的比较多的是红瓦,其中异形柱的翻模对于图纸的要求较高,有很多不准确的地方.很多异形柱,整体翻模出来是错误的,翻出来之 ...

  2. revit二次开发——如何选取元素(revit2016)

    revit二次开发--如何选取元素(revit2016) 这是我在网上和书中比较写出的代码,可能不是太成熟,希望大家多多指教 using System; using System.Collection ...

  3. Revit二次开发_轴网快速标注

    通过Revit二次开发实现对平行轴网的快速标注.交互操作是框选轴网->点选尺寸标注出现的位置->生成两道尺寸标注. 要达到设想的结果一些地方需要特殊考虑: 框选操作容易误选轴网,起码要把与 ...

  4. C# Revit二次开发基础/核心编程--- Application\Document\Transaction

    一.本节课程 C# Revit二次开发基础/核心编程--- Application\Document\Transaction 二.本节要讲解的知识点 Application\Document\Tran ...

  5. Revit二次开发学习笔记

    Revit二次开发学习笔记1 20220314: 概念:Application与Document 接口函数:IExternalCommand.ActiveView与Selection 20220316 ...

  6. Revit二次开发之批量修改族名称及族类型名称

    昨天是参加工作整一年的好日子,在这一年中逐步开始接触C#和Revit二次开发,困扰和BUG伴随着整个学习过程.由于Revit二次开发的资料和课程不多,很多情况下都是依靠博客.技术贴和QQ群里的大神等方 ...

  7. Revit二次开发之使用外部程序集DT_Mgd读取CAD图遇到的问题

    Revit二次开发学习笔记(一) 最近学习在revit中读取链接的CAD图纸信息(包括文字.图层.各种线型),由于小白也是初学者,遇到了一些问题,如图所示: 通过大量查阅参考资料发现,问题是:在类库项 ...

  8. revit二次开发——基于teigha读取CAD几何与文字(提供源码、引用包与异常解决)

    一.基于Teigha的开源dll,详细说明见以下博客: Revit二次开发--读取cad中的文字信息_niuge No.1的博客-CSDN博客 二.使用注意事项: 1.下载64位Teigha完整包: ...

  9. Revit二次开发选择模型面生成新的三维视图

    觉得自己做的一些Revit二次开发的项目经验需要找个地方保存下来,不然以后碰到类似的又得去冲浪捞人家的结晶再整合,所以从今天起开始写CSDN博客啦 选择模型面生成新的三维视图 废话不多说,直接上代码! ...

最新文章

  1. windows命令大全_必收藏!电脑快捷键、组合键大全
  2. 慕课乐学python编程题_中国大学MOOC的APP(慕课)2020Python编程基础题目及答案
  3. OGG 跳过事务(转)
  4. php 会议签到系统_人脸识别会议签到系统有哪些优点?
  5. Oracle计划任务JOB不自动执行的问题
  6. 空间谱专题16:间距选取分析
  7. two sum python_Python | Leetcode 之 Two Sum
  8. 怎么在一里以外识别出一个菜鸡程序员
  9. udp组播的应用场景
  10. 不知道怎么用GitHub怎么当程序员?拿出十分钟,包你会
  11. 华为暂停一般性社招;嘀嗒出行系统崩溃;美团和摩拜账号互通 | 极客头条
  12. Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能
  13. VS解决方案文件格式说明
  14. android添加nfc门禁卡,IOS14nfc怎么添加门禁卡?NFC门禁卡教程[多图]
  15. php人人商城定时任务,人人商城异步操作菜单示例
  16. 将模板内容存储到数据库,通过URL访问报表
  17. c++文件保存与读取
  18. 古代汉语(王力版)笔记 通论1-5
  19. ant编译警告处理:主版本 52 比 51 新,此编译 器支持最新的主版本。
  20. 关于股市的各种小段子

热门文章

  1. 学习笔记之在eclipse中,使用ADT开发
  2. Pycharm中光标变粗 光标进入改写状态
  3. 使用python编写一个爬虫程序
  4. html中如何插入pdf文件,如何创建PDF文件
  5. C++第33课--C++中的字符串类
  6. Arnold阿诺德渲染器:C4DtoA for Cinema4D R20 for Mac
  7. Vim插件之vim-autoformat
  8. 常用ASCII URL编码对照表,JavaScript中如何把url的%20、%22、%28、%29、%7B、%7D解析还原成真实的字符
  9. python教程68--cufflinks库绘图功能
  10. .Net 常用的ORM框架