【问题标题】:How to find number of Reference Planes passing through a selected wall.如何找到穿过选定墙壁的参考平面的数量。
【发布时间】:2016-10-21 06:04:27
【问题描述】:

我需要找出穿过选定墙壁的参考平面的数量及其名称。我可以获取特定文档的所有参考平面,但我该如何为特定墙执行此操作。

您的帮助将不胜感激! 谢谢。

【问题讨论】:

    标签: revit-api revit


    【解决方案1】:

    如果ElementIntersectFilter 不能满足您的需求,您必须提取墙壁和参考平面的几何图形并直接使用它们。

    将参考平面与墙体相交可以工作,但如果我正确理解您的问题,可以使用更简单的答案。我假设您只想要参考平面的绿线相交的墙壁,而不是将参考平面对象视为无限几何平面。在下面的屏幕截图中,我假设您想要找到复选标记,而不是红色的 X。 我还假设您将其视为计划练习,而不是专门设置参考平面的垂直范围(这只是基于我看到大多数人使用 Revit 的方式)。以下函数将单面墙和参考平面列表(您提到您已经拥有所有参考平面的集合)作为输入,并将返回与墙壁相交的参考平面列表。

    public static List<ReferencePlane> getRefPlanesIntersectingWall( Wall wal, List<ReferencePlane> refPlanesIn)
        {
            //simplify this to a 2D problem, using the location curve of the wall
    
            List<ReferencePlane> refPlanesOut = new List<ReferencePlane>();
            LocationCurve wallLocation = wal.Location as LocationCurve;
            Curve wallCurve = wallLocation.Curve;
            Double wallZ = wallLocation.Curve.GetEndPoint(0).Z;
    
            foreach (ReferencePlane rp in refPlanesIn)
            {
                XYZ startPt = new XYZ(rp.BubbleEnd.X, rp.BubbleEnd.Y, wallZ);
                XYZ endPt = new XYZ(rp.FreeEnd.X, rp.FreeEnd.Y, wallZ);
                Line rpLine = Line.CreateBound(startPt, endPt);
                SetComparisonResult test = wallCurve.Intersect(rpLine);
    
                if (test == SetComparisonResult.Overlap || 
                    test == SetComparisonResult.Subset ||
                    test == SetComparisonResult.Superset ||
                    test == SetComparisonResult.Equal  )
                {
                    refPlanesOut.Add(rp);
                }
            }
            return refPlanesOut;
        }
    

    【讨论】:

      【解决方案2】:

      我会先尝试内置的ElementIntersectFilter。该文档有一个很好的示例,将“FamilyInstance”替换为“referencePlane”就可以了。

      http://www.revitapidocs.com/2017/19276b94-fa39-64bb-bfb8-c16967c83485.htm

      如果这不起作用,您需要提取墙的实体并与参考平面相交。

      【讨论】:

      • 以上对我不起作用。我尝试提取墙壁的实体并尝试与参考平面相交。这里也没有运气。
      猜你喜欢
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多