Головна » 2016 » Січень » 1 » Скриптові функції - Управління об'єктами карти
22:28
Скриптові функції - Управління об'єктами карти

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

Об'єкти, які видаляються з карти, продовжують існувати в її пам'яті під тими ж старими номерами. Але якщо видалені об'єкти очистити, або якщо змінити порядок відображення їх на карті (перенести на передній чи на задний плани), то тоді зміняться і порядкові номери об'єктів на карті. Щоб ідентифікувати об'єкт не залежно від його порядкового номеру, в кожного об'єкта існує ще свій унікальний ID, який, правда, використовується не так часто.

Майже всі маніпуляції з об'єктами відбуваються за їх порядковими номерами N.

В цьому розділі наведені основні скриптові функції для управління об'єктами на карті (створення, видалення та ідентифікація об'єктів, способи виділення, відображення, копіювання, вставлення, підрахунок кількості, визначення, в якому шарі та з якими параметрами об'єкт тощо)


Загальні функції

@Map.NewObject Layer [ID] - створює новий "пустий" (без геометрії) об'єкт у заданому шарі (Layer) і повертає його порядковий номер

@Map.DeleteObject Number - видаляє об'єкт за його номером

@Map.Count - повертає загальну кількість об'єктів на карті

@Map.LayerCount LayerIndex - повертає кількість об'єктів, які у заданому шарі

@Map.CalculateRange - оновлює список об'єктів карти після редагування та видалення.

@Map.CollectedObject - повертає номер поточного об'єкта, який збирається

@Map.ParentObject Number [ParentLayer] - повертає номер батьківського об'єкта, тобто найменшого полігону, який містить в собі даний полігон. Якщо розміри полігонів однакові, то батьківським вважається той, в якого менше id. Наприклад, для шару XML:Земельна ділянка батьківським буде шар XML:Кадастровий квартал.

@Map.Object[N].OverlayList [Layer] - повертає список усіх об'єктів, які геометрично спавпадають із вказаним (або тільки в конкретному шарі)

@Map.GetExternalNeighbors ObjectNumber - повертає список номерів об'єкта, які є суміжниками

@Map.GetObjectHeader Number - повертає ID (не номер) об'єкта і порядковий номер його шару у списку шарів

@Map.PutObjectHeader Number|ID|Layer - змінює ID об'єкта і порядковий номер його шару. Див. попередню функцію.

@Map.GetObjectParameters Number - повертає ID об'єкта, номер шару і список значень його параметрів

@Map.PutObjectParameters Number|ID|Layer|Count|List - змінює значення властивостей об'єкта. Див. попередню функцію

@Map.Object[N].Selected - повертає 1, якщо об'єкт виділений

Основні операції з ВИДІЛЕНИМИ об'єктами

@Map.SelectedObject - повертає номер виділеного об'єкта

@Map.SelCount - повертає число виділених об'єктів

@Map.NextSelected [LastNumber] - повертає номер виділеного об'єкта, або (якщо виділено декілька об'єктів) порядковий номер наступного з виділених об'єктів після того, номер якого вказаний як LastNumber (використовується для створення циклу по виділених об'єктах)

;цикл по виділених об'єктах
$NS=0
%StartNS
$NS=@Map.NextSelected $NS
@if $NS=0 then @Goto %EndNS
@Dialog.Message Номер виділеного об'єкта - $NS
@Goto %StartNS
%EndNS

@Map.Selected.List - повертає список усіх номерів виділених об'єктів

@Map.Selected.Copy - копіює в буфер обміну виділені об'єкти

@Map.Selected.Cut - вирізає в буфер обміну виділені об'єкти

@Map.Paste - вставляє об'єкти із буфера обміну на карту

@PasteFromMap MapIndex - вставляє виділені об'єкти із вказаної карти в поточну

@Map.Selected.ChangeLayer LayerIndex - міняє шар у виділених об'єктів

Виділення та зняття виділення

@Map.SelectObject Number - виділяє на карті об'єкт за вказаним порядковим номером (Number

@Map.DeselectObject Number - знімає виділення з об'єкта із заданим порядковим номером.

@Map.SelectAll - виділяє всі об'єкти карти

@Map.DeselectAll - знімає виділення з усіх об'єктів

@Map.SelectLayer Numbers - виділяє всі об'єкти, що знаходяться в шарі Numbers. Numbers - порядковий номер чи ID шару

@Map.SelectLayer 9

@Map.SelectLayer ID70005

