Versions Compared

Key

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

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

Table of Contents

...

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

...

  1. Перейдите вкладка Setup > шаг Block Model > кнопка Edit > окно Reservable Model Generator.

  2. Нажмите Custom Variables (Пользовательские переменные), чтобы открыть окно редактора сценариев.

  3. Удалите весь текст из окна редактора кода.

  4. Замените его на приведенный в примере ниже.

...

Code Block
languagec#
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), поскольку он не является полем типа суммы или веса. Вместо этого приложение может сообщать коэффициент содержания руды, который является отношением среднего веса тонн руды к общим тоннам. 

...

Code Block
languagec#
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Linq; 
using Alastri.Scripting; 
using Alastri.BlockModel.Engine.CustomVariables;

public class OreRatio : IDoubleCustomVariable
{
    List<string> ores = new List<string>(){ "hg", "mg", "lg" }; //all lower case
     
    public double GetNumber(CustomVariablesContext context)
    {
        string matType = context.T("mattype").ToLower(); //material type field from original block model

        bool isOre = ores.Any(ore => matType.StartsWith(ore)); 
        
        if(isOre) return 1;
        else return 0;
    }
}

Несколько пользовательских переменных

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

...