Запрос на функцию

Получилось, дякую

Прохання до розробників програми

Чи можливо збільшити граничну кількість рядків у скрипті понад 289 рядків?

А то навіть з використанням кількох функцій @ExecuteScript і з видаленням усіх коментарів вже не влазиться весь скрипт

Обмеження кількості строк скрипта збільшено з 256 до 2048. Завантажуйте нову версію.

Хотелось бы иметь возможность сохранять настройки для печати под разные форматы листов.
или функцию для изменения значений параметров в Ged.ini

Стосовно функції для зміни значень параметрів в файлі Ged.ini.
Підтримую запит на функцію. Такий-собі аналог функції API для роботи з файлами ініціалізації :wink:. Значення параметрів будуть вступати в силу при наступному запуску Digitals :question:

Шановні розробники. Прошу Вас, будь-ласка, дайте відповідь на питання: чи можливо забезпечити повноцінну заборону оновлення карти на екрані функцією @Map.BeginUpdate тоді, коли скрипт “натикається” на функцію @Map.SplitMultiPolygon :question:

Для прикладу - короткий опис скрипта, що забезпечує “правильність” створення складних полігонів (тих, які містять дірки). В скрипті відбувається перебір всіх полігональних об’єктів карти (2-3 тисячі штук) з прогресом. Для кожного з полігонів:

  1. якщо об’єкт - збірний полігон, застосовується @Map.SplitMultiPolygon - роз’єднати збірний;
  2. для кожного з роз’єднаних застосовується @ExecuteMenu SpbSplit - розділити складний;
  3. для всіх розділених в пункті 2 застосовується @ExecuteMenu spbCombine - складний полігон;
  4. для всіх роз’єднаних в пункті 1 застосовується @ExecuteMenu spbJoin - з’єднати в збірний.

Щоб не спостерігати на протязі 4-ох хвилин блимання карти на екрані, можна відкрити й активувати порожню карту на час виконання скрипта (тоді оновлюватиметься тільки прогрес, рядок стану і права панель). Але-ж функція @ExecuteMenu працює тільки з активною картою?

Может ли кто-то помочь возникла потребность в номерации участков карти по списку
;Читаем текст с файла
@Text[1].Load D:\классификатор.txt
;Помещаем 2 строку в переменую I
$I=2
;В переменую К помещаем кол-во строк файла
$K=@Text[1].Count
;Старт цикла
%Start
;Задаем условие для перехода по строкам
$I=$I+1
;Задаем условие если $I=$K то прекращаем цикл
@If $I=$K then @Break
;В переменую $z заносим соответсвующую строку из файл
$z=@Text[1].line[$I]
;Помечаем обьекты которые есть в карте и соответсвуют файлу
@Map.SelectByParameters 1|61=$z
;Ссылка перехода
@Goto %Start
Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)

;Читаем текст с файла, в переменую К помещаем кол-во строк файла $K=@Text[1].Load D:\классификатор.txt ;Присвоюєм значення змінній $I=0 ;Старт цикла %Start ;Задаем условие для перехода по строкам $I=$I+1 ;Задаем условие если $I>$K то прекращаем цикл @If $I>$K then @Break ;В переменую $z заносим соответсвующую строку из файл $z=@Text[1].line[$I] ;Помечаем обьекты которые есть в карте и соответсвуют файлу @Map.SelectByParameters 1|61=$z ;Ссылка перехода @Goto %Start В такому випадку читаються всі рядки текстового файла классификатор.txt, з першого до останнього.

[/code]В такому випадку читаються всі рядки текстового файла классификатор.txt, з першого до останнього.
[/quote]
Да но когда скрипт читает строки текстового файла он помещает эту строку в пременую $z которая в свою очередь попадает в функцию @Map.SelectByParameters 1|61=$z тоесть помечает участки на карте которые соотвествуют строке текстового файла \классификатор.txt\ и далее нужно пронумеровать помеченые участки в каком либо параметре /Автонумерация вправо-вниз\ и сделать ето нужно поочередно. Например:
;По текстовому файлу прочитали первую строку и занесли в переменую $z
;Подставили $z @Map.SelectByParameters 1|61=$z
;Нашли и пометили 5 совпадающих участков
;Эти участки пронумеровали /Автонумерация вправо-вниз\ начиная с 1
;По текстовому файлу прочитали вторую строку и занесли в переменую $z
;Подставили $z @Map.SelectByParameters 1|61=$z
;Нашли и пометили 19 совпадающих участков
;Эти участки пронумеровали /Автонумерация вправо-вниз\ начиная с №пследнего прунумерованого участка+1 тоесть с 6
И так нужно пронумеровать все участки карты

;Читаем текст с файла, в переменую К помещаем кол-во строк файла $K=@Text[1].Load D:\классификатор.txt ;Присвоюєм значення змінній $I=0 ;На всяк-випадок знімаєм позначку з усіх @Map.DeselectAll ;Старт цикла %Start ;Задаем условие для перехода по строкам $I=$I+1 ;Задаем условие если $I>$K то прекращаем цикл @If $I>$K then @Break ;В переменую $z заносим соответсвующую строку из файл $z=@Text[1].line[$I] ;Помечаем обьекты которые есть в карте и соответсвуют файлу @Map.SelectByParameters 1|61=$z ;Робим активним параметр 62 (для прикладу - 62) @SendChars <ESC> @Dialog.EditParameter 62 ;Визначаєм перше доступне значення параметра 62 $MaxParam=@Map.MaxParameterValue 62 ;;якщо в жодного об'єкта немає заповненого значення параметра 62 - перше доступне значення 1 @If $MaxParam= then $MaxParam=0 @If $MaxParam= then @Goto %YesNumber ;;визначаєм десятковий розділювач системи $Separ=@DecimalSeparator ;;якщо десятковий розділювач кома - відділяєм цілу частину, інакше число сприймається як рядок @If $Separ=, then $MaxParam=@StringPart 1,$MaxParam ;;перше доступне значення - наступне після максимального %YesNumber $MaxParam=$MaxParam+1 ;Номеруєм позначені в активному параметрі 62 [popCalculator|Автонумерація (вниз)] @SendChars $MaxParam<CR> @ExecuteMenu Autonumberingrightdown1 ;На всяк-випадок знімаєм позначку з усіх @Map.DeselectAll ;Ссылка перехода @Goto %Start

