Скрипт, який формує Список межових знаків, переданих на зберігання.
Коротко про суть роботи. Формується карта з DMT шаблону. Послідовно запитує виділити закріплені межові знаки на ділянці і будівлю чи ЛЕП, до якої знак прив'язаний промірами. Потім результат промірів і інше заносяться в текстову табличку.
Тут можна переглянути відео -
http://www.geosystema.net/forum/viewtopic.php?f=1&t=19487&p=35688#35688Код:
@Map.DeselectAll
@Map.SelectLayer ID20000
Документи | Опис меж
Вигляд | Показати всі
$OpysMezh=@ActivateMap
$Dialog=@Dialog.WaitBox вставте, якщо треба ЛЕП чи КЖ/КН і натисніть "Продовжити"
@If $Dialog=0 @Break
@Map.DeselectAll
@Map.SelectLayer ID20000
@Map.AddNodes 30
@Map.DeselectAll
;11111111111111111111111111
@Map.DeselectAll
%ZnovuT1
$Dialog=@Dialog.WaitBox Виберіть 1-й закріплений межовий знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$T=@Map.SelCount
$ThisTochka=@Map.SelectedObject
$nomer1=@Map.Selected.GetParameter id70003
$x1=@Map.Selected.GetParameter -4
$y1=@Map.Selected.GetParameter -3
@If $T=1 @Goto %NextT1
@If $T<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $T>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuT1
%NextT1
$Storona1=@Dialog.Select Вкажіть в якій стороні знаходиться ця точка|північній|південній|західній|східній|північно-західній|північно-східній|південно-західній|південно-східній
%ZnovuO1
$Dialog=@Dialog.WaitBox Виділіть будинок чи ЛЕП, до яких буде прив'язаний перший меж.знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$O=@Map.SelCount
$ThisObj=@Map.SelectedObject
$LID=@Map.Object[$ThisObj].LayerID
$ObjVyd1=кутів кам’яної будівлі
@If $LID=12 then $ObjVyd1=опор ЛЕП
@If $O=1 @Goto %NextO1
@If $O<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $O>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuO1
%NextO1
@Map.SelectObject $ThisObj
@Map.SelectObject $ThisTochka
@Map.Selected.Copy
@FileNew
@Map.Paste
@Window.Refresh
@Map.SelectAll
Вигляд | Показати позначені
@Map.DeselectAll
;послідовно виділяємо спочатку точку, а потім будівлю чи ЛЕП
@Map.SelectLayer ID2000000036
$MC=@Map.Count
$N1=0
%Select1
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID=2000000036) then @Goto %Nextsel1
@Map.SelectObject $N1
%Nextsel1
@if $N1<$MC then @Goto %Select1
Вставка | Промеры и схема...
$P1=@Map.Object[3].Parameter[-1]
$P2=@Map.Object[4].Parameter[-1]
$P3=
$MC=@Map.Count
@If $MC=4 @Goto %NextP3
$P3=@Map.Object[5].Parameter[-1]
%NextP3
@Map.DeselectAll
@Map.SelectObject 3
@Map.SelectObject 4
@If $MC=4 @Goto %NextSel1
@Map.SelectObject 5
%NextSel1
@Map.Selected.Copy
$ThisMap=@ActivateMap
@CloseMap [$ThisMap]
@Map.Paste
;22222222222222222222222222222222
@Map.DeselectAll
%ZnovuT2
$Dialog=@Dialog.WaitBox Виберіть 2-ий закріплений межовий знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$T=@Map.SelCount
$ThisTochka=@Map.SelectedObject
$nomer2=@Map.Selected.GetParameter id70003
$x2=@Map.Selected.GetParameter -4
$y2=@Map.Selected.GetParameter -3
@If $T=1 @Goto %NextT2
@If $T<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $T>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuT2
%NextT2
$Storona2=@Dialog.Select Вкажіть в якій стороні знаходиться ця точка|північній|південній|західній|східній|північно-західній|північно-східній|південно-західній|південно-східній
%ZnovuO2
$Dialog=@Dialog.WaitBox Виділіть будинок чи ЛЕП, до яких буде прив'язаний другий меж.знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$O=@Map.SelCount
$ThisObj=@Map.SelectedObject
$LID=@Map.Object[$ThisObj].LayerID
$ObjVyd2=кутів кам’яної будівлі
@If $LID=12 then $ObjVyd2=опор ЛЕП
@If $O=1 @Goto %NextO2
@If $O<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $O>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuO2
%NextO2
@Map.SelectObject $ThisObj
@Map.SelectObject $ThisTochka
@Map.Selected.Copy
@FileNew
@Map.Paste
@Window.Refresh
@Map.SelectAll
Вигляд | Показати позначені
@Map.DeselectAll
;послідовно виділяємо спочатку точку, а потім будівлю чи ЛЕП
@Map.SelectLayer ID2000000036
$MC=@Map.Count
$N1=0
%Select2
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID=2000000036) then @Goto %Nextsel2
@Map.SelectObject $N1
%Nextsel2
@if $N1<$MC then @Goto %Select2
Вставка | Промеры и схема...
$P4=@Map.Object[3].Parameter[-1]
$P5=@Map.Object[4].Parameter[-1]
$P6=
$MC=@Map.Count
@If $MC=4 @Goto %NextP6
$P6=@Map.Object[5].Parameter[-1]
%NextP6
@Map.DeselectAll
@Map.SelectObject 3
@Map.SelectObject 4
@If $MC=4 @Goto %NextSel2
@Map.SelectObject 5
%NextSel2
@Map.Selected.Copy
$ThisMap=@ActivateMap
@CloseMap [$ThisMap]
@Map.Paste
;333333333333333333333333333333333
@Map.DeselectAll
%ZnovuT3
$Dialog=@Dialog.WaitBox Виберіть 3-ій закріплений межовий знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$T=@Map.SelCount
$ThisTochka=@Map.SelectedObject
$nomer3=@Map.Selected.GetParameter id70003
$x3=@Map.Selected.GetParameter -4
$y3=@Map.Selected.GetParameter -3
@If $T=1 @Goto %NextT3
@If $T<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $T>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuT3
%NextT3
$Storona3=@Dialog.Select Вкажіть в якій стороні знаходиться ця точка|північній|південній|західній|східній|північно-західній|північно-східній|південно-західній|південно-східній
%ZnovuO3
$Dialog=@Dialog.WaitBox Виділіть будинок чи ЛЕП, до яких буде прив'язаний другий меж.знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$O=@Map.SelCount
$ThisObj=@Map.SelectedObject
$LID=@Map.Object[$ThisObj].LayerID
$ObjVyd3=кутів кам’яної будівлі
@If $LID=12 then $ObjVyd3=опор ЛЕП
@If $O=1 @Goto %NextO3
@If $O<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $O>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuO3
%NextO3
@Map.SelectObject $ThisObj
@Map.SelectObject $ThisTochka
@Map.Selected.Copy
@FileNew
@Map.Paste
@Window.Refresh
@Map.SelectAll
Вигляд | Показати позначені
@Map.DeselectAll
;послідовно виділяємо спочатку точку, а потім будівлю чи ЛЕП
@Map.SelectLayer ID2000000036
$MC=@Map.Count
$N1=0
%Select3
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID=2000000036) then @Goto %Nextsel3
@Map.SelectObject $N1
%Nextsel3
@if $N1<$MC then @Goto %Select3
Вставка | Промеры и схема...
$P7=@Map.Object[3].Parameter[-1]
$P8=@Map.Object[4].Parameter[-1]
$P9=
$MC=@Map.Count
@If $MC=4 @Goto %NextP9
$P9=@Map.Object[5].Parameter[-1]
%NextP9
@Map.DeselectAll
@Map.SelectObject 3
@Map.SelectObject 4
@If $MC=4 @Goto %NextSel3
@Map.SelectObject 5
%NextSel3
@Map.Selected.Copy
$ThisMap=@ActivateMap
@CloseMap [$ThisMap]
@Map.Paste
;444444444444444444444444444444444
@Map.DeselectAll
%ZnovuT4
$Dialog=@Dialog.WaitBox Виберіть 4-ий закріплений межовий знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$T=@Map.SelCount
$ThisTochka=@Map.SelectedObject
$nomer4=@Map.Selected.GetParameter id70003
$x4=@Map.Selected.GetParameter -4
$y4=@Map.Selected.GetParameter -3
@If $T=1 @Goto %NextT4
@If $T<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $T>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuT4
%NextT4
$Storona4=@Dialog.Select Вкажіть в якій стороні знаходиться ця точка|північній|південній|західній|східній|північно-західній|північно-східній|південно-західній|південно-східній
%ZnovuO4
$Dialog=@Dialog.WaitBox Виділіть будинок чи ЛЕП, до яких буде прив'язаний другий меж.знак і натисніть "Продовжити"
@If $Dialog=0 @Break
$O=@Map.SelCount
$ThisObj=@Map.SelectedObject
@Map.SelectObject $ThisTochka
$LID=@Map.Object[$ThisObj].LayerID
$ObjVyd4=кутів кам’яної будівлі
@If $LID=12 then $ObjVyd4=опор ЛЕП
@If $O=1 @Goto %NextO4
@If $O<1 @Dialog.Message Ви не вибрали жодного будинку чи ЛЕП
@If $O>1 @Break Не можна вибирати одночасно більше одного буднику чи ЛЕП
@Goto %ZnovuO4
%NextO4
@Map.SelectObject $ThisObj
@Map.SelectObject $ThisTochka
@Map.Selected.Copy
@FileNew
@Map.Paste
@Window.Refresh
@Map.SelectAll
Вигляд | Показати позначені
@Map.DeselectAll
;послідовно виділяємо спочатку точку, а потім будівлю чи ЛЕП
@Map.SelectLayer ID2000000036
$MC=@Map.Count
$N1=0
%Select4
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID=2000000036) then @Goto %Nextsel4
@Map.SelectObject $N1
%Nextsel4
@if $N1<$MC then @Goto %Select4
Вставка | Промеры и схема...
$P10=@Map.Object[3].Parameter[-1]
$P11=@Map.Object[4].Parameter[-1]
$P12=
$MC=@Map.Count
@If $MC=4 @Goto %NextP12
$P12=@Map.Object[5].Parameter[-1]
%NextP12
@Map.DeselectAll
@Map.SelectObject 3
@Map.SelectObject 4
@If $MC=4 @Goto %NextSel4
@Map.SelectObject 5
%NextSel4
@Map.Selected.Copy
$ThisMap=@ActivateMap
@CloseMap [$ThisMap]
@Map.Paste
;створення підписів
@Map.SelectLayer ID2000000033
$result=@Calc - межовий знак $nomer1 закріплений в $Storona1 частині
@Map.Selected.ChangeParameter ID130003 $result
$result=@Calc межі земельної ділянки на відстані $P1 м, $P2 м
@Map.Selected.ChangeParameter ID130004 $result
$result=@Calc та $P3 м від $ObjVyd1
@Map.Selected.ChangeParameter ID130005 $result
$result=@Calc - межовий знак $nomer2 закріплений в $Storona2 частині
@Map.Selected.ChangeParameter ID130006 $result
$result=@Calc межі земельної ділянки на відстані $P4 м, $P5 м
@Map.Selected.ChangeParameter ID130007 $result
$result=@Calc та $P6 м від $ObjVyd2
@Map.Selected.ChangeParameter ID130008 $result
$result=@Calc - межовий знак $nomer3 закріплений в $Storona3 частині
@Map.Selected.ChangeParameter ID130009 $result
$result=@Calc межі земельної ділянки на відстані $P7 м, $P8 м
@Map.Selected.ChangeParameter ID130010 $result
$result=@Calc та $P9 м від $ObjVyd3
@Map.Selected.ChangeParameter ID130011 $result
$result=@Calc - межовий знак $nomer4 закріплений в $Storona4 частині
@Map.Selected.ChangeParameter ID130012 $result
$result=@Calc межі земельної ділянки на відстані $P10 м, $P11 м
@Map.Selected.ChangeParameter ID130013 $result
$result=@Calc та $P12 м від $ObjVyd4
@Map.Selected.ChangeParameter ID130014 $result
@Window.Refresh
;Каталог координат
@Map.DeselectAll
@Map.SelectLayer ID2000000034
$result=@Calc № X Y
@Map.Selected.ChangeParameter ID130003 $result
$result=@Calc $nomer1 $x1 $y1
@Map.Selected.ChangeParameter ID130004 $result
$result=@Calc $nomer2 $x2 $y2
@Map.Selected.ChangeParameter ID130005 $result
$result=@Calc $nomer3 $x3 $y3
@Map.Selected.ChangeParameter ID130006 $result
$result=@Calc $nomer4 $x4 $y4
@Map.Selected.ChangeParameter ID130007 $result
;номерація
@Map.DeselectAll
@Map.SelectLayer ID2000000035
@Map.Selected.ChangeParameter ID130003 $nomer1
@Map.Selected.ChangeParameter ID130004 $nomer2
@Map.Selected.ChangeParameter ID130005 $nomer3
@Map.Selected.ChangeParameter ID130006 $nomer4
$result=$nomer1, $nomer2, $nomer3 та $nomer4
@Map.Selected.ChangeParameter ID130007 $result
@Window.Refresh
;видалення зайвих точок
$MC=@Map.Count
$N1=0
@Map.DeselectAll
%Pochatok
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID<>2000000036) then @Goto %Next
$P1=@Map.Object[$N1].Parameter[91]
@If $P1=$nomer1 then @Goto %Next
@If $P1=$nomer2 then @Goto %Next
@If $P1=$nomer3 then @Goto %Next
@If $P1=$nomer4 then @Goto %Next
@Map.SelectObject $N1
@Map.Selected.Delete
%Next
@if $N1<$MC then @Goto %Pochatok
;виділяємо ділянку і все інше, щоб потім пересунути чи вставити в іншому масштабі
@Map.DeselectAll
@Map.SelectLayer ID20000
$MC=@Map.Count
$N1=0
@Map.DeselectAll
%Pochatok2
$N1=$N1+1
$LID=@Map.Object[$N1].LayerID
@If ($LID<=30000) then @Goto %Next2
@If ($LID>=60999) then @Goto %Next2
@Map.SelectObject $N1
%Next2
@if $N1<$MC then @Goto %Pochatok2
@Map.SelectLayer ID12
Вибрати | Усі що примикають
;