@Map.SelectLayerByName LayerName - виділяє об'єкти шару за його назвою.

@Map.SelectLayer Квартал

@Map.SelectConnectedNeighbouring - виділяє об'єкти, які лежать близько до виділеного об'єкта

@Map.SelectNeighbouring Distance - виділяє об'єкти, які лежать на вказану відстань від виділеного об'єкта

@Map.SelectInsideSelected - виділяє об'єкти, які лежать всередині виділеного об'єкта

@Map.SelectConnected - виділяє об'єкти, які мають спільні точки із виділеним об'єктом

@Map.SelectByParameters Count|List - виділяє (шукає) об'єкти по значеннях їх параметрів. Count - кількість критеріїв пошуку, List - номер параметра і критерій пошуку (=,<,>,<>,~)

@Map.DeselectAll
@Map.SelectByParameters 1|0<0,05 
;виділить об'єкти, площа яких (параметр 0) менша за 0,05 га

@Map.DeselectAll
@Map.SelectByParameters 2|-1>0|0=0 
;виділить об'єкти за двома параметрами: якщо довжина (параметр -1) більша за 0, і якщо площа (параметр 0) дорівнює 0

@Map.SelectByParametersSelected Count|List - виділяє об'єкти із числа виділених по значенню їх параметрів

@Map.SelectObjectByForestID ID - виділяє на карті виділ із заданих id

@Map.InvertSelection [LayerIndex] - інвертує виділені об'єкти (можна задати в якому шарі)

Відображення на екрані

@Window.ShowSelected - показати виділені об'єкти на карті, центруючи екран на них

@Map.Selected.Refresh - оновлює на екрані виділені змінені об'єкти (бо деякі функції це автоматично не роблять)

@Map.RefreshObject Index - оновлює на екрані вказаний (Index) змінений об'єкт (бо деякі функції це автоматично не роблять)

@Map.Selected.BringToFront - змінює порядок відображення об'єктів, розміщуючи виділені на передній план

@Map.Selected.SendToBack - змінює порядок відображення об'єктів, розміщаючи виділені на задній план

@Map.SortByParameter ParameterIndex +/- - сортує виділені об'єкти карти (передній/задній план) по значенню будь-якого параметра ("+" - по зростанню, "-" - по спаданню). Може бути корисною для обробки об'єктів у певній послідовності. Увага!!! - зміна плановості об'єктів веде до зміни їх порядкових номерів.

@Map.SortByParameter 0 +
;посортує об'єкти за площею від меншого до більшого

@Map.MoveObjectAlongTrack [MoveSpeed] [UpdateInterval] - переміщує виділений об'єкт (повинен бути виділений першим) вздовж виділеного треку (полілінії, яка виділяється другою). Швидкість задається в км/год. Інтервал обновлення в сек.

@Map.DrawObject Number - відображає об'єкт із заданим порядковим номером

@Map.FilterLayerObjects [LayerIndex] [Filter] - приховує об'єкти карти, параметри яких не відповідають заданому критерію

Інші функції

@Map.Object[N].ID - повертає id об'єкта (параметр -6)

@Map.RenumberIDs [LastUsedID] - переприсвоює id об'єктам, починаючи з LastUsedID

@Map.Object[N].GoogleBLCode - повертає довготу/широту об'єкта у форматі Google Maps

@Map.CloneObject ObjIndex Layer [ID] - клонує об'єкт

@SplitMap Filename - ділить карту на 4 частини

 


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

 

Переглядів: 7583 | Додав: Микола | Рейтинг: 0.0/0
Всього коментарів: 17
avatar
15 rysia28011990 • 11:53, 04.02.2022
Доброго дня! Підскажіть будь ласка як можна вирішити наступне питання: земельна ділянка містить вирізані стовпи, при формуванні документації нумерація, що міститься у обмінному файлі одна та послідовна, а як формуємо документації, то вона відрізняється. Кожного разу доводиться виправляти її вручну..Як скорегувати дане питання, щоб нумерація відповідала обмінному файлу як на графіці так і в таблицях координат, що формуються..
avatar
0
16 Микола • 15:27, 04.02.2022
Доброго дня! Я не дуже розумію, про яку нумерацію ви запитуєте? Нумерацію точок? Чи контурів?
Якщо про нумерацію точок ділянки, то в Digitals дві точки завжди завжди випадають, оскільки вони відводяться на невидиму лінію, якою контур ділянки входить у вкраплений контур. Але аналогічно номери точок відображаються і в таблиці координат. Тобто, це нормально.
avatar
17 rysia28011990 • 16:40, 04.02.2022
Добре, дякую за роз'язнення!
avatar
13 SerjN • 11:49, 20.05.2021
Доброго дня,
Підкажіть якими функціями змінюються параметри таблиць - висота строк, ширина ячеєк, вирівнювання тексту... ?
avatar
0
14 Микола • 19:42, 20.05.2021
Доброго вечора. Доступ до властивості таблиць можна здійснювати через функцію @Map.SetObjectParamBuf

