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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个可停靠窗体,同时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;
             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值