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