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); }
/// 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; } }
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; } }