Revit SDK 介绍:DockableDialogs

DockableDialogs

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

例子入口

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

       /// <summary>
       /// Add UI for registering, showing, and hiding dockable panes.
       /// </summary>
       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 里注册,这个例子是这么做的,但是你开发的时候不一定需要这样。
在这里插入图片描述
这里的设置在 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));

        }

显示隐藏

在这里插入图片描述

       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();
          }
       }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BIM工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值