Зробив карту, де нанесені усі кадастрові квартали району. Заповнив по кожному полігону код КОАТУУ, зону, квартал, 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