PS. Создание пользовательских меток

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

Добавление пользовательской метки

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

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

  3. Измените имя метки на понятное.

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

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

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

Диалоговое окно Configure Labels, доступное через кнопку Labels > поле Label

Примеры пользовательских меток

Пример 1. Создание метки с пользовательским ИД

using System; using System.Linq; using Alastri.Patri.V2; using Alastri.TotalScheduler.ScriptExtensions; using System.Collections.Generic; using Alastri.Scripting; using Alastri.SchedulingCore; public class Label : ILabelTextProvider { public string GetLabel(RecordAndShadingContext rsc) { if(rsc.Record.Table.IsDump) return ""; var Name = rsc.Record.GetNames(); var pit = Name[2]; var bench = Name[4]; var blast = Name[5]; return pit + "_" + bench + "_" + blast; } }

Пример 2. Идентификационная метка только для выемочного блока контроля содержаний

using System; using System.Linq; using Alastri.Patri.V2; using Alastri.TotalScheduler.ScriptExtensions; using System.Collections.Generic; using Alastri.Scripting; using Alastri.SchedulingCore; public class Label : ILabelTextProvider { public string GetLabel(RecordAndShadingContext rsc) { //If dump record or a blast solid, return nothing. if(!rsc.Record.GetNames()[0].Equals("Reserves") || !rsc.Record.IsDigLeaf) return ""; var agent = rsc.CurrentAgent; var database = rsc.Record.Database; var digBlock = rsc.Record.GetStringValue(database.FindField("DigSolid", "reservesDataSource"), (IParcelSubset)null); var isGradeControl = digBlock.Equals("BlockModel"); var blast = string.Empty; var flitch = string.Empty; var parcel = string.Empty; var block = string.Empty; if (isGradeControl) { var Name = rsc.Record.GetNames(); var pit = Name[2]; var bench = Name[4]; var shot = Name[5]; return agent + " " + flitch + "RL" + Environment.NewLine + shot ; } var names = rsc.Record.GetNames(); flitch = names[6]; blast = names[5]; return agent + " " + flitch + "RL" + Environment.NewLine + blast + "_" + parcel + "_" + block; } }

Пример 3. Объем и тонны для блока

using System; using System.Linq; using Alastri.Patri.V2; using Alastri.TotalScheduler.ScriptExtensions; using System.Collections.Generic; using Alastri.Scripting; using Alastri.SchedulingCore; public class Label : ILabelTextProvider { PatriField miningVol; PatriField miningDt; public string GetLabel(RecordAndShadingContext rsc) { miningDt ??= rsc.ShadingContext.Database.FindField("mining_drytonnes"); miningVol ??= rsc.ShadingContext.Database.FindField ("mining_volume"); return "dig: " + rsc.Record.GetDoubleValue(miningVol, ParcelAll.Default).ToString("#,##0") + " bcm" + Environment.NewLine + rsc.Record.GetDoubleValue(miningDt, ParcelAll.Default).ToString("#,##0") + " t"; } }

Пример 4. Когда блок был запланирован в первый раз