🌓
搜索
 找回密码
 立即注册

BKM Revit二次开发09—创建下拉菜单面板

admin 2020-4-10 18:59:46 48520

点击上面“蓝字”关注我们


上一期讲了另一种执行功能函数的方法,差不多就是这两种方法执行功能函数,一是通过绑定外部dll文件,二是通过命名空间.类名链接cs文件。今天介绍另一种创建下拉按钮的方案,解决按钮万一不够用的情况,通过下拉按钮对创建的功能进行归类应该够用了。

1. 创建项目

本期代码在BKM Revit二次开发08—创建面板2.note基础上进行,也就在后面添加如下代码,,以下代码中有说明。

using System.Data;using System.Windows;using System.Windows.Media.Imaging;using Autodesk.Revit;using Autodesk.Revit.UI;using Autodesk.Revit.UI.Selection;using Autodesk.Revit.DB;using Autodesk.Revit.DB.Architecture;using Autodesk.Revit.DB.Mechanical;using Autodesk.Revit.DB.Plumbing;using Autodesk.Revit.DB.Electrical;using Autodesk.Revit.ApplicationServices;using System.Data.SqlClient;using Autodesk.Revit.Creation;using Autodesk.Revit.DB.Structure;using Autodesk.Revit.Attributes;using System;using System.IO;
namespace _09_Riboon_demo_3{ [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] [Journaling(JournalingMode.NoCommandData)] //这里使用的IExternalApplication接口,使用接口后会自动出现 //public Result OnShutdown(UIControlledApplication application) //和public Result OnStartup(UIControlledApplication application) //两个函数 public class Ribbon_demo_3 : IExternalApplication { //获取当前文件所在的路径 static string AddInPath = typeof(Ribbon_demo_3).Assembly.Location; static string ButtonIconsFolder = Path.GetDirectoryName(AddInPath);
public Result OnShutdown(UIControlledApplication application){ return Result.Succeeded; }
public Result OnStartup(UIControlledApplication application){ creatRibbon(application); return Result.Succeeded; }
public void creatRibbon(UIControlledApplication application){ application.CreateRibbonTab("设计协同平台");//创建一个名称为“设计协同平台”Tab #region 创建“登录”和“访问云平台”两个按钮 //创建一个名称为"用户界面"panel,并将"用户界面"panel附着在“设计协同平台”Tab下面 string PanelName = "设计用户界面"; RibbonPanel ribbonPanelTest = application.CreateRibbonPanel("设计协同平台", PanelName);
//创建一个按钮群组 RadioButtonGroupData radioButtonGroupData = new RadioButtonGroupData("group信息"); //新建“设计用户登录”按钮,并指定按钮图标,指定按钮点击后实现的功能(这里是运行同级目录下Form_demo.dll中的Form_demo命名空间下的Form_de类,也就是上一期中的成果) //指定鼠标挪上按钮的提示文字, RadioButtonGroup radioButtonGroup = (RadioButtonGroup)(ribbonPanelTest.AddItem(radioButtonGroupData)); //注意这一行代码,并同上一期进行比较 ToggleButton toggleButton_login = radioButtonGroup.AddItem(new ToggleButtonData("设计用户登录", "设计用户登录", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); toggleButton_login.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "登录.png"), UriKind.Absolute)); //这行代码决定图标 toggleButton_login.ToolTip = "使用管理员发放的账号密码,登录以体验更多功能"; toggleButton_login.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "2.png"), UriKind.Absolute));
//以下创建第二名为“访问设计云平台”的按钮,同上。 //注意这一行代码,并同上一期进行比较 ToggleButton toggleButton_Cloud = radioButtonGroup.AddItem(new ToggleButtonData("访问设计云平台", "设计设计访问云平台", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); toggleButton_Cloud.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "云平台.png"), UriKind.Absolute)); //这行代码决定图标 toggleButton_Cloud.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "4.png"), UriKind.Absolute)); toggleButton_Cloud.ToolTip = "将直接跳转到网页平台界面"; #endregion 创建“设计用户登录”和“访问设计云平台”两个按钮结束 #region 09期创建的代码 #region 创建轻量化工具
string PanelName2 = "协同设计"; RibbonPanel ribbonPanelTest2 = application.CreateRibbonPanel("设计协同平台", PanelName2); SplitButtonData splitButtonData1 = new SplitButtonData("协同设计工具1", "Create Wall"); SplitButton splitButton = ribbonPanelTest2.AddItem(splitButtonData1) as SplitButton;
PushButton pushButton = splitButton.AddPushButton(new PushButtonData("轻量化导出", "轻量化导出", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "导出1.png"), UriKind.Absolute)); pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "导出.png"), UriKind.Absolute)); pushButton.ToolTip = "将文件进行轻量化格式导出到本地"; //pushButton.ToolTipImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "3.png"), UriKind.Absolute));
pushButton = splitButton.AddPushButton(new PushButtonData("轻量化浏览", "轻量化浏览",AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "轻量化1.png"), UriKind.Absolute)); pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "轻量化.png"), UriKind.Absolute)); pushButton.ToolTip = "通过内置浏览器进行轻量化文件预览或者浏览本地轻量化文件";
pushButton = splitButton.AddPushButton(new PushButtonData("轻量化发布", "轻量化发布", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "发布1.png"), UriKind.Absolute)); pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "发布.png"), UriKind.Absolute)); pushButton.ToolTip = "将轻量化文件发布到系统";
#endregion 创建轻量化工具结束
#region 创建“设计协同”面板 //ribbonPanelTest2.AddSeparator(); SplitButtonData splitButtonData2 = new SplitButtonData("协同设计工具2", "Create Wall"); SplitButton splitButton2 = ribbonPanelTest2.AddItem(splitButtonData2) as SplitButton;
PushButton pushButton2 = splitButton2.AddPushButton(new PushButtonData("链接文件管理", "链接文件管理", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton2.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "链接1.png"), UriKind.Absolute)); pushButton2.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "链接.png"), UriKind.Absolute)); pushButton2.ToolTip = "查看本文件的链接文件,并进行更新、删除、绑定、取消绑定等操作"; //pushButton.ToolTipImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "3.png"), UriKind.Absolute));
pushButton2 = splitButton2.AddPushButton(new PushButtonData("查看拓展属性", "查看拓展属性", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton2.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "拓展项目1.png"), UriKind.Absolute)); pushButton2.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "拓展项目.png"), UriKind.Absolute)); pushButton2.ToolTip = "查看文件的拓展属性";
pushButton2 = splitButton2.AddPushButton(new PushButtonData("分享文件", "分享文件", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton2.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "分享.png"), UriKind.Absolute)); pushButton2.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "分享.png"), UriKind.Absolute)); pushButton2.ToolTip = "将当前文件以链接形式进行共享";
pushButton2 = splitButton2.AddPushButton(new PushButtonData("共享文件同步", "共享文件同步", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton2.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "共享1.png"), UriKind.Absolute)); pushButton2.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "共享.png"), UriKind.Absolute)); pushButton2.ToolTip = "对已共享的文件进行共享更新";
pushButton2 = splitButton2.AddPushButton(new PushButtonData("中心文件管理", "中心文件管理", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")); pushButton2.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "中心1.png"), UriKind.Absolute)); pushButton2.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "中心.png"), UriKind.Absolute)); pushButton2.ToolTip = "更容易的对中心文件进行组织管理"; #endregion 创建“设计协同”面板结束
#region 创建“设置”面板 string PanelName4 = "设置面板"; RibbonPanel ribbonPanelTest4 = application.CreateRibbonPanel("设计协同平台", PanelName4);
#region 创建“刷新预设”按钮 PushButton pushButton15_1 = ribbonPanelTest4.AddItem(new PushButtonData("刷新预设", "刷新预设", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")) as PushButton; Uri uriImage15_1 = new Uri(ButtonIconsFolder + "\\刷新.png"); BitmapImage largeImage15_1 = new BitmapImage(uriImage15_1); pushButton15_1.LargeImage = largeImage15_1; Uri uriSmallImage15_1 = new Uri(ButtonIconsFolder + "\\刷新.png"); BitmapImage smallImage15_1 = new BitmapImage(uriSmallImage15_1); pushButton15_1.Image = smallImage15_1; pushButton15_1.ToolTip = "刷新当前预设条件"; #endregion 创建“刷新预设”按钮结束
#region 创建“生成模板视图”按钮 PushButton pushButton15_2 = ribbonPanelTest4.AddItem(new PushButtonData("生成模板视图", "生成模板视图", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")) as PushButton; Uri uriImage15_2 = new Uri(ButtonIconsFolder + "\\视图.png"); BitmapImage largeImage15_2 = new BitmapImage(uriImage15_2); pushButton15_2.LargeImage = largeImage15_2; Uri uriSmallImage15_2 = new Uri(ButtonIconsFolder + "\\视图.png"); BitmapImage smallImage15_2 = new BitmapImage(uriSmallImage15_2); pushButton15_2.Image = smallImage15_2; pushButton15_2.ToolTip = "生成建筑专业的模板视图"; #endregion 创建“生成模板视图”按钮结束
#region 创建“系统类型过滤”按钮 PushButton pushButton15_3 = ribbonPanelTest4.AddItem(new PushButtonData("系统类型过滤", "系统类型过滤", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")) as PushButton; Uri uriImage15_3 = new Uri(ButtonIconsFolder + "\\过滤.png"); BitmapImage largeImage15_3 = new BitmapImage(uriImage15_2); pushButton15_3.LargeImage = largeImage15_3; Uri uriSmallImage15_3 = new Uri(ButtonIconsFolder + "\\过滤.png"); BitmapImage smallImage15_3 = new BitmapImage(uriSmallImage15_3); pushButton15_3.Image = smallImage15_3; pushButton15_3.ToolTip = "过滤符合系统类型的元素"; #endregion 创建“系统类型过滤”按钮结束
#region 创建“系统设置”面板 PushButton pushButton15 = ribbonPanelTest4.AddItem(new PushButtonData("设置", "设置", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")) as PushButton; Uri uriImage15 = new Uri(ButtonIconsFolder + "\\设置.png"); BitmapImage largeImage15 = new BitmapImage(uriImage15); pushButton15.LargeImage = largeImage15; Uri uriSmallImage15 = new Uri(ButtonIconsFolder + "\\设置.png"); BitmapImage smallImage15 = new BitmapImage(uriSmallImage15); pushButton15.Image = smallImage15; pushButton15.ToolTip = "进行插件功能的相关设置"; #endregion 创建“系统设置”面板结束
#region 创建“关于”面板 PushButton pushButton16 = ribbonPanelTest4.AddItem(new PushButtonData("关于", "关于", AddInPath, "_09_Riboon_demo_3.AddinProgram_3")) as PushButton; Uri uriImage16 = new Uri(ButtonIconsFolder + "\\关于.png"); BitmapImage largeImage16 = new BitmapImage(uriImage16); pushButton16.LargeImage = largeImage16; Uri uriSmallImage16 = new Uri(ButtonIconsFolder + "\\关于.png"); BitmapImage smallImage16 = new BitmapImage(uriSmallImage16); pushButton16.Image = smallImage16; pushButton16.ToolTip = "如有问题,点击此功能"; #endregion 创建“关于”面板结束 #endregion 创建“设置”面板结束 #endregion 09期代码创建结束 } }}

2. 加载到Revit

其他步骤同上一期一模一样,包括加载到Revit中后效果如下图。

运行一个弹出窗口

总结:

Revit还提供了很多的创建面板的方法,从实用的角度来说,这两种基本够用了,有兴趣也可以再探索一下其他的创建面板的方法。


微信公众号【BIM技术应用交流】回复“二开9”获取本期材料。
知乎专栏【BKM — Revit二次开发】获取更多更新。
欢迎加入QQ群:427981585

扫一扫

101705.jpg
随机推荐

最新主题

0 回复

高级模式
游客
返回顶部