Головна » Файли » Готові скрипти

Скрипт для зміни масштабу шаблонів
08.06.2017, 23:21

В 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

Категорія: Готові скрипти | Додав: Микола
Переглядів: 2844 | Завантажень: 0 | Коментарі: 15 | Рейтинг: 5.0/2
Всього коментарів: 15
avatar
14 bk2013 • 10:25, 16.07.2019
Мається на увазі є дмт шаблон, при формувані отчета з дмт шаблона підтягувало з XML файлу СК або МСК
</InfoLandWork>
</AdditionalPart>
<InfoPart>
<MetricInfo>
<CoordinateSystem>
<SC63>
<X/>
</SC63>
</CoordinateSystem>
<HeightSystem>
<Baltic/>
</HeightSystem>
<MeasurementUnit>
<M/>
</MeasurementUnit>
<PointInfo>
Дякую.
avatar
0
15 Микола • 15:55, 16.07.2019
тоді якось так - CUT(1,2,Parent[ID7000301](ID70003))
вашею задачею є витягнути перші дві цифри кадастрового номера. Бо саме вони і відповідають цифрі МСК
avatar
11 bk2013 • 17:47, 15.07.2019
Микола, доброго дня підскажіть будь-ласка може Вы знаєте яким чином витягнути з XML файла номер системы координат в дмт шаблон?
avatar
0
12 Микола • 00:25, 16.07.2019
ви маєте на увазі номер місцевої системи (наприклад, МСК-46) чи що?
avatar
0
13 Микола • 09:48, 16.07.2019
@Map.DeselectAll
@Map.SelectLayer id70003
$I=@Map.SelectedObject
$Koatyy0=@Map.Object[$I].Parameter[ID7000301]
$SK=@Map.Object[$I].CalculateFormula CUT(1,2,$Koatyy0)
avatar
9 kolkasserg • 09:37, 15.07.2019
Микола підскажіть що потрібно добавити в коді щоб до масштабу 100 та 200 не добавлявся 0 в кінець. Дякую.

$TD=@ProgramPath

$KADPLAN=$TD\KAD_PLAN_2018.dmt

$Scale=@Dialog.ListSelect Виберіть масштаб|100|200|500|1000|2000|5000|10000|25000|50000|100000|200000|500000

@if $Scale= then @Break

@FileOpen $KADPLAN

@SendChars $Scale<CR>

@ExecuteMenu spbMapProperties

@Map.SaveToFile

@FileClose

@ExecuteDocumentFromFile $KADPLAN
avatar
0
10 Микола • 13:59, 15.07.2019
виправив у скрипті
avatar
7 bk2013 • 15:39, 13.07.2019
Микола підскажіть в яку частину скрипта треба поставити код який показу масштаб бо у мене якщо я ставлю в кінець скрипту видає помилку. А також хотів уточнити можливо таке, щоб під конкретний шаблон він само відкривав та не видавав список дмт шаблонів, але мій шаблон лежить не в папке диджиталс, а на іншому диску. Дакую Вам.
avatar
0
8 Микола • 17:50, 13.07.2019
$N=@Map.SelCount
@If $N<1 @Break Перед запуском виділіть потрібну ділянку
;нижче вкажіть шлях до шаблону
$Shablon=C:\Users\Коля\Downloads\04_plan_vidvodu2.dmt
$Scale=@Dialog.ListSelect Виберіть масштаб|500|1000|2000|5000|10000|25000|50000|100000|200000|500000
@if $Scale= then @Break
@FileOpen $Shablon
@SendChars $Scale<CR>
@ExecuteMenu spbMapProperties
@Map.SaveToFile
@FileClose
@ExecuteDocumentFromFile $Shablon
@Map.DeselectAll 
@Map.SelectLayer id123456 
$T=@Map.SelectedObject 
@Map.Object[$T].TableText $Scale
Вигляд | Показати всі
avatar
5 kolkasserg • 10:57, 03.06.2019
Доброго дня!
Микола, чи є в Вас такий скрипт для запуску одного шаблону, або підкажіть, що поміняти в цьому?
Дякую!
avatar
0
6 Микола • 12:47, 03.06.2019
для запуску DMT-шаблону використовується функція:
@ExecuteDocument $Shablon
де замість $Shablon вкажіть шлях до вашого шаблону
avatar
2 spusar • 09:58, 18.09.2017
Чи є можливість відображення на шаблоні масштабу карти?
avatar
0
3 Микола • 20:41, 18.09.2017
так, створіть на карті шаблону шар з унікальним id (наприклад 123456). вставте на карту текстовий блок будь-якого вмісту, переведіть його в шар, який був створений. Головне, щоб більше ніякий об'єкт на карті не був в тому ж шарі.
А до коду додайте:
@Map.DeselectAll
@Map.SelectLayer id123456
$T=@Map.SelectedObject
@Map.Object[$T].TableText $Scale
avatar
4 spusar • 11:47, 19.09.2017
Дякую!
avatar
1 121212 • 18:51, 13.06.2017
корисний скрипт. респектую!
avatar