确定元素是否在从属视图(Revit API)中

问题描述 投票:0回答:1

我正在尝试使用C#为Revit 2020和2018编写宏。到目前为止,我已经编写了一个程序,该程序接受选定的元素并在特定视图内对其进行过滤。但是,使用从属视图时会出现问题,因为在选择视图中的所有元素时,它还会选择其他从属视图中的所有内容。我不希望这种情况发生。我想找到一种过滤仅在一个特定从属视图内的元素的方法。

我尝试让用户从所有可用的视图中进行选择,但仍将从属视图视为更大的超级视图。

最简单的解决方法是,如果有一种方法可以检查特定视图的成员资格。但是,我还没有弄清楚该怎么做。有什么建议吗?

c# revit-api revit
1个回答
0
投票

摘自塔吉·盖茨对check if the parameter exist - check if the view is dependent or callout的答复:

您可以使用视图元素中的GetPrimaryViewId检查视图是否为从属视图。

如果结果为-1,则它不是从属视图。

如果是其他整数,则是从属。

这里是一个例子:

  var views = new FilteredElementCollector(doc)
    .OfClass(typeof(View));

  foreach (View view in views)
  {
    ElementId parentId = view.GetPrimaryViewId();

    if (parentId.IntegerValue == -1 && !view.IsTemplate)
    {
      // View is NOT a dependent
    }
    else if (parentId.IntegerValue != -1 && !view.IsTemplate)
    {
      // View is dependent
    }
  }

请注意,-1是ElementId.InvalidElementId的简写。

© www.soinside.com 2019 - 2024. All rights reserved.