Шановні розробники. Я ніяк не можу знайти залежності у виникненні дуже неприємної помилки. “Індекс виходить за межі допустимого”, якщо позначивши полігон в карті застосувати пункт меню Сервіс>Розрізати по полігону.
Подивіться, будь-ласка, у прикріпленій карті. Дуже дошкуляє така прикрість. ToolsSplitByPolygon.dmf (14.5 KB)
Як обновити об’єкти карти, щоби всі видалені до того не перераховувалися в циклі?
А то видає помилку, що не знайдений параметр такий то, тому, що самого об’єкта на карті (наприклад одної з ділянок) вже нема. Але в циклі він все одно продовжує рахуватися. Якщо виділити все і скопіювати на нову карту, то там працює добре.
Зіткнувся з наступною проблемою.
В карті є об’єкти, що містять слої ХМЛ-зона, ХМЛ-квартал, ХМЛ-ділянка. Необхідно залишити ХМЛ-ділянку та при цьому передати в певний параметр цілий кад. номер.
Використовую такий скрипт:
Скрипт працює. Та при кількості обєктів більше 1000, ДУЖЕ повільно. А обєктів в мене десятки тисяч…
Чи є можливість прискорити роботу? Можливо, видаляючи опрацьоване (при копіюванні в нову карту ХМЛ-ділянки).
Заздалегідь вдячний.
Не застосовуйте формулу, застосуйте функцію @Map.ParentObject Number [ParentLayer] для визначення батьківського об’єкта, вичитайте з батьківського об’єкта значення необхідного параметра і складіть їх до купи функцією @Concat Str
Величезне дякую! Суттєво скоротило час!
Таким шляхом піти теж думка була, та шукав Child-об’єкти а не Parent. Не здогадався з іншого боку зайти.
Єдині “глюки” трапляються при наявності однакових об’єктів, небхідно перевіряти, а також однакові об’єкти але з різною кількістю точок (останні вручну, не піддаються контролю на однаковість).
Ось скрипт, може кому стане в нагоді. Для обробки великих кількостей хмл, з метою “зліпити” кад. номер в хмелі та записати в один параметр одного шару (в моєму випадку в ХМЛ-ділянку в параметр “Опис земельної ділянки”).
Потрібно знайти і виділити об’єкти карти за значенням їх параметра.
А саме, знайти об’єкти (в шарі 13 (id70009) XML Угіддя) із значенням параметру 96 (id7000901) Код угіддя, що дорівнює 17
Є функція @Map.SelectByParametersSelected Count|List, але я не розумію, що вписувати замість Count. Чи це можна зробити тільки за допомогою циклу, перераховуючи кожний об’єкт карти? Невже простіше ніяк?
Виникла така проблема при використанні фунції @Map.Selected.CreateCaptions.
В скрипті пишу @Map.Selected.CreateCaptions -9 0 2 0 0 1 1 - це ділянка ліворуч.
Та, що праворуч - отримана через значок “Создание/удаление подписей”.
Параметри, з моєї точки зору - однакові.
ParamIndex Orientation Position VAlign HAlign ShiftX ShiftY
ParamIndex: -9 (Номери точок)
Orientation: 0 (Ориентация - Горизонтальная)
Position: 2 (Позиция в углу объекта)
VAlign: 0 (Вертикальная привязка - По центру)
HAlign: 0 (Горизонтальная привязка - По центру)
ShiftX: 1 (Смещение, мм - Горизонтальное)
ShiftY: 1 (Смещение, мм - Вертикальное)
Можливо я не вірно трактую аргументи функції?
В чому помилка?
Насправді, з підписами не все так просто. Параметри функці @Map.Selected.CreateCaptions ShiftX і ShiftY вказують на зміщення від точки в мм карти не центра підпису, а лівого верхнього кута підпису (якщо я не помиляюсь). Мабуть варто писати скриптову функцію, яка буде вичитувати властивості підписів @Map.Object[N].Caption[N] DX DY DZ Orientation Align Size (DX DY DZ - зміщення в метрах натури від центра об’єкта). Ця-ж функція має: до вичитаних значень зміщення по X додати пару метрів, а від зміщення по Y - відняти пару метрів; після цього - встановити розраховані властивості підписів функцією @Map.Object[N].Caption[N] DX DY DZ Orientation Align Size.
Чому при використанні функції @Map.In4ToXML усі коди угідь, крім дробових (35.1, 35.3..) збільшуються на 3? Наприклад, було 05 Рілля, стає 08, було 14 стає 17 і т.д.
Те ж саме відбувається коли просто копіюю угіддя з IN4 і вставляю в XML
тоді @Map.CancelUpdate - означає вихід з блоку Map.BeginUpdate…Map.EndUpdate, що є рівнозначним @Map.EndUpdate RefreshAlways
якщо в блоці Map.BeginUpdate…Map.EndUpdate викликається “функціональний” скрипт, то оновлення карти заборонене й на час виконання функціонального скрипта, але тоді заборонено оновлення лише робочої зони головного вікна Digitals
вікна, що викликаються функціями з групи Dialog й функцією @Progress.Start Count Title, мають поводити себе як модальні (для прикладу - вікно прогреса @Progress.Start Count Title має бути активним при забороненому оновленні карти), наприклад