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

Скрипт, який формує Список межових знаків, переданих на зберігання.
Коротко про суть роботи. Формується карта з DMT шаблону. Послідовно запитує виділити закріплені межові знаки на ділянці і будівлю чи ЛЕП, до якої знак прив’язаний промірами. Потім результат промірів і інше заносяться в текстову табличку.
Тут можна переглянути відео - [url]Відеопрезентації скриптів і загалом роботи в Digitals - #12 від fendak]

@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 Вибрати | Усі що примикають ;

Чудова ідея!!! :smiley: А як зробити можливість пропуску прив’язки межових знаків, наприклад якщо їх тільки два, а не чотири???
І в якому шарі і який вигляд повинні мати ЛЕПи??? Вставляю як “лінії ЛЕП” показую вікно з помилкою, якщо два стовба то все нормально.

Підкажіть як зробити щоб всі данні можна було заповнювати в одному діалоговому вікні, (адреса, ПІБ, цільове та ін. )

Міцного здоров’я всім!

Загляньте у закладку “Параметры” та прогляньте маску ввода, наприклад у параметру AD.
Тобто модифікувавши, або створивши новий, параметр, Ви отримаєте параметр із потрібними Вам тегами.
Пішов таким же шляхом, якщо цікаво побачити реалізацію - пропоную скачати Part1.exe з Відеопрезентації скриптів і загалом роботи в Digitals - #13 від user228.

Сподіваюсь, дана інформація Вам стане в нагоді.
Дякую.

Написав сприпт, який автоматично визначає в якій стороні світу знаходиться межовий знак
Тут можна переглянути відео, як воно працює

Перед запуском відриваємо IN4

