给Revit中的Button添加动画和图片
来源:互联网 发布:美洲文明覆灭 知乎 编辑:程序博客网 时间:2024/06/08 19:49
测试环境Revit2016;
引用Revit的DLL有RevitAPI.dll,RevitAPIUI.dll,AdWindows.dll,UIFramework.dll.
如何实现像Revit自带的命令一样,当鼠标长停在button上,出现动画或者图片(如图1)。
查看RevitAPIUI.dll中的 Autodesk.Revit.UI.PushButtonData,发现revit提供了ToolTipImage属性,但是它只能添加图片,无法添加动画,所以我们要使用AdWindows.dll提供的Autodesk.Windows.RibbonItem,来给ToolTip属性赋值。
这个方法的关键是找到Autodesk.Windows命名空间下的RibbonItem,本文将提供两种方式,一种是遍历Autodesk.Windows.RibbonControl,第二种是通过Autodesk.Revit.UI.RibbonItem反射查找Autodesk.Windows.RibbonItem。
使用C:/Program Files/Autodesk/Revit 2016/videos/目录下的视频文件(根据Revit安装目录查找文件),最后实现效果如图2。
图1 图2
using Autodesk.Revit.UI;using Autodesk.Windows;using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;using System.Windows.Media.Imaging;using UIFramework;using RibbonItem = Autodesk.Revit.UI.RibbonItem;namespace ButtonVideo{ public class App : IExternalApplication { private const string tabName = "VButton"; private const string panelName = "Video tooltip"; public Result OnShutdown(UIControlledApplication application) { return Result.Succeeded; } public Result OnStartup(UIControlledApplication application) { RibbonControl ribbonControl = RevitRibbonControl.RibbonControl; var ribbonTab = ribbonControl.FindTab(tabName); if (ribbonTab == null) { application.CreateRibbonTab(tabName); } var ribbonPanel = application.CreateRibbonPanel(tabName, panelName); var button1Data = new PushButtonData("Button1", "Button1", typeof(App).Assembly.Location, "ButtonVideo.Button"); //图片地址 string path = System.Reflection.Assembly.GetExecutingAssembly().Location; path = Path.Combine(Path.GetDirectoryName(path), "weather_sun.png"); button1Data.LargeImage = GetBitmapImage(path); var button1 = ribbonPanel.AddItem(button1Data); RibbonToolTip toolTip1 = new RibbonToolTip() { Title = "这是Button1", Content = "这是命令简要内容", ExpandedContent = "这是命令的扩展内容!", //字符串不要换行,否则读不出来 //ExpandedVideo = new Uri(@"C:\Program Files\Autodesk\Revit 2016\videos\GUID-4D816758-AF71-455E-9FAE-A1D5ED237EC6-low.swf"), ExpandedVideo = new Uri("C:/Program Files/Autodesk/Revit 2016/videos/GUID-4D816758-AF71-455E-9FAE-A1D5ED237EC6-low.swf"), ExpandedImage = GetBitmapImage(path), //IsHelpEnabled = true, //IsProgressive = true }; SetRibbonItemToolTip(button1, toolTip1); return Result.Succeeded; } public BitmapImage GetBitmapImage(string imagePath) { if (File.Exists(imagePath)) return new BitmapImage(new Uri(imagePath)); else return null; } void SetRibbonItemToolTip(RibbonItem item, RibbonToolTip toolTip) { //var ribbonItem = GetRibbonItem1(item); var ribbonItem = GetRibbonItem2(item); if (ribbonItem == null) return; ribbonItem.ToolTip = toolTip; } private Autodesk.Windows.RibbonItem GetRibbonItem1( RibbonItem item) { Type itemType = item.GetType(); var mi = itemType.GetMethod("getRibbonItem", BindingFlags.NonPublic | BindingFlags.Instance); var windowRibbonItem = mi.Invoke(item, null); return windowRibbonItem as Autodesk.Windows.RibbonItem; } private Autodesk.Windows.RibbonItem GetRibbonItem2( RibbonItem item) { RibbonControl ribbonControl = RevitRibbonControl.RibbonControl; //第二种方式获得RibbonControl //RibbonControl ribbonControl = Autodesk.Windows.ComponentManager.Ribbon; foreach (var tab in ribbonControl.Tabs) { if (tab.Id == App.tabName) { foreach (var panel in tab.Panels) { //panel.Source.Id------CustomCtrl_%VButton%Video tooltip if (panel.Source.AutomationName == App.panelName) { foreach (var ribbonItem in panel.Source.Items) { //ribbonItem.Id------------CustomCtrl_%CustomCtrl_%VButton%Video tooltip%Button1 if (ribbonItem.AutomationName == item.Name) { return ribbonItem as Autodesk.Windows.RibbonItem; } } } } } } return null; } }}
更详细的代码见:http://download.csdn.net/download/mye918/9970716
阅读全文
0 0
- 给Revit中的Button添加动画和图片
- Button添加图片和文字
- 使用CSS给ASP.NET中的Button按钮添加一个指定位置的图片
- android中给一个Button添加图片和文字的方法
- 安卓在代码中给button添加和设置图片
- Sencha Touch ExtJs 之 如何给 Button 添加图片
- 【Sencha Toucha】Sencha Touch ExtJs 给 Button 添加图片
- Android应用:Button添加图片和文字
- 给Button添加边框
- 给ActionBar中的按钮添加旋转动画(刷新动画)
- 给UITabbarController 和 UINavigationController添加过场动画
- 怎么用block给Button和AlertView添加点击事件
- 给asp:Button添加背景图片
- Android 属性动画和添加图片
- 给TableViewCell添加动画
- 给cell添加动画
- 给button和button上的文字添加按下效果
- 【SENCHA TOUCH】Sencha Touch ExtJs 给 Button 添加图片(二)
- codeforces 794C C. Naming Company
- 20170908算法工程师在线笔试之jd编程思路
- Linux之awk
- 源码解析Android中AsyncTask的工作原理
- 爬去知乎下某个问题下所有的图片
- 给Revit中的Button添加动画和图片
- Linux系统安装软件的常用命令
- 京东2018年校园招聘笔试代码环节答案分享
- Redis源码剖析-dict遍历算法
- P1553 数字反转(升级版)
- 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
- InfluxDB介绍
- C++学习笔记12 STL Deque
- JQuery-File-Upload插件备忘