【发布时间】: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;
}
我显然会继续环顾四周;但是,如果有人知道方法,或者可以为我指出正确的方向,那将非常有帮助!
谢谢!!!
【问题讨论】: