基本认识:

 

 

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"); }

}

 

 

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。