Revit开发--Ribbon菜单

本文介绍了如何在Revit中创建自定义Ribbon界面,包括RibbonTab、RibbonPanel、PushButton、PulldownButton、SplitButton和ComboBox等元素的用法,以及如何绑定命令脚本、设置图标和提示信息。
摘要由CSDN通过智能技术生成

 基本认识:

 

 

1.选项卡页RibbonTab:管理面板。

2.面板RibbonPanel:装载控件。

3.命令按钮PushButton:对应一个Revit外部命令(IExternalCommand),点击按钮就执行对应的命令脚本。

命令按钮数据资料 PushButtonData

4.下拉按钮PulldownButton:带有下拉列表,列表可装载命令按钮,命令按钮之间可加分割线划分开。

下拉按钮数据资料 PulldownButtonData

5.下拉记忆按钮SplitButton:两部分构成,上部分类似命令按钮,下部分类似下拉按钮。特点:上部分的记忆按钮会重复你上一次的参数选择及调整的使用,不需要重新参数调节,比较快捷。

下拉记忆按钮数据资料 SplitButtoData

6.下拉组合框ConboBox:组合框选项分组组合,不支持多选。

组合框数据资料 ConboBoxData

组合框选项数据 ComboBoxMemberData

一、一个命令按钮

//外部应用的接口IExternalApplication
//应放在软件启动时里执行
public Result OnStartup(UIControlledApplication application)
{
    //创建自定义Ribbon菜单
    //1.创建RibbonTab选项卡页
    application.CreateRibbonTab("DIY");
    //2.在RibbonTab选项卡页中创建RibbonPanel面板
    RibbonPanel panel1 = application.CreateRibbonPanel("DIY", "应用简介");

    //3.命令按钮
    //3.1指定程序集的名称、所使用的类名、程序集路径
    //程序集路径--最好写成相对位置
    string Path1 =@"Introduce\bin\Debug\Introduce.dll";
    //程序集的名称、所使用的类名——"主程序集命名空间.主程序类名"                                
    string Class1 = "Introduce.Introduction";
    //3.2定义PushButtonData命令按钮数据资料,绑定程序集
    PushButtonData pdata = new PushButtonData("命令按钮", "详情", Path1, Class1);
    //3.3将PushButton添加到面板中
    PushButton push = panel1.AddItem(pdata) as PushButton;
    //3.4为PushButton添加图标
    //可把图片资源加载入项目中,方便把图片的路径写成相对路径,并进行修改属性(图片的生成操作,改位:嵌入的资源)
    Stream imgPath =  Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu.jpg");
    //如上的相对位置:Assembly.GetExecutingAssembly().GetManifestResourceStream()获取程序集的路径,"picture.tu.jpg":picture文件夹里的tu.jpg图片
    push.LargeImage = BitmapFrame.Create(imgPath); 
    //3.5设置命令按钮的默认提示信息
    push.ToolTip = "Revit插件简介";

    return Result.Succeeded;
}

二、多个命令按钮

(1)同一面板RibbonPanel内加分隔符分开

    //创建自定义Ribbon菜单
    //1.创建RibbonTab选项卡页
    application.CreateRibbonTab("DIY");
    //2.在RibbonTab选项卡页中创建RibbonPanel面板
    RibbonPanel panel1 = application.CreateRibbonPanel("DIY", "应用简介");

    //3.命令按钮
    //3.1指定程序集的名称、所使用的类名、程序集路径
    string Path1 =@"Introduce\bin\Debug\Introduce.dll";                              
    string Class1 = "Introduce.Introduction";
    //3.2定义PushButtonData命令按钮数据资料,绑定程序集
    PushButtonData pdata = new PushButtonData("命令按钮", "详情", Path1, Class1);
    //3.3将PushButton添加到面板中
    PushButton push = panel1.AddItem(pdata) as PushButton;
    //3.4为PushButton添加图标
    Stream imgPath =  Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu1.jpg");
    push.LargeImage = BitmapFrame.Create(imgPath); 
    //3.5设置命令按钮的默认提示信息
    push.ToolTip = "Revit插件简介";

    //4.面板内添加分隔符
    panel1.AddSeparator();

    //5.重复3的步骤继续创建命令按钮