[code]
Спасибо работает только
Первые участки с целевым 01 Землі сільськогосподарського призначення нумерует правильно (строка 1 класификатора)(номерует с 1 до 39);
Далее проверяет целевые 01.01 и так далее (ненаходит) доходит до 02.01 находит номерует но выдает нете номера начинает 4040, 4041, 4042 и т.д. когда доходит до целевого 14.02 выдает такие цифры 4791479247914851, 4791479247914852, а всего участков в даной карте 1146. тоесть последний номер должен быть 1146.
Большое спасибо за помощь

Перепрошую, знайшов помилку: що значить не проганяти скрипт на "живому"прикладі

$K=@Text[1].Load D:\классификатор.txt $I=0 @Map.DeselectAll %Start $I=$I+1 @If $I>$K then @Break $z=@Text[1].line[$I] @Map.SelectByParameters 1|61=$z @SendChars <ESC> @Dialog.EditParameter 62 $MaxParam=@Map.MaxParameterValue 62 @If $MaxParam= then $ValParam=0 @If $MaxParam= then @Goto %YesNumber $Separ=@DecimalSeparator @If $Separ=, then $ValParam=@StringPart 1,$MaxParam else $ValParam=$MaxParam %YesNumber $ValParam=$ValParam+1 @SendChars $ValParam<CR> @ExecuteMenu Autonumberingrightdown1 @Map.DeselectAll @Goto %StartЯкщо й цей не запрацює - дайте карту, довідник. Або користуйтесь @OpenLog, @CloseLog [Filename]

Неполучается сбрасываю карту и класификтор буду очень признателен если сможете помочь)
.txt (12.9 KB)
.dmf (563 KB)

От, тепер працює$Separ=@DecimalSeparator $K=@Text[1].Load D:\классификатор.txt $I=1 @SelectTab 3 @Map.DeselectAll $Asc=@Dialog.WaitBox Позначте одну з ділянок, активуйте поле значення параметра 1, в якому має бути номер ділянки, на вкладці 'Інфо' @If $Asc=0 then @Break Перервано користувачем @Map.BeginUpdate @Progress.Start $K Номерую ділянки %Start $I=$I+1 @If $I>$K then @Progress.Stop @If $I>$K then @Map.EndUpdate @If $I>$K then @Break Заномеровано ділянки @Progress.StepBy $z=@Text[1].line[$I] @Map.SelectByParameters 1|61=$z $Selcount=@Map.SelCount @If $Selcount=0 then @Goto %Start $MaxParam=@Map.MaxParameterValue 1 @If $MaxParam= then $ValParam=0 @If $MaxParam= then @Goto %YesNumber @If $Separ=, then $ValParam=@StringPart 1,$MaxParam else $ValParam=$MaxParam %YesNumber $ValParam=$ValParam+1 @Map.EndUpdate @SendChars $ValParam<CR> @ExecuteMenu Autonumberingrightdown1 @Map.BeginUpdate @Map.DeselectAll @Goto %StartДовгенько мучився з нестабільною роботою . Дивно, чомусь прокол з функцією @Dialog.EditParameter ParamIndex, що у скрипті активувала параметр 1 для введення. Номерація ділянок вниз виконується в активному, на момент номерації, параметрі. Вихід один: активувати параметр 1 в ході очікування скрипта.
Помітив що, якщо включена заборона оновлення карти, не посилається повідомлення $ValParam наступному діалоговому вікну:
@SendChars $ValParam
@ExecuteMenu Autonumberingrightdown1

Прикріпив відео Demo.exe (1.04 MB)

Спасибо большое. Работает проверил на других картах :smiley:

ув. разработчики, у меня вопрос по функции “Загрузка из Интернет”:
возможно ли получить информацию по участкам при загрузке публичной кадастровой карты не клацая на каждый отдельно, а как-то автоматизировать этот процес.
Просто нужна информация с большого количества участков, а клацать каждый не весьма приятное и быстрое занятие :smiley:
буду благодарен за помощь :sunglasses:

Возможно ли сделать так чтобы при приближении, к примеру, до масштаба 1:10 автоматически включался вид|черновой?

Ребята помогите пожалуйста можна ли при помощи скриптов реализовать проверку слоев на карте
Например: Проверить наличие слоев Квартал, Дилянка , Угодие есть ли они на карте. я сделал ето так
@Map.SelectLayer id10000
$K=@Map.SelCount
@if $K=0 then @Break Отсутствует слой квартал Остановлено
@Map.DeselectAll
@Map.SelectLayer id20000
$D=@Map.SelCount
@if $D=0 then @Break Отсутствует слой ділянка Остановлено
@Map.DeselectAll
@Map.SelectLayer id30000
Можна ли реализовать ето по другому?

@Map.Layers.ObjectCount [Number]

Якщо скриптом, треба функція %Events.OnScaleChange - обробка події зміни масштабу карти на екрані.