В Digitals є функція автомасштабу (OBJECTSCALE), але вона має один мінус - коли ділянка в іншому масштабі, то втрачає своє реальне місце розташування. Це викликає деякі незручності. Бо тоді вже ні растр не відкрити, ні додати щось з іншої карти із прямим попаданням в потрібне місце. Даний варіант дозволяє іншим способом міняти масштаб шаблонів, не створюючи при цьому окремі шаблони по кожному масштабі карти.
Скрипт після запуску показує всі шаблони, які доступні через Сервіс-Документи з можливістю вибрати потрібний. Питає масштаб, в якому сформувати документ і формує його. При чому, якщо шаблон складається із декількох файлів у папці DMT, то відбувається зміна масштабів усіх файлів у папці.
;Перевірка наявності відкритої карти
$CountMap=@MapCount
@If $CountMap=0 then @Break Для роботи скрипту потрібна карта з XML
$N=@Map.Count
@If $N=0 @Break На карті немає об'єктів
$N=@Map.SelCount
@If $N<1 @Break Перед запуском виділіть потрібну ділянку
$Papka=@ProgramFolder
@Text.FolderList *.dmt $Papka
$FC=@Text.Count
$List=@Text.Text
$Shablon=@Dialog.ListSelect Виберіть один із $FC шаблонів:|$List
@if $Shablon= then @Break
$Scale=@Dialog.ListSelect Виберіть масштаб|500|1000|2000|5000|10000|25000|50000|100000|200000|500000
@if $Scale= then @Break
@Text.FolderList *.dmt $Shablon
$List2=@Text.Text
@if $List2= then $Shablon2=$Shablon
@if $List2= then @Goto %Next
$FC=@Text.Count
$N=0
%Start
$N=$N+1
@if $N>$FC then @Goto %Only1
$Shablon2=@Text.Line[$N]
%Next
@FileOpen $Shablon2
@if $Scale<500 then @SendChars $Scale<32><CR>
@if $Scale>=500 then @SendChars $Scale<CR>
@ExecuteMenu spbMapProperties
@Map.SaveToFile
@FileClose
@if $List2= then @Goto %Only1
@Goto %Start
%Only1
$Shablon=@Calc Replace("$Shablon",".dmt","")
$Shablon=@DequoteText $Shablon
$Shablon=@Calc Replace("$Shablon","$Papka\","")
$Shablon=@DequoteText $Shablon
@ExecuteDocument $Shablon
|