Ribbon菜单的创建以及各种不同的button
Ribbon
这个类是PushButton和PulldownButton的基类。
按钮放在panel内,panel放在tab页内
在Revit API中,可以使用ExternalApplication类和ExternalCommand类来创建自定义菜单和按钮。下面是一个简单的示例,演示如何在Revit中创建一个自定义菜单和按钮:
首先,创建一个C#类库项目,并添加对RevitAPI和RevitAPIUI的引用。
在项目中创建一个类,该类需要继承ExternalApplication类,如下所示:
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
[Transaction(TransactionMode.Manual)]
public class MyApplication : IExternalApplication
{
public Result OnStartup(UIControlledApplication application)
{
// 在这里创建自定义菜单和按钮
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication application)
{
return Result.Succeeded;
}
}
在OnStartup方法中添加以下代码,创建自定义菜单和按钮:
// 创建一个自定义菜单
RibbonPanel ribbonPanel = application.CreateRibbonPanel("My Tools");
// 添加一个按钮
PushButtonData buttonData = new PushButtonData("My Button", "My Button", Assembly.GetExecutingAssembly().Location, "MyNamespace.MyCommand");
PushButton button = ribbonPanel.AddItem(buttonData) as PushButton;
button.ToolTip = "This is my button.";
这段代码将在“Add-Ins”选项卡下创建一个名为“My Tools”的自定义菜单,然后添加一个名为“My Button”的按钮,并将它的工具提示设置为“This is my button.”。
创建一个类,该类需要继承ExternalCommand类,作为按钮的命令处理程序,如下所示:
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
[Transaction(TransactionMode.Manual)]
public class MyCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
// 在这里添加按钮的执行代码
return Result.Succeeded;
}
}
在这个示例中,MyCommand类是一个简单的命令处理程序,它可以执行一些操作。
编译项目并将生成的DLL文件放置在Revit的插件目录中。启动Revit,应该可以在“Add-Ins”选项卡下看到My Tools菜单和My Button按钮。
这只是一个简单的示例,可以根据自己的需要创建更复杂的菜单和按钮,以及实现更复杂的操作。
实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Imaging;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
namespace HelloRevit
{
public class CsAddpanel : Autodesk.Revit.UI.IExternalApplication
{
public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application)
{
//添加一个新的Ribbon面板
RibbonPanel ribbonPanel = application.CreateRibbonPanel("NewRibbonPanel");
//在新的Ribbon面板上添加一个按钮
//点击这个按钮,前一个例子“HelloRevit”这个插件将被运行。
PushButton pushButton = ribbonPanel.AddItem(new PushButtonData("HelloRevit",
"HelloRevit", @"C:\Projects\HelloRevit\HelloRevit.dll", "HelloRevit.Class1")) as PushButton;
// 给按钮添加一个图片
Uri uriImage = new Uri(@"C:\Projects\HelloRevit\logo.png");
BitmapImage largeImage = new BitmapImage(uriImage);
pushButton.LargeImage = largeImage;
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication application)
{
return Result.Succeeded;
}
}
}