C# 确定图元是否在从属视图(Revit API)中
我正在尝试用C语言编写Revit 2020和2018的宏。到目前为止,我已经编写了一个程序,该程序将获取选定图元,并在它们位于特定视图中时对其进行过滤。但是,使用从属视图时会出现问题,因为在选择视图中的所有图元时,它也会选择其他从属视图中的所有图元。我不想发生这种事。我想找到一种方法来过滤只在一个特定依赖视图中的元素 我尝试让用户从所有可用视图中进行选择,但它仍然将从属视图视为较大的superviewC# 确定图元是否在从属视图(Revit API)中,c#,revit-api,revit,C#,Revit Api,Revit,我正在尝试用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论坛线程中提出了相同的问题,在那里收到了其他答案,并发现您的需求实际上是不同的,而且更复杂 我仍然会接受你的回答,尽管我的需求与这个问题中所表达的不同,因为这对你和其他可能正在看这个问题的人是不公平的。