;Перевірка наявності відкритої карти
$CountMap=@MapCount
@If $CountMap=0 then @Break Для роботи скрипту потрібен IN4
$N=@Map.Count
@If $N=0 @Break На карті немає об'єктів
@Map.DeselectAll
@Map.SelectLayer ID20000
$N=@Map.SelCount
@If $N=0 @Break На карті немає ділянок
@Map.Selected.CreateCaptions -9 0 2 1 1 2 3
@Map.Copy
$SelObj=@Map.SelectedObject
$Range=@Map.Object[$SelObj].GetMinMax
$MinX=@StringPart 1 $Range
$MinX=%Library.ReplaceComma $MinX
$MinX=$MinX-1
$MaxX=@StringPart 4 $Range
$MaxX=%Library.ReplaceComma $MaxX
$MaxX=$MaxX+1
$CntrX=@Calc ($MinX+$MaxX)/2
$MinY=@StringPart 2 $Range
$MinY=%Library.ReplaceComma $MinY
$MinY=$MinY-1
$MaxY=@StringPart 5 $Range
$MaxY=%Library.ReplaceComma $MaxY
$MaxY=$MaxY+1
$CntrY=@Calc ($MinY+$MaxY)/2
;
$Ser1X=@Calc ($MaxX-$MinX)/3+$MinX
$Ser2X=@Calc ($MaxX-$MinX)/3+$Ser1X
$Ser1Y=@Calc ($MaxY-$MinY)/3+$MinY
$Ser2Y=@Calc ($MaxY-$MinY)/3+$Ser1Y
;
@FileNew Визначення сторони світу
@Map.Layers.SetAttributes 2 0 0 16777215 30 1 16777215 0 Courier_New 80 0 -2147483640
$P1=@Map.NewObject ID10000
@Map.Object[$P1].AddPoint $CntrX $CntrY
@Map.Object[$P1].AddPoint $Ser2X $MinY
@Map.Object[$P1].AddPoint $MaxX $MinY
@Map.Object[$P1].AddPoint $MaxX $Ser1Y
@Map.Object[$P1].AddPoint $CntrX $CntrY
@Map.Object[$P1].Delete 1
;
$P2=@Map.NewObject ID10000
@Map.Object[$P2].AddPoint $CntrX $CntrY
@Map.Object[$P2].AddPoint $MaxX $Ser1Y
@Map.Object[$P2].AddPoint $MaxX $Ser2Y
@Map.Object[$P2].AddPoint $CntrX $CntrY
@Map.Object[$P2].Delete 1
;
$P3=@Map.NewObject ID10000
@Map.Object[$P3].AddPoint $CntrX $CntrY
@Map.Object[$P3].AddPoint $MaxX $Ser2Y
@Map.Object[$P3].AddPoint $MaxX $MaxY
@Map.Object[$P3].AddPoint $Ser2X $MaxY
@Map.Object[$P3].AddPoint $CntrX $CntrY
@Map.Object[$P3].Delete 1
;
$P4=@Map.NewObject ID10000
@Map.Object[$P4].AddPoint $CntrX $CntrY
@Map.Object[$P4].AddPoint $Ser2X $MaxY
@Map.Object[$P4].AddPoint $Ser1X $MaxY
@Map.Object[$P4].AddPoint $CntrX $CntrY
@Map.Object[$P4].Delete 1
;
$P5=@Map.NewObject ID10000
@Map.Object[$P5].AddPoint $CntrX $CntrY
@Map.Object[$P5].AddPoint $Ser1X $MaxY
@Map.Object[$P5].AddPoint $MinX $MaxY
@Map.Object[$P5].AddPoint $MinX $Ser2Y
@Map.Object[$P5].AddPoint $CntrX $CntrY
@Map.Object[$P5].Delete 1
;
$P6=@Map.NewObject ID10000
@Map.Object[$P6].AddPoint $CntrX $CntrY
@Map.Object[$P6].AddPoint $MinX $Ser2Y
@Map.Object[$P6].AddPoint $MinX $Ser1Y
@Map.Object[$P6].AddPoint $CntrX $CntrY
@Map.Object[$P6].Delete 1
;
$P7=@Map.NewObject ID10000
@Map.Object[$P7].AddPoint $CntrX $CntrY
@Map.Object[$P7].AddPoint $MinX $Ser1Y
@Map.Object[$P7].AddPoint $MinX $MinY
@Map.Object[$P7].AddPoint $Ser1X $MinY
@Map.Object[$P7].AddPoint $CntrX $CntrY
@Map.Object[$P7].Delete 1
;
$P8=@Map.NewObject ID10000
@Map.Object[$P8].AddPoint $CntrX $CntrY
@Map.Object[$P8].AddPoint $Ser1X $MinY
@Map.Object[$P8].AddPoint $Ser2X $MinY
@Map.Object[$P8].AddPoint $CntrX $CntrY
@Map.Object[$P8].Delete 1
@Window.Refresh
@Map.Paste
@Map.SelectLayer ID20000
@Map.AddNodes 30
@Map.DeselectAll
Перевірка | Очистить удаленные объекты
@Map.SelectAll
Вигляд | Показати позначені
$MC=@Map.Count
$N=0
@Map.DeselectAll
%Pochatok
$N=$N+1
$LID=@Map.Object[$N].LayerID
@If ($LID=10000) then @Goto %Next
$NomerT=@Map.Object[$N].Parameter[91]
@Map.SelectObject $N
@Map.Selected.Cut
@Map.Paste
$ParentObj=@Map.ParentObject $N
@if $ParentObj=$P1 then @Dialog.Message Точка $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P2 then @Dialog.Message Точка $NomerT знаходиться на півночі ділянки
@if $ParentObj=$P3 then @Dialog.Message Точка $NomerT знаходиться на північному сході ділянки
@if $ParentObj=$P4 then @Dialog.Message Точка $NomerT знаходиться на сході ділянки
@if $ParentObj=$P5 then @Dialog.Message Точка $NomerT знаходиться на південному сході ділянки
@if $ParentObj=$P6 then @Dialog.Message Точка $NomerT знаходиться на півдні ділянки
@if $ParentObj=$P7 then @Dialog.Message Точка $NomerT знаходиться на південному заході ділянки
@if $ParentObj=$P8 then @Dialog.Message Точка $NomerT знаходиться на заході ділянки
@Map.DeselectAll
%Next
@if $N<$MC then @Goto %Pochatok

