添加配置文件
【VendorId】,开发商Id,可以自己随意取名。
【Text】,Revit中插件的名称。
【Description】,插件的描述信息。(可不写这项)
【FullClassName】,类名。注意:得填写完整的【命名空间.类名】。
【Assembly】,需要加载的程序集的完整路径。
【AddIn】,这一项在VS的【工具】→【创建GUID】中获得。
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Application">
<Name>Ribbon</Name>
<Assembly>D:\FLB\WindowsTest\WindowsTest\WindowsTest\bin\Debug\WindowsTest.dll</Assembly>
<ClientId>71268f2f-ed32-4e04-9cf6-3db66dc012cf</ClientId>
<FullClassName>WindowsTest.Ribbon</FullClassName>
<VendorId>ADSK</VendorId>
<VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
</AddIn>
</RevitAddIns>
引用RevitAPI和RevitAPIUI
public class SetAction
{
public static Action<string> SendMsg { get; set; }
}
public class Ribbon : IExternalApplication
{
static string AddInPath = typeof(Ribbon).Assembly.Location;
static string ButtonIconsFolder = Path.GetDirectoryName(AddInPath);
// 房间设计中的组件库
public static Guid winGuid = new Guid("469F0A8B-12E6-4148-BA0E-C4E251C7B1A7");
private static DockablePaneId tileDesignLibraryPaneId = new DockablePaneId(winGuid);
public static MainWin mainWin;
private static UIControlledApplication uiControlledApplication;
public Result OnShutdown(UIControlledApplication application)
{
return Autodesk.Revit.UI.Result.Succeeded;
}
public Result OnStartup(UIControlledApplication application)
{
uiControlledApplication = application;
try
{
// create customer Ribbon Items
CreateRibbonMenu(application);
YunJianRegistDocPane();
return Autodesk.Revit.UI.Result.Succeeded;
}
catch (Exception ex)
{
TaskDialog.Show("Ribbon Sample", ex.ToString());
return Autodesk.Revit.UI.Result.Failed;
}
}
private void CreateRibbonMenu(UIControlledApplication application)
{
//创建选项卡页(RibbonTab)
string ribbonTabName = "RibbonTab";
application.CreateRibbonTab(ribbonTabName);
//创建面板2
{
string firstPanelName = "DocumentChanged";
RibbonPanel ribbonPanel = application.CreateRibbonPanel(ribbonTabName, firstPanelName);
string AssemblyLocation = Assembly.GetExecutingAssembly().Location;
string strDll2 = Path.GetDirectoryName(AssemblyLocation) + "\\WindowsTest.dll";//房间图片路径
PushButton pushButton3 = ribbonPanel.AddItem(new PushButtonData("pushButton3", "房间设计", strDll2, "WindowsTest.cmd")) as PushButton;
PushButton pushButton4 = ribbonPanel.AddItem(new PushButtonData("pushButton4", "户型设计", strDll2, "WindowsTest.cmd2")) as PushButton;
PushButton pushButton5 = ribbonPanel.AddItem(new PushButtonData("pushButton5", "楼层设计", strDll2, "WindowsTest.cmd3")) as PushButton;
PushButton pushButton6 = ribbonPanel.AddItem(new PushButtonData("pushButton6", "楼栋设计", strDll2, "WindowsTest.cmd4")) as PushButton;
}
}
//注册可停靠窗体
private void YunJianRegistDocPane()
{
//注册窗体
mainWin = new MainWin();
SetAction.SendMsg += mainWin.SetText;
uiControlledApplication.RegisterDockablePane(tileDesignLibraryPaneId, "云砖家", mainWin);
Autodesk.Revit.UI.TaskDialog.Show("提示", "可停靠窗体已注册。");
}
}
[Transaction(TransactionMode.Manual)]
public class cmd : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
//显示组件库窗体
DockablePaneId tileDesignLibraryPaneId = new DockablePaneId(Ribbon.winGuid);
DockablePane pane = uiApp.GetDockablePane(tileDesignLibraryPaneId);
pane.Show();
if (SetAction.SendMsg != null)
{
SetAction.SendMsg("1");//执行所有注册的委托
}
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class cmd2 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
if (SetAction.SendMsg != null)
{
SetAction.SendMsg("1");//执行所有注册的委托
}
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class cmd3 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
if (SetAction.SendMsg != null)
{
SetAction.SendMsg("2");//执行所有注册的委托
}
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class cmd4 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
if (SetAction.SendMsg != null)
{
SetAction.SendMsg("loudong");//执行所有注册的委托
}
return Result.Succeeded;
}
}