Програма Digitals у своєму функціоналі має інструментарій, який відкриває дуже широкі можливості для автоматизації процесу під час виконання найрізноманітніших завдань. Йдеться про скрипти. Скрипти Digitals – це по суті внутрішнє програмне середовище на спрощеній мові програмування, яке дозволяє записувати сценарії виконання тих чи інших завдань за допомогою програмного коду.

  Створений за допомогою скрипту сценарій автоматизує різні завдання, які без скрипту довелося би виконувати вручну дуже довго. Але і це не все, бо скриптове середовище Digitals включає багато команд та функцій, аналогів яким у інтерфейсі програми просто не знайти. Тобто, це також цілий ряд додаткових можливостей, які надаються програмою.

  Візуально скрипт, найчастіше, представляє собою кнопку на панелі інструментів, при натисканні на яку відбувається певна дія: запускається команда, чи послідовність команд. Також, окрім власної кнопки на панелі інструментів, скрипт може бути інтегрований прямо в карту, конкретний шар на карті, чи навіть в параметр на закладці інфо, і запускатися, реагуючи на певну подію. Наприклад, кожного разу коли відкривається карта, коли виділяється об’єкт на карті, коли вносяться зміни в параметр та інше. Про це детальніше згодом.

  Почнемо з найпростішого. Перед тим, як приступити до створення скрипту, навчимося створювати власні панелі інструментів і кнопки на них.

  Щоб створити власну скриптову панель інструментів, в головному меню програми (вгорі) вибираємо пункт Вікно – Створити панель інструментів.

  Там потрібно придумати назву для нової панелі і натиснути Зберегти.
В результаті в нас повинно появитися маленьке сіре вікно, яке можна переміщувати.  Це і є нова панель інструментів.

  Дальше на цій панелі інструментів треба створити кнопку. Для цього натискаємо всередині цього маленького вікна правою клавішею мишки і вибираємо команду Додатки кнопку. В результаті появиться вікно, як на зображенні нижче.

  В лівій частині ми бачимо список доступних команд та функцій, а в правій буде, в майбутньому, знаходитися код нашого скрипту.

  На сайті в меню Скачати є багато готових кодів скриптів, які можна сюди вставити. Після того, як вставили код в правій частині вікна, просто натисніть ОК і все - скрипт готовий до використання.

  Щоб додати в код ту чи іншу функцію, яка знаходиться в лівій частині вікна, потрібно її виділити і натиснути на кнопку Copy, або просто клацнути на функції подвійним кліком лівкої клавіші мишки.

  Коли виділяємо ту чи іншу функцію, внизу ми можемо бачити її опис (на жаль, тільки російською). А ще нижче знаходиться вікно для пошуку потрібної функції чи команди. Функції від команд відрізняються тим, що перші унікальні і англійською мовою, а другі кирилицею і дублюють звичайні команди з меню програми.

  Для прикладу, знайдемо найпростішу функцію @Dialog.Message Text і добавимо її у свій скрипт.

Вгорі над лівою частиною вікна є можливість поставити галочку в пункті «Група» і, тим самим, ми згрупуємо наші функції по категоріях. Тоді спершу треба буде шукати назву групи - @Dialog (групи функцій мають перед рядком стрілочки ►) і вже потім, клацнувши два рази, зможемо знайти саму функцію @Dialog.Message Text. Хоч напевне простіше цю галочку взагалі там не ставити.

  Щоб вибрана нами функція появилася у правій частині вікна, клацаємо на ній два рази лівою клавішею мишки. Після того, як ми її додали в праву частину вікна, замість Text пишемо будь-який свій текст, наприклад: "Привіт землевпорядникам!" і натискаємо ОК. Все, скрипт створено.

  Якщо тепер натиснути на кнопку, яку ми створили – побачимо повідомлення і текст, який був нами написаний.

  Дальше нам слід перемістити панель в зручне місце і для того, щоб вона набрала вигляду дійсно панелі інструментів, нажимаємо на кнопці правою клавішею і знімаємо галочку навпроти пункту Заголовок. Тим самим способом (через контекстне меню кнопки) можна вносити зміни в скрипт, присвоювати кнопці назву, призначати зображення та робити інші дії над нею. Щоб перемістити кнопку в інше місце на екрані, коли відключений заголовок, потрібно утримувати клавішу Shift.

  Тепер розглянемо елементи, з яких може складатися скприпт.

