我正在尝试创建一个类似于Revit“过滤器”的“智能过滤器”,但是以其他方式对元素进行分组(例如家庭类型,工作集或级别,甚至“标记”)。很容易创建隔离这些参数的集合,但我似乎无法退出我的程序,并修改了document.selection以仅包含我已经“检查”的元素。
我的程序能够操作剩余的“已检查”元素,例如“隐藏视图”或“半色调”或“删除” - 但是对结果选择执行的可能操作列表太长将它们全部包含在我的Dialog表单中 - 我想要一个选项,只需选择一个单选按钮,显示“Set Selection”,并让程序退出选择中的THOSE元素。
我试过了:
doc.Selection.Elements.Add(Element *****);
doc.Selection.Elements.Remove(Element *****);
这些返回错误“不是对象的实例”。
完成Revit的“过滤器”后,结果是修改后的选择。有没有办法在C#加载项中做同样的事情?
答案 0 :(得分:1)
您必须在UI文档中执行此操作。
SelElementSet selElements = uidoc.Selection.Elements;
selElements.Add(element);
此代码适用于我。
答案 1 :(得分:0)
我认为可能是Revit在引用元素时没有直接查看对象 - 您是否尝试过使用elementID?或者element.UniqueID?