失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > revit API 实现可停靠窗口

revit API 实现可停靠窗口

时间:2021-04-09 08:41:08

相关推荐

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; 23 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(2DockablePaneId id,3string title,4IDockablePaneProvider provider5 )

panel1 为之前写好的UserControl1 的一个实例,UserControl1继承了IDockablePaneProvider接口。

4.最后是按钮命令代码

1 [Transaction(TransactionMode.Manual)] 2[Regeneration(RegenerationOption.Manual)] 3[Journaling(JournalingMode.NoCommandData)] 4public class Test : IExternalCommand 5{ 67 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即可看到可停靠窗口。

如果觉得《revit API 实现可停靠窗口》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。