这篇文章主要介绍了Revit怎么实现机电管线实时净高查询功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Revit怎么实现机电管线实时净高查询功能文章都会有所收获,下面我们一起来看看吧。
一、前言
1.可以通过点选管道,通过左侧属性栏里的顶部底部高程来进行判断(如图1所示)。
图1
但是该方式存在很大的缺陷(如图2所示),由于面层板处于标高±0以下,而高程是从±0开始算起的,因此直接去读取底部高程会造成管综的误差。在机电bimer非常熟悉标高的情况下,可以手动去计算纠正净高。但如果使用可停靠窗口实时显示净高可以说是非常方便了。
图2
2.通过做剖面来量取净高。
这种方式是最精准但也是最影响效率的方式,在管线比较复杂和密集的区域可以使用该方法进行管综优化。但如果只是在管线较少的情况下,去使用该方法,那将会严重影响效率,更何况有些区域升降板较多,要做剖面的量就会大大增加。
3.使用插件三维量取净高。
目前有较多的插件都有三维量取净高的功能,但操作比较繁琐(如图3所示)需要点击功能面板按钮,再拾取需要量取净高的管线才能弹窗显示净高。
图3
二、可停靠窗口显示净高的思路来源
最近做管线综合优化的时候,发现很难去把控净高,想起前东家的一些实用的工具,因此仿照前东家的部分思路内容进行技术开发,故,
特此声明: 本文内容只可用于技术研究和学术探讨,不可用于商业用途,如因此产生商业纠纷与本文作者无关,且本文作者保留追究抄袭者的权力。
三、可停靠窗口显示净高的过程与方法
1、闲置事件
如果想要实现在Revit里选择一个构件,然后在可停靠窗口里显示一些信息,需要用空闲事件来实现。
顾名思义,该事件是在用户不对Revit进行操作时触发的事件,RevitAPI的定义(如图4),该事件触发的另一个条件是在该状态下API程序可以安全访问到当前的文档,若有其他事务还未结束,该事件是不会被触发的。
图4
闲置事件有两种模式,默认模式和非默认模式。
在默认模式下,每次Revit开始空闲时,都会引发一次空闲事件。请注意,当用户在Revit用户界面中处于活动状态时,每当鼠标停止移动一会儿或命令完成时,空闲事件就会开始并一直被触发。但是,如果用户没有在用户界面中处于活动状态,则Revit在相当长的一段时间内不会调用这些空闲事件。这意味着当用户完全离开计算机一段时间后,这段时间不会触发空闲事件,你的插件程序无法利用这些时间来完成计算。
在非默认模式下,程序将强制Revit保持空闲事件打开,并重复调用空闲事件。在这种模式下,即使用户已经停止对计算机的操作,Revit也将一直使应用程序。这样做可以一直利用空闲时间来进行计算,但是,这可能会导致运行Revit的系统性能下降,因为在Revit应用程序空闲期间,CPU始终处于满负荷状态。
可以通过调用IdlingEventArgs.SetRaiseWithoutDelay()来把空闲事件设置成非默认模式。必须在每次空闲事件中都调用此方法,则Revit将恢复为默认的空闲事件。
由于闲置事件是在用户界面操作之间触发的,如果程序处理的方法需要大量的时间来做运算,会导致Revit变得卡顿,非常影响用户的体验,因此不建议在空闲事件中去使用。
空闲事件的创建非常简单,如下:
application.Idling += method;
2、外部事件
外部事件和闲置事件是类似的,区别在于需要用户自己触发,而闲置事件是自动触发的。继承并实现外部事件的处理接口为IExternalEventHandeler。
我们要想快捷的实现可停靠窗口实时显示净高,就要使用闲置事件来进行,而外部事件可以实现连续调用命令。
3、创建可停靠窗口
如图5所示,需要新建一个用户控件,WFP的窗体。
图5
revit中可停靠窗口的父类为page类,同时也继承IDockablePaneProvider接口。
首先我们需要修改窗体的父类,在XAML页面中,把UserControl改成Page,如下所示:
↓
需要将红框处的父类进行修改,并且在页面添加一个控件label。
通过 IDockablePaneProvider接口来实现空闲事件。并通过创建空闲事件来调用净高算法 application.Idling += method。通过 函数SetupDockablePane来初始化可停靠窗口出现的位置。如图6
图6
4、在Revit中注册一个可停靠窗口。
在ribbon中添加一个可停靠窗口打开的按钮,然后通过RegisterDockablePane添加可停靠窗口。在这里要给定窗口唯一的Guid码,这个码可以自己修改原有的码或者生成一个新的码,但是必须是唯一的 G ui d码。
5、在IExternalCommand中添加执行按钮的命令,这里的 G ui d 码要和可停靠窗口的 G ui d 码一致。
6、可停靠窗口空闲事件实现净高查询的算法。
利用实体和曲线的交点来求管线到板的距离,并且排除其他板的影响只求管线到面层的距离,即管线的真正净高。利用该算法可以实现管线的实时三维净高显示。
以上便是实现了可停靠窗口实时查询管线高度的方法。
效果如下:
关于“Revit怎么实现机电管线实时净高查询功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Revit怎么实现机电管线实时净高查询功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。