Сбор параметров для линии

Добрий день!
Добрый день! Столкнулся с такой трудностью, два точечных объекта на концах линии определяют одним параметром “№ опоры” заданным вручную, два параметра для линии “Номер начальной опоры” и “Номер конечной опоры” - приходится задавать вручную. Подскажите пожалуйста, возможно ли как-то автоматизировать действия с параметрами для линии?
drive.google.com/open?id=1cNuzR … zghaRcndU9

Скриптом - запросто. Тільки чому в першій точці лінії - кінцева опора, а в другій точці лінії - початкова опора. Залежності немає? Тоді - ніяк, тільки вручну.
P.S. Дайте ID 18-го і 19-го параметрів шару “повітряна лінія” та ID параметра “№ опоры” точкових об’єктів.
Автоматичне присвоєння значень 18-го і 19-го параметра слід виконувати при закінченні збору лінії? Чи полілінії - для кожного її сегмента?

Дякую за відподь! Надсилаю файл для прикладу.

Спочатку це все було скріпленими полілініями, але для збільшення інформативності карти при виводі її в таблицю Excel, все було розбито на прогони між опорами і цим прогонам треба присвоїти назву - номера опор, які він з’єднує, якщо це спростить задачу то номера опор повітряної лінії можна занести в один параметр через розділовий знак.
ID Номер початкової опори - 7016
ID Номер кінцевої опори - 7017
ID № Опори - 7024

P.S. З точками трапилася помилка - в першій має бути початкова, в другій кінцева.

Спочатку це все було скріпленими полілініями, але для збільшення інформативності карти при виводі її в таблицю Excel, все було розбито на прогони між опорами і цим прогонам треба присвоїти назву - номера опор, які він з’єднує, якщо це спростить задачу то номера опор повітряної лінії можна занести в один параметр через розділовий знак.
ID Номер початкової опори - 7016
ID Номер кінцевої опори - 7017
ID № Опори - 7024

P.S. З точками трапилася помилка - в першій має бути початкова, в другій кінцева.

Перепрошую, щойно сів писати - за хв15 викладу.;Позначені - всі лінійні об'єкти, в кінцевих точках яких лежать точкові ; об'єкти, що опинились на самому верхньому плані $CountSel=@Map.SelCount @If $CountSel=0 then @Break Позначте всі лінійні об'єкти, номери опор яких треба присвоїти. $SelObj=0 @Progress.Start $CountSel Виконання ;Перебір всіх позначених об'єктів %StartSelObj $SelObj=@Map.NextSelected $SelObj @If $SelObj=0 then @Goto %EndProc @Progress.StepBy ;;первірка на кількість точок (лише 2-і точки) $CntP=@Map.Object[$SelObj].Count @If $CntP<>2 then @Goto %StartSelObj ;;кінцеві точки лінійного об'єкта $P1=@Map.Object[$SelObj].Point[1] $P2=@Map.Object[$SelObj].Point[2] ;;точкові об'єкти та їхні значення параметра ID7024 $ObjP1=@Map.PointObject 0 $P1 @If $ObjP1=0 then @Goto %FindObjP2 $P7016=@Map.Object[$ObjP1].Parameter[ID7024] @Map.Object[$SelObj].Parameter[ID7016]=$P7016 %FindObjP2 $ObjP2=@Map.PointObject 0 $P2 @If $ObjP2=0 then @Goto %StartSelObj $P7017=@Map.Object[$ObjP2].Parameter[ID7024] @Map.Object[$SelObj].Parameter[ID7017]=$P7017 @Goto %StartSelObj %EndProc @Progress.Stop @Dialog.Message ВиконаноЗа умови, що в кінцевих точках кожного позначеного лінійного об’єкта немає точкових об’єктів відмінних від “опори”, значення параметра ID7024 вичитується з точкового об’єкта що лежить на кінцевій точці лінійного. В прикладі є точки лінійних, в яких немає точкових. Як бути? Можна дописувати. Перегляньте список значень параметрів після роботи скрипта (кнопка “Список” на вкладці “Інфо” правої панелі Digitals при активному параметрі). У списку будуть порожні значення для лінійних, кінцева точка яких не на опорі.

Велике Вам ДЯКУЮ! за скрипт. Все працює як годинник!

Доброго дня! Допоможіть будь-ласка з таким скриптом для лінії. Проблема така, потрібно передати параметр лінійного об’єкта - точковому, який лежить на другій точці лінійного, параметр лінійного - 7012, параметр точкового - 70121.

