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即可看到可停靠窗口。

 

转载于:https://www.cnblogs.com/huangkailang/p/5792960.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值