Example #1
0
        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));
        }
Example #2
0
        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));
        }