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

Я пробовала с номером карты - после закрытия 4-5 карт - вылетает ошибка Application violation - что-то типа такого. Короче не работало - поэтому сделала так - так работает. Проверяла на многих картах (20-30) :exclamation: :blush:

Я же не профи - для этого Вы у нас есть :laughing:

Спасибо.

Спасибо за информацию. В CloseMap действительно возникала ошибка при попытке закрыть несуществующую карту - исправлена. Мой вариант был не очень корректным, так как не учитывал, что количество карт с каждым закрытием уменьшается. А значит, дойдя до середины списка цикл начинает закрывать карты с несуществующими номерами.

Правильно так (закрытие в обратном порядке):

$MC=@MapCount
@if $mc=0 then @break нет открытых карт
$I=$MC
%Start
@CloseMap $I
$I=$I-1
@if $I>0 @Goto %Start

Не можу розібратись з текстовими змінними. Потрібно відкрити файл, назва якого створюється із значення параметру вибраного обєкту:
$Name=@Map.Filename
$Pass=@GetFilePath $Name
$А=$Pass+ID40042+‘.dmf’
@FileOpen

Але в змінній знаходиться не імя файлу, а стрічка типу шлях_до_файлу+1234+‘.dmf’.
Що не так?

$Name=@Map.Filename $Path=@GetFilePath $Name $Param=@Map.Selected.GetParameter 73 $A=$Path$Param.dmf @FileOpen $А

Можно ли сделать так - чтобы при создании кнопки на панели или при редактировании (при записи (при закрытии) ) - в начале скрипта добавлялись 2 коментария - первый - дата создания скрипта, а второй - дата последнего редактирования. Это помогает очень. Если взять любой ГИС продукт - там есть такая опция - не зря ведь :wink:

И ещё - приходится закрывать панель и потом её открывать - чтобы сохранились изменения в кнопки - а если произошло аварийное закрытие программы - то вся панелька накрывается медным тазом - бывает что потом открывает такую длиннющую панель - хотя это была всег лишь одна кнопка - каким-то образом Диджиталс её разбрасывает по разным кнопкам. :blush:

Спасибо. :laughing:

Дата последнего изменения TLB-файла теперь показывается в строке статуса при входе в редактирование скрипта.

Исправлено. Теперь TLB-файл сохраняется после каждого редактирования скрипта, а не при закрытии Digitals как раньше. При сохранении также создается файл *.tlb.bak с предыдущим вариантом.

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

А что значит “переключить фокус”?
Если вашему скрипту нужно выполнить какое-либо действие со всеми помеченными объектами, то @Map.NextSelected повзоляет в цикле перебрать их все.

Примерно вот так:

$S=0
%Start
$S=@Map.NextSelected $S
@If $S=0 then @Break
;
; здесь делаем то, что нам нужно, с объектом под номером $S
;
@Goto %Start

Так. Потрібно обробити всі позначені обєкти.
$S=0
%LABEL1
$S=@Map.NextSelected $S
@Dialog.Message $S
.
.
.
@If $S<$Sel_Count @GOTO %LABEL1

Щось не зовсім працює. Використавши @Dialog.Message побачив, що в перший раз значення $S=1 і скрипт виконується, а в другий раз воно=0, (хоча повинно бути =2), і звісно що скрипт перестає виконуватись.

В вашем скрипте непонятно, где присвоена переменная $Sel_Count.
Далее, сравнивать номер объекта с количеством помеченных объектов это неправильно. Между ними никакой связи. Помеченных может быть два объекта, а номера их могут быть, например, 100000 и 100001. Ведь NextSelected возвращает номер объекта карты (в пределах от 1 дo Map.Count), а не номер объекта в списке помеченных.

Используйте тот скрипт, что я привел - он гарантировано рабочий.
Зачем изобретать более сложный вариант?

Дякую! Але ще не все - як отримати порядковий номер активної карти, який можна використовувати в командах типу MAP[номер]. ?

$Sel_Count=@Map.SelCount @If $Sel_Count=0 @Break Немає вибраних об'єктів $Name=@Map.Filename $Pass=@GetFilePath $Name $S=0 $i=0 %LABEL1 $i=$i+1 $S=@Map[1].NextSelected $S $Number_Point=@Map[1].Object[$S].Parameter[ID40042] $1=$Pass\Абриси\$Number_Point.dmf @FileOpen $1 @If $i<$Sel_Count @GOTO %LABEL1

Скрипт відкриває нову карту, а потрібно щоб функція @Map[номер].Object[$S].Parameter[ID40042] обробляла обєкти з попередньо відкритої карти.
І ще, що поверне команда $S=@Map.NextSelected, тобто без параметру LastNumber?

ActivateMap - возвращает номер активной карты

Map.NextSelected - вернёт тоже что и Map.NextSelected 0, а именно порядковый номер первого из выделенных объектов (в таких случах можно просто проверить что будет).

Дякую!

Возможно ли создание подписей не одного а нескольких параметров объекта (@Map.Selected.CreateCaptions ParamIndex Orientation Position VAlign HAlign ShiftX ShiftY)?

@Map.Selected.CreateCaptions ParamIndex1 Orientation Position VAlign HAlign ShiftX ShiftY
@Map.Selected.CreateCaptions ParamIndex2 Orientation Position VAlign HAlign ShiftX ShiftY

Спасибо!Очень помогает при подписи отметок колодцев,но не получается ориентирование подписи.Она у меня бухается только вниз.

А можно ли среди функций добавить функцию определения текущего системного времени и даты - иногда нужно сохранять файлы с текущей датой или временем в имени файла.

Спасибо.

Не знаю поможет ли, так как в результате имеются символы запрещенные к использованию в именах файлов

$T=@Calc NOW @Dialog.Message $T

Можна витягувати дату із значення параметру (параметр з назвою =TimeStamp).

Этот параметр показывает дату последнего обращения к объекту - а не системное текущее время. :cry: