【问题标题】:How do I convert a Collection of Elements into the "Current Selection" in Revit?如何将元素集合转换为 Revit 中的“当前选择”?
【发布时间】:2017-05-10 06:43:08
【问题描述】:

我正在尝试创建一个与 Revit“过滤器”类似的“智能过滤器”,但以其他方式(例如族类型、工作集、级别,甚至“标记”)对元素进行分组。创建隔离这些参数的集合很简单,但我似乎无法退出我的程序,将 document.selection 修改为仅包含我留下“选中”的元素。

我的程序能够操作剩余的“选中”元素,例如“隐藏在视图中”、“半色调”或“删除”——但对结果选择可能执行的操作列表太长将它们全部包含在我的对话框表单中——我想要一个选项来简单地选择一个显示“设置选择”的单选按钮,并让程序退出选择中的 THOSE 元素。

我试过了:

doc.Selection.Elements.Add(Element *****);
doc.Selection.Elements.Remove(Element *****);

这些返回错误“不在对象的实例中”。

当您完成 Revit 的“过滤器”时,结果是修改后的选择。有没有办法在 C# 插件中做同样的事情?

【问题讨论】:

  • Revit 的哪个版本?

标签: c# revit-api


【解决方案1】:

您必须在 UI 文档中执行此操作。

SelElementSet selElements = uidoc.Selection.Elements;
selElements.Add(element);

此代码对我有用。

【讨论】:

  • 谢谢....真正的关键是 SelElementSet .....我曾尝试将元素移植到一个选择中,但变量类型比我意识到的要多。我最初的问题中的 doc.Selection.Elements 实际上与您的示例中的相同。在使用 SelElementSet(并确保它清晰)之后,我能够在最终选择和 .Add(Element) 中循环遍历我想要的所有元素。
  • 这是正确的答案。 UIDocument 支持设置选择。如何获取元素以输入该选择集完全取决于您。要按参数值过滤,请查看FilteredElementCollectors 及其支持的所有过滤器。另外,如果你喜欢,请接受一个答案。
【解决方案2】:

我认为当您引用元素时,Revit 可能没有直接查看对象 - 您是否尝试过使用 elementID 代替?还是 element.UniqueID?

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 2018-02-21
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多