Revit二次开发(一)

添加配置文件

【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;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_40098572/article/details/114413041