tocCustom Labels overview
In the Designer tab in Display panel locate Labels section and press Text dropdown: there is a preloaded list of automatic labels for the level hierarchy and reserves fields. |
Image RemovedAdding Custom Label
You custom labels to the list of default ones.Press the gear icon on the right from Text dropdown.
Click to this list by configuring custom labels displaying various data and properties. |
Image Added Select the gear icon next to the Text dropdown. This opens the configuration dialog.
Press the blue plus icon to add a new label.
Rename the label to "Ore Tonnes" for example.
Paste the sample formula into the code editor.
Double click in the Available Formulas for code hints.
Press
OK to finish.Image RemovedCustom Labels will appear orange in the list.
Image Removedthe Test button to make sure your code is correct. Any errors found will be shown in the Errors panel and won’t let you to proceed.
Fix any errors detected, run test again and press OK to accept.
Image Added
Custom Labels Examples
See below a list of the most common custom labels you can copy and paste into your Code Editor, making some custom changes as required.
Multi-Line Label
Code Block |
---|
|
using System;
using Alastri.RR.Ui;
using Alastri.RR.Service;
public class LabelFormat : ILabel
{
public string GetLabel(ShadingContext context)
{
return "Blast " + context.GetLevelName(" |
SolidBlast") + "\n"
+ context.GetReserveValue("Volume").ToString("#,##0") + " bcm \n"
+ context.GetReserveValue("DryTonnes").ToString("#,##0") + "t";
}
} |
Image Added
Area / Perimeter Ratio
Code Block |
---|
|
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");
}
} |
Image Added
Ore Tonnes Label
Code Block |
---|
|
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");
}
} |
Image Added
Waste Tonnes Label
Code Block |
---|
|
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");
}
} |
Image Added
Majority Parcel
Code Block |
---|
|
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;
}
} |
Image Added
Ore Ratio
Code Block |
---|
|
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%");
}
} |
Image Added
naming conventionNaming Convention
Code Block |
---|
|
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;
}
}
} |
Image Added
Calculate Blast Type
Code Block |
---|
|
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;
}
} |
Image Added
Export Description
Custom label including Full name + Blast Property + Blast Type.
Code Block |
---|
|
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;
}
} |
Image Added