Esempio n. 1
0
        public void SetFormula(int srcIndex, int trgIndex, IBxFormula fml)
        {
            if (srcIndex == trgIndex)
            {
                return;
            }
            BxSrcUnitFormulas formulas = _formulas[srcIndex];

            formulas.SetFormula(trgIndex, fml);
        }
Esempio n. 2
0
        public IBxFormula GetFormula(int srcIndex, int trgIndex)
        {
            if (srcIndex == trgIndex)
            {
                return(ParsedFormula.s_sameUnitFormula);
            }

            BxSrcUnitFormulas formulas = _formulas[srcIndex];
            IBxFormula        fml      = formulas.GetFormula(trgIndex);

            if (fml == null)
            {
                //取反向的转换关系
                ParsedFormula tempFml = _formulas[trgIndex].GetFormula(srcIndex) as ParsedFormula;
                if (tempFml != null)
                {
                    fml = ParsedFormula.Inverse(tempFml);
                    formulas.SetFormula(trgIndex, fml);
                }
            }
            if (fml == null)
            {
                if ((trgIndex == _nDefaultUnitIndex) || (srcIndex == _nDefaultUnitIndex))
                {
                    throw new Exception(string.Format("缺乏单位{0}和主单位{1}之间的转换关系\n", this[srcIndex].ID, this[trgIndex].ID));
                }
                else
                {
                    IBxFormula fml1 = GetFormula(srcIndex, _nDefaultUnitIndex);
                    IBxFormula fml2 = GetFormula(_nDefaultUnitIndex, trgIndex);
                    fml = new CombinedFormula(fml1, fml2);
                    formulas.SetFormula(trgIndex, fml);
                }
            }
            return(fml);
        }
Esempio n. 3
0
        public void SetFormula(string srcUnit, string trgUnit, IBxFormula fml)
        {
            if (srcUnit == trgUnit)
            {
                return;
            }
            IBxIndexedUnit src = ParseEx(srcUnit);
            IBxIndexedUnit trg = ParseEx(trgUnit);

            if ((src == null) || (trg == null))
            {
                return;
            }
            BxSrcUnitFormulas formulas = _formulas[src.Index];

            formulas.SetFormula(trg.Index, fml);
        }