/// <summary> /// Создание новой операции. /// </summary> /// <param name="name">Имя операции.</param> /// <param name="getN">Функция получения номера операции.</param> /// <param name="newOwner">Владелец операции (Менеджер операций) /// </param> public Mode(string name, GetN getN, ModesManager newOwner) { this.name = name; this.getN = getN; this.owner = newOwner; restrictionMngr = new RestrictionManager(); stepsMngr = new List <State>(); var lastState = State.StateType.STATES_CNT; var secondState = State.StateType.PAUSE; stepsMngr.Add(new State(State.StateType.RUN, this, true)); for (var state = secondState; state < lastState; state++) { stepsMngr.Add(new State(state, this)); } operPar = new OperationParams(); // Экземпляр класса базовой операции baseOperation = new BaseOperation(this); SetItems(); }
public void ChangeCrossRestriction(ModesManager oldModesMngr = null) { for (int i = 0; i < modes.Count; i++) { if ((oldModesMngr != null) && (i < oldModesMngr.Modes.Count)) { modes[i].ChangeCrossRestriction(oldModesMngr.Modes[i]); } else { modes[i].ChangeCrossRestriction(); } } if (oldModesMngr != null) { if (oldModesMngr.Modes.Count > modes.Count) { for (int i = modes.Count; i < oldModesMngr.Modes.Count; i++) { int tobjNum = TechObjectManager.GetInstance() .GetTechObjectN(owner); TechObjectManager.GetInstance() .ChangeModeNum(tobjNum, i + 1, -1); } } } }
public Mode Clone(GetN getN, ModesManager newOwner, string name = "") { Mode clone = (Mode)MemberwiseClone(); clone.getN = getN; clone.owner = newOwner; clone.baseOperation = baseOperation.Clone(clone); if (name != "") { clone.name = name; } clone.stepsMngr = new List <State>(); for (int idx = 0; idx < stepsMngr.Count; idx++) { clone.stepsMngr.Add(stepsMngr[idx].Clone()); } clone.operPar = operPar.Clone(clone); clone.restrictionMngr = restrictionMngr.Clone(); clone.SetItems(); return(clone); }
/// <summary> /// Создание технологического объекта. /// </summary> /// <param name="name">Имя.</param> /// <param name="getN">Функция получения порядкового локального номера. /// </param> /// <param name="technologicalNumber">Технологический номер.</param> /// <param name="nameEplan">ОУ объекта в Eplan'е.</param> /// <param name="cooperParamNumber">Время совместного перехода шагов /// (параметр).</param> /// <param name="attachedObjects">Привязанные объекты</param> /// <param name="baseTechObject">Базовый технологический объект</param> /// <param name="NameBC">Имя объекта Monitor</param> /// <param name="techType">Номер типа</param> public TechObject(string name, GetN getLocalNum, int technologicalNumber, int techType, string nameEplan, int cooperParamNumber, string NameBC, string attachedObjects, BaseTechObject baseTechObject) { this.name = name; this.getLocalNum = getLocalNum; this.techNumber = new TechObjectN(this, technologicalNumber); this.techType = new ObjectProperty("Тип", techType); this.nameBC = new ObjectProperty("Имя объекта Monitor", NameBC); this.nameEplan = new NameInEplan(nameEplan, this); this.cooperParamNumber = new ObjectProperty( "Время совместного перехода шагов (параметр)", cooperParamNumber); this.attachedObjects = new AttachedToObjects(attachedObjects, this); modes = new ModesManager(this); paramsManager = new ParamsManager(); paramsManager.Parent = this; equipment = new Equipment(this); InitBaseTechObject(baseTechObject); SetItems(); }
/// <summary> /// Проверка операций технологического объекта /// </summary> /// <returns>Строка с ошибками</returns> public string Check() { var errors = string.Empty; var objName = DisplayText[0]; bool setBaseTechObj = BaseTechObject != null ? true : false; if (setBaseTechObj == false) { string msg = string.Format("Неопознанный объект - " + "\"{0}\"\n", objName); errors += msg; } else { errors += Equipment.Check(); errors += attachedObjects.Check(); } ModesManager modesManager = ModesManager; List <Mode> modes = modesManager.Modes; foreach (var mode in modes) { errors += mode.Check(); } errors += GetParamsManager().Check(objName); return(errors); }
/// <summary> /// Проверка действий в шаге /// </summary> /// <returns>Строка с ошибками</returns> public string Check() { var errors = string.Empty; List <int> devicesInAction = new List <int>(); foreach (Action a in actions) { if (a.GetType().Name == "Action" && (a.DisplayText[0].Contains("Включать") || a.DisplayText[0].Contains("Выключать"))) { devicesInAction.AddRange(a.DeviceIndex); } } List <int> FindEqual = devicesInAction.GroupBy(x => x) .SelectMany(y => y.Skip(1)).Distinct().ToList(); foreach (int i in FindEqual) { State state = Owner; Mode mode = state.Owner; ModesManager modesManager = mode.Owner; TechObject techObject = modesManager.Owner; Device.IODevice device = Device.DeviceManager.GetInstance() .GetDeviceByIndex(i); string msg = $"Неправильно заданы устройства в шаге " + $"\"{GetStepName()}\", операции \"{mode.Name}\"," + $"технологического объекта " + $"\"{techObject.DisplayText[0]}\"\n"; errors += msg; } return(errors); }
/// <summary> /// Создание технологического объекта. /// </summary> /// <param name="name">Имя.</param> /// <param name="getN">Функция получения порядкового номера.</param> /// <param name="technologicalNumber">Технологический номер.</param> /// <param name="nameEplan">ОУ объекта в Eplan'е.</param> /// <param name="cooperParamNumber">Время совместного перехода шагов (параметр).</param> public TechObject(string name, GetN getN, int technologicalNumber, int techType, string nameEplan, int cooperParamNumber, string NameBC, string attachedObjects) { this.name = name; this.getN = getN; this.techNumber = new TechObjectN(this, technologicalNumber); this.techType = new Editor.ObjectProperty("Тип", techType); this.nameBC = new Editor.ObjectProperty("Имя объекта Monitor", NameBC); this.nameEplan = new NameInEplan(nameEplan, this); this.cooperParamNumber = new Editor.ObjectProperty( "Время совместного перехода шагов (параметр)", cooperParamNumber); this.s88Level = new ObjS88Level(0, this); this.attachedObjects = new AttachedToObjects(attachedObjects, this); // Экземпляр класса базового агрегата baseTechObject = new BaseTechObject(this); modes = new ModesManager(this); parameters = new Params(); parameters.Parent = this; equipment = new Equipment(this); SetItems(); }
/// <summary> /// Установка параметров в операции /// </summary> /// <param name="modesNumbersWithParam">Список операций, в который /// надо добавить этот параметр</param> private void SetOperationParameters(List <int> modesNumbersWithParam) { ITreeViewItem parameter = Parent; ITreeViewItem parameters = parameter.Parent; ITreeViewItem parametersManager = parameters.Parent; ITreeViewItem techObject = parametersManager.Parent; ModesManager modesManager = (techObject as TechObject).ModesManager; List <Mode> modes = modesManager.Modes; if (modes.Count < modesNumbersWithParam.Max()) { throw new Exception(); } foreach (var mode in modes) { var modeParams = mode.GetOperationParams(); bool isModeForAddParam = modesNumbersWithParam .Contains(mode.GetModeNumber()); if (isModeForAddParam) { modeParams.AddParam(parameter as Param); } else { modeParams.DeleteParam(parameter as Param); } } }
/// <summary> /// Автоматическая настройка технологического объекта на основе его /// базового объекта. /// </summary> public void SetUpFromBaseTechObject() { if (BaseTechObject == null) { return; } ModesManager.SetUpFromBaseTechObject(BaseTechObject); }
/// <summary> /// Сброс базового объекта /// </summary> public void ResetBaseTechObject() { ModesManager.ClearBaseOperations(); systemParams.Clear(); equipment.Clear(); attachedObjects.SetNewValue(string.Empty); baseTechObject = null; CompareEplanNames(); }
/// <summary> /// Автоматическая настройка технологического объекта на основе его /// базового объекта. /// </summary> public void SetUpFromBaseTechObject() { if (BaseTechObject == null) { return; } systemParams.SetUpFromBaseTechObject(BaseTechObject.SystemParams); ModesManager.SetUpFromBaseTechObject(BaseTechObject); }
/// <summary> /// Автоматическая настройка технологического объекта на основе его /// базового объекта. /// </summary> public void SetUpFromBaseTechObject() { if (BaseTechObject == null) { return; } nameBC.SetNewValue(BaseTechObject.MonitorName); systemParams.SetUpFromBaseTechObject(BaseTechObject.SystemParams); ModesManager.SetUpFromBaseTechObject(BaseTechObject); paramsManager.SetUpFromBaseTechObject(BaseTechObject.Parameters); }
public ModesManager Clone(TechObject owner) { ModesManager clone = (ModesManager)MemberwiseClone(); clone.modes = new List <Mode>(); foreach (Mode mode in modes) { clone.modes.Add(mode.Clone(clone.GetModeN, clone)); } return(clone); }
/// <summary> /// Проверить операции объекта /// </summary> /// <returns></returns> private string CheckModes() { string errors = string.Empty; ModesManager modesManager = ModesManager; List <Mode> modes = modesManager.Modes; foreach (var mode in modes) { errors += mode.Check(); } return(errors); }
/// <summary> /// Проверка действий в шаге /// </summary> /// <returns>Строка с ошибками</returns> public string Check() { var errors = string.Empty; State state = Owner; Mode mode = state.Owner; ModesManager modesManager = mode.Owner; TechObject techObject = modesManager.Owner; string techObjName = techObject.DisplayText[0]; string modeName = mode.Name; errors += CheckOpenAndCloseActions(techObjName, modeName); errors += CheckInOutGroupActions(techObjName, modeName); return(errors); }
/// <summary> /// Создание технологического объекта. /// </summary> /// <param name="name">Имя.</param> /// <param name="getN">Функция получения порядкового локального номера. /// </param> /// <param name="technologicalNumber">Технологический номер.</param> /// <param name="nameEplan">ОУ объекта в Eplan'е.</param> /// <param name="cooperParamNumber">Время совместного перехода шагов /// (параметр).</param> /// <param name="attachedObjects">Привязанные объекты</param> /// <param name="baseTechObject">Базовый технологический объект</param> /// <param name="NameBC">Имя объекта Monitor</param> /// <param name="techType">Номер типа</param> public TechObject(string name, GetN getLocalNum, int technologicalNumber, int techType, string nameEplan, int cooperParamNumber, string NameBC, string attachedObjects, BaseTechObject baseTechObject) { this.name = name; this.getLocalNum = getLocalNum; this.techNumber = new TechObjectN(this, technologicalNumber); this.techType = new ObjectProperty("Тип", techType); this.nameBC = new ObjectProperty("Имя объекта Monitor", NameBC); this.nameEplan = new NameInEplan(nameEplan, this); this.cooperParamNumber = new ObjectProperty( "Время совместного перехода шагов (параметр)", cooperParamNumber, -1); var allowedObjects = new List <BaseTechObjectManager.ObjectType>() { BaseTechObjectManager.ObjectType.Aggregate }; string attachObjectsName = "Привязанные агрегаты"; string attachObjectsLuaName = "attached_objects"; this.attachedObjects = new AttachedObjects(attachedObjects, this, new AttachedObjectStrategy.AttachedWithInitStrategy( attachObjectsName, attachObjectsLuaName, allowedObjects)); modes = new ModesManager(this); paramsManager = new ParamsManager(); paramsManager.Parent = this; string sysParName = "Системные параметры"; string sysParLuName = "system_parameters"; systemParams = new SystemParams(sysParName, sysParLuName); systemParams.Parent = this; equipment = new Equipment(this); InitBaseTechObject(baseTechObject); SetItems(); }
/// <summary> /// Создание новой операции. /// </summary> /// <param name="name">Имя операции.</param> /// <param name="getN">Функция получения номера операции.</param> /// <param name="newOwner">Владелец операции (Менеджер операций) /// </param> public Mode(string name, GetN getN, ModesManager newOwner) { this.name = name; this.getN = getN; this.owner = newOwner; restrictionMngr = new RestrictionManager(); stepsMngr = new List <State>(); stepsMngr.Add(new State(StateStr[(int)StateName.RUN], true, this, true)); for (StateName i = StateName.PAUSE; i < StateName.STATES_CNT; i++) { stepsMngr.Add(new State(StateStr[(int)i], true, this)); } operPar = new OperationParams(); // Экземпляр класса базовой операции baseOperation = new BaseOperation(this); SetItems(); }
/// <summary> /// Изменение менеджера операций объекта-владельца операций. /// </summary> /// <param name="newOwner">Новый менеджер операций.</param> /// <returns></returns> public void ChangeOwner(ModesManager newOwner) { owner = newOwner; }