Зокрема, щоб змінити ширину колонок таблиці (приклад, коли в таблиці 7 колонок):


А так можна змінити висоту рядків таблиці:
avatar
11 magna949494 • 10:46, 08.07.2020
Здравствуйте подскажите пожалуйста как вы реализовали решение проблемы, когда я знаю центр объекта и мне нужно переместить в этот центр объекты, я знаю как сделать когда один объект, вообщем смысл таков как и в скрипте АКТ, когда я вставляю в другом масштабе, а далее мне нужно сместить их...
заранее спасибо.
avatar
0
12 Микола • 19:36, 08.07.2020
Функція @Map.Object[N].Move X Y [Z] - переміщує об'єкт на вказаний вектор
А щоб перемістити не один, а зразу декілька об'єктів, просто потрібно зробити цикл по виділених об'єктах:
Код
$NS=0
%StartNS
$NS=@Map.NextSelected $NS
@if $NS=0 then @Goto %EndNS
@Map.Object[$NS].Move X Y   
@Goto %StartNS
%EndNS
avatar
9 Анонімно • 00:04, 14.03.2020
Доброго вечора, можливо якось через скрипт додати додаткові параметри які знаходяться в списку ( наприклад номер ) в вкладку інфо.,  де раніше вони були відсутні. ( це буде частиною іншого скрипта) я просто нерозумію як правильно вказати параметр
avatar
0
10 Микола • 17:34, 14.03.2020
Код
;створюємо параметр ID50094 при його відсутності
$Par94=@Map.Parameters.Get ID50094
@if $Par94= then @Map.Parameters.Add 50094 5 Налаштування скрипту
;добавляємо параметр ID50094 в список доступних шару XML Земельна ділянка
$ParDil=@Map.Layers.GetValidParameters ID70005
@Map.Layers.SetValidParameters ID70005 $ParDil ID50094
avatar
7 magvlad55 • 13:24, 19.12.2019
Добрый день, кто-то может показать костыль, который копирует содержимое таблицы и вставляет в другую.
avatar
0
8 Микола • 15:16, 20.12.2019
Добрий день!
Це робиться за допомогою табличних функцій (детальніше тут - Текстові списки)
Код
@Map.DeselectAll
@Map.SelectLayer id111
$SO=@Map.SelectedObject
$Table=@Map.Object[$SO].TableText
@Map.DeselectAll
@Map.SelectLayer id222
$SO2=@Map.SelectedObject
@Map.Object[$SO2].TableText $Table

замість 111 та 222 поставте id ваших таблиць
avatar
5 kolkass • 17:42, 28.07.2018
Доброго дня!
Підкажіть чому не копіює в буфер?

$PrPath=@ProgramPath
@Map.SelectLayer ID70005
@Map.Copy
@Run $PrPath\Reports.exe -t$PrPath\Templates\Zayava_Architect.fr3
@goto %Exit

Дякую.
avatar
0
6 Микола • 21:48, 28.07.2018
якщо шлях до папки містить пробіли, то виклик Reports може не працювати
avatar
3 Kochyr • 16:29, 15.06.2017
наприклад карта стоїть на 3 місті (id 3) а перемістити на 1 місце (id 1) (звичайно і з вмістом карти).
avatar
0
4 Микола • 17:11, 15.06.2017
такої функції нема, можна тільки автоматично активувати ту чи іншу вкладку
avatar
1 Kochyr • 23:28, 14.06.2017
Микола Ярославович, як за допомогою скрипту створити карту, яка знаходиться під написом ФАЙЛ є кнопка СТВОРИТИ (аркуш з вибором шаблонів карти) та перемістити створену карту наприклад на 3-тю за рахунком карту?
avatar
0
2 Микола • 16:02, 15.06.2017
трохи не зрозумів, що значить перемістити створену карту. Поміняти місцями вкладки? Чи перемістити вміст карти?
як створити карту - дивіться в цьому розділі  - Файли, папки та карти.
avatar