【问题标题】:Determining If Element is In Dependent View (Revit API)确定元素是否在从属视图中 (Revit API)
【发布时间】:2020-04-26 17:37:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# revit-api revit


    【解决方案1】:

    复制自 Tray Gates 对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 的简写。

    后来:我看到您在 Determining If Element is in Dependent View 的 Revit API 论坛帖子中提出了同样的问题,在那里收到了其他答案,发现您的需求实际上是不同的并且更复杂......

    【讨论】:

    • 即使我的需求与此问题中表达的不同,我仍将接受您的回答,因为这对您和其他可能正在查看此问题的人不公平。跨度>
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 2020-02-26
    • 2019-03-29
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多