Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Digitals.pdf
Скачиваний:
73
Добавлен:
28.06.2022
Размер:
9.86 Mб
Скачать

Приложение D. Введение в Digitals Script

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

Вчастности, здесь можно дать кнопке название и назначить иконку.

Рисунок D.1. Диалог “Выбор команд для кнопки”

Язык скриптов

Рассмотрим элементы языка, из которых складывается скрипт.

Комментарии

Комментарий - это строка скрипта, которая начинается с символа ; (двоеточие). Комментарии обычно применяются для того, чтобы объяснить ход выполнения скрипта или сохранить любую другую полезную для разработчика скрипта информацию.

Комментарий также может применяться для временного “отключения” тех или иных команд скрипта.

Команды

Как вы уже поняли, скрипт представляет собой последовательность команд. Такими командами могут быть практически любые команды из арсенала команд меню и панелей инструментов Digitals, а также целый ряд внутренних неинтерактивных команд, “видимых” только для скриптов.

Внутренние команды

Имена внутренних команд начинаются с символа @ (собачка). Добрая часть внутренних команд не имеет аналогов в интерфейсе Digitals и не может быть вызвана иначе, как из скрипта.

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

Команды интерфейса Digitals

Команды из интерфейса вызываются по их именам - так, как если бы мы вызывали их из меню. Например, если в скрипте требуется выполнить вставку из буфера обмена, следует включить в его текст команду Правка | Вставить.

340

Команды

Вместе с тем, каждая команда из интерфейса имеет внутреннее имя, которое можно “подсмотреть” в строке статуса окна, изображенного на Рис.D.1, выбрав соответствующую команду в списке. Если мы хотим вызвать интерфейсную команду по ее внутреннему имени, то для этого используется команда @ExecuteMenu, которая принимает внутреннее имя в качестве своего аргумента. Например, упомянутая выше команда Правка | Вставить будет выглядеть в этом случае как

@ExecuteMenu EditPaste.

Команды интерфейса нередко вызывают на экран диалоги для настройки некоторых параметров, что не всегда приемлимо в рамках скрипта. Чтобы “проскочить” диалог, в скрипте используется функция @SendChars, которая располагается перед вызовом соответствующей команды и посылает диалогу последовательность нажатий на клавиатуру, как если бы это сделал пользователь, сидящий перед экраном компьютера.

Например, следующий код создаст группу с именем “Участок”. Здесь <CR> означает посылку нажатия клавиши Enter.

@SendChars Участок<CR>

Группа | Создать...

Отметим, что часть интерфейсных команд имеют свои неинтерактивные скриптовые аналоги. Например, команда @Map.Generalization 0.1 выполнит генерализацию с графической точностью 0.1 мм без вызова диалога. Разумеется, что помощь команды @SendChars в этом случае не понадобится.

По функционалу команды скрипта можно условно разделить на такие группы:

Команды утилит

Группа различных вспомогательных команд. Сюда входят, например, команды для извлечения пути к файлу, команды для соединения и разделения строк и множество других.

Команды действий

Фактически, в эту группу попадают все инструменты, воздействующие на помеченные объекты или на карту в целом. Самый простой пример - это команды взаимодействия с буфером обмена.

Команды получения выборки

Немалая часть инструментов работает с помеченными объектами. Поэтому, в скрипте нам необходимы команды для получения выборки. Это могут быть как команды из интерфейса Digitals,

например, Пометить | Все или Пометить | Внутри помеченного, так и команды типа

@Map.SelectByParameters.

Последняя команда, в частности, помечает объекты подобно диалогу Правка > Найти…. Обратите внимание и на другие команды группы @Map, которые начинаются со слова Select.

Команды доступа к элементам карты

Под элементами карты мы подразумеваем все ее части: саму карту, список слоев, список параметров, объекты карты и содержимое их параметров, а также подписи, вынесенные в карту. Некоторые команды доступа запрашивают значения, некоторые позволяют их изменить. Часть команд работает и на запрос и на изменение.

Элемент Map (карта) организован в виде массива (списка), содержащего все открытые карты. Каждая карта Map содержит массив Object, содержащий объекты карты. Этот массив, в свою очередь, содержит массив Parameter, в котором хранятся значения параметров, связанных с объектом.

Обращаться к элементам массива можно по номеру, указывая его в [ ] квадратных скобках. Примеры:

@Map.Count - Возвращает количество объектов в активной карте. @Map[2].Layers.Count - Возвращает количество слоев во второй карте.

@Map.Object[N].Parameter[M] - Доступ к содержимому параметра M объекта N текущей карты.

$X=@Map.Object[N].Point[M].x - Запись координаты X точки M объекта N текущей карты в переменную $X (о переменных чуть ниже).

341