Revit二次开发入门:第八章交互及UIAPI

本章内容

1.Selection交互API

2.TaskDialog任务对话框

在RevIt中,任务对话框是具有Revit风格的Windows对话框的替代品,是一种典型的模态对话框。

  1. 创建展示任务对话框的两种方法:

    • 创建并单独设任务对话框,使用Show()方法显示给用户
    • 运用静态Show方法直接创建并展示给用户(仅有一个子集的选项可被设定)
  2. 任务对话框可以被用于:

    • 给用户提供信息
    • 询问用户,并得到反馈
    • 允许用户选择,并执行相应的命令
  3. 任务对话框的控件:

    • Title-标题

    • Main Instruction-主标题

    • Main Content-主要内容

    • Expanded Content-扩展内容

    • Command Links-命令链接

    • Common Button-普通按钮

    • Default button or link-默认按钮或链接

    • DNSM CheckBox-不再提示复选框

    • Footer Text文字信息

      方法 描述
      Show() 显示任务对话框
      show(string,string) 显示一个包含标题、主要说明和关闭按钮的任务对话框
      Show(string,string,TaskDialogCommonButtons) 显示一个包含标题、主要说明和普通按钮的对话框
      Show(string,string,TaskDialogCommonButtons,TaskDialogResult) 显示一个包含标题、主要说明、普通按钮和默认按钮的任务对话框
    Taskdialog.Show("title","Instruction");
    

    TaskDialogResult result = TaskDialog.Show("title", "Instruction", 	TaskDialogCommonButtons.Ok| TaskDialogCommonButtons.No,
    TaskDialogResult.No);
    

    using Autodesk.Revit.ApplicationServices;
    using Autodesk.Revit.Attributes;
    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;
       
    namespace Dialog {
        [TransactionAttribute(TransactionMode.Manual)]
        [RegenerationAttribute(RegenerationOption.Manual)]
        public class DialogTest : IExternalCommand {
            public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) {
                UIDocument uiDoc = commandData.Application.ActiveUIDocument;
                Document doc = uiDoc.Document;
                Application app = doc.Application;
                TaskDialog td = new TaskDialog("Title") {
                    MainInstruction = "Instrution"
                };
                td.AddCommandLink(TaskDialogCommandLinkId.CommandLink1, "Line1 content", "Support content1");
                td.AddCommandLink(TaskDialogCommandLinkId.CommandLink2, "查看产品信息");
                td.CommonButtons = TaskDialogCommonButtons.Close | TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No;
                td.DefaultButton = TaskDialogResult.Close;
                td.ExpandedContent = "Expanded";
                td.FooterText = "<a href=\"https://www.5616760.com\">" + "关于我们</a>";
                td.MainIcon = TaskDialogIcon.TaskDialogIconWarning;
                td.TitleAutoPrefix = false;
                td.VerificationText = "不再提醒";
                TaskDialogResult result = td.Show();
                bool ischecked = td.WasVerificationChecked();
                if (result == TaskDialogResult.CommandLink1) {
                    TaskDialog dialog1 = new TaskDialog("版本信息") {
                        MainInstruction = "版本名:" + app.VersionName + "\n版本号:" + app.VersionNumber
                    };
                    dialog1.Show();
                }
                else if (result == TaskDialogResult.CommandLink2) {
                    TaskDialog.Show("信息", "sdafasdf asfdsadf sdaf g gsadf sdaf");
                }
                return Result.Succeeded;
            }
        }
    }
    

3.Ribbon菜单

  1. RibbonTab-选项卡页:用户可以创建一个新的选项卡页,用来管理自己的面板RibbonPanel
  2. RibbonPanel-面板:其他空间的容器
  3. PushButton-命令按钮:对应一个ExternalCommand,单击这个按钮,对应的ExternalCommand将被执行
  4. PulldownButton-下拉按钮:带有下拉列表的按钮控件,表中的每个元素都是一个命令按钮,在下拉列表的元素键可以加水平分割线
  5. SplitButton-下拉记忆按钮:是下拉按钮的派生类控件,分为上下两部分,上部分功能类似命令按钮,下部分按钮类似下拉按钮
  6. ComboBox-下拉组合框:是有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表,此控件不支持多项选择

能正常显示了,虽然还不够完美。