Revit API 之 气泡

来源:互联网 发布:网络作家猫腻 编辑:程序博客网 时间:2024/04/30 02:57

在Revit中制作一个气泡,友好提示给用户会有很多种办法。但是这里讲解的是基于Autodesk内部提供的方法。风格将与Revit 气泡提示一致。先不废话,先看一下代码:

using Autodesk.Revit.UI;using Autodesk.Revit.DB;using Autodesk.Revit.Attributes;using Autodesk.Internal.InfoCenter;namespace BIM.Test{    [Transaction(TransactionMode.Manual)]    public class RevitUI : IExternalCommand    {        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)        {            //-----Revit消息提示气泡            var paletteMgr = Autodesk.Windows.ComponentManager.InfoCenterPaletteManager;            var resultItem = new ResultItem()            {                Category = "气泡标题",  // 气泡标题                Title = "Title Text1", // 气泡内容            };            resultItem.ResultClicked += resultItem_ResultClicked;  // 当鼠标点击气泡内容时触发此事件            paletteMgr.ShowBalloon(resultItem);            return Result.Succeeded;        }        void resultItem_ResultClicked(object sender, ResultClickEventArgs e)        {            TaskDialog.Show("气泡内容", "点击了气泡内容!");        }    }}

这里写图片描述

通过上述代码即可出现如上图所示的气泡提示。此气泡提示的API归属于Adwindows.dll ,引用此dll以及其相关依赖项,即可。此气泡可用于对用户进行友好提示。

那么有没有办法在其它区域显示类似鼠标悬停气泡提示呢?当然是有的,先看如下代码:

using Autodesk.Revit.UI;using Autodesk.Revit.DB;using Autodesk.Revit.Attributes;using Autodesk.Internal.InfoCenter;namespace BIM.Test{    [Transaction(TransactionMode.Manual)]    public class RevitUI : IExternalCommand    {        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)        {            //-----Revit提示气泡            UIFramework.EnhancedTooltipImpl.Show("族名称:族类型:族ID");            return Result.Succeeded;        }    }}

这里写图片描述

如上代码所示,提示气泡将会自动在鼠标的位置下方显示提示文本。其实显示气泡的方式有很多种,可以自己定制重绘控件,Popup等等。如果要求不高,既然Autodesk 内部提供了简单的气泡功能,也可以直接进行使用。以上代码所API所归属的dll为UIFramework.dll。引用此dll及相关依赖项即可。

0 0