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

时间:2015-03-03 10:18:22

标签: c# revit-api

我在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可以做到这一点还是别的什么?

提前致谢。

2 个答案:

答案 0 :(得分:3)

文森特的做法很好。我更喜欢的一件事是在TaskDialog中使用CommandLink选项。这为您提供了很大的选择"选择的按钮,提供答案以及可选的"解释"关于每个答案。

代码如下:

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;
 }

答案 1 :(得分:2)

这应该可以解决问题:

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宏中运行,因此也应该在加载项的其他任何位置正常工作。