【问题标题】:How to select multiple elements in a Revit drawing如何在 Revit 工程图中选择多个元素
【发布时间】:2017-04-23 01:58:36
【问题描述】:
  • 我正在尝试在 Revit(适用于 2016/2017)中创建“多选”方法,用户可以在其中选择图纸中包含的实例的特定参数(如 公称直径管道类型等),它将根据它们的选择选择图形中的所有实例。一、截图:

让我们以这个窗口是根据绘图内容动态创建的事实来判断这一点。除非绘图中的元素包含/满足这些参数中的一个或多个,否则不会在此窗口中放置任何内容。

因此,理想情况下,当我单击DO IT! 按钮时,我希望它选择绘图中满足任何这些参数的所有元素。我可以通过这个窗口过滤并找到我的所有选择 - 现在我只是不知道如何处理这些选择。

我查看了 Revit.chm 和源代码,发现了 Selection 命名空间和类。有如下功能:

PickObject(ObjectType objectType);

这似乎是我想要的,但我不知道这是否真的是我需要的。此外,如果那是,事实上,我正在寻找什么,我不知道如何使用它的语法。

一点代码:

我有一个收集所有用户选择的方法:

private List<CheckBox> GetUserFilterPrefs()
{
    //CYCLES THROUGH ALL THE PANELS AND BOXES IN THE WINDOW

    return lstCheckBox;
}

现在我想为btnDoIt_Click 创建我的EventHandler... 我开始了它,但在这部分我在黑暗中行走。

private void btnDoIt_Click(object sender, RoutedEventArgs e)
{
    int itr = 0;

    GetUserFilterPrefs();
    List<Reference> lstRefs = new List<Reference>();

    foreach (CheckBox cb in lstCheckBox)
    {
        if (lstElts[itr].Name == cb.Name)
        {
             //HOW DO I SELECT ALL ITEMS LIKE THE GIVEN ELEMENT
             //THAT ARE RELATED TO THE CHECKBOX SELECTION??
        }

         itr +=1;
    } 

我显然会继续环顾四周;但是,如果有人知道方法,或者可以为我指出正确的方向,那将非常有帮助!

谢谢!!!

【问题讨论】:

    标签: c# revit-api revit


    【解决方案1】:

    您发现的 PickObject 函数要求用户在模型中选择一个对象。根据您的描述,这不是您要查找的内容。

    你需要的功能是:

    SetElementIds(ICollection<ElementId> elementIds)
    

    它也是 Selection 类的一部分。这将突出显示模型中的所需元素。要清除模型中的选择,请将空列表作为参数传递。传递 null 会导致抛出异常。

    要专注于元素,你需要函数:

    UIDocument.ShowElements
    

    这个函数有很多重载。请注意,如果元素位于当前打开的视图中,则没有,Revit 将尝试为您找到最佳视图,如果模型中有许多视图,它通常会执行很差的任务。

    【讨论】:

    • 谢谢。我现在在 Selection 班级,我没有看到您提到的 SetSelectionElements 方法。会不会是别的地方?
    • 很奇怪...它显示了Revit2016.chm中的方法,但它不在类中...
    • 你很接近...实际上是`Selection::SetElementIds(ICollection elementIds) 足够接近了。谢谢!!!
    【解决方案2】:

    PickElement 提示用户进行交互式元素选择,这不是您所追求的。

    以编程方式访问 Revit 数据库中的元素的唯一方法是使用过滤元素收集器:

    http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.9

    【讨论】:

    • FilteredElementCollector 是我用来查找绘图中的元素的。但是,它不会 select 绘图中的元素,这正是我所需要的。至少,如果是这样,我不知道。
    猜你喜欢
    • 2022-11-18
    • 2016-08-16
    • 1970-01-01
    • 2023-03-11
    • 2018-08-02
    • 2019-11-12
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多