基本认识:
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"); }
}