Все про скрипти

Тоді можна якось так:

;скопіюйте в буфер текст, який потрібно обробити
@Text.Paste
$Text=@Text.Text
@Text[2].Text $Text
;
$FC=@Text.Count
@Progress.Start $FC Опрацювання…
$I=0
%Loop
$I=$I+1
$LineT1=@Text.Line[$I]
@Progress.StepBy
$rogress=@Progress.Canceled
@if $rogress=1 then @Goto %End
;
$FC2=@Text[2].Count
$O=$I
$zzz=0
%Loop2
$O=$O+1
@if $O>$FC2 then @Goto %End2
$Line=@Text[2].Line[$O]
@if $LineT1=$Line then $zzz=1
@if $LineT1=$Line then @Goto %End2
@Goto %Loop2
%End2
@if $zzz=0 then @Text[3].Add $LineT1
;
@if $I<$FC then @Goto %Loop
%End
@Progress.Stop
@Text[3].Copy
@Dialog.Message Виконано, текст скопійовано в буфер обміну

Доброго дня.
При експорті карти функцією FileSaveAsJPEG (Експорт у | JPG) вона зберігається не в заданому dpi (наприклад 300), а завжди у 96 dpi.
Якось можна виправити цей недолік?
Як варіант можна зберігати у FileSaveAsBMP (Експорт у | BMP), але тоді приходиться пере зберігати зображення у JPG

Перевірив в себе - FileSaveAsJPEG зберігає саме з тим DPI, що вказано у діалозі.
Алтернативою може бути @Map.SaveToTIF, потрібно лише задавати ім’я файлу з потрібним розширенням

$AM=@ActivateMap @if $AM=0 then @Break $CFN=@Map.ClearFilename $Filename=@Dialog.SaveFile *.jpg $CFN.jpg @if "$Filename"="" then @Break @Map.SaveToTIF 300 24 $Filename @Run $Filename

Доброго часу. Який кут повертає скриптова функція @Map.SlopeDirection X Y?
Наприклад який напрямок (кут) буде у точці на мапі (зелена відмітка)? Не можу зрозуміти який кут рахує функція.

По ідеї - близько 270. Тобто схил - західний.

70 нових скриптових функцій появилися в програмі Digitals за один рік від 26.04.2022 до 16.05.2023 року:

Кермування скриптом
@Map.Undo.SaveSelected - запам’ятовує поточну конфігурацію об’єктів, які виділені і повертає її після змін командою @Map.Undo
@Return ResultValue - звершує роботу скрипту і виводить значення результату
@SQL.Table.Delete Tablename Condition - видаляє таблицю через SQL
@SQLTab Query - виконує запит по таблиці SQL

Обробка подій
@Map.ExecuteLayerEvent ObjIndex EventName - виконує скрипт обробки подій шару для конкретного об’єкта
@Map.IsEventParameter ParamIndex - ? (без опису і не зрозуміле значення)

Карта
@Map.PasswordCount - повертає кількість паролів даної карти
@CloneMap MapIndex - клонує карту
@Map.CloseEmbedded - закриває всі вмонтовані карти

Управл. об’єктами карти
@Map.InvertSelection [LayerIndex] - інвертує виділені об’єкти (можна задати в якому шарі)
@Map.CloneObject ObjIndex Layer [ID] - клонує об’єкт
@Map.DrawObject Number - відображає об’єкт із заданим порядковим номером (не працює, або я не розумію, як вона має працювати)
@Map.FilterLayerObjects [LayerIndex] [Filter] - приховує об’єкти карти, параметри яких не відповідають заданому критерію
@Map.LayerCount LayerIndex - повертає кількість об’єктів, які у заданому шарі
@PasteFromMap MapIndex - вставляє виділені об’єкти із вказаної карти в поточну
@SplitMap Filename - ділить карту на 4 частини (для чого це?)

Геометрія об’єктів
@Map.ContourMap - створює полігон довкола всіх наявних об’єктів карти (за яким принципом створюється цей полігон?)
@Map.TileObject ObjIndex SizeX SizeY - покриває об’єкт прямокутними рамками b[/b]
@Map.DisableDuplicates 0/1 - включає заборону однакової геометрії об’єктів (з того, що я дослідив - це заборона вставляти в ту ж карту той самий об’єкт, це якась дивна функція, чи вона ще щось може?)
@Map.Object[N].Radius - повертає радіус, СКО і центр дуги (не вдалося зрозуміти, як це працює)
@Map.ImportGMProject Filename - імпортує точки із GM-проекту (що таке GM-проект?)

Групування об’єктів
@Map.DeselectGroup GroupName - знімає виділення з усіх об’єктів групи

Шари
@Map.Layers.CleanUp - видаляє шари карти, в яких нема жодного об’єкта
@Map.Layers.IDFromNames - присвоює шарам унікальні id за їх назвами
@Map.Layers.Truncate LastIndex - видаляє шари після LastIndex
@Map.SheetLayer - повертає номер шару з розбивкою карти на листи (номер якого шару?)

Параметри
@Map.Parameters.IDFromNames - присвоює параметрам унікальні id за їх назвами
@Map.Parameters.Truncate LastIndex - видаляє всі параметри після LastIndex
@Map.ParametersFromPDF ParamIndex PDFPath - читає інформацію про ділянку (json) з пдф
@MergeParametersFromMap MapIndex LayerIndex KeyParameter Mode(0/1) - заповнює параметри позначених об’єктів з карти MapIndex

Умовні знаки
@Map.ArrangeCalloutSymbols - впорядковує символи-виноски

Растри
@Map.OpenMultiOrthos - відкриває мультиорто (що це?)
@Map.CloseMultiOrthos - закриває мультиорто
@Map.GenerateRaster X Y Z GSD Mode Focus Width Height|Filename - генерує растр за вказаними параметрами (можна детальніше про цю функцію?)

Горизонталі та 3d-графіка
@CreateSideView ObjIndex - створює карту з виглядом збоку об’єктів, що всередині вказаного полігону (це в 3d?)

Робота з текстом
@AdjustCadastralNumber CadNum - додає двокрапки в кадастровий номер
@FromXMLDate yyyy-mm-dd - конвертує дату формату yyyy-mm-dd у дату формату dd.mm.yyyy
@ToXMLDate dd.mm.yyyy- конвертує дату формату dd.mm.yyyy у дату формату yyyy-mm-dd
@MoneyInWriting MoneyValue - сума прописом
@NGOIndex NGOYear [NowYear] - розраховує коефцієнт індексації нормативної грошової оцінки з року оцінки по поточний
@ReplaceComma - замінює кому на крапку у вказаному тексті
@ReplaceDot - заміню крапку на кому у вказаному тексті
@RoundMoney Formula - вираховує вираз за формулою з округленням кожного значення до двох знаків після коми
@StringCopy Index Count String - копіює Count символів тексту String, починаючи з символу Index
@StringDelete Index Count String - видаля Count символів з тексту String, починаючи з символу Index
@StringInsert SubStr|Index|String - вставляє текст SubStr в позицію Index тексту String
@StringLength String - повертає число символів в тексті String
@StringPos SubStr|String - повертає позицію частини тексту SubStr в тексті String
@StringReplace Old|New|String - замінює частину тексту на новий в тексті String
@Text[N].ExtractCadnumbers Text - знаходить в текстовому контейнері список кадастрових номерів вигляду XXXXXXXXXX:XX:XXX:XXXX
@Text[N].LeaveUnusual - залишає незвичайний текст b[/b]
@Text[N].RegExMatches Mask - повертає всі співпадіння тексту з маскою регулярного виразу
@Text[N].RemoveEmptyValues - видаляє рядки з пустим значенням вигляду Key=
@Text[N].RemoveOldFiles - видаляє із списку однакові старі файли з однаковою короткою назвою (що за старі файли?)
@Transliterate - виконує транслітерацію кириличного тексту латиницею
@UpcaseSurname Surname Name SecondName - переводить першу букву прізвища, імені та по-батькові у великий регістр
@UTF8ToURL Text - конвертує текст utf8 у URL Encoding виду %20%D0%97

Управління програмою Digitals
@MergeToolbars OutFile|InFile1|InFile2… - об’єднює декілька tlb-файлів в один
@StartWaiting - змінює курсор в програмі на вигляд, що позначає очікування до виклику функції @StopWaiting
@StopWaiting - змінює курсор в програмі на стандартний вигляд

Інші не зрозумілі (без опису) функції:

@IDFromName Mask Name - ?
@Map.Clotoide ObjectIndex R L Step - ?
@Map.CombineByParameters LayerIndex ParamIndex - ?
@Map.SmoothSelected - ?
@Map.ZB.ExtractFromPDF TextFileName - ?
@Map.ZB.UpdateRent LayerIndex - ?
@ZB.AddRegistry Filename - ?
@ZB.AddRent MapIndex - ?
@ZB.PDFToFiles KOATUU InputPath|OutputPath - ?​​​​​​​
@ZB.ToFiles InputPath|OutputPath - ?

Що це за функції ZB? Як розшифровується ZB?
Також, бачу, оновили функцію Dialog.EditFields Header|Var1=Value:Name,…
Але все одно не розумію, як вона працює. Що ставити замість Var? Звичайні змінні?
Добре було б, якби замість Var можна було ставити звичайні змінні, яким дане діалогове вікно присвоювало б відповідні значення.
Така функція досить потрібна, бо у вікні редагування параметрів не можна вводити кому, бо кома є роздільником параметрів. Але воно так не працює. Змінні залишаються неактивними в результаті роботи цієї функції. А загальним результатом роботи функції є 1.
Схожа ситуація із функцією @Text[N].ExplodeLine[N] var1,var2,… Як прописати зі змінні? Що в даних випадках потрібно вказувати взамін var?

Доброго дня.
Чомусь перестала працювати функція @Map.Object[N].Layer починаючи з версії програми від 16.10.2023
при команді @Map.Object[$N].Layer=-2 (перенести об’єкт у приховані), видає помилку Invalid layer - -2

Так. Дійсно - не працює @Map.Object[$N].Layer=-2 . Приходиться заміняти на @Map.Selected.ChangeLayer -2

Дивно що воно так працювало. Не передбачено було окремі об’єкти приховувати лише весь шар.
$LN=@Map.Selected.Layer
@Map.Layers.SetState $LN 3

Працювало, і було зручно перебирати об’єкти які мають перетин або попадають у контур (полігон).
За допомогою цієї функції об’єкти (у різних шарах) по одному переводились у приховані, щоб повторно не опрацьовувались у скрипті.
А взагальному функція працює, саме ця команда @Map.Object[$N].Layer=-2 перестала працювати. :frowning:

Доброго дня.
Підкажіть, як перевести значення отримане за допомогою функції @FileDate (дата файлу), у формат дати dd.mm.yyyy

Спробуйте, накинув на скору руку з сайтів 1 і 2, можливо щось підправити потрібно

$FDate=45316.79
$Trunc=@Calc Trunc("$FDate")
$Trunc=@DequoteText $Trunc
$d=$Trunc
$y24=$d/365.2422
$years=@Calc Trunc("$y24")+1900
$m24=Frac("$y24")*12
$months=@Calc Trunc("$m24")+1
$days=@Calc Trunc(Frac("$m24")*30)
; hours minutes seconds
$Frac=@Calc Frac("$FDate")
$Frac=@DequoteText $Frac
$t=$Frac
$t24=$t*24
$hours=@Calc Trunc("$t24")
$t24=@Calc Frac("$t24")
$minutes=@Calc Trunc("$t24"*60)
$t24=$t24-$minutes/60
$seconds=@Calc Trunc("$t24"*3600)
@Dialog.Memo Header|$days-$months-$years ($hours:$minutes:$seconds)

P.S. З датою, бачу, проблеми. Потрібно аналізувати місяць (не кожен має 30 днів)

Дякую за допомогу. :wink:
Теж замітив що останні дні місяця рахує невірно. Буду пробувати прив’язувати кількість днів до місяця

Поправив скрипт, рішення знайшов тут

$FDate=45316.79
; year month day
$Trunc=@Calc Trunc("$FDate")
$Trunc=@DequoteText $Trunc
$d=$Trunc
$l=$d+68569+2415019
$n=@Calc Trunc((4*"$l")/146097)
$l=@Calc "$l"-Trunc((146097*"$n"+3)/4)
$i=@Calc Trunc((4000*("$l"+1))/1461001)
$l=@Calc "$l"-Trunc((1461*"$i")/4)+31
$j=@Calc Trunc((80*"$l")/2447)
$day=@Calc "$l"-Trunc((2447*"$j")/80)
$l=@Calc Trunc("$j"/11)
$month=@Calc "$j"+2-(12*"$l")
$year=100*("$n"-49)+"$i"+"$l"
; hours minutes seconds
$Frac=@Calc Frac("$FDate")
$Frac=@DequoteText $Frac
$t=$Frac
$t24=$t*24
$hours=@Calc Trunc("$t24")
$t24=@Calc Frac("$t24")
$minutes=@Calc Trunc("$t24"*60)
$t24=$t24-$minutes/60
$seconds=@Calc Trunc("$t24"*3600)
; formating
$Len=@StringLength $month
@If $Len=1 Then $month=0$month
$Len=@StringLength $day
@If $Len=1 Then $day=0$day
$Len=@StringLength $hours
@If $Len=1 Then $hours=0$hours
$Len=@StringLength $minutes
@If $Len=1 Then $minutes=0$minutes
$Len=@StringLength $seconds
@If $Len=1 Then $seconds=0$seconds
;
@Dialog.Memo Header|$day-$month-$year ($hours:$minutes:$seconds)

Дякую Вам, саме те що потрібно!!! :smiley:

Доброго дня. Підкажіть як реалізувати наступну ідею:
Необхідне зробити немодальне окреме вікно у якому буде відображатися зміна площі в реальному часі.
Наприклад я тягну за точку земельної ділянки, а у цьому вікні відображається площа ділянки яка змінюється..