Коментарі

Коментарі – це звичайний текст у скрипті, який ніде не висвітлюється в результаті, а служить тільки як засіб опису, нотацій тощо для розробника скрипту. Коментар мусить завжди починатися із крапки з комою («;»). Тобто, рядки які починаються з «;» скриптом ігноруються.

Тим самим методом можна, зокрема, відключати, не видаляючи, команди та функції. Тоді ці функції стануть неактивними.

Функції

Функціями в скриптовій мові Digitals прийнято вважати скриптові команди, які починаються із символу @ (собачка). Всього в скриптах Digitals зараз наявно більше, як 500 різноманітних функцій. І їх список продовжує розширюватися.

Найпростіші функції:

@ActivateMap Number – активує карту з номером Number

@Dialog.Message Text – виводить вікно з повідомленням Text (замість Text можна вказати свій текст)

@Break Text – зупиняє роботу скрипту і виводить повідомлення (якщо задано значення параметра Text)

@Map.SelectAll - виділяє всі об'єкти карти

@Map.DeselectAll - знімає виділення з усіх об'єктів карти

@Map.SelectObject Number - виділяє об'єкт карти з номером Number

@Map.SelectedObject - присвоює певній перемінній номер виділеного об'єкта

@Map.Copy - копіює виділені об'єкти в буфер обміну

@Map.Paste - вставляє на карту вміст буфера обміну

@Map.Count - визначає кількість об'єктів на карті

@Map.SelCount - визначає кількість виділених об'єктів карти

@MapCount - визначає кількість відкритих карт

@Date – повертає поточну дату

@DequoteText – видаляє лапки на початку і в кінці строки

