revit 二次开发 可停靠窗体winform控件

本文介绍了如何在Revit的二次开发过程中创建一个可停靠的窗体,并在WPF窗体内部集成WinForm控件。通过类中代码、wpf窗体代码以及WindowsFormSet的相关设置,详细阐述了这一技术实现的步骤。
摘要由CSDN通过智能技术生成

创建一个可停靠窗体,同时wpf上承载的是winform控件

1.类中代码


        [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
        [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
        [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
        public class RevitdingeForm : IExternalCommand
        {
            Document m_doc;
            public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
            {
                UIApplication uiApp = commandData.Application;
                Autodesk.Revit.ApplicationServices.Application app = uiApp.Application;
                m_doc = uiApp.ActiveUIDocument.Document;

                string m_mainPageGuid = "fa52df6a-8afe-4e71-8701-a1a0cd544ff9";

                Guid retval = Guid.Empty;
                try
                {
                    retval = new Guid(m_mainPageGuid);
                }
                catch (Exception)
                {
                }

                DockablePaneId sm_UserDockablePaneId = new DockablePaneId(retval);

                //sm_UserDockablePaneId = new DockablePaneId(retval);
                DockablePane pane = uiApp.GetDockablePane(sm_UserDockablePaneId);
                pane.Show();
                //DockablePaneId sm_UserDockablePaneId = new DockablePaneId(retval);

                //sm_UserDockablePaneId = new DockablePaneId(retval);
                //DockablePane pane = uiApp.GetDockablePane(sm_UserDockablePaneId);
                //pane.Show();
                return Result.Succeeded;
            }

            [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
            [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
            [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
            public class DockForm : IExternalApplication
            {
                static string AddInPath = typeof(DockForm).Assembly.Location;

                public Result OnShutdown(UIControlledApplication application)
                {
                    return Result.Succeeded;
                }

                public Result OnStartup(UIControlledApplication application)
                {
                    try
                    {
                        string TabName = "工程定额对话框";
                        application.CreateRibbonTab(TabName);

                        string ArchitecturePanelName = "工程定额";
                        RibbonPanel ArchitecturePanel = application.CreateRibbonPanel(TabName, ArchitecturePanelName);

                        PulldownButton SetCarporNum = ArchitecturePanel.AddItem(new PushButtonData("工程定额", "工程定额", AddInPath, "RevitDockForm.RevitdingeForm")) as PulldownButton;
                        //SetCarporNum.ToolTip = "projectDinge";

                        string m_mainPageGuid = "fa52df6a-8afe-4e71-8701-a1a0cd544ff9";
                        UserControl1 m_mainPage = new UserControl1();

                        Guid retval = Guid.Empty;
                        retval = new Guid(m_mainPageGuid);
                        DockablePaneId sm_UserDockablePanId = new DockablePaneId(retval);

                        application.RegisterDockablePane(sm_UserDockablePanId, "RevitDockForm", m_mainPage as IDockablePaneProvider);

                        return Result.Succeeded;
                    }
                    catch (Exception ex)
                    {
                        TaskDialog.Show("错误", ex.ToString());
                        return Result.Failed;
                    }
                }
            }
        }
  

2.wpf窗体代码

<
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Revit二次开发中创建一个可重用的窗体并在点击按钮时显示它,可以按照以下步骤进行操作: 1. 在Visual Studio中创建一个新的Windows Forms应用程序项目。 2. 设计你想要的窗体。你可以添加文本框、标签、按钮等控件,并设置它们的属性。 3. 在窗体类中添加一个公共方法来显示窗体。例如: ``` public void ShowForm() { this.ShowDialog(); } ``` 4. 在Revit中创建一个新的Ribbon面板和按钮。你可以使用Revit API提供的方法来实现这一点。例如: ``` public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // 创建Ribbon面板 RibbonPanel ribbonPanel = commandData.Application.CreateRibbonPanel("My Panel"); // 创建按钮 PushButton button = ribbonPanel.AddItem(new PushButtonData("My Button", "My Button", Assembly.GetExecutingAssembly().Location, "MyNamespace.MyCommand")) as PushButton; // 指定按钮的大图标和小图标 button.LargeImage = new BitmapImage(new Uri("pack://application:,,,/MyNamespace;component/Resources/large_icon.png")); button.Image = new BitmapImage(new Uri("pack://application:,,,/MyNamespace;component/Resources/small_icon.png")); // 添加按钮的点击事件 button.Click += new RoutedEventHandler(OnButtonClick); return Result.Succeeded; } ``` 5. 在按钮的点击事件处理程序中创建并显示窗体。例如: ``` private void OnButtonClick(object sender, RoutedEventArgs e) { MyForm form = new MyForm(); form.ShowForm(); } ``` 这样,当你点击Revit中的按钮时,就会显示你的可重用窗体

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值