在 C# 中使用 Revit API 提示用户回答布尔选择

Prompt user to answer boolean choice using Revit API in C#

我用 C# 创建了一个 Revit 插件,允许完全不熟悉 3D 技术的用户选择一个族,并将其插入到他们的项目中。但是现在,用户无法选择将对象放置在任何地方的点上或面上。它是一个或另一个。 现在我的代码看起来像这样:

bool useSimpleInsertionPoint = false; //or true
bool useFaceReference = true; //or false
if (useSimpleInsertionPoint)
{
//my code for insertion on point here
}
if (useFaceReference)
{
//my code for face insertion here
}

我想做的是问用户他想做什么。 TaskDialog.Show 会起作用还是其他什么?

提前致谢。

这应该可以解决问题:

TaskDialog dialog = new TaskDialog("Decision");
dialog.MainContent = "What do you want to do?";
dialog.AllowCancellation = true;
dialog.CommonButtons = TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No;

TaskDialogResult result = dialog.Show();
if(result == TaskDialogResult.Yes){
    // Yes
    TaskDialog.Show("yes", "YES!!");
}
else
{
    // No
    TaskDialog.Show("no", "NO!!");
}

代码在 2014 年经过测试并证明可以在 Revit 宏中工作,因此在加载项中的其他任何地方也应该可以正常工作。

文森特的方法很好。我更喜欢的一件事是将 CommandLink 选项与 TaskDialog 一起使用。这为您提供了可供选择的 "big option" 按钮,提供了答案以及关于每个答案的可选行 "explanation"。

代码如下:

TaskDialog td = new TaskDialog("Decision");
td.MainContent = "What do you want to do?";
td.AddCommandLink(TaskDialogCommandLinkId.CommandLink1,
                   "Use Simple Insertion Point",
                   "This option works for free-floating items");
td.AddCommandLink(TaskDialogCommandLinkId.CommandLink2,
                    "Use Face Reference",
                    "Use this option to place the family on a wall or other surface");

switch (td.Show())
 {
     case TaskDialogResult.CommandLink1:
        // do the simple stuff
        break;

     case TaskDialogResult.CommandLink2:
       // do the face reference
        break;

     default:
       // handle any other case.
        break;
 }