Ошибка скрипта в Скрипти [3]
$NomerT=@Map.Object[$N].Parameter[91]

значиь у вас номери точок не у параметрі 91, а в якомусь іншому. Поміняйте у скрипті на свій. Замініть у цьому радяку:
$NomerT=@Map.Object[$N].Parameter[91]
91 на свій номер.
Для цього запустіть скрипт до помилки. Потім виділіть точку на межовому знаку і подивіться, який номер параметру, де вписаний номер точки.

У мене номер 85, його і поставив, помилка зникла але сторони як на відєо не сворює.
Я далекій від скриптів, але дуже всім вдячен за кожен викладений скрипт. :smiley:

Відредагував скрипт. Вже повинно все працювати.
Не працювало на тих комп’ютерах, де у Windows десятковим роздільником була не крапка, а кома. Тепер без різниці.

Тепер працює! Дякую за увагу :laughing: .

обновіть програму Digitals

Скрипт працює з функцією Вставка-Проміри і схема, і вставляє її, автоматично підтверджуючи.
Але зверніть увагу, що якщо Ви перед цим користувалися цією функцією і замість Промірів використовували Схему вимірів, то вам перед запуском скрипту необхідно знову виставити функцію на Проміри.

І при цьому запустити функцію, а не просто вибрати, щоб вона обновилася.
Тобто, малюєте два об’єкти і створюєте проміри-проміри/тільки до видимих-ОК

Міцного здоров’я всім!

Сподіваюсь, що даний скрипт таки буде корисним.
Допомагає працювати із текстовими файлами, знаходячи відповідні значення.
Конкретніше.

Маємо \Path\Файл.txt наступного вмісту:

Стовпчик1 Стовпчик2 Стовпчик3 СтовпчикN+1

Значення11 Значення21 Значення31 …
Значення12 Значення22 Значення32 …
Значення13 Значення23 Значення33
Значення1+N Значення2+N Значення3+N …

Нехай значенням Параметра1 об’єкта карти є величина “Значення13” (наприклад - Нська сільська рада, що міститься у файлі Файл.txt). А нам необхідно передати у Параметр2, нехай цього ж об’єкту, значення КОАТУУ, котре теж міститься у Файл.txt, відповідно у “Значення33”.

------------Зберігаємо нижченаведене, як бібліотеку d:\Digitals\Library\Назва.dsf-----------------
;—Const----------------------------------------------
$Tab=@Calc Char(9)
$Tab=@DequoteText $Tab
$ProgramFolder=@ProgramFolder
;—InputData--------------------------------------------
$InputValue=$PARAMETERS
$ListName=@StringPart 1,$InputValue
$ColumnNumb=@StringPart 2,$InputValue
$FindWhat=@StringPart 3,$InputValue
$ResColumnNumb=@StringPart 4,$InputValue
;—Find&Result-----------------------------------------------
$List=@Text[1].Load $ProgramFolder\Lists$ListName.txt
$ListCount=@Text[1].Count
$i=2
%Begin
$Line=@Text[1].Line[$i]
$ListElement=@StringPart $ColumnNumb$Tab$Line
@If $FindWhat=$ListElement then @Goto %Find
$i=$i+1
@If $i<=$ListCount then @Goto %Begin
%Find
$OutValue=@StringPart $ResColumnNumb$Tab$Line
$RESULT=$OutValue
-------------------------Кінець бібліотеки-------------

А у тілі основного скрипту пишемо:

$FindWhat=Нська сільська рада
$FindValue=%Library.Назва Файл,1,$FindWhat,3
@Map.Object[N].Parameter[N]=$FindValue

Файл - назва текстового файлу (без розширення);
1 - номер стовпця текстового файлу, у котрому знаходиться значення, на основі якого будемо шукати (на прикладі - Нська сільська рада);
$FindWhat - відповідно, саме значення, на основі котрого шукатимемо;
3 - номер стовпця у текстовому файлі, де знаходиться саме потрібне нам значення (на прикладі - КОАТУУ).

