public void DelRow()
        {
            //if (!_isCellsStandalone) return;

            DeselectBlocks();

            var cells = RowViewModelList.Last().CellsCollection;

            RowViewModelList.Remove(RowViewModelList.Last());

            foreach (var cell in cells)
            {
                cell.CellData.RowNum--;
                RowViewModelList.Last().CellsCollection.Add(cell);
            }

            RowViewModelList.Last().UpdateFacade();
            RowViewModelList.Last().UpdateDirection();
            RowViewModelList.Last().UpdateDoorDirection();
            RowViewModelList.Last().UpdateBusPositions();
            RowViewModelList.Last().UpdateCellPanel();

            ControlsCollection.Remove(_controlsCollection.Last(x => x.GetType() == typeof(RowBlock)));

            UpdateAll();
            StageSave();
        }
        public void ReorganizeGrid(bool isShowGrid)
        {
            _isShowGrid = isShowGrid;

            while (_controlsCollection.Any(x => x.GetType() == typeof(CoorGrid)))
            {
                ControlsCollection.Remove(_controlsCollection.First(x => x.GetType() == typeof(CoorGrid)));
            }

            if (isShowGrid)
            {
                ControlsCollection.Add(new CoorGrid(_currentGridScale / Constants.MainScale, _areaWidth, _areaHeight));
                Canvas.SetZIndex((UIElement)ControlsCollection.Last(), -10);
            }
        }
        public void CreateSubstation(SubstationData subBlock)
        {
            if (subBlock == null)
            {
                return;
            }

            while (ControlsCollection.Any(x => x.GetType() == typeof(SubstationBlock)))
            {
                ControlsCollection.Remove(ControlsCollection.First(x => x.GetType() == typeof(SubstationBlock)));
            }

            ControlsCollection.Add(new SubstationBlock(this, subBlock));

            ReDrawSubstation();
        }
Esempio n. 4
0
        /// <summary>
        /// Пересоздание шинных мостов
        /// </summary>
        public void UpdateBusBridges()
        {
            List <double> brokenBridges = new List <double>();

            while (_controlsCollection.Any(x => x.GetType() == typeof(BusBridge)))
            {
                ControlsCollection.Remove(_controlsCollection.First(x => x.GetType() == typeof(BusBridge)));
            }

            if (_isHideConnects)
            {
                return;
            }

            foreach (var linkData in _linkDataList.Where(x => x.LinkType == LinkType.Bus))
            {
                var fromCellData = _cellDataList.Find(x => x.IndexNum == linkData.FromCellIndex);
                var toCellData   = _cellDataList.Find(x => x.IndexNum == linkData.ToCellIndex);

                if (fromCellData == null || toCellData == null)
                {
                    continue;
                }

                if (fromCellData.Facade == Facade.Left || fromCellData.Facade == Facade.Right || toCellData.Facade == Facade.Left || toCellData.Facade == Facade.Right)
                {
                    brokenBridges.Add(linkData.FromCellIndex);
                    _iToastNotifications?.ShowInformation($"Шинный мост { fromCellData.UserNum } { fromCellData.UserName } - { toCellData.UserNum } { toCellData.UserName } удален: размещение невозможно при боковом фасаде камер");
                    continue;
                }

                var fromCellXOffset = 0;
                var fromCellYOffset = 0;
                var toCellXOffset   = 0;
                var toCellYOffset   = 0;

                foreach (var rowVM in _rowViewModelList)
                {
                    if (rowVM.GetXOffset(fromCellData) != 0)
                    {
                        fromCellXOffset = rowVM.GetXOffset(fromCellData);
                    }
                    if (rowVM.GetYOffset(fromCellData) != 0)
                    {
                        fromCellYOffset = rowVM.GetYOffset(fromCellData);
                    }
                    if (rowVM.GetXOffset(toCellData) != 0)
                    {
                        toCellXOffset = rowVM.GetXOffset(toCellData);
                    }
                    if (rowVM.GetYOffset(toCellData) != 0)
                    {
                        toCellYOffset = rowVM.GetYOffset(toCellData);
                    }
                }

                if (Math.Abs((fromCellXOffset - toCellXOffset)) > Constants.SectionCellMaxOffset / Constants.MainScale)
                {
                    brokenBridges.Add(linkData.FromCellIndex);
                    _iToastNotifications?.ShowInformation($"Шинный мост { fromCellData.UserNum } { fromCellData.UserName } - { toCellData.UserNum } { toCellData.UserName } удален: смещение более { Constants.SectionCellMaxOffset } мм");
                    continue;
                }

                ControlsCollection.Add(new BusBridge()
                {
                    X         = fromCellXOffset,
                    Y         = fromCellYOffset + (fromCellData.Depth / Constants.MainScale),
                    BusWidth  = (fromCellData.Width / Constants.MainScale),
                    BusHeight = toCellYOffset - fromCellYOffset - (fromCellData.Depth / Constants.MainScale),
                });
                Canvas.SetZIndex((UIElement)_controlsCollection.Last(), -5);
            }

            foreach (var cellIndex in brokenBridges)
            {
                _linkDataList.Remove(_linkDataList.Find(x => x.LinkType == LinkType.Bus && x.FromCellIndex == cellIndex));
            }

            //UpdateBusBoxCells();
        }