RR. Пользовательские метки взрывных блоков
Во вкладке Проектирование в панели Вид найдите поле Метки и нажмите на раскрывающийся список Текст. В нем находится предварительно загруженный список автоматических меток для полей уровней и запасов.
Вы можете расширить этот список, добавив в него пользовательские метки.
Добавление пользовательских меток
Нажмите значок шестеренки, находящийся справа от раскрывающегося списка Текст.
Нажмите синюю кнопку со знаком плюса, чтобы добавить новую метку.
Измените имя метки на «Ore Tonnes» (Тонн руды).
Вставьте фрагмент формулы в поле редактора кода.
Подсказки по кодам можно посмотреть дважды щелкнув по формуле из списка вкладки Формулы снизу.
Нажмите кнопку Текст, чтобы проверить правильность кода. Любые выявленные ошибки будут приведены в панели Ошибки снизу. Их требуется решить, чтобы продолжить настройку.
Решите любые выявленные ошибки, протестируйте еще раз и нажмите ОК для завершения.
В панели Метки справа нажмите на иконку глаза, чтобы отобразить метки, и в раскрывающемся списке поля Текст выберите созданную метку — Ore Tonnes (Обратите внимание, что пользовательские настройки показаны жирным оранжевым, а стандартные — обычным черным шрифтом).
Выберите уступ(ы) из древовидной структуры слева, которые Вы хотите отобразить в области просмотра, и просмотрите результат.
Цвета, назначенные выбранной заливке, можно увидеть в легенде (кнопка Легенда в правом нижнем углу под областью просмотра).
Примеры пользовательских меток
Ниже приведены примеры наиболее часто используемых пользовательских меток, которые можно перекопировать и вставить в редактор кода и отредактировать, по необходимости.
Многострочная метка
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
return "Blast " + context.GetLevelName("Blast") + "\n"
+ context.GetReserveValue("Volume").ToString("#,##0") + " bcm \n"
+ context.GetReserveValue("DryTonnes").ToString("#,##0") + "t";
}
}
Отношение площади к периметру
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
return (context.SurfaceArea / context.Perimeter).ToString("#,##0.00");
}
}
Тонны руды
using System;
using System.Collections.Generic;
using System.Linq;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
List<string> temp = context.GetParcels();
List<string> parcels = temp.ConvertAll(low => low.ToLowerInvariant());
List<string> ores = new List<string>(){ "hg", "mg", "lg" };
double oreTonnes = 0;
foreach(var parcel in parcels)
{
if(ores.Any(ore => parcel.StartsWith(ore)))
{
oreTonnes += context.GetReserveValue("DryTonnes", parcel);
}
}
return oreTonnes.ToString("#,##0");
}
}
Тонны вскрыши
using System;
using System.Collections.Generic;
using System.Linq;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
List<string> temp = context.GetParcels();
List<string> parcels = temp.ConvertAll(low => low.ToLowerInvariant());
List<string> waste = new List<string>(){ "w", "minw" };
double wasteTonnes = 0;
foreach(var parcel in parcels)
{
if(waste.Any(waste => parcel.StartsWith(waste)))
{
wasteTonnes += context.GetReserveValue("DryTonnes", parcel);
}
}
return wasteTonnes.ToString("#,##0");
}
}
Приобладающий компонент
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
var parcels = context.GetParcels();
string majorityParcel = "";
double majorityTonnes = -1e7;
foreach (var parcel in parcels)
{
double t = context.GetReserveValue("DryTonnes", parcel);
if (t > majorityTonnes)
{
majorityTonnes = t;
majorityParcel = parcel;
}
}
return majorityParcel;
}
}
Коэффициент руды
using System;
using System.Collections.Generic;
using System.Linq;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
List<string> wasteList = new List<string>(){ "w", "lg1", "lg2", "lg3" };
double oreTonnes = 0;
foreach(var parcel in context.GetParcels())
{
if(!wasteList.Contains(parcel.ToLower()))
{
oreTonnes += context.GetReserveValue("DryTonnes", parcel);
}
}
double allTonnes = context.GetReserveValue("DryTonnes");
return allTonnes == 0 ? "0" : (oreTonnes / allTonnes).ToString("0.0%");
}
}
Название по контролю содеражний
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
string mine = context.GetLevelName("Mine");
string pit = context.GetLevelName("Pit");
string bench = context.GetLevelName("Bench");
string blast = context.GetLevelName("Solid");
string gradeBlock = context.GetSolidPropertyString("GradeBlock");
if(context.ReservesDataSource.ToString() == "BlockModel")
{
return mine + "/" + pit + "/" + bench + "/" + blast;
}
else
{
blast = blast.Split('_')[0];
return mine + "/" + pit + "/" + bench + "/" + blast + "/" + gradeBlock;
}
}
}
Расчет типа взрывного блока
using System;
using System.Collections.Generic;
using System.Linq;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
Dictionary<string,double> parcelLookup = new Dictionary<string, double>();
Dictionary<string,double> newBins = new Dictionary<string, double>();
public string GetLabel(ShadingContext context)
{
parcelLookup.Clear();
newBins.Clear();
//organise parcels into bins
foreach(var parcel in context.GetParcels())
{
parcelLookup[parcel] = context.GetReserveValue("Volume", parcel);
string newBin = parcel.Substring(0,1); //first letter of parcel
if(!newBins.TryGetValue(newBin, out double volume))
{
newBins[newBin] = 0;
}
newBins[newBin] += parcelLookup[parcel];
}
//find majority bin
string bin = null;
double max = -1;
foreach(var newBin in newBins)
{
if(newBin.Value > max)
{
max = newBin.Value;
bin = newBin.Key;
}
}
return bin;
}
}
Экспортное имя
Пользовательская метка, включающая имена Рудник_Карьер_Стадия.
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
return context.GetLevelName("Mine") + "_" + context.GetLevelName("Pit") + "_" + context.GetLevelName("Stage");
}
}
Экспортное описание
Custom label including Full name + Blast Property + Blast Type.
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
return context.GetFullName() + "/" + context.GetSolidPropertyString("InitialState") + "/" + context.BlastType;
}
}