Бібліотека працюватиме тільки з табульованими списками, тобто розділювач стовпчиків - tab (дев’ять пробілів).

Дякую.

Скачал обновления и прочитал, что добавили интересную функцию “@Map.CreateLayout”. Сначала попробовал сам разобраться, но выдавало мне чистый лист. Нашел на форуме пример использования этой функции, тоже самое, формирует пустой лист. Может что делаю не так?
Пример:
$SO=@Map.SelectedObject
@if $SO=0 then @Break Нужно пометить объект
$X=@Map.Object[$SO].Parameter[-4]
$Y=@Map.Object[$SO].Parameter[-3]
$PP=@ProgramPath
$FN=$PP\Pictures\Викопіювання.bmp
@Map.CreateLayout $X $Y 605 605 0 300 8 $FN
@Run $FN

А в “сервис\документы” - вообще такой функции или шаблона не нашел.
После обновления в папке “С:\Digitals\Update\Templates” - пусто, “С:\Digitals\Update\Favorites” - пусто. То-есть: никаких шаблонов скачано не было!

Скачайте шаблоны из сообщения. Поместите их в папку Digitals\Templates
Автоматическое обновление не затрагивает карты/шаблоны/справочники. Исключения: datums.ini и xmlnormal.dmf

Доброго дня. Из какого сообщения скачивать? по сылке только скрипт. Или я чего то не понимаю?

Сори все получилось!!!

Доброго всім дня! У когось є скрипт для заповнення шару “Обмеження”. Якщо є змога, то поділіться :slight_smile:

sirenko_s_a Спробуйте цей.

;ОБМЕЖЕННЯ
$KolObmez=@Map.SelectLayer ID70008
@if $KolObmez=0 then @Break На земельній ділянці обмеження відсутні
$MC=@Map.Count
@Map.DeselectAll
$I=0
%Loop
$I=$I+1
;Знаходимо ID шару
$LID=@Map.Object[$I].LayerID
@if $LID<>70008 then @Goto %Continue
@Map.SelectObject $I
Вид | Показать помеченные
;Вибір параметрів
$Tip=@Dialog.Select Вкажіть тип обмеження|ЛЕП|Прибережні захисні смуги вздовж річок, навколо водойм та на островах|…
@if $Tip=ЛЕП then @goto %LEP
@if $Tip=Прибережні захисні смуги вздовж річок, навколо водойм та на островах then @goto %Voda
%LEP
@Map.Selected.SetParameter 83 01.05 Охоронна зона навколо (вздовж) об’єкта енергетичної системи
@Map.Selected.SetParameter 84 Охоронна зона навколо (вздовж) об’єкта енергетичної системи
@Map.Selected.SetParameter 86 01Закон України “Про землі енергетики та правовий режим спеціальних зон енергетичних об’єктів”2010-07-09
@Map.Selected.SetParameter 87
@Map.Selected.SetParameter 91
@Dialog.Message Для виділеного об’єкта вибрано тип обмеження:“$Tip”
@goto %konecobmez
%Voda
@Map.Selected.SetParameter 83 05.02 Прибережні захисні смуги вздовж річок, навколо водойм та на островах
@Map.Selected.SetParameter 84 Прибережні захисні смуги вздовж річок, навколо водойм та на островах
@Map.Selected.SetParameter 86 01Водний кодекс1995-07-06
@Map.Selected.SetParameter 87
@Map.Selected.SetParameter 91
@Dialog.Message Для виділеного об’єкта вибрано тип обмеження:“$Tip”
%konecobmez
;Знімаємо помітку з об’єкту
@Map.DeselectObject $I
%Continue
@if $I<$MC then @Goto %Loop

P/s/ мова Digitals: російська

Як прив`язатись до ID, бо до номеру шару дає помилку

Пробував цей скрипт, працює, але чому не в кольорі створює .ВМП???