public void Execute() { // ToList确保在遍历时可以修改 _oldRowCount = _network.RowCount; _network.RowCount++; var movedElements = _network.GetElements().Where(e => e.Y >= _rowNumber).ToList().OrderBy(x => { return(x.Y); }).Reverse(); var movedVLines = _network.GetVerticalLines().Where(e => e.Y >= _rowNumber).ToList().OrderBy(x => { return(x.Y); }).Reverse(); foreach (var ele in movedElements) { _network.RemoveEle(ele.X, ele.Y); ele.Y++; _network.ReplaceEle(ele); } foreach (var vline in movedVLines) { _network.RemoveVLine(vline.X, vline.Y); vline.Y++; _network.ReplaceVLine(vline); } //_network.INVModel.Setup(_network); // 将梯形图光标移到新生成的行的头部 _network.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = _network.LDVModel; ldvmodel.SelectionRect.X = 0; ldvmodel.SelectionRect.Y = _rowNumber; ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( _network.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }
public void Execute() { if (bvmodel.InstructionName.Equals("CALLM")) { if (pstring_new.Count() == 0) { throw new ValueParseException( String.Format(Properties.Resources.Message_Invalid_Function_Name)); } int argcount = (pstring_new.Count() - 2) / 4; ArgumentValue[] _values = new ArgumentValue[argcount]; for (int i = 0; i < argcount; i++) { _values[i] = ArgumentValue.Create( pstring_new[i * 4 + 3], pstring_new[i * 4 + 2], pstring_new[i * 4 + 4], PLCDevice.PLCDeviceManager.GetPLCDeviceManager().SelectDevice); _values[i].Comment = pstring_new[i * 4 + 5]; } ((CALLMViewModel)(bvmodel)).AcceptNewValues( pstring_new[0], pstring_new[1], _values); } else { bvmodel.AcceptNewValues(pstring_new, PLCDevice.PLCDeviceManager.GetPLCDeviceManager().SelectDevice); } //lnvmodel.INVModel.Setup(lnvmodel); // 导航到修改参数的元件 lnvmodel.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = lnvmodel.LDVModel; ldvmodel.SelectionRect.X = Math.Min(bvmodel.X + 1, GlobalSetting.LadderXCapacity - 1); ldvmodel.SelectionRect.Y = bvmodel.Y; ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( lnvmodel.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }
public void Redo() { foreach (var ele in _removedElements) { _network.RemoveElement(ele); } foreach (var vline in _removedVerticalLines) { _network.RemoveVerticalLine(vline); } // ToList确保在遍历时可以修改 var movedElements = _network.GetElements().Where(e => e.Y > _rowNumber).ToList(); var movedVLines = _network.GetVerticalLines().Where(e => e.Y > _rowNumber).ToList(); foreach (var ele in movedElements) { _network.RemoveElement(ele); ele.Y--; _network.ReplaceElement(ele); } foreach (var vline in movedVLines) { _network.RemoveVerticalLine(vline); vline.Y--; _network.ReplaceVerticalLine(vline); } _oldRowCount = _network.RowCount; _network.RowCount--; //_network.INVModel.Setup(_network); // 将梯形图光标移到删除的行的位置 _network.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = _network.LDVModel; ldvmodel.SelectionRect.X = 0; ldvmodel.SelectionRect.Y = (_rowNumber < _network.RowCount ? _rowNumber : _rowNumber - 1); ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( _network.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }
public void Redo() { _network.RemoveElements(_removedElements); _network.RemoveVerticalLines(_removedVerticalLines); var movedElements = _network.GetElements().Where(e => e.Y > _startRow + _count - 1).ToList().OrderBy(x => { return(x.Y); }); var movedVLines = _network.GetVerticalLines().Where(e => e.Y > _startRow + _count - 1).ToList().OrderBy(x => { return(x.Y); }); foreach (var ele in movedElements) { _network.RemoveEle(ele.X, ele.Y); ele.Y -= _count; _network.ReplaceEle(ele); } foreach (var vline in movedVLines) { _network.RemoveVLine(vline.X, vline.Y); vline.Y -= _count; _network.ReplaceVLine(vline); } InstructionCommentManager.RaiseMappedMessageChangedEvent(); _oldRowCount = _network.RowCount; if (_count == _network.RowCount) { _network.RowCount = 1; } else { _network.RowCount -= _count; } _network.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = _network.LDVModel; ldvmodel.SelectionRect.X = 0; ldvmodel.SelectionRect.Y = (_startRow < _network.RowCount ? _startRow : _startRow - 1); ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( _network.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }