Головна » 2016 » Січень » 1 » Скриптові функції - Управління самою програмою
22:40
Скриптові функції - Управління самою програмою

Всі скриптові функції Digitals для зручності можна поділити на категорії, в залежності від того, які операції та над якими об'єктами виконує та чи інша функція.


Безпосереднє управління програмою

@FileExit - завершує роботу програми

@Halt - примусово завершує роботу програми

@Minimize - мінімізує вікно з програмою

@Restore - відновлює мінімізоване вікно програми

@SelectTab TabIndex - активізує закладку правої панелі (1-Збір, 2-Правка, 3-Інфо) по її номеру

@TabWidth Width - змінює ширину правої панелі в пікселях

@FilePrint DIALOG/ALL - друкує активну карту чи усі карти (з діалогом друку, якщо заданий параметр DIALOG

@PrintSettings DuplexON AutoOrientON BufferON - повертає/встановлює налаштування друку

@Map.SetCollectionLayer LayerIndex - встановлює шар для збору

@CollectionTemplate Index [SubIndex] - встановлює шаблон збору (0 - полілінія, 1 - полігон і т.д.)

@LoadCollectionBlock FileName - завантажує блок із dmf файлу для збору

@RunControlScript Filename [/HIDE] - запускає контроль карти (Карта/Контроль), використовуючи сценарій контролю із файлу

@Window.ZoomIn - збільшити відображення на карті

@Window.ZoomOut - зменшити відображення на карті

@MainWindowPos [Left Top Width Height] - читає та змінює розмір і положення головного вікна Digitals

@Window.GotoXYZ X Y [Z] - встановлює курсор (марку) у позицію XYZ

 

Читання та редагування налаштувань програми

@DemoMode - повертає режим роботи програми (0 - нормальний, 1 - демо)

@SetAutoCaptions 0/1 - включає/виключає режим Збір/Автопідписи

@SetAutoParameters 0/1включає/виключає режим Збір/Автопараметри

@Set2DSnap - активізує 2d захоплення в Сервіс/Налаштування/Збір

@Set3DSnapактивізує 3d захоплення в Сервіс/Налаштування/Збір

@Set3DSnapDelta Value - змінює ліміт по Z для 3d захоплення в Сервіс/Налаштування/Збір

@SetOrthogonalization 0/1 - включає/виключає опцію Автоматична ортогоналізація

@Map.GetDMFCompression - повертає поточний рівень стиснення при збереженні в DMF: 0 - нема стиснення, 1 - швидке, і т.д.

@SetMapAccuracy Value_mm - Змінює значення "Точність карти на папері" в Сервіс/Налаштування/Правка

@GetConstant Constant - повертає значення константи із Сервіс/Налаштування/Головна/Константи по її назві

@SetConstant Constant=NewValue - змінює значення константи із Сервіс/Налаштування/Головна/Константи по її назві

@ProgramFolder - повертає папку програми

@UserFolder - повертає папку користувача

@ProgramPath - повертає повний шлях до папки Digitals

@Version - повертає версію програми (у вигляді числа днів, які пройшли з 30.12.1899)

@ToolbarButtonState Toolbarname.Buttonname - повертає 1, якщо кнопка скрипту натиснута і 0 - якщо відтиснута. Працює тільки з власними панелями інструментів.

@MenuChecked MenuItemName - повертає стан пунтку меню (1 - виділений, 2 - ні)

@MenuState InternalName - повертає 1, якщо меню виділене або кнопка натиснута за внутрішньою назвою пункту

@WorkFolder - повертає робочу папку

 

@SendDebugReport - відправляє розробникам звіт виправлення і пов'язані з ним файли

 


Примітка: жирним шрифтом (напр.@ActivateMap) виділена назва функції, похилим шрифтом (напр.Number) перемінна функції, у квадратних скобках (напр.[MapNumber]) необов'язкова перемінна, яку можна не вказувати.

 

Переглядів: 5566 | Додав: Микола | Рейтинг: 0.0/0
Всього коментарів: 28
avatar
26 sadist • 20:06, 23.02.2021 [Матеріал]
Доброго вечору. Підкажіть чи є такий скрипт, функція щоб поставити просто лінійний промір з виноскою від точки А до точки Б, як с формуються на схемі перенесення меж тахеометром
avatar
0
27 Микола • 20:47, 23.02.2021 [Матеріал]
Доброго вечора
Виділіть на карті два об'єкти (два точкові об'єкти, чи один точковий, а другий - будівля) і виберіть команду меню Вставка - Проміри і схема - Проміри.
avatar
28 sadist • 20:54, 23.02.2021 [Матеріал]
Дякую
avatar
23 petrorudnitsky • 17:41, 17.02.2021 [Матеріал]
Добрий день. Підкажіть будь-ласка чи можливо якось ЗАПУСТИТИ свій підправлений dmt-шаблон "Кадастровий план СК-63" ( що знаходиться в самій папці Digitals) на виконання при нажатті на свою створену кнопку (щоб кожного раз не заходити в Сервис => Документы => Кадастровий план СК-63, а зробити швидкий визов), бо в мене чомусь він ВІДКРИВАЄТЬСЯ саме для редагування перемінних

