1、背景

最近工作上做机电专业方面的功能比较多,机电专业的BIM模型有一个特点,就是在生产模型的过程中需要链接许多其他专业的模型作为前置条件,因此机电专业的开发需求中很多时候都需要与链接模型打交道。链接模型中获取构件跟几何的方式跟本地模型有所不一样,刚开始接触时还真会有些摸不着头脑。这篇文章就是总结在Revit二开中获取链接模型中的构件和几何的方法。

2.代码部分

2.1 获取链接模型中的构件

PickObject中的ObjectType选择LinkedElement即可在本地模型中直接点选到链接模型中的构件,但返回的Reference并不是构件的Reference,此处的Reference是整体链接模型的一个参照,但其中包含了链接构件的ID信息,第四行中的reference.LinkedElementId便是第一行中点选的链接构件ID。但想通过ID获取链接构件的Element时,主体的Document必须是链接模型的Document,因此第二行先通过整体链接模型的Reference获取到链接模型对象RevitLinkInstance,再通过GetLinkDocument方法拿到链接模型的Document,最后通过GetElement方法拿到链接构件的Element。至此,可以通过Element获取到跟本地模型一样的构件信息了。

2.2 获取链接模型中的几何

有的需求要求拾取的不是链接模型中的构件,而是构件中的面或线,此时可以选择用ObjiectType中的PointOnElement枚举,此交互方式拾取的是在构件面或线上的点,返回的reference中除了整体链接模型的参照,还有拾取的面或线的参照。代码前四行与2.1中获取连接模型中的构件一致,倒数第二行中的CreateReferenceInLink()方法是将PickObject返回的Reference转换为链接模型中的Reference,转换后的linkRefer不再是整体模型的参照,而是具体选择的几何的参照。此时再通过前四行中得到的linkElem,

用GetGeometryObjectFromReference()可以拿到linkRefer代表的GeometryObject,再根据需要转换为Face、Curve等即可获取到交互中选择的面或线,此时便可进一步去拿到需要的信息。

2.3 补充

拿到链接模型中的构件或几何后,若是要获取其相关的坐标信息,此时要注意链接模型中的坐标系与本地模型中的坐标系的转换。通过上述代码拿到的都是在链接模型坐标系下的坐标,而我们开发的功能都是针对本地模型进行的一些操作,因此要通过Transform中的OfPoint()方法将链接模型坐标转换为本地模型坐标。链接模型的Transform可以通过RevitLinkInstance中的GetTransform()方法拿到。

Revit二次开发:获取链接模型中的构件及几何元素相关推荐

  1. 【Revit二次开发】链接模型坐标系/族坐标系与模型坐标系转换

    前因:因做管线分布时,参照线选择Revit链接文件中的构件(墙,梁,柱,管等)后,调整的管距离参照线的距离不对,经测试是坐标系不同导致.查了很多资料,故总结如下 Revit中坐标系有哪几种(原文链接: ...

  2. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

  3. revit二开之获取嵌套族中的子族(过滤族)

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 一.背景 小伙伴们在进行revit开发时,可能有过滤族的需求.这里的族(Family)不是族类型(Fam ...

  4. 【Revit二次开发】“附加模块”中添加“外部工具”AND外部工具中添加新建插件

    写在前面,今天第一次接触Revit二次开发,要做的两件事情 第一,搭建环境(安装的是破解版2017的Revit软件.下载SDK2017的并安装.还有开发平台VS2015). 第二,首先就是运行Hell ...

  5. Proe Creo 二次开发之修改模型中的草绘模型--特征元素树

    [1]通过调用二次开发接口ProSolidFeatVisit(),获得模型的草绘特征. [2]通过二次开发接口ProFeatureElemtreeCreate()获得草绘特征元素树. [3]获得草绘特 ...

  6. Revit二次开发—获取内置参数对应的中文字符串,并导出Excel;举例(BuiltParameterGroup、ParameterType和BuiltInCategory)

    参考文章: 原文链接: http://blog.csdn.net/joexiongjin/article/details/10149127 作者:  叶雄进 , Autodesk ADN 实现代码 文 ...

  7. Revit 二次开发 获取多段轴网的location

    点开多段轴网会发现轴网类型为MultiSegmentGrid,里面没有Locaiton可以获取,如果想要获取路径可以通过两种方式进行获取 方式一: Revit中可以进行编辑草图模式的均可以通过删除构件 ...

  8. revit二次开发 获取楼板的边线/轮廓线

    先获取到楼板最上层的面 方法一: List<Reference> faceRefs = HostObjectUtils.GetTopFaces(floor).ToList();List&l ...

  9. revit二次开发获取管道连接器、弯头信息

    笔记代码如下: /// <summary>/// 获得管道连接器和弯头的信息/// </summary>public void GetConnector(){//获得管道Ref ...

最新文章

  1. autolayout autoresizing
  2. 深入学习JavaScript: apply call方法 详解(转)
  3. 《机器学习》 周志华学习笔记第七章 贝叶斯分类器(课后习题)python 实现
  4. python编写人机交互界面_Python编写个天气查询应用(可视化界面)
  5. android菜单和对话栏,Android回顾--(十一) 菜单和对话框
  6. 【测试】软件测试计划的编写
  7. eclipse javafx找不到或无法加载主类_JVM类加载
  8. linux tar权限不够,Linux用户,群组,权限 ,tar命令
  9. POJ 2996, Help Me with the Game
  10. pycharm pip超时 无法下载package 更换源
  11. vb6与access数据库交互常见问题——未完待续
  12. PyTorch固定随机数种子
  13. 2019 CSDN博客之星第三名,感谢各位支持
  14. Unity 的 Scroll View组件
  15. java实现微信退款
  16. python神经网络训练效果差_为什么我的神经网络验证精度比我的训练精度高,并且两者都变得恒定? - python...
  17. Word如何交叉引用以及交叉引用参考文献后使用逗号分隔
  18. 文本分类(text classification)
  19. [MySQL] 统计图数据查询 (MySQL查询时间范围内所有日期)
  20. 大华网络摄像头通过gstreamer 获取不到RTSP流

热门文章

  1. 长虹官方刷机包和刷机教程
  2. mdpi的手机_APP设计尺寸
  3. 【Quartz】Quartz概述及入门实例
  4. mybatisplus--使用说明书
  5. google maps
  6. XSS Challenges闯关1-6
  7. 在Java 应用程序中访问USB设备
  8. LeetCode 剑指 Offer II 前缀树(上) 专题总结
  9. Hive中各种日期格式转换方法总结
  10. 做了6年的小猎头跟大家分享工作经验