Отличные новости для любителей автоматизации и тулбаров!

Язык программирования скриптов Digitals

Функциональность инструментальных панелей (Окно|Создать панель инструментов) была существенно расширена. В новой версии языка скриптов можно использовать переменные и формулы. Организация условных переходов и циклов позволяет создавать программы скриптов, выполняющих групповую обработку, как на уровне объектов, так и всех открытых карт. Добавлены функции вызова диалогов для создания интерактивных скриптов.

Подробное описание новых возможностей >>> (c обновлениями и изменениями от 01.10.2008)

Поки що програмуванням в Дігіталс не займався. Але хотілося б почати. Якщо можна дати зсилку на інформацію з цього приводу:

  • опис мови скриптів: функції, оператори і т. п.;
  • процес створення та інтеграції нових функцій в програму

На сегодняшний день, расширение функциональности дигитала возможно тремя способами:

  • создание панелей инструментов с пользовательскими кнопками
    В одну кнопку можно “зашить” группу команд дигитала, как команд меню, так и внутренних (начинаются на @). Также появились средства управления течением програмы: метки, переходы, запросы - смотрите первый пост в данной теме

  • программирование с использованием внешнего языка (предпочтительно Делфи), команды отправляются через TCP/IP. Команды, по большей части совпадают с внутренними из способа выше. Этот путь, естественно, позволяет более сложную обработку карты.

  • вызов внешнего модуля, после помещения неких данных дигиталом в буфер обмена.

Все способы так или иначе описывались на форуме, попробуйте поискать по ключевым словам “TCP”, “программирование”, “скрипт”. Перечитайте разделы FAQ, Новые возможности, Запрос на функцию.

Список внутрішніх команд ( @)у вікні Виберіть команди - це вичерпний список, чи є ще якісь “секретні”?
Де можна знайти їхній опис? Догадуватись можна, але хотілося б якусь легальну інструкцію.

Ок. Я понял, поиском по форуму пользоваться вы не хотите. Структурирование форума оставляет желать лучшего, но хотя бы попробовать поискать можно? Тем более, что вам дают наводку авторитетные старожилы форума. :sunglasses: :smiley:

Вот что можно накопать набрав “TCP/IP”:

Еще, если копать глубже (этот форум мертвый, все так или иначе переселились сюда, но почитать кое-что можно):
refland.kiev.ua/forum/viewfo … db8577c1ec

Официальной инфы по командам практически нет. Однако формат их по большей части очевиден.

А для тех, кому формат не столь очевиден мы как раз доделываем краткое описание каждой функции :slight_smile:
Оно будет выводиться прямо в окне редактирования скрипта, при наведении на соответствующую функцию в списке. Через пару дней собираемся закончить.

Sorry :exclamation: :cry:
За інформацію дякую!

Програмістам теж велике спасибі!

Доброго времени суток.

Тут вот какая идея возникла. :bulb:

[предистория] Пишу скрипты внутри тулбара.

По ходу что происходит врнутри - не видно и неизвестно ни по ходу, ни даже в конце (иногда). :confused:

Если ничего не происходит того, чего хотелось бы добиться данным скриптом - что делать :question:

[по сути]

Предлагаю - есть статусная строка - кидать туда сообщения в процессе выполнения скрипта. А потом сделать так, чтобы можно было её (статусную строку) просмотреть в виде выпадающего окошка - окна сообщений, как тут :

2009_09_12_041.JPG

2009_09_12_041_a.JPG

Потому что тогда, можно, например, вкинуть туда номера объектов - с которыми происходили какие-то действия и тогда можно их проследить - сделал ли скрипт с ними что-нибудь - или это просто была продолжительная имитация деятельности и я просто сглупила в скрипте :blush:

Премного благодарна. :unamused:

Скрипт позволяет включить лог, в который будет записываться весь ход его выполнения.
Для этого нужно просто добавить в начале скрипта команду OpenLog, а в конце CloseLog.

OpenLog
Начинает протоколирование поступающих команд и их результатов.

CloseLog [Filename]
Завершает протоколирование и записывает протокол в текстовый файл.
(eсли имя не задано, то протокол будет сохранен в файл \Digitals\Digitals Server Log.txt)

Спасибо :exclamation:

То что нужно :bulb:

P.S. Но Вы всё равно подумайте с центром сообщений :wink:

Тут вот какая штука… :bulb:

При выборе / начале написания команды в редакторе скриптов - справой стороны Диджиталс находит совпадения того, что набрано справа - и если потом кликнуть в левой стороне на эту команду, она должна появиться справа - вместо того, что начинала набирать. Если это была команда меню (Правка | Вставить) - тогда всё ОК, если это внутрення команда (начинается с символа @) - то при выборе её из списка команд слева (щелчок мышью) - она вставляется как новая строка - а старый недобранный кусок команды остаётся в предыдущей строке
Если слева на панели выбрать двойным щелчком мыши команду и вызывается доп. диалог для ввода доп параметров команды (Например, @Run ExeFilename). То если нажать кнопку “отмена” в этом диалоге - диалог закрывается, а сама команда всё равно добавляется в строку скрипта.

Спасибо.

Подскажите :bulb: , пожалуйста, что делать если после выполнения условия нужно выполнить 2 и более команд? :cry:
Спасибо. :stuck_out_tongue:

Подскажите, пожалуйста :unamused: - что делать :question: - тулбар сохраняеится только после его закрытия и открытия - а если вдруг произошла перезагрузка программы - то все скрипты/ кнопки (читай - все написанные внутри скрипты) вылетают. Может можно сохранять после каждого изменения в каждой кнопочке - нажал ОК - и сохранилось :slight_smile:

Использовать метки, например:

@If NOT условие then @Goto %Next
Команда1
Команда2
%Next:
(при выполнении условия выполнятся команды 1 и 2)

@If NOT условие then @Goto %Next
Команда1
Команда2
@Goto %NextBlock
%Next:
Команда 3
Команда 4
%NextBlock
(при выполнении условия выполнятся команды 1 и 2, а иначе команды 3 и 4)

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

Вот за это моё большое Вам - Данке Шон. :unamused:

а как задать вот такую цепочку событий?

@if $BID1=$BID11 then @if $BID2=$BID12 then @if $BID3=$BID13 then
@Map.SelectObject $J
@Map.SelectObject $I
@Map.Selected.AddToGroup Дубликаты

Просто тут идёт цепочка условий и нужно после неё выполнить цепочку команд. :open_mouth:

Как-то так:

@if $BID1<>$BID11 then @Goto %Skip
@if $BID2<>$BID12 then @Goto %Skip
@if $BID3<>$BID13 then @Goto %Skip

@Map.SelectObject $J
@Map.SelectObject $I
@Map.Selected.AddToGroup Дубликаты

%Skip:

Цепочка команд будет выполнена только при соблюдении всех трех условий. Если хоть одно из условий не выполняется, то исполнение перескочит на метку Skip и обойдет команды.

А еще можно заранее просуммировать для обоих объектов все три параметра и тогда понадобится всего одно сравнение:

$S1=$BID1$BID2$BID3
$S2=$BID11$BID12$BID13
@if $S1<>$S2 then @Goto %Skip

Спасибо :exclamation: Работает :bulb:

А это как это $S1=$BID1$BID2$BID3 работает :open_mouth:
Какого типа эти параметры должны быть? :open_mouth:

Если у меня они и числовые и строковые?

Спасибо.

Здесь параметры суммируются как строки (слияние строк), независимо от типа параметра.