上一期讲了另一种执行功能函数的方法,差不多就是这两种方法执行功能函数,一是通过绑定外部dll文件,二是通过命名空间.类名链接cs文件。今天介绍另一种创建下拉按钮的方案,解决按钮万一不够用的情况,通过下拉按钮对创建的功能进行归类应该够用了。 本期代码在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)] 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("设计协同平台"); #region 创建“登录”和“访问云平台”两个按钮 string PanelName = "设计用户界面"; RibbonPanel ribbonPanelTest = application.CreateRibbonPanel("设计协同平台", PanelName);
RadioButtonGroupData radioButtonGroupData = new RadioButtonGroupData("group信息"); 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 = 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 创建“设计协同”面板 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 = "查看本文件的链接文件,并进行更新、删除、绑定、取消绑定等操作";
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期代码创建结束 } } }
其他步骤同上一期一模一样,包括加载到Revit中后效果如下图。
运行一个弹出窗口 总结: Revit还提供了很多的创建面板的方法,从实用的角度来说,这两种基本够用了,有兴趣也可以再探索一下其他的创建面板的方法。
微信公众号【BIM技术应用交流】回复“二开9”获取本期材料。 知乎专栏【BKM — Revit二次开发】获取更多更新。 欢迎加入QQ群:427981585
|