Beispiel #1
0
        public KnownUOM KnownUOMFromDimensions(Dimensions dimensions)
        {
            bool     WasCreated = false;
            KnownUOM knownUOM   = _uOMSet?.FindFromDimensions(dimensions, bAllowCreate: true, wasCreated: out WasCreated);

            if (WasCreated)
            {
                ContentManager.KnownUOMs.Add(knownUOM.Name, knownUOM);
            }

            return(knownUOM);
        }
Beispiel #2
0
            /// Sort out the UOM
            private void RefreshUOM()
            {
                UOM      oUOM    = _singleValue?.CalcQuantity?.GetUOM();
                KnownUOM calcUOM = null;

                if (oUOM is KnownUOM)
                {
                    calcUOM = (KnownUOM)oUOM;
                }
                else if (oUOM is AnonUOM anonUOM)       // Most likely
                {
                    calcUOM = _parent.KnownUOMFromDimensions(anonUOM.Dimensions);
                }

                if ((_knownUOM == null) ||
                    (IsCalculated && (_singleValue.CalcQuantity.CalcStatus == CalcStatus.Good) &&
                     !UOM.EqualDimensions(_knownUOM, calcUOM)))
                {
                    _knownUOM = calcUOM;
                }
            }
Beispiel #3
0
        void UpdateCalcInput(VmEqVar wmEqVar)
        {
            try
            {
                SingleValue singleValue = wmEqVar.GetSingleValue();
                KnownUOM    knownUOM    = wmEqVar.GetKnownUOM();

                if (singleValue == null)
                {
                    return;
                }
                if (singleValue is Constant)
                {
                    return;
                }
                if (singleValue is Literal)
                {
                    return;
                }

                // Check or update the calc UOM
                bool bUpdateCalcUom = false;
                if (knownUOM == null)
                {
                    singleValue.CalcQuantity.AnonUOM = null;
                }
                else if (singleValue.CalcQuantity.AnonUOM == null)
                {
                    bUpdateCalcUom = true;
                }
                else if (!knownUOM.Dimensions.Equals(singleValue.CalcQuantity.AnonUOM.Dimensions))
                {
                    bUpdateCalcUom = true;
                }

                if (bUpdateCalcUom)
                {
                    singleValue.CalcQuantity.AnonUOM = new AnonUOM(knownUOM.Dimensions, _uOMSet);
                }

                double dbl = (wmEqVar.Value ?? double.NaN);

                CalcStatus calcStatus;
                if (double.IsNaN(dbl) || double.IsInfinity(dbl))
                {
                    calcStatus = CalcStatus.Bad;
                }
                else
                {
                    calcStatus = CalcStatus.Good;
                }

                singleValue.CalcQuantity.CalcStatus = calcStatus;

                // Convert the input value to the calc UOM
                double convertedVal = dbl;

                if (knownUOM != null)
                {
                    convertedVal = UOM.Convert(dbl, fromUOM: knownUOM, anonToUOM: singleValue.CalcQuantity.AnonUOM);
                }

                singleValue.CalcQuantity.Value = convertedVal;

                SetMaxUOMLength();
            }
            catch (Exception ex)
            {
                Logging.LogException(ex);
                throw;
            }
        }