Ejemplo n.º 1
0
        public void ConvertEnds()
        {
            // Преобразование торцов фасада
            List <ConvertEndsFacade> convertsEnds = new List <ConvertEndsFacade>();
            DoubleEqualityComparer   comparer     = new DoubleEqualityComparer(500);
            // Все вхождения блоков панелей с торцами слева
            var panelsWithLeftEndsByX = PanelsBtrExport.SelectMany(pBtr => pBtr.Panels).
                                        Where(pBlRef => pBlRef.PanelBtrExport.IdsEndsLeftEntity.Count > 0).
                                        GroupBy(pBlRef => pBlRef.Position.X, comparer);

            foreach (var itemLefEndsByY in panelsWithLeftEndsByX)
            {
                try
                {
                    ConvertEndsFacade convertEndsFacade = new ConvertEndsFacade(itemLefEndsByY, true, this);
                    convertEndsFacade.Convert();
                    convertsEnds.Add(convertEndsFacade);
                }
                catch (Exception ex)
                {
                    Inspector.AddError($"Ошибка преобразования торцов панелей с координатой X точки вставки = {itemLefEndsByY.Key}. {ex}");
                }
            }

            // Все вхождения блоков панелей с торцами справа
            var panelsWithRightEndsByX = PanelsBtrExport.SelectMany(pBtr => pBtr.Panels).
                                         Where(pBlRef => pBlRef.PanelBtrExport.IdsEndsRightEntity.Count > 0).
                                         GroupBy(pBlRef => pBlRef.Position.X, comparer);

            foreach (var itemRightEndsByY in panelsWithRightEndsByX)
            {
                try
                {
                    ConvertEndsFacade convertEndsFacade = new ConvertEndsFacade(itemRightEndsByY, false, this);
                    convertEndsFacade.Convert();
                    convertsEnds.Add(convertEndsFacade);
                }
                catch (Exception ex)
                {
                    Inspector.AddError($"Ошибка преобразования торцов панелей с координатой X точки вставки = {itemRightEndsByY.Key}. {ex}");
                }
            }

            // удаление торцов
            convertsEnds.ForEach(c => c.DeleteEnds());
        }
        public void ConvertEnds()
        {
            // Преобразование торцов фасада
            List<ConvertEndsFacade> convertsEnds = new List<ConvertEndsFacade>();
            DoubleEqualityComparer comparer = new DoubleEqualityComparer(500);
            // Все вхождения блоков панелей с торцами слева
            var panelsWithLeftEndsByX = PanelsBtrExport.SelectMany(pBtr => pBtr.Panels).
                        Where(pBlRef => pBlRef.PanelBtrExport.IdsEndsLeftEntity.Count > 0).
                        GroupBy(pBlRef => pBlRef.Position.X, comparer);
            foreach (var itemLefEndsByY in panelsWithLeftEndsByX)
            {
                try
                {
                    ConvertEndsFacade convertEndsFacade = new ConvertEndsFacade(itemLefEndsByY, true, this);
                    convertEndsFacade.Convert();
                    convertsEnds.Add(convertEndsFacade);
                }
                catch (Exception ex)
                {
                    Inspector.AddError($"Ошибка преобразования торцов панелей с координатой X точки вставки = {itemLefEndsByY.Key}. {ex}");
                }
            }

            // Все вхождения блоков панелей с торцами справа
            var panelsWithRightEndsByX = PanelsBtrExport.SelectMany(pBtr => pBtr.Panels).
                        Where(pBlRef => pBlRef.PanelBtrExport.IdsEndsRightEntity.Count > 0).
                        GroupBy(pBlRef => pBlRef.Position.X, comparer);
            foreach (var itemRightEndsByY in panelsWithRightEndsByX)
            {
                try
                {
                    ConvertEndsFacade convertEndsFacade = new ConvertEndsFacade(itemRightEndsByY, false, this);
                    convertEndsFacade.Convert();
                    convertsEnds.Add(convertEndsFacade);
                }
                catch (Exception ex)
                {
                    Inspector.AddError($"Ошибка преобразования торцов панелей с координатой X точки вставки = {itemRightEndsByY.Key}. {ex}");
                }
            }

            // удаление торцов
            convertsEnds.ForEach(c => c.DeleteEnds());
        }