研发动态

[Revit二次开发] [Revit二次开发] Ribbon菜单的创建 [课程编码3921]

[复制链接] []
发表于 2023-1-21 16:10:53| 字数 3,255 | 显示全部楼层 |阅读模式

https://blog.csdn.net/qq_40416052/article/details/85010831


(1)项目完整代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Autodesk.Revit.DB;
  7. using Autodesk.Revit.UI;
  8. using Autodesk.Revit.Attributes;

  9. using System.Windows.Media.Imaging;//需要添加引用:PresentationCore、System.Xaml、WindowsBase
  10. using Autodesk.Revit.UI.Events;

  11. namespace Ribbon
  12. {
  13.     [TransactionAttribute(TransactionMode.Manual)]
  14.     [RegenerationAttribute(RegenerationOption.Manual)]
  15.     public class Class1 : IExternalApplication
  16.     {
  17.         public Result OnShutdown(UIControlledApplication application)
  18.         {
  19.             return Result.Succeeded;
  20.         }

  21.         public Result OnStartup(UIControlledApplication application)
  22.         {
  23.             application.CreateRibbonTab("我的工具");//创建选型卡页名称
  24.             RibbonPanel panel1 = application.CreateRibbonPanel("我的工具", "欢迎页");//创建选项卡面板
  25.             PushButtonData pdb = new PushButtonData("我的工具", "欢迎使用", @"E:\27.Revit development\HelloWorld\HelloWorld\bin\Debug\HelloRevit.dll", "HelloRevit.Class1");//此处为我编写的HelloWorld程序,,相关链接在文章最后
  26.             PushButton pb = panel1.AddItem(pdb) as PushButton;

  27.             RibbonPanel panel2 = application.CreateRibbonPanel("我的工具", "工具");//创建面板
  28.             SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具");//创建记忆下拉按钮
  29.             SplitButton sb = panel2.AddItem(splitData) as SplitButton;

  30.             PushButtonData spd = new PushButtonData("我的工具", "创建", @"E:\27.Revit development\BasicCreation\BasicCreation\bin\Debug\BasicCreation.dll", "BasicCreation.Class1");//此处的插件是:创建墙体并实现墙体的复制、移动和镜像,相关链接在文章最后
  31.             //为按钮添加图片
  32.             spd.LargeImage = new BitmapImage(new Uri(@"E:\27.Revit development\Bitmap.png"));//添加位图的地址
  33.             sb.AddPushButton(spd);//完成添加

  34.             //添加分隔符
  35.             panel2.AddSeparator();
  36.             PulldownButtonData pdbd = new PulldownButtonData("我的工具", "检查");
  37.             PushButtonData pushbtn = new PushButtonData("我的工具", "碰撞检查", @"E:\27.Revit development\Collision\Collision\bin\Debug\Collision.dll", "Collision.Class1");//这是我写的一个碰撞检查插件,相关链接在文章最后
  38.             PulldownButton btn = panel2.AddItem(pdbd) as PulldownButton;
  39.             btn.LongDescription = "检查当前物体是否碰撞";
  40.             btn.AddPushButton(pushbtn);

  41.             //创建下拉组合框
  42.             RibbonPanel panel3 = application.CreateRibbonPanel("我的工具", "文件");
  43.             ComboBoxData cbd = new ComboBoxData("选项");
  44.             ComboBox cBox = panel3.AddItem(cbd) as ComboBox;

  45.             if(cBox != null)
  46.             {
  47.                 cBox.ItemText = "选择操作";
  48.                 cBox.ToolTip = "请选择想要进行的操作";
  49.                 cBox.LongDescription = "选择一直接关闭,选择二关闭并修改";

  50.                 ComboBoxMemberData cbmd = new ComboBoxMemberData("A", "关闭");
  51.                 ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改");

  52.                 cbmd.GroupName = "编辑操作";
  53.                 cBox.AddItem(cbmd);
  54.                 cBox.AddItem(cbmd2);
  55.             }
  56.             cBox.CurrentChanged += change;
  57.             cBox.DropDownClosed += closed;


  58.             return Result.Succeeded;
  59.         }

  60.         private void closed(object sender, ComboBoxDropDownClosedEventArgs e)
  61.         {
  62.             TaskDialog.Show("关闭", "已关闭");
  63.         }

  64.         private void change(object sender, ComboBoxCurrentChangedEventArgs e)
  65.         {
  66.             TaskDialog.Show("修改", "已修改");
  67.         }
  68.     }
  69. }
复制代码

Ribbon菜单插件介绍:

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建


(2)项目代码中用到的插件:

[Revit二次开发] 创建墙体并实现墙体的复制、移动和镜像

[Revit二次开发] 使用ElementIntersectFilter进行冲突检查

(3)面板中制作位图需要添加的引用resentationCore、System.Xaml、WindowsBase

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

(4)代码编写完成后,将Revit2018.exe的路径设置外“启动外部程序”

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建


[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

(5)在Revit2018中加载应用程序 :

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

将Addins\2014下的Ribbon.addin 文件复制到Addins\2018文件夹下:

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

加载应用程序:

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

效果:

[Revit二次开发] Ribbon菜单的创建

[Revit二次开发] Ribbon菜单的创建

参考文献:

  周婧祎《Autodesk Revit 2016二次开发入门教程》


回复 申请删帖

使用道具 举报

  • 联系我们
  • 邮箱:837005074#qq.com(请把#改成@)
  • 电话:18810188033
  • QQ客服 837005074
  • 人工客服:周一至周日(晚6点至11点)
  • 扫描加客服QQ

  • 扫描加客服微信

QQ|关于我们|Archiver|手机版|小黑屋|畅建科技 ( 京ICP备2022013818号-3 )

GMT+8, 2024-3-29 21:52 , Processed in 0.448026 second(s), 56 queries .

Powered by 找最好 X3.4

© 2015至今 zhaozuihao.com