Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Sometimes we want to map a block model field that isn't coded in the original block model. Custom variables allow us to write complex logic in a readable and reusable way, which can then be mixed with other inline formulas in the block model mappingsИногда нам может потребоваться отобразить поле блоковой модели, которое не было закодировано в исходной модели. Для этого в приложении присутствует опция пользовательских переменных, позволяющая написать любую более сложную логику в доступном для чтения и повторного использования виде, также доступную для объединения с другими формулами преобразования блоковой модели.

Для создания пользовательских переменных:

...

Code Block
languagec#
titleТанкеры нескольких пород
linenumberstrue
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using Alastri.Scripting;
using Alastri.BlockModel.Engine.CustomVariables;

public class Parcel : ITextCustomVariable
{
    public string GetText(CustomVariablesContext context)
    {
        double fe = context.N("fe");
        double al = context.N("al");
        string geology = context.T("geology");
        
        string fe_bin;
        
        if(fe > 60) 
        {
             fe_bin = "60";
        }
        else if(fe > 55) 
        {
            fe = Math.Floor(fe); 
            fe_bin = fe.ToString("#,##0");
        }
        else
        {
           fe_bin = "50";
        }

        string al_bin;

        if(al < 3)
        {
           al_bin = "3";
        }
        else if(al < 6)
        {
           al = Math.Ceil(al);
           al_bin = al.ToString("#,##0");
        }
        else
        {
          al_bin = "9";
        }

        string geoClass = "1";
        if(geology.Equals("detrital", StringComparison.OrdinalIgnoreCase))
        {
           geoClass = "2";
        }

        return fe_bin + "_" + al_bin + "_" + geoClass;
    }
}

...

Коэффициент руды

Поля блоковой модели Rapid Reserver не могут сообщать коэффициент вскрыши (Stripping Ratio), поскольку он не является полем типа суммы или веса. Вместо этого приложение может сообщать коэффициент руды, который является отношение среднего веса тонн руды к общим тоннам. 

Для этого нам потребуется настроить поле средневзвешенных единиц с именем OreRatio (Коэффициент руды) как дочернюю запись параметра «dryTonnes» или «wetTonnes» (в зависимости от того, какие тонны (в сухом или во влажном состоянии) Вы хотите включить в отчет. В этом поле будет указано «1» для руды и «0» для вскрыши. Средневзвешенное значение единиц и нулей во взрывном блоке и будет являться соотношением руды.

...

Для создания нескольких пользовательских переменных, для каждой переменной требуется создать классклассы, выполняющий выполняющие интерфейс IDoubleCustomVariable или ITextCustomVariable. Эти Такие классы должны быть перечислены друг под другом в окне редактора сценариев пользовательских переменных, как показано в примерах ниже.

...