@StringPart Number String – витягує частину символьного рядка (Number – номер частини, String – значення рядка, а символ між ними є роздільником, по якому слід шукати, наприклад, значенням @StringPart 1 Іванов Іван буде просто Іванов, Значенням @StringPart 2,А,Б,В буде Б, @StringPart 1/А/Б буде А

@Run - запускає зовнішню програму (exe-файл)

@Run D:\Список файлів.txt

@ProgramFolder – повертає шлях до папки, в якій знаходиться програма Digitals

 

Команди інтерфейсу

Команди інтерфейсу – це звичайні команди меню чи стандартних панелей інструментів, які доступні і без скриптів. Вони можуть бути прописані в коді скрипту кирилицею, наприклад , Правка | Копіювати.

Щоб добавити в скрипт таку команду із меню чи панелі інструментів, найзручніше ввести її назву (чи частину назви) у вікні пошуку внизу і вибрати з результату.

Перемінні

Проміжні значення, які ми отримуємо від скриптових функцій та команд, можна зберігати в перемінних. Назви перемінних можуть бути написані в довільній формі, але тільки латиницею і починатися символом $ (знак долара). В коді скрипту перемінні підсвічені різними кольорами.

Наприклад, $Obj=@Map.SelectedObject, $K=@ActivateMap

Тобто, це свого роду ємкості, куди записуються результати, які добуті функціями. Інші функції з перемінних ці результати потім зчитують. Перемінні – це засіб обміну між функціями.

Щоб записати значення функції в перемінну, перемінна повинна стояти на початку рядка і містити після себе знак = (дорівнює)

$D=@Date (в перемінну $D ми записуємо поточну дату)

Коли функція повинна читати перемінну,  перемінна перемінна ставиться після функції через пробіл

@ActivateMap $Name

Замість перемінних, при необхідності, можна використовувати і пряме значення

@ActivateMap 4

Часто функції одночасно читають якусь перемінну, обробляють її і записують результат зразу в іншу перемінну

$A=@DequoteText $B (функція @DequoteText читає перемінну $B, обробляє її і записує в перемінну $A)

$vul=@StringPart 2,$AD (функція @StringPart читає другу частину після коми перемінної $AD і записує в перемінну $vul)

Вирази

Вирази служать для присвоєння перемінним значень, які визначаються на основі математичних обрахунків чи просто чисел, чи тексту .

Наприклад: 

=1 заносить в перемінну  значення 1, 

=приватна власність заносить в перемінну  значення приватна власність

$B=$A+5 заносить в перемінну $B cуму значень перемінної $A і числового значення 5, 

$B=$B+1 збільшує значення перемінної $B на одиничку.

 

Умовні оператори

@If  Умова then Результат чи дія else Інший результат чи дія

Тобто, це рядок, який перевіряє чи виконується певна умова, і, якщо вона виконується, виводить відповідний результат чи робить потрібну дію.
@If – означає «якщо»

then – «то»

else – «інакше»

and – «і»

or – «чи».

Для прикладу, деякі варіанти написання умовних операторів:

@if $A=1 then $B=10 (якщо значення перемінної $A дорівнює 1, то переміна $B дорівнюватиме 10)

@if $D=$RR then $S=5 (якщо значення перемінної $D дорівнює значенню перемінної $RR, то переміна $S дорівнюватиме 5)

@If $N>100 then @Break (якщо значення перемінної $N більше 100, то зупиняємо скрипт)

@If $N<1 then $B=10  else @Dialog.Message Не виконано (якщо значення перемінної $N менше 1, то то переміна $B дорівнюватиме 10, інакше виводимо повідомлення з текстом "Не виконано")

@If $LID<>20000 then @Goto %Next (якщо значення перемінної $LID не дорівнює 20000, то переходимо на мітку %Next)

Коли в умовному операторі є дві умови зразу, тоді їх необхідно взяти в дужки. Більше як дві умови не підтримуються.

@If ($I>200) and ($D=0) then $A=555

@If ($I>20) or ($I<5) then $I=$I+1

Перемінними в умовному операторі можуть бути як цифри, так і текст

@if $typvyl=вул then $t=вулиця
@if $typvyl=провул then $t=провулок
@if $typvyl=пл then $t=площа
@if $typvyl=ур then $t=урочище

Знаками порівняння в умовному операторі можуть бути "="(дорівнює), "<>"(не дорівнює), ">"(більше), "<"(менше),">="(більше-рівне),"<="(менше-рівне)

Мітки

Мітки починаються із символа (знак процента). Їх призначення – створювати в скрипті місця, на які можна переходити, використовуючи відповідні функції. Мітки також підсвічуються різними кольорами і можуть носити довільну назву. 

Приклад: %Label (замість слова Label може бути власне слово, наприклад %Next)


Щоб перейти на потрібну мітку використовується функція @Goto (буквально перейти до)

@Goto %Next

Перехід можна здійснювати, коли виконується (чи не виконується) певна умова

@If $N>100 then @Goto %Next

Тобто, призначення міток в тому, щоб або пропустити частину коду, або повернутися в якесь місце для повторної обробки.

Без міток не можливо було б створити цикл:

;заносимо в перемінну $Count число відкритих в програмі карт
$Count=@MapCount 
;перериваємо виконання скрипту, якщо число відкритих карт дорівнює 0 
@If $Count=0 then @Break 
;присвоюємо перемінній $I початкове значення циклу
$I=1
;мітка початку циклу 
%Start
;в перемінну $Name заносимо назву $I-ї карти (без розширення) 
$Name=@Map[$I].ClearFilename
;зберігаємо карту під номером $I у файл DXF (з тим самим ім'ям, але іншим розширенням файлу) 
@Map[$I].SaveToFile $Name.dxf 
;збільшуємо на одиничку номер карти, яка буде оброблятися наступною
$I=$I+1 
;якщо номер карти менший чи дорівнює $Count, переходимо на мітку %Start
@If $I<=$Count @Goto %Start 

Цикли можна створювати по об'єктах на карті, по шарах, по точках об'єкта, по списках тощо.

Умовні події

Умовні події - це події в програмі Digitals, як реакцію на які можна прив'язати виконання певних дій скриптом. Умовні події починаються з комбінації символу та слова %Events і являють собою, свого роду перемикач, який спрацьовує при певній події. Докладніше про це буде в одній з наступних статей.

 


Примітка: у прикладах функцій жирним шрифтом (напр.@ActivateMap) виділена назва функції, похилим шрифтом (напр.Number) перемінна функції, у квадратних скобках (напр.[MapNumber]) необов'язкова перемінна, яка може не вказуватися.