首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Revit绘图中选择多个元素

如何在Revit绘图中选择多个元素
EN

Stack Overflow用户
提问于 2016-12-07 23:13:43
回答 2查看 1.4K关注 0票数 1
  • 我试图在Revit中创建一个“多选择”方法( 2016/2017),用户可以选择包含在绘图中的实例的特定参数(如标称直径管道类型等),它将根据他们的选择选择绘图中的所有实例。首先,屏幕截图:

让我们根据绘图的内容动态创建此窗口,并对其进行谓词。除非绘图中有一个元素包含/满足这些参数中的一个或多个参数,否则不会在此窗口中放置任何内容。

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

我查看了Revit.chm和源代码,并找到了Selection命名空间和类。它的职能如下:

代码语言:javascript
复制
PickObject(ObjectType objectType);

这似乎是我想要的,但我不知道这是否真的是我所需要的。而且,如果这是我要寻找的,我不知道如何使用它的语法。

一个小小的代码:

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

代码语言:javascript
复制
private List<CheckBox> GetUserFilterPrefs()
{
    //CYCLES THROUGH ALL THE PANELS AND BOXES IN THE WINDOW

    return lstCheckBox;
}

现在我想为我的EventHandler btnDoIt_Click..。是我先开始的,但在这件事上我在黑暗中行走。

代码语言:javascript
复制
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;
    } 

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-08 01:54:48

您找到的PickObject函数要求用户在模型中选择一个对象。根据你的描述,这不是你想要的。

您需要的功能是:

代码语言:javascript
复制
SetElementIds(ICollection<ElementId> elementIds)

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

要将重点放在元素上,需要以下函数:

代码语言:javascript
复制
UIDocument.ShowElements

此函数有许多重载。请注意,如果元素位于当前打开的视图中,Revit将尝试为您找到最佳视图,如果模型中有许多视图,则该任务通常执行得非常糟糕。

票数 1
EN

Stack Overflow用户

发布于 2016-12-08 06:49:56

PickElement提示用户进行交互式元素选择,这不是您想要的结果。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41029080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档