ось такий код:

@OpenLog
$CountMap=@MapCount
@If $CountMap=0 then @FileNew Нова карта /Template=Кадастровий план СК-63.dmt
$ShortFilename=@Map.ClearShortFilename
@if $ShortFilename<>Кадастровий план СК-63 then $OM=@ActivateMap
$Papka=@ProgramFolder
@FileOpen $Papka\Кадастровий план СК-63.dmt
$TemplatesMap=@ActivateMap
@if $ShortFilename<>00000 then @Map.TempInteger $OM
$SC=@Map.SelCount
avatar
0
24 Микола • 01:17, 18.02.2021 [Матеріал]
Для запуску шаблону аналогічно як Сервіс-Документи є спеціальна функція:
@Map.DeselectAll
@Map.SelectLayer id70005
@ExecuteDocument Кадастровий план СК-63

Також можна використати:
@ExecuteDocumentFromFile $Papka\Кадастровий план СК-63.dmt
В такому разі шаблон може бути розташований де завгодно на ПК, якщо вказати повний шлях до нього.

Якщо не знаєте, як скриптом виконати певну дію з меню програми, то просто так і набирайте у вікні пошуку, де створюєте скрипт:
Сервіс... І вам видасть усі варіанти однойменного пункту меню. В тому числі і Сервіс|Документи|Ваш шаблон. Бо кожний пункт меню можна так і прописувати в скрипті кирилицею.
avatar
25 petrorudnitsky • 11:06, 18.02.2021 [Матеріал]
дуже дякую, тепер все працює відмінно
avatar
19 mrskorobagatyj • 17:33, 11.01.2021 [Матеріал]
Доброго вечора. Як встановити курсор у центр екрана.
$XY=@Window.Position CenterX CenterY ScreenScale
$X=@StringPart 1 $XY
$Y=@StringPart 2 $XY
$XY=$X $Y
$XY=%Library.ReplaceComma $XY
@Window.GotoXYZ $XY
Щось не виходить
avatar
0
20 Микола • 16:38, 12.01.2021 [Матеріал]
Доброго дня!
Я з цими функціями ніколи не працював. Але мені здаєтсья, що функція @Window.Position не читає центр екрану, а навпаки встановлює його за вказаними координатами, тобто, центрує карту так, щоб координати CenterX CenterY (треба задати свої) стали по центру і зразу масштабує в ScreenScale. Шукайте інший спосіб, щоб повернути координати центру екрану. Можна, наприклад, використати команду меню Правка - Спеціальна вставка - В центр екрану, скопіювавши перед тим щось в буфер обміну, а потім зчитати координати цього об'єкта.
avatar
21 mrskorobagatyj • 23:11, 12.01.2021 [Матеріал]
Ось на приклад.
.Point[1] $XY@Map.SelectLayer ID4943$T=@Map.SelectedObject@Map.DeselectAll@Map.SelectLayer ID70005$Parcel=@Map.SelectedObject $CadNum1=@Map.Object[$Parcel].CalculateFormula Parent[ID7000301](ID70003)$CadNum2=@Map.Object[$Parcel].CalculateFormula Parent[ID7000401](ID70004)$CadNum3=@Map.Object[$Parcel].Parameter[ID7000513]@if $CadNum3= then $CadNum3=____@if $CadNum3=0000 then $CadNum3=____$FullCadNum=@Concat $CadNum1:$CadNum2:$CadNum3@Text[1].Add $FullCadNum@Text[1].Copy$TT=@Text[1].Text@Map.Object[$T].TableText $TT@Map.RefreshObject $T]та через ScriptDebugger теж видно що читає
avatar
0
22 Микола • 21:52, 13.01.2021 [Матеріал]
Я це в скрипті Додавання ділянки з файлу JSON (версія 2) зробив ось так:
$N=@Map.NewObject ID$Layer
@Map.Object[$N].Point[1] 100 100 0
@Map.RefreshObject $N
@Map.SelectObject $N
@Map.Cut
Спеціальна вставка | У центр екрану
$SO=@Map.NextSelected $SO
avatar
17 ivanyuk6879 • 10:51, 17.06.2020 [Матеріал]
Добрий день, як змінити формат дати на "день.місяць.рік" (для дати рішення і видачі паспорта)
avatar
0
18 Микола • 20:18, 17.06.2020 [Матеріал]
Добрий день!
$DADR=2020-06-17

