Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定图元是否在从属视图(Revit API)中_C#_Revit Api_Revit - Fatal编程技术网

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

C# 确定图元是否在从属视图(Revit API)中,c#,revit-api,revit,C#,Revit Api,Revit,我正在尝试用C语言编写Revit 2020和2018的宏。到目前为止,我已经编写了一个程序,该程序将获取选定图元,并在它们位于特定视图中时对其进行过滤。但是,使用从属视图时会出现问题,因为在选择视图中的所有图元时,它也会选择其他从属视图中的所有图元。我不想发生这种事。我想找到一种方法来过滤只在一个特定依赖视图中的元素 我尝试让用户从所有可用视图中进行选择,但它仍然将从属视图视为较大的superview 解决此问题的最简单方法是,如果有一种方法可以检查特定视图的成员资格。然而,我还没有弄明白怎么做

我正在尝试用C语言编写Revit 2020和2018的宏。到目前为止,我已经编写了一个程序,该程序将获取选定图元,并在它们位于特定视图中时对其进行过滤。但是,使用从属视图时会出现问题,因为在选择视图中的所有图元时,它也会选择其他从属视图中的所有图元。我不想发生这种事。我想找到一种方法来过滤只在一个特定依赖视图中的元素

我尝试让用户从所有可用视图中进行选择,但它仍然将从属视图视为较大的superview


解决此问题的最简单方法是,如果有一种方法可以检查特定视图的成员资格。然而,我还没有弄明白怎么做。有什么建议吗?

从托盘门的答案复制到:

可以使用视图元素中的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的简写


后来:我看到您在上的Revit API论坛线程中提出了相同的问题,在那里收到了其他答案,并发现您的需求实际上是不同的,而且更复杂

我仍然会接受你的回答,尽管我的需求与这个问题中所表达的不同,因为这对你和其他可能正在看这个问题的人是不公平的。