RR. Пользовательская заливка блочной модели
Во вкладке Проектирование в панели Вид найдите раздел Блочная модель и нажмите на раскрывающийся список Цвет. В нем находится предварительно загруженный список автоматических заливок для полей уровней и запасов. Вы можете расширить этот список, добавив в него пользовательские наборы заливки.
Создание простой пользовательской заливки
Нажмите на значок шестеренки, находящийся справа от раскрывающегося списка Цвет. Откроется диалоговое окно пользовательской настройки.
Нажмите синюю иконку со знаком плюса, чтобы добавить новую заливку.
Измените имя заливки на «Материалы».
Нажмите на раскрывающийся список Поле заливки и выберите «Parcel» (Полезный компонент).
Нажмите кнопку Создать поля, чтобы заполнить все имена компонентов.
Назначьте желаемый цвет для каждого полезного компонента или сгенерируйте градиент.
Нажмите OK для подтверждения.
В панели Блочная модель справа нажмите на иконку глаза, чтобы отобразить блоки, в в раскрывающемся списке поля Цвет выберите созданную заливку — Материалы (Обратите внимание, что пользовательские настройки показаны жирным оранжевым, а стандартные — обычным черным шрифтом).
Выберите уступ(ы) из древовидной структуры слева, которые Вы хотите отобразить в области просмотра, и просмотрите результат.
Цвета, назначенные выбранной заливке, можно увидеть в легенде (кнопка Легенда в правом нижнем углу под областью просмотра).
Создание сложной пользовательской заливки
Нажмите на значок шестеренки, находящийся справа от раскрывающегося списка Цвет. Откроется диалоговое окно пользовательской настройки.
Нажмите синюю иконку со знаком плюса, чтобы добавить новую заливку.
Измените имя заливки на «Диапазон» (Ranges).
Перейдите во вкладку Комплексная, чтобы открыть редактор кода.
Вставьте в него фрагмент кода, приведенный ниже.
Нажмите кнопку Тест, чтобы убедиться в правильности кода. Любые найденные ошибки будут показаны на панели Ошибки и не позволят продолжить работу.
Примеры кодов пользовательских заливок
Простая заливка по содержанию
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Linq;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class CustomBlockShading : IBlockShading
{
public Color GetColor(BlockContext context)
{
double fe = context.N("DryTonnes.FE");
if(fe > 60) return Color.FromArgb(255,0,138); //pink
else if(fe > 58) return Color.Red;
else if(fe > 56) return Color.Orange;
else return Color.WhiteSmoke;
}
}
Заливка по нескольким переменным
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Linq;
using Alastri;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class CustomBlockShading : IBlockShading
{
Color e1_low_e2_low = Color.Magenta;
Color e1_high_e2_low = Color.DeepSkyBlue;
Color e1_low_e2_high = Color.Yellow;
Color e1_high_e2_high = Color.White;
double element1_Min = 0;
double element1_Max = 12;
double element2_Min = 1.5;
double element2_Max = 3;
public Color GetColor(BlockContext context)
{
double element1 = context.N("Head_Tonnes.SiO2");
double element2 = context.N("Head_Tonnes.Al2O3");
double x = element2 - element2_Min;
x = Math.Max(0, x);
x = Math.Min(x, element2_Max - element2_Min);
double y = element1 - element1_Min;
y = Math.Max(0, y);
y = Math.Min(y, element1_Max - element1_Min);
Color topLerp = Lerp(e1_low_e2_high, e1_high_e2_high, x / (element2_Max - element2_Min));
Color lowLerp = Lerp(e1_low_e2_low, e1_high_e2_low, x / (element2_Max - element2_Min));
Color lerp = Lerp(lowLerp, topLerp, y / (element1_Max - element1_Min));
return lerp;
}
public Color Lerp(Color one, Color two, double pct)
{
return Color.FromArgb( (int)(one.R + pct * (two.R-one.R)) ,
(int)(one.G + pct * (two.G-one.G)) ,
(int)(one.B + pct * (two.B-one.B)) );
}
}