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(); }
public TechObject Clone(GetN getLocalNum, int newNumber, int oldGlobalNum, int newGlobalNum) { TechObject clone = (TechObject)MemberwiseClone(); clone.techNumber = new TechObjectN(clone, newNumber); clone.techType = new ObjectProperty("Тип", TechType); clone.nameBC = new ObjectProperty("Имя объекта Monitor", NameBC); clone.nameEplan = new NameInEplan(NameEplan, clone); clone.attachedObjects = new AttachedToObjects(AttachedObjects.Value, clone); clone.getLocalNum = getLocalNum; if (baseTechObject != null) { clone.baseTechObject = baseTechObject.Clone(clone); } clone.paramsManager = paramsManager.Clone(); clone.modes = modes.Clone(clone); clone.modes.ModifyDevNames(TechNumber); clone.modes.ModifyRestrictObj(oldGlobalNum, newGlobalNum); clone.equipment = equipment.Clone(clone); clone.equipment.ModifyDevNames(); clone.SetItems(); return(clone); }
public Step Clone(GetN getN, string name = "") { Step clone = (Step)MemberwiseClone(); clone.getN = getN; if (name != "") { clone.name = name.Substring(3); } clone.actions = new List <Action>(); foreach (Action action in actions) { clone.actions.Add(action.Clone()); } clone.items = new List <Editor.ITreeViewItem>(); clone.items.AddRange(clone.actions.ToArray()); if (!IsMode) { clone.timeParam = timeParam.Clone(); clone.nextStepN = nextStepN.Clone(); clone.items.Add(clone.timeParam); clone.items.Add(clone.nextStepN); } clone.baseStep = baseStep.Clone(); clone.baseStep.Owner = this; return(clone); }
public Param(GetN getN, string name, bool isRuntime = false, double value = 0, string meter = "шт", string nameLua = "", bool isUseOperation = false) { this.isRuntime = isRuntime; this.name = name; this.getN = getN; if (!isRuntime) { this.value = new ParamProperty("Значение", value); } if (isUseOperation) { this.oper = new ParamOperationsProperty("Операция", -1, -1); this.oper.Parent = this; } this.meter = new ParamProperty("Размерность", meter, string.Empty); this.nameLua = new ParamProperty("Lua имя", nameLua, string.Empty); items = new List <ITreeViewItem>(); if (!isRuntime) { items.Add(this.value); } items.Add(this.meter); if (isUseOperation) { items.Add(oper); } items.Add(this.nameLua); }
public TechObject Clone(GetN getN, int newNumber, int oldObjN, int newObjN) { TechObject clone = (TechObject)MemberwiseClone(); clone.techNumber = new TechObjectN(clone, newNumber); clone.techType = new Editor.ObjectProperty("Тип", TechType); clone.nameBC = new Editor.ObjectProperty("Имя объекта Monitor", NameBC); clone.nameEplan = new NameInEplan(NameEplan, clone); clone.s88Level = new ObjS88Level(S88Level, clone); clone.attachedObjects = new AttachedToObjects(AttachedObjects.Value, clone); clone.getN = getN; clone.baseTechObject = baseTechObject.Clone(clone); clone.parameters = parameters.Clone(); clone.modes.ChngeOwner(clone); clone.modes = modes.Clone(clone); clone.modes.ModifyDevNames(TechNumber); clone.modes.ModifyRestrictObj(oldObjN, newObjN); clone.equipment = equipment.Clone(clone); clone.equipment.ModifyDevNames(); 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> 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="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 Param(GetN getN, string name, double value = 0, string meter = "шт", string nameLua = "") { this.name = name; this.getN = getN; this.value = new Editor.ObjectProperty("Значение", value); this.oper = new ParamProperty("Операция", -1); this.oper.Parent = this; this.meter = new Editor.ObjectProperty("Размерность", meter); this.nameLua = new Editor.ObjectProperty("Lua имя", nameLua); items = new List <Editor.ITreeViewItem>(); items.Add(this.value); items.Add(this.meter); items.Add(oper); items.Add(this.nameLua); }
/// <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(); }
public SystemParam(GetN getN, string name, double value = 0, string meter = "шт", string nameLua = "") { this.name = name; this.getN = getN; bool editable = false; this.value = new ParamProperty("Значение", value); this.meter = new ParamProperty("Размерность", meter, string.Empty, editable); this.nameLua = new ParamProperty("Lua имя", nameLua, string.Empty, editable); items = new List <ITreeViewItem>(); items.Add(this.value); items.Add(this.meter); items.Add(this.nameLua); }
/// <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="getLocalNumMethod">Метод</param> public void SetGetLocalN(GetN getLocalNumMethod) { getLocalNum = getLocalNumMethod; }
/// <summary> /// Создание нового шага. /// </summary> /// <param name="name">Имя шага.</param> /// <param name="getN">Функция получения номера шага.</param> /// <param name="isMode">Признак того, является ли шаг шагом операции. /// </param> /// <param name="owner">Владелец шага (Состояние)</param> public Step(string name, GetN getN, State owner, bool isMode = false) { this.name = name; this.getN = getN; this.IsMode = isMode; this.owner = owner; this.baseStep = new ActiveParameter("", ""); this.baseStep.Owner = this; items = new List <Editor.ITreeViewItem>(); actions = new List <Action>(); actions.Add(new Action("Включать", this, "opened_devices", new Device.DeviceType[3] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions.Add(new Action("Включать реверс", this, "opened_reverse_devices", new Device.DeviceType[1] { Device.DeviceType.M })); actions.Add(new Action("Выключать", this, "closed_devices", new Device.DeviceType[3] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions[2].DrawStyle = Editor.DrawInfo.Style.RED_BOX; actions.Add(new Action_WashSeats("Верхние седла", this, "opened_upper_seat_v")); actions[3].DrawStyle = Editor.DrawInfo.Style.GREEN_UPPER_BOX; actions.Add(new Action_WashSeats("Нижние седла", this, "opened_lower_seat_v")); actions[4].DrawStyle = Editor.DrawInfo.Style.GREEN_LOWER_BOX; actions.Add(new Action("Сигналы для включения", this, "required_FB", new Device.DeviceType[2] { Device.DeviceType.DI, Device.DeviceType.GS })); actions.Add(new Action_Wash("Мойка( DI, DO, устройства)", this, "wash_data")); actions.Add(new Action_DI_DO("Группы DI -> DO DO ...", this, "DI_DO")); actions.Add(new Action_AI_AO("Группы AI -> AO AO ...", this, "AI_AO")); items.AddRange(actions.ToArray()); if (!isMode) { timeParam = new Editor.ObjectProperty("Время (параметр)", -1); nextStepN = new Editor.ObjectProperty( "Номер следующего шага", -1); items.Add(timeParam); items.Add(nextStepN); } }
public void SetUpTheTest() { GetNReturn1 += delegate(object obj) { return(1); }; }
/// <summary> /// Создание нового шага. /// </summary> /// <param name="name">Имя шага.</param> /// <param name="getN">Функция получения номера шага.</param> /// <param name="isMainStep">Признак того, является ли шаг /// шагом операции. </param> /// <param name="owner">Владелец шага (Состояние)</param> public Step(string name, GetN getN, State owner, bool isMainStep = false) { this.name = name; this.getN = getN; IsMainStep = isMainStep; Owner = owner; baseStep = new BaseStep(string.Empty, string.Empty); baseStep.Owner = this; items = new List <ITreeViewItem>(); actions = new List <Action>(); actions.Add(new Action("Включать", this, Action.OpenDevices, new Device.DeviceType[] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions.Add(new Action("Включать реверс", this, Action.OpenReverseDevices, new Device.DeviceType[] { Device.DeviceType.M }, new Device.DeviceSubType[] { Device.DeviceSubType.M_REV_FREQ, Device.DeviceSubType.M_REV_FREQ_2, Device.DeviceSubType.M_REV_FREQ_2_ERROR, Device.DeviceSubType.M_ATV, Device.DeviceSubType.M })); actions.Add(new Action("Выключать", this, Action.CloseDevices, new Device.DeviceType[] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions[2].DrawStyle = DrawInfo.Style.RED_BOX; actions.Add(new ActionGroup("Верхние седла", this, ActionGroup.OpenedUpperSeats, new Device.DeviceType[] { Device.DeviceType.V }, new Device.DeviceSubType[] { Device.DeviceSubType.V_MIXPROOF, Device.DeviceSubType.V_AS_MIXPROOF, Device.DeviceSubType.V_IOLINK_MIXPROOF })); actions[3].DrawStyle = DrawInfo.Style.GREEN_UPPER_BOX; actions.Add(new ActionGroup("Нижние седла", this, ActionGroup.OpenedLowerSeats, new Device.DeviceType[] { Device.DeviceType.V }, new Device.DeviceSubType[] { Device.DeviceSubType.V_MIXPROOF, Device.DeviceSubType.V_AS_MIXPROOF, Device.DeviceSubType.V_IOLINK_MIXPROOF })); actions[4].DrawStyle = DrawInfo.Style.GREEN_LOWER_BOX; actions.Add(new Action("Сигналы для включения", this, Action.RequiredFB, new Device.DeviceType[] { Device.DeviceType.DI, Device.DeviceType.GS })); actions.Add(new ActionGroupWash("Устройства", this, ActionGroupWash.SingleGroupAction)); // Специальное действие - выдача дискретных сигналов // при наличии входного дискретного сигнала. actions.Add(new ActionGroup("Группы DI -> DO DO ...", this, ActionGroup.DIDO, new Device.DeviceType[] { Device.DeviceType.DI, Device.DeviceType.SB, Device.DeviceType.DO })); // Специальное действие - выдача аналоговых сигналов при // наличии входного аналогового сигнала. actions.Add(new ActionGroup("Группы AI -> AO AO ...", this, ActionGroup.AIAO, new Device.DeviceType[] { Device.DeviceType.AI, Device.DeviceType.AO, Device.DeviceType.M })); items.AddRange(actions.ToArray()); if (!isMainStep) { timeParam = new ObjectProperty("Время (параметр)", -1, -1); nextStepN = new ObjectProperty("Номер следующего шага", -1, -1); items.Add(timeParam); items.Add(nextStepN); } }