Пример #1
0
        /// <summary>Проверка что текущая стена имеет на конце соединение с проверяемой стеной</summary>
        /// <param name="wall">Current wall</param>
        /// <param name="checkedWall">Checked wall</param>
        public static bool IsAdjoinToByLocationCurveEnds(this AdvancedWall wall, AdvancedWall checkedWall)
        {
            var joinIds = new List <int>();
            var elementsAtJoinAtStart = ((LocationCurve)wall.Wall.Location).get_ElementsAtJoin(0);
            var elementsAtJoinAtEnd   = ((LocationCurve)wall.Wall.Location).get_ElementsAtJoin(1);

            if (!elementsAtJoinAtEnd.IsEmpty)
            {
                foreach (Element e in elementsAtJoinAtEnd)
                {
                    if (e is Wall && !wall.Wall.Id.IntegerValue.Equals(e.Id.IntegerValue))
                    {
                        joinIds.Add(e.Id.IntegerValue);
                    }
                }
            }

            if (!elementsAtJoinAtStart.IsEmpty)
            {
                foreach (Element e in elementsAtJoinAtStart)
                {
                    if (e is Wall && !wall.Wall.Id.IntegerValue.Equals(e.Id.IntegerValue))
                    {
                        joinIds.Add(e.Id.IntegerValue);
                    }
                }
            }

            return(joinIds.Contains(checkedWall.Wall.Id.IntegerValue));
        }
Пример #2
0
        private static List <XYZ> GetPointsFromGeometry(this AdvancedWall advancedWall, View view)
        {
            var points = new List <XYZ>();

            foreach (var geometryObject in advancedWall.Wall.get_Geometry(new Options()
            {
                ComputeReferences = false,
                IncludeNonVisibleObjects = false,
                View = view
            }))
            {
                if (geometryObject is Solid solid)
                {
                    foreach (Edge edge in solid.Edges)
                    {
                        foreach (var xyz in edge.Tessellate())
                        {
                            if (!points.Contains(xyz))
                            {
                                points.Add(xyz);
                            }
                        }
                    }
                }
            }

            return(points);
        }
Пример #3
0
        /// <summary>Проверка наличия стены в списке по ID</summary>
        public static bool HasWallInListById(IEnumerable <AdvancedWall> walls, AdvancedWall advancedWall)
        {
            foreach (var wall in walls)
            {
                if (wall.Wall.Id.IntegerValue.Equals(advancedWall.Wall.Id.IntegerValue))
                {
                    return(true);
                }
            }

            return(false);
        }