$D1=@StringPart 1-$DADR
$D2=@StringPart 2-$DADR
$D3=@StringPart 3-$DADR
$DADR="$D3.$D2.$D1"
$DADR=@DequoteText $DADR
avatar
12 elisium11 • 15:13, 26.05.2020 [Матеріал]
Добрий день. Підскажіть будьласка як прив`язати  скрипт до DMT-шаблону.
avatar
0
13 Микола • 18:15, 26.05.2020 [Матеріал]
Добрий день!
Відкрийте шаблон і перейдіть в меню Карта - Скрипт обробки подій. Там можна розмістити скрипт, який буде прив'язаний тільки до даної карти (шаблону). Але обов'язково на початку потрібно додати одну з умов його запуску, бо даний скрипт кнопкою запускатися не буде.
avatar
14 Анонімно • 22:01, 26.05.2020 [Матеріал]
Я мав на увазі: 
$A=1
$b=2
$c=$A+$b+1
@Dialog.Message $c - у спливаючому вікні показує відповідь (4)
якою функцією перенести значення змінної $c в мій dmt-шаблон?
Дякую.
avatar
0
15 Микола • 23:01, 26.05.2020 [Матеріал]
Куди саме в dmt-шаблон потрібно? В текстовий блок? Тоді треба спершу ідентифікувати цей текстовий блок по id шару.
Дана функція виділить цей об'єкт:
@Map.SelectLayer id111
(при цьому в даному id має бути тільки цей один об'єкт, бо інакше буде виділено зразу декілька об'єктів).
Потім потрібно отримати номер виділеного об'єкта:
$SO=@Map.SelectedObject
І аж після цього йому можна присвоїти потрібне значення:
@Map.Object[$SO].TableText $c

Якщо ж вам не важливо, в який об'єкт записувати значення. То можна просто прописати:
@SendChars $c<CR>
Таблиця | Текст...

тоді просто в центр екранку на карті буде вставлено текст.

Це ви мали на увазі? Чи ще щось інше?
avatar
16 elisium11 • 23:07, 26.05.2020 [Матеріал]
Так, Дякую!
avatar
10 vtaras73 • 14:11, 26.11.2018 [Матеріал]
Доброго дня.
Скажіть будь ласка чи можливо закріпити чи написати додатково в програму весь спект значень(тобто маленька бібліотека). суть є дана свердловина і коли підгрузивши кадастрову карту хотілося щоб появлялося віконечко де можна було внести багато даних-маленький звіт+скановані документи. Таке можливо зробити??
avatar
0
11 Микола • 22:17, 26.11.2018 [Матеріал]
не зрозумів вашого питання
про який весь спектр значень йде мова? ви хочете всі ці функції використати в одному шаблоні - то будь-ласка.
а щоб появилося спеціальне вікно із можливістю редагувати отримані дані  - це вже краще скриптами робити
avatar
9 kovboj • 09:46, 20.02.2018 [Матеріал]
а можна зробити, чи може все десь є готовий сткрипт щоб робив Витяг з ДЗК про ЗД
avatar
8 osaosaaso • 23:40, 18.02.2018 [Матеріал]
Так, я згідний з Вами. Але хотілося зробити все красиво і універсально.
Ось найшов такий топік від Гуру (пункт 2) ще за 2012 рік: _https://www.geosystema.net/forum/viewtopic.php?f=1&t=49&p=12277&hilit
P.S. В цьому скрипті можна обійтися і без цього, але в інших випадках, командах, кнопках - було б непогано мати таку функцію.
Дякую за увагу!
avatar
6 osaosaaso • 21:03, 18.02.2018 [Матеріал]
проблема ось в чому: хочу такий маленький скрипт зробити для переміщення. Від начебто працює, але коли кнопка "Переміщення" вже включена, тоді працює некоректно.
;перевірити статус кнопки включення режиму переміщення
;код ???
;якщо натиснута то виключити...
;Режим Збір
@SelectTab 1
;включає Режим конструювання.Переміщення
@ExecuteMenu spbMove
;зупинка для переміщення (з'єднання точок)
$Res=@Dialog.WaitBox З'єднай точки (клавіша "P"), за якими переміщати об'єкт||Натисни "F5" (закінчити об'єкт)|або "Продовжити"
;Якщо натиснуто Ок то робить "Закінчити об'єкт" (F5)
@If $Res=1 then @ExecuteMenu collectNewObject else @Goto %Continue
%Continue
;виключає Режим конструювання.Переміщення
@ExecuteMenu spbMove
;Режим Правка
@SelectTab 2
avatar
0
7 Микола • 23:07, 18.02.2018 [Матеріал]
А в чому проблема? Якщо ви будете користуватися для переміщення об'єктів тільки цією кнопкою, то вона у вас завжди буде активуватися і зразу деактивуватися.
avatar
5 osaosaaso • 20:58, 18.02.2018 [Матеріал]
Трохи не те (. Але дякую за швидку відповідь.
avatar
0
4 Микола • 20:51, 18.02.2018 [Матеріал]
Тільки кнопок на власних панелях інструментів:
@ToolbarButtonState Toolbarname.Buttonname - поверне 1, якщо кнопка натиснута і 0, якщо ні.

Актуально лише для кнопок з командами обробки подій, які змінюють стан кнопки на натиснута/не натиснута.
avatar
3 osaosaaso • 20:20, 18.02.2018 [Матеріал]
Чи є така команда, яка перевіряє статус натиснення чи ненатиснення кнопки в скрипті.?Наприклад "Переміщення" в зборі включене чи ні?
avatar
1 Рудня • 11:23, 22.09.2017 [Матеріал]
Добрий день Не знаю як звами звя затись 096-ХХХ-ХХ-ХХ
avatar
0
2 Микола • 16:33, 22.09.2017 [Матеріал]
добрий день!
мій емайл та телефон вказаний в кінці опису кожного скрипту в розділі "Придбати". В коментарях не хочу вказувати, бо якщо ґуґле проіндексує, то потім не відб'єшся від спаму
avatar