Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Во вкладке Designer в панели Display найдите раздел Block Model и нажмите на раскрывающийся список Shading (Заливка). В нем находится предварительно загруженный список автоматических заливок для уровней и полей запасов. Вы можете расширить этот список, добавив в него пользовательские наборы заливки.

Создание простой пользовательской заливки:

  1. Нажмите на значок шестеренки, находящийся справа от раскрывающегося списка Shading. Откроется диалоговое окно пользовательской настройки.

  2. Нажмите синюю иконку со знаком плюса, чтобы добавить новую заливку.

  3. Измените имя заливки на «Materials» (Материалы).

  4. Нажмите на раскрывающийся список Shading Field и выберите «Parcel» (Полезный компонент).

  5. Нажмите кнопку Create Entries, чтобы заполнить все имена компонентов.

  6. Назначьте цвет для каждого полезного компонента.

  7. Нажмите OK для подтверждения.

Создание сложной пользовательской заливки:

  1. Нажмите на значок шестеренки, находящийся справа от раскрывающегося списка Shading. Откроется диалоговое окно пользовательской настройки.

  2. Нажмите синюю иконку со знаком плюса, чтобы добавить новую заливку.

  3. Измените имя заливки на «Ranges» (Диапазон).

  4. Перейдите во вкладку Complex, чтобы открыть редактор кода.

  5. Вставьте в него фрагмент кода, приведенный ниже.

  6. Нажмите ОК для подтверждения.

Простая заливка по содержанию
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)) );
    }
}
  • No labels