Revit SDK 介绍:DockableDialogs

DockableDialogs

DockableDialogs 是Revit SDK中的例子,它介绍如何在 Revit 中使用非模态的可停靠对话框。ExternalApplication 和 ExternalCommand 这个两种方式都可以使用。
** Revit SDK 链接**

例子入口

在这里插入图片描述
这是一个很好的如何创建自己的 Ribbon 的例子:

       /// 
       /// Add UI for registering, showing, and hiding dockable panes.
       /// 
       public Result OnStartup(UIControlledApplication application)
       {
     
          thisApp = this;
          m_APIUtility = new APIUtility();

          application.CreateRibbonTab(Globals.DiagnosticsTabName);
          RibbonPanel panel = application.CreateRibbonPanel(Globals.DiagnosticsTabName, Globals.DiagnosticsPanelName);
          
          panel.AddSeparator();

          PushButtonData pushButtonRegisterPageData = new PushButtonData(Globals.RegisterPage, Globals.RegisterPage,
          FileUtility.GetAssemblyFullName(), typeof(ExternalCommandRegisterPage).FullName);
          pushButtonRegisterPageData.LargeImage = new BitmapImage(new Uri(FileUtility.GetApplicationResourcesPath() + "Register.png"));
          PushButton pushButtonRegisterPage = panel.AddItem(pushButtonRegisterPageData) as PushButton;
          pushButtonRegisterPage.AvailabilityClassName = typeof(ExternalCommandRegisterPage).FullName;


          PushButtonData pushButtonShowPageData = new PushButtonData(Globals.ShowPage, Globals.ShowPage,FileUtility.GetAssemblyFullName(), typeof(ExternalCommandShowPage).FullName);
          pushButtonShowPageData.LargeImage = new BitmapImage(new Uri(FileUtility.GetApplicationResourcesPath() + "Show.png"));
          PushButton pushButtonShowPage = panel.AddItem(pushButtonShowPageData) as PushButton;
          pushButtonShowPage.AvailabilityClassName = typeof(ExternalCommandShowPage).FullName;


          PushButtonData pushButtonHidePageData = new PushButtonData(Globals.HidePage, Globals.HidePage, FileUtility.GetAssemblyFullName(), typeof(ExternalCommandHidePage).FullName);
          pushButtonHidePageData.LargeImage = new BitmapImage(new Uri(FileUtility.GetApplicationResourcesPath() + "Hide.png"));
          PushButton pushButtonHidePage = panel.AddItem(pushButtonHidePageData) as PushButton;
          pushButtonHidePage.AvailabilityClassName = typeof(ExternalCommandHidePage).FullName;

          return Result.Succeeded;
       }

Ribbon 上的菜单如何和对应的命令绑定?
搜索 ExternalCommandRegisterPageExternalCommandShowPageExternalCommandHidePage

注册

在不打开任何文档的时候,才可以调用 ExternalCommandRegisterPage 里注册,这个例子是这么做的,但是你开发的时候不一定需要这样。
Revit SDK 介绍:DockableDialogs_第1张图片
这里的设置在 DockablePaneProviderData.InitialState

        public void SetupDockablePane(Autodesk.Revit.UI.DockablePaneProviderData data)
        {
     
            data.FrameworkElement = this as FrameworkElement;
            DockablePaneProviderData d = new DockablePaneProviderData();


            data.InitialState = new Autodesk.Revit.UI.DockablePaneState(); 
            data.InitialState.DockPosition = m_position;
           DockablePaneId targetPane;
           if (m_targetGuid == Guid.Empty)
              targetPane = null;
           else targetPane = new DockablePaneId(m_targetGuid);
            if (m_position == DockPosition.Tabbed)
               data.InitialState.TabBehind = targetPane;

 
           if (m_position == DockPosition.Floating)
            {
     
               data.InitialState.SetFloatingRectangle(new Autodesk.Revit.DB.Rectangle(m_left, m_top, m_right, m_bottom));
            }

           Log.Message("***Intial docking parameters***");
           Log.Message(APIUtility.GetDockStateSummary(data.InitialState));

        }

显示隐藏

Revit SDK 介绍:DockableDialogs_第2张图片

       public void SetWindowVisibility(Autodesk.Revit.UI.UIApplication application, bool state) 
       {
     
          DockablePane pane = application.GetDockablePane(Globals.sm_UserDockablePaneId);
          if (pane != null)
          {
     
             if (state)
                pane.Show();
             else
                pane.Hide();
          }
       }

你可能感兴趣的:(Revit,SDK,介绍)