/// <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)); }
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); }
/// <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); }