public DescriptorRange() { StateDescriptors.Add(new Connector { Id = 0, Name = "*", Order = 0 }); CalculatorE.RegisterTokenizer(FormulaResultTokenizer); CalculatorE.RegisterPreprocessor(FormulaResultProcessor); _inputValueCalculator.RegisterTokenizer(_calculatorVariableAccessAddonCachedValues.VariableTokenizer); _inputValueCalculator.RegisterPreprocessor(_calculatorVariableAccessAddonCachedValues.VariablePreprocessor); // Для Range повторитель всегда включен EnableRepeater(true); //_inputValueCalculator.RegisterTokenizer(CalculatorVariableAccessAddonE.VariableTokenizer); //_inputValueCalculator.RegisterPreprocessor(CalculatorVariableAccessAddonE.VariablePreprocessor); }
/// <summary> /// Установить значение переменных в соответствие с указанной для этого формулой /// </summary> /// <param name="stateId"></param> public void SetState(int stateId) { if (StateDescriptors.Count(sd => sd.Id == stateId) == 0) { return; } if (!IsPowerOn() || stateId == -1) { return; } foreach (var varId in UsedVariables) { var formula = GlobalFormulaKeeper.Instance.GetVariableFormulaText(GetId(), varId, stateId); if (string.IsNullOrEmpty(formula)) { return; } var formulaResult = CalculatorE.ComputeFormula(formula); if (formulaResult.GetFormulaComputeResultType() == TypeOfComputeFormulaResult.DoubleResult) { Profile.VariableStorage.WriteValue(varId, formulaResult.CalculatedDoubleValue); } } }
/// <summary> /// Получить все состояния /// </summary> /// <returns></returns> public override Connector[] GetConnectors(object controlProcessor, bool withDefaultState = false) { return(withDefaultState ? StateDescriptors.ToArray() : StateDescriptors.Where(x => x.Id != GetDefaultStateId()).ToArray()); }