$C009=@Calc Char(9) $C009=@DequoteText $C009 $LineObject=@Map.NextSelected @If $LineObject=0 Then @Break Виберiть лiнiю $X=@Map.Object[$LineObject].Point[2].x $Y=@Map.Object[$LineObject].Point[2].y $PointObject=@Map.PointObject 0 $X $Y @If $PointObject=0 Then @Break Не знайдено точкового об'єкту в точцi $X, $Y $Param=@Map.Object[$LineObject].Parameter[ID7012] @Map.Object[$PointObject].Parameter[ID70121]=$Param $Message=@Concat Лiнiйний об'єкт:,$C009,$C009,$LineObject,|,Точковий об'єкт:,$C009,$PointObject,|,Параметр,$C009,$C009,$Param @Dialog.Message $Message

Працює, але тільки з однією поміченою лінією. Можете зробити, будь ласка, щоб скрипт виконувався для багатьох одночасно помічених об’єктів.

@Dialog.WaitBox Виберiть лiнiї
$SelectedCount=@Map.SelCount
$Count=0
$LineObject=0
@While $SelectedCount>0 %LoopSelected
$LineObject=@Map.NextSelected $LineObject
$PointsCount=@Map.Object[$LineObject].Count
@If $PointsCount<2 Then @Goto %SkipSelected
$X=@Map.Object[$LineObject].Point[2].x
$Y=@Map.Object[$LineObject].Point[2].y
$PointObject=@Map.PointObject 0 $X $Y
@If $PointObject>0 Then @Goto %NextSelected
$YN=@Dialog.Confirm Не знайдено точкового об'єкту в точцi $X, $Y|Пропустити i продовжити?
@If $YN=1 Then @Goto %SkipSelected
@Break
%NextSelected
$Param=@Map.Object[$LineObject].Parameter[ID7012]
@Map.Object[$PointObject].Parameter[ID70121]=$Param
@Map.RefreshObject $PointObject
$Count=$Count+1
%SkipSelected
$SelectedCount=$SelectedCount-1
%LoopSelected
;
@Dialog.Message Готово. Оброблено $Count лiнiй
;

Дякую!

Доброго дня! Підкажіть будь ласка, чи можливо за допомого скрипту пронумерувати об’єкти в порядку збільшення довжини ліній на яких вони лежать.

:slight_smile: можна все (або майже все). Скиньте, який потрiбно отримати результат, бо з питання не зовсiм зрозумiло суть задачi.

drive.google.com/file/d/1z3CbKa … sp=sharing

Тобто я виконую такі дії:
-створюю полілінію (вітку) від початку (ктп) в послідовності існуючої нумерації опор, потім за таким принципом наношу наступні;
-командою Правка - Добавить узлы - додаю на полілінії Опори;
-командою Инфо - Калькулятор - Последовательная нумерация - присвоюю почергово по вітках номера опорам, спочатку нумеруюючи опори на коротчих вітках.
Підкажіть, чи можливо автоматизувати скриптами процес нанесення опор і присвоєння їм номерів?

Спробуйте, чи все вiрно

Дякую! Все майже супер! Є тільки два нюанси:

  • чи можливо зробити так щоб скрипт виконувався тільки на позначених лініях чи біля позначених об’єктах типу КТП ( ID слоя 11120)?;
  • чи можливо залишити лінії в первісному вигляді, тобто не змінюючи їх скриптом?.

Пiдкорегував попереднiй варiант для ручного вибору, коли є вiдмова в дiалозi вибору шару з лiнiями

drive.google.com/file/d/1FWAEkC … sp=sharing

Вибачаюсь за те що так часто Вас турбую, але в мене виникло ще декілька питань:

  • можете поправити скрипт так щоб нумерація опор слідувала спочатку по вітці, а потім вже по наступній за довжиною вітці, тому що інколи є помилкові значення;
    Трапляються стуації в яких на мою думку помилкові значення неминучі, допоможіть будь ласка із наступним скриптом, який би відповідав таким пунктам:
  • можливість задавати порядок нумерації по вітках певним параметром вітки вручну (наприклад: порядковий номер вітки);
  • можливість перенумеровувати вже існуючі опори на вітках.

Доброго дня. Зробив панель з наступними кнопками:

  1. Автоматична нумерацiя опор (попереднiй скрипт)
  2. Напiвавтоматична нумерацiя опор (новий скрипт, iнший пiдхiд)
  3. Корегування значення параметру (для змiни нумерацiї опор чи iнших параметрiв: +10 - додати 10 до iснуючого значення, -10 - вiдповiдно, вiдняти)

P.S. Щоб не засмiчувати форум, пропозицiї i зауваження пишiть в ЛС. Попереднiй скрипт заберу з форуму, оскiльки вiн є в даному повiдомленнi.