revit API 實現可停靠窗口


---恢復內容開始---

1.新建類庫項目,項目中新建WPF用戶控件(UserControl)得到名為UserControl1的實例。

revit中可停靠窗口的父類為page類,同時也繼承了IDockablePaneProvider接口。

所以需要將相關地方改為圖中所示內容。

 2.接下來需要在隱藏代碼中實現接口中的SetupDockablePane()函數以初始化窗口狀態。

1 public void SetupDockablePane(DockablePaneProviderData Data)
2         {
3             Data.FrameworkElement = this as FrameworkElement;
4 
5             Data.InitialState = new DockablePaneState();
6             Data.InitialState.DockPosition = DockPosition.Bottom;
7         
8         }

這樣就完成了我們的UserControl1。

而且我們的窗口將出現在底部。

 3.接下來在revit中注冊一個可停靠窗口(順帶添加一個命令按鈕)

 1 static string path = typeof(Panel).Assembly.Location;
 2         
 3         public Result OnStartup(UIControlledApplication application)
 4         {
 5             RibbonPanel ribbonPanel = application.CreateRibbonPanel("窗口");
 6 
 7             PushButton pushButton = ribbonPanel.AddItem(new PushButtonData
 8                 ( "DockPanel1","可停靠",path,"DockPanel.Test")) as PushButton;
 9 
10             string pageGuid = "2ab776b4-b3fc-4810-8f44-ab5f1c9f5fa8";
11             Guid guid = new Guid(pageGuid);
12             DockablePaneId id = new DockablePaneId(guid);
13             UserControl1 panel1 = new UserControl1();
14             application.RegisterDockablePane(id,"DockPanelTest",panel1 as IDockablePaneProvider);
15 
16             return Result.Succeeded;
17         }

核心方法是

1 public void RegisterDockablePane(
2     DockablePaneId id,
3     string title,
4     IDockablePaneProvider provider
5 )

panel1 為之前寫好的UserControl1 的一個實例,UserControl1繼承了IDockablePaneProvider接口。 

4.最后是按鈕命令代碼

 1  [Transaction(TransactionMode.Manual)]
 2     [Regeneration(RegenerationOption.Manual)]
 3     [Journaling(JournalingMode.NoCommandData)]
 4     public class Test : IExternalCommand
 5     {
 6         
 7         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet element)
 8         {
 9             string pageGuid = "2ab776b4-b3fc-4810-8f44-ab5f1c9f5fa8";
10             Guid guid = new Guid(pageGuid);
11             DockablePaneId id = new DockablePaneId(guid);
12 
13             DockablePane panel = commandData.Application.GetDockablePane(id);
14             panel.Show();
15 
16             return Result.Succeeded;
17         }
18     }

5.生成成功后編寫addin文件再打開revit即可看到可停靠窗口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM