Аналитика
http://geosystema.net/forum/

Сбор параметров для линии
http://geosystema.net/forum/viewtopic.php?f=1&t=19787
Страница 1 из 2

Автор:  Denys Sanitskyi [ 22 апр 2020 13:48 ]
Заголовок сообщения:  Сбор параметров для линии

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

Автор:  voha [ 22 апр 2020 13:58 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
...два точечных объекта на концах линии определяют одним параметром "№ опоры" заданным вручную, два параметра для линии "Номер начальной опоры" и "Номер конечной опоры" - приходится задавать вручную. Подскажите пожалуйста, возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Скриптом - запросто. Тільки чому в першій точці лінії - кінцева опора, а в другій точці лінії - початкова опора. Залежності немає? Тоді - ніяк, тільки вручну.
P.S. Дайте ID 18-го і 19-го параметрів шару "повітряна лінія" та ID параметра "№ опоры" точкових об'єктів.
Автоматичне присвоєння значень 18-го і 19-го параметра слід виконувати при закінченні збору лінії? Чи полілінії - для кожного її сегмента?

Автор:  Denys Sanitskyi [ 22 апр 2020 14:34 ]
Заголовок сообщения:  Re: Сбор параметров для линии

voha писал(а):
Denys Sanitskyi писал(а):
...два точечных объекта на концах линии определяют одним параметром "№ опоры" заданным вручную, два параметра для линии "Номер начальной опоры" и "Номер конечной опоры" - приходится задавать вручную. Подскажите пожалуйста, возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Скриптом - запросто. Тільки чому в першій точці лінії - кінцева опора, а в другій точці лінії - початкова опора. Залежності немає? Тоді - ніяк, тільки вручну.
P.S. Дайте ID 18-го і 19-го параметрів шару "повітряна лінія" та ID параметра "№ опоры" точкових об'єктів.
Автоматичне присвоєння значень 18-го і 19-го параметра слід виконувати при закінченні збору лінії? Чи полілінії - для кожного її сегмента?


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

Вложения:
test_file.dmf [25.14 Кб]
Скачиваний: 465

Автор:  Denys Sanitskyi [ 22 апр 2020 14:43 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
voha писал(а):
Denys Sanitskyi писал(а):
...два точечных объекта на концах линии определяют одним параметром "№ опоры" заданным вручную, два параметра для линии "Номер начальной опоры" и "Номер конечной опоры" - приходится задавать вручную. Подскажите пожалуйста, возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Скриптом - запросто. Тільки чому в першій точці лінії - кінцева опора, а в другій точці лінії - початкова опора. Залежності немає? Тоді - ніяк, тільки вручну.
P.S. Дайте ID 18-го і 19-го параметрів шару "повітряна лінія" та ID параметра "№ опоры" точкових об'єктів.
Автоматичне присвоєння значень 18-го і 19-го параметра слід виконувати при закінченні збору лінії? Чи полілінії - для кожного її сегмента?


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


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

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

Автор:  Denys Sanitskyi [ 22 апр 2020 15:56 ]
Заголовок сообщения:  Re: Сбор параметров для линии

voha писал(а):
Denys Sanitskyi писал(а):
...два точечных объекта на концах линии определяют одним параметром "№ опоры" заданным вручную, два параметра для линии "Номер начальной опоры" и "Номер конечной опоры" - приходится задавать вручную. Подскажите пожалуйста, возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Скриптом - запросто. Тільки чому в першій точці лінії - кінцева опора, а в другій точці лінії - початкова опора. Залежності немає? Тоді - ніяк, тільки вручну.
P.S. Дайте ID 18-го і 19-го параметрів шару "повітряна лінія" та ID параметра "№ опоры" точкових об'єктів.
Автоматичне присвоєння значень 18-го і 19-го параметра слід виконувати при закінченні збору лінії? Чи полілінії - для кожного її сегмента?


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

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

Автор:  voha [ 22 апр 2020 21:50 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
...возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Перепрошую, щойно сів писати - за хв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 при активному параметрі). У списку будуть порожні значення для лінійних, кінцева точка яких не на опорі.

Автор:  Denys Sanitskyi [ 23 апр 2020 07:29 ]
Заголовок сообщения:  Re: Сбор параметров для линии

voha писал(а):
Denys Sanitskyi писал(а):
...возможно ли как-то автоматизировать действия с параметрами для линии?
https://drive.google.com/open?id=1cNuzR ... zghaRcndU9
Перепрошую, щойно сів писати - за хв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 при активному параметрі). У списку будуть порожні значення для лінійних, кінцева точка яких не на опорі.


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

Автор:  Denys Sanitskyi [ 07 май 2020 14:59 ]
Заголовок сообщения:  Re: Сбор параметров для линии

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

Автор:  Руслан Пархуць [ 07 май 2020 23:20 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
Доброго дня! Допоможіть будь-ласка з таким скриптом для лінії. Проблема така, потрібно передати параметр лінійного об'єкта - точковому, який лежить на другій точці лінійного, параметр лінійного - 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

Автор:  Denys Sanitskyi [ 08 май 2020 08:33 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Руслан Пархуць писал(а):
Denys Sanitskyi писал(а):
Доброго дня! Допоможіть будь-ласка з таким скриптом для лінії. Проблема така, потрібно передати параметр лінійного об'єкта - точковому, який лежить на другій точці лінійного, параметр лінійного - 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


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

Автор:  Руслан Пархуць [ 08 май 2020 11:37 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
Доброго дня! Допоможіть будь-ласка з таким скриптом для лінії. Проблема така, потрібно передати параметр лінійного об'єкта - точковому, який лежить на другій точці лінійного, параметр лінійного - 7012, параметр точкового - 70121.
...
Denys Sanitskyi писал(а):
Працює, але тільки з однією поміченою лінією. Можете зробити, будь ласка, щоб скрипт виконувався для багатьох одночасно помічених об'єктів.

Код:
@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й
;

Автор:  Denys Sanitskyi [ 08 май 2020 13:33 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Дякую!

Автор:  Denys Sanitskyi [ 08 май 2020 14:00 ]
Заголовок сообщения:  Re: Сбор параметров для линии

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

Вложения:
Noname_test.dmf [22.59 Кб]
Скачиваний: 416

Автор:  Руслан Пархуць [ 08 май 2020 17:40 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Denys Sanitskyi писал(а):
Доброго дня! Підкажіть будь ласка, чи можливо за допомого скрипту пронумерувати об'єкти в порядку збільшення довжини ліній на яких вони лежать.
:) можна все (або майже все). Скиньте, який потрiбно отримати результат, бо з питання не зовсiм зрозумiло суть задачi.

Автор:  Denys Sanitskyi [ 11 май 2020 19:28 ]
Заголовок сообщения:  Re: Сбор параметров для линии

Руслан Пархуць писал(а):
Denys Sanitskyi писал(а):
Доброго дня! Підкажіть будь ласка, чи можливо за допомого скрипту пронумерувати об'єкти в порядку збільшення довжини ліній на яких вони лежать.
:) можна все (або майже все). Скиньте, який потрiбно отримати результат, бо з питання не зовсiм зрозумiло суть задачi.


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

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

Страница 1 из 2 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/