(2)下拉按钮

    //创建自定义Ribbon菜单
    //1.创建RibbonTab选项卡页
    application.CreateRibbonTab("DIY");
    //2.在RibbonTab选项卡页中创建RibbonPanel面板
    RibbonPanel panel1 = application.CreateRibbonPanel("DIY", "应用简介");

    //3.命令按钮数据资料PushButtonData
    //3.1指定程序集的名称、所使用的类名、程序集路径
    string Path1 =@"Introduce\bin\Debug\Introduce.dll";                               
    string Class1 = "Introduce.Introduction";
    //3.2定义PushButtonData命令按钮数据资料,绑定程序集
    PushButtonData pdata1 = new PushButtonData("命令按钮", "详情", Path1, Class1);
    //3.3添加图标
    Stream imgPath =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu1.png");
    pdata1.LargeImage = BitmapFrame.Create(imgPath); 
    //3.4设置默认提示信息
    pdata1.ToolTip = "简介";

    //4.继续定义多个命令按钮数据资料PushButtonData
    //略写,假设已经定义好多个PushButtonData,pdata1、pdata2、pdata3

    //5.把pdata1、pdata2、pdata3加入下拉按钮中
    //5.1定义下拉按钮数据资料PulldownButtonData
    PulldownButtonData pullData = new PulldownButtonData("下拉", "装多个命令按钮");
    //5.2把下拉按钮添加到RibbonPanel面板里
    PulldownButton pulldownButton = panel1.AddItem(pullData) as PulldownButton;
    //5.3为下拉按钮添加图标
    Stream imgPath4 =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu4.png");
    pulldownButton.LargeImage= BitmapFrame.Create(imgPath4);
    //5.4添加pdata1、pdata2、pdata3命令按钮数据资料
    pulldownButton.AddPushButton(pdata1);
    //添加分割线化分开命令按钮
    pulldownButton.AddSeparator();
    pulldownButton.AddPushButton(pdata2);
    pulldownButton.AddPushButton(pdata3);

(3)下拉记忆按钮

    //以上参考(2)下拉按钮部分
    //4.继续定义多个命令按钮数据资料PushButtonData
    //略写,假设已经定义好三个PushButtonData对象,pdata1、pdata2、pdata3

    //5.把pdata1、pdata2、pdata3加入下拉记忆按钮中
    //5.1定义下拉记忆按钮数据资料SplitButtonData
    SplitButtonData spData = new SplitButtonData("下拉记忆", "装多个命令按钮");
    //5.2把下拉记忆按钮添加到RibbonPanel面板里
    SplitButton spButton = panel1.AddItem(spData) as SplitButton;
    //5.3为下拉按钮添加图标
    Stream imgPath4 =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu4.png");
    pulldownButton.LargeImage= BitmapFrame.Create(imgPath4);
    //5.4添加pdata1、pdata2、pdata3命令按钮数据资料
    spButton.AddPushButton(pdata1);
    //添加分割线化分开命令按钮
    spButton.AddSeparator();
    spButton.AddPushButton(pdata2);
    spButton.AddPushButton(pdata3);

三、下拉组合框

//创建自定义Ribbon菜单
//1.创建RibbonTab选项卡页
application.CreateRibbonTab("DIY");
//2.在RibbonTab选项卡页中创建RibbonPanel面板
RibbonPanel panel1 = application.CreateRibbonPanel("DIY", "应用简介");

//3.定义组合选项数据资料
//名称、提示信息
ComboBoxMemberData cBMData1 = new ComboBoxMemberData("子按钮1", "组合框-子按钮1");
//添加图标
Stream imgPath1 =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu1.png");
cBMData1.Image = BitmapFrame.Create(imgPath1);
//分组的组名
cBMData1.GroupName = "1组";

//4.继续定义其他组合选项数据资料
ComboBoxMemberData cBMData2 = new ComboBoxMemberData("子按钮2", "组合框-子按钮2");
Stream imgPath2 =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu2.png");
cBMData2.Image= BitmapFrame.Create(imgPath2);
cBMData2.GroupName = "1组";

ComboBoxMemberData cBMData3 = new ComboBoxMemberData("子按钮3", "组合框-子按钮3");
Stream imgPath3 =Assembly.GetExecutingAssembly().GetManifestResourceStream("picture.tu3.png");
cBMData3.Image = BitmapFrame.Create(imgPath3);
cBMData3.GroupName = "2组";

//5.组合框
ComboBoxData cbData = new ComboBoxData("组合框");
//5.1把组合框添加到RibbonPanel面板上
ComboBox cbButton = panel1.AddItem(cbData) as ComboBox;
//5.2组合框的提示信息
cbButton.ToolTip = "工具提示";
//组合框的详细描述使用功能
cbButton.LongDescription = "详细描述";
//5.3把组合选项数据资料添加到组合框中
cbButton.AddItem(cBMData1);
//分隔符分开
cbButton.AddSeparator();
cbButton.AddItem(cBMData2);
cbButton.AddItem(cBMData3);

//6.组合框选项更改事件
cbButton.CurrentChanged += CbButton_CurrentChanged;

private void CbButton_CurrentChanged(object sender, Autodesk.Revit.UI.Events.ComboBoxCurrentChangedEventArgs e)
{
    ComboBox combodata = sender as ComboBox;
    ComboBoxMember member = combodata.Current;
    //定义事件触发
    if(member.Name== "子按钮1")
    { TaskDialog.Show("选择","子按钮1"); }
    else if(member.Name == "子按钮2")
    { TaskDialog.Show("选择", "子按钮2"); }
    else
    { TaskDialog.Show("选择", "子按钮3"); }
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值