Библиотека полезных скриптов

Зробив карту, де нанесені усі кадастрові квартали району. Заповнив по кожному полігону код КОАТУУ, зону, квартал, 7 останній цифр ділянки (напр.0030000), адресу ділянки у вигляді “с.Берегове,-,-,-”. Зробив кнопку з кодом, який виклав нище. Суть процедури в тому, що мені тепер не треба вручну заповнювати всі ці дані. Я малюю в шарі IN4 Квартал контур ділянки, суміжники і будівлі. Дальше нажимаю на кнопку і всі необхідні дані в кварталі заповнюються автоматично. В шарі IN4 ділянка заповнюється параметр SC і населений пункт адреси ділянки. Дальше для простоти використання автоматично відкривається форма заповнення адреси ділянки, де вже є заповнений населений пункт і мені залишається ще ввести вулицю і номер будинку. Потім відкриваються автоматично форми заповнення параметра NM і TX.

Але інколи (у відсотках 50) замість стандартних форм заповнення адреси, ПІП, цільового використання появляються якісь примітивні прості форми, як показано на рисунку нище. При чому та ж ділянка, в тому ж місці один раз проходить добре, а інший - ні. Це скоріше за все просто глюк програми. Але в чому причина?

Може просто код занадто великий? Якщо можна - спростіть його.

По ідеї ще хотів добавити автоматичне копіювання шару квартал, перевірка, яке цільове призначення ділянки. Якщо ОЖБ - то вставляємо з буфера, перейменовуємо на прибудинкову територію і даємо команду петля. Якщо ж ОСГ - то вставляємо і перейменовуємо на Рілля. Але бачу, що формула не дуже добре працює і тому нема сенсу продовжувати.

;Відкриваємо карту з кварталами і зонами $SourceMap=D:\Digitals\Чарівна карта.dmf ;Параметр, з якого будемо копіювати на Чарівній карті(код нас.пункту) $SrcParam=ID10010 ;параметр, в який будемо вставляти в нашу ділянку(код нас.пункту) $DestParam=ID10010 $N=@Map.SelCount @If $N<>1 @Break Виділіть один об'єкт ;запам'ятовуємо номер нашої карти $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;не закриваємо карту, якщо зовнішній полігон не знайдений @if $ParentObj=$ThisObj then @Break Ділянка залазить на інший квартал або поза межами району ; ;копіюємо значення параметра зовнішнього об'єкта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ; ;Параметр, з якого будемо копіювати на Чарівній карті(номер зони) $SrcParam=ID10020 ;параметр, в який будемо вставляти в нашу ділянку(номер зони) $DestParam=ID10020 $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;копіюємо значення параметра зовнішнього об'єкта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ; ;Параметр, з якого будемо копіювати на Чарівній карті(НОМЕР КВАРТАЛУ) $SrcParam=ID10030 ;параметр, в який будемо вставляти в нашу ділянку(НОМЕР КВАРТАЛУ) $DestParam=ID10030 ;запам'ятовуємо номер нашої карти $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;копіюємо значення параметра зовнішнього об'єкта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ;Параметр, з якого будемо копіювати на Чарівній карті(ГОЛОВА С/Р) $SrcParam=ID50035 ;параметр, в який будемо вставляти в нашу ділянку (ГОЛОВА С/Р) $DestParam=ID10070 ;запам'ятовуємо номер нашої карти $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;копіюємо значення параметра зовнішнього об'єкта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ;Копіюємо квартал, вставляємо і перейменовуємо на ділянку @Map.Copy @Map.Paste @Map.ChangeSelectedLayer 3 ;Параметр, з якого будемо копіювати на Чарівній карті(7 ЦИФР КАД.НОМЕРА) $SrcParam=ID50034 ;параметр, в який будемо вставляти в нашу ділянку(7 ЦИФР КАД.НОМЕРА) $DestParam=ID20010 ;запам'ятовуємо номер нашої карти $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;копіюємо значення параметра зовнішнього об'єкта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ;Параметр, з якого будемо копіювати на Чарівній карті (АДРЕСА ДІЛЯНКИ) $SrcParam=ID50036 ;параметр, в який будемо вставляти в нашу ділянку(АДРЕСА ДІЛЯНКИ) $DestParam=ID20020 ;запам'ятовуємо номер нашої карти $ThisMap=@ActivateMap ;копіюємо позначений об'єкт в буфер @Map.Copy ;відкриваємо Чарівну карту @FileOpen $SourceMap ;вставляємо у відкриту карту наш об'єкт @Map.Paste ;номер нашого об'єкта $ThisObj=@Map.SelectedObject ;полігон, в який об'єкт попав $ParentObj=@Map.ParentObject $ThisObj ;копируем значение параметра внешнего объекта $P=@Map.Object[$ParentObj].Parameter[$SrcParam] ;повертаємося до карти з нашою ділянкою @CloseMap @ActivateMap $ThisMap ;вставляємо зкопійований параметр $ThisObj=@Map.SelectedObject @Map.Object[$ThisObj].Parameter[$DestParam] $P ;обновляємо об'єкт @Map.RefreshObject $ThisObj ;викликаємо вікно заповнення адреси ділянки @Dialog.EditParameter ID20020 $ThisMap=@ActivateMap ;викликаємо вікно заповнення ПІП @Dialog.EditParameter ID20030 $ThisMap=@ActivateMap ;викликаємо вікно вибору цільового призначення @Dialog.EditParameter ID20040 $ThisMap=@ActivateMap
.JPG