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 10 Next »

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

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

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

  3. Измените имя метки на «Ore Tonnes» (Тонн руды).

  4. Вставьте фрагмент формулы в поле редактора кода.

  5. Подсказки по кодам можно посмотреть дважды щелкнув по формуле из списка вкладки Available Formulas (Доступные формулы) снизу.

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

Многострочная метка
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;

public class LabelFormat : ILabel
{         
    public string GetLabel(ShadingContext context)
    {
        return "Blast " + context.GetLevelName("Solid") + "\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> parcels = context.GetParcels();
	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 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.Key.Substring(0,1); //first letter of parcel
			
	if(!newBins.TryGetValue(newBin, out double volume))
	{
		newBins[newBin] = 0;
	}
	newBins[newBin] += parcel.Value;
      }
		
      //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;
    }
}

  • No labels