Revit怎么实现机电管线实时净高查询功能

这篇文章主要介绍了Revit怎么实现机电管线实时净高查询功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Revit怎么实现机电管线实时净高查询功能文章都会有所收获,下面我们一起来看看吧。

按需规划网站可以根据自己的需求进行定制,成都网站设计、网站制作构思过程中功能建设理应排到主要部位公司成都网站设计、网站制作的运用实际效果公司网站制作网站建立与制做的实际意义

一、前言

1.可以通过点选管道,通过左侧属性栏里的顶部底部高程来进行判断(如图1所示)。

Revit怎么实现机电管线实时净高查询功能

图1

但是该方式存在很大的缺陷(如图2所示),由于面层板处于标高±0以下,而高程是从±0开始算起的,因此直接去读取底部高程会造成管综的误差。在机电bimer非常熟悉标高的情况下,可以手动去计算纠正净高。但如果使用可停靠窗口实时显示净高可以说是非常方便了。

Revit怎么实现机电管线实时净高查询功能

图2

2.通过做剖面来量取净高。

这种方式是最精准但也是最影响效率的方式,在管线比较复杂和密集的区域可以使用该方法进行管综优化。但如果只是在管线较少的情况下,去使用该方法,那将会严重影响效率,更何况有些区域升降板较多,要做剖面的量就会大大增加。

3.使用插件三维量取净高。

目前有较多的插件都有三维量取净高的功能,但操作比较繁琐(如图3所示)需要点击功能面板按钮,再拾取需要量取净高的管线才能弹窗显示净高。

Revit怎么实现机电管线实时净高查询功能

图3

二、可停靠窗口显示净高的思路来源

最近做管线综合优化的时候,发现很难去把控净高,想起前东家的一些实用的工具,因此仿照前东家的部分思路内容进行技术开发,故,

特此声明:本文内容只可用于技术研究和学术探讨,不可用于商业用途,如因此产生商业纠纷与本文作者无关,且本文作者保留追究抄袭者的权力。

三、可停靠窗口显示净高的过程与方法

1、闲置事件

如果想要实现在Revit里选择一个构件,然后在可停靠窗口里显示一些信息,需要用空闲事件来实现

顾名思义,该事件是在用户不对Revit进行操作时触发的事件,RevitAPI的定义(如图4),该事件触发的另一个条件是在该状态下API程序可以安全访问到当前的文档,若有其他事务还未结束,该事件是不会被触发的。 Revit怎么实现机电管线实时净高查询功能

图4

闲置事件有两种模式,默认模式和非默认模式。

在默认模式下,每次Revit开始空闲时,都会引发一次空闲事件。请注意,当用户在Revit用户界面中处于活动状态时,每当鼠标停止移动一会儿或命令完成时,空闲事件就会开始并一直被触发。但是,如果用户没有在用户界面中处于活动状态,则Revit在相当长的一段时间内不会调用这些空闲事件。这意味着当用户完全离开计算机一段时间后,这段时间不会触发空闲事件,你的插件程序无法利用这些时间来完成计算。

在非默认模式下,程序将强制Revit保持空闲事件打开,并重复调用空闲事件。在这种模式下,即使用户已经停止对计算机的操作,Revit也将一直使应用程序。这样做可以一直利用空闲时间来进行计算,但是,这可能会导致运行Revit的系统性能下降,因为在Revit应用程序空闲期间,CPU始终处于满负荷状态。

可以通过调用IdlingEventArgs.SetRaiseWithoutDelay()来把空闲事件设置成非默认模式。必须在每次空闲事件中都调用此方法,则Revit将恢复为默认的空闲事件。

由于闲置事件是在用户界面操作之间触发的,如果程序处理的方法需要大量的时间来做运算,会导致Revit变得卡顿,非常影响用户的体验,因此不建议在空闲事件中去使用。

空闲事件的创建非常简单,如下:

 application.Idling += method;

2、外部事件

外部事件和闲置事件是类似的,区别在于需要用户自己触发,而闲置事件是自动触发的。继承并实现外部事件的处理接口为IExternalEventHandeler。

我们要想快捷的实现可停靠窗口实时显示净高,就要使用闲置事件来进行,而外部事件可以实现连续调用命令。

3、创建可停靠窗口

如图5所示,需要新建一个用户控件,WFP的窗体。

Revit怎么实现机电管线实时净高查询功能

图5 

revit中可停靠窗口的父类为page类,同时也继承IDockablePaneProvider接口。

首先我们需要修改窗体的父类,在XAML页面中,把UserControl改成Page,如下所示:

Revit怎么实现机电管线实时净高查询功能

Revit怎么实现机电管线实时净高查询功能

需要将红框处的父类进行修改,并且在页面添加一个控件label。

Revit怎么实现机电管线实时净高查询功能

通过 IDockablePaneProvider接口来实现空闲事件。并通过创建空闲事件来调用净高算法  application.Idling += method。通过 函数SetupDockablePane来初始化可停靠窗口出现的位置。如图6

Revit怎么实现机电管线实时净高查询功能

图6

4、在Revit中注册一个可停靠窗口。

在ribbon中添加一个可停靠窗口打开的按钮,然后通过RegisterDockablePane添加可停靠窗口。在这里要给定窗口唯一的Guid码,这个码可以自己修改原有的码或者生成一个新的码,但是必须是唯一的 G ui d码。

Revit怎么实现机电管线实时净高查询功能

5、在IExternalCommand中添加执行按钮的命令,这里的 G ui d 码要和可停靠窗口的 G ui d 码一致。 Revit怎么实现机电管线实时净高查询功能

6、可停靠窗口空闲事件实现净高查询的算法。

利用实体和曲线的交点来求管线到板的距离,并且排除其他板的影响只求管线到面层的距离,即管线的真正净高。利用该算法可以实现管线的实时三维净高显示。

以上便是实现了可停靠窗口实时查询管线高度的方法。

效果如下:

Revit怎么实现机电管线实时净高查询功能

关于“Revit怎么实现机电管线实时净高查询功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Revit怎么实现机电管线实时净高查询功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


本文名称:Revit怎么实现机电管线实时净高查询功能
文章URL:http://scyanting.com/article/ppgsdg.html