Аналитика http://geosystema.net/forum/ |
|
Все про скрипти http://geosystema.net/forum/viewtopic.php?f=1&t=2809 |
Страница 58 из 83 |
Автор: | Руслан Пархуць [ 05 фев 2018 22:45 ] |
Заголовок сообщения: | Re: Все про скрипти |
aisa-soft писал(а): Как, с помощью скрипта разбить линию? Подібне вже було в попередніх повідомленнях. Користуйтеся пошуком |
Автор: | VictorR [ 27 мар 2018 21:50 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго дня. Можливо хтось вже зробив подібний скрипт, то поділіться будь-ласка) якщо ні то допоможіть його створити. Завдання в наступному: є база(точка), необхідно скриптом сформувати таблицю з її координатами у трьох системах (СК-63,УСК-2000 та МСК-...) |
Автор: | fendak [ 28 мар 2018 10:11 ] | ||
Заголовок сообщения: | Re: Все про скрипти | ||
VictorR писал(а): Доброго дня. Можливо хтось вже зробив подібний скрипт, то поділіться будь-ласка) якщо ні то допоможіть його створити. Завдання в наступному: є база(точка), необхідно скриптом сформувати таблицю з її координатами у трьох системах (СК-63,УСК-2000 та МСК-...) Доброго дня ;id точки $IDPoint=10 ;id таблиці $IDTable=51 @Map.DeselectAll @Map.SelectLayer id$IDPoint $PointObj=@Map.SelectedObject $Coordinates=@Map.Object[$PointObj].Point[1] @Text[1].Add $Coordinates @ExecuteMenu RegistryToUSK $Coordinates=@Map.Object[$PointObj].Point[1] @Text[1].Add $Coordinates @ExecuteMenu RegistryToMSK $Coordinates=@Map.Object[$PointObj].Point[1] @Text[1].Add $Coordinates $Text=@Text[1].Text @Map.DeselectAll @Map.SelectLayer id$IDTable $TableObj=@Map.SelectedObject @Map.Object[$TableObj].TableText $Text @Window.Refresh Також прикріпив файл-зразок, щоб було краще зрозуміло, як має виглядати карта з точкою і таблицею, яку оброблятиме скрипт.
|
Автор: | VictorR [ 28 мар 2018 20:18 ] |
Заголовок сообщения: | Re: Все про скрипти |
fendak Дуже дякую! Далі буду розбиратися як присвоїти назву колонкам таблиці) |
Автор: | fendak [ 28 мар 2018 21:11 ] |
Заголовок сообщения: | Re: Все про скрипти |
Прошу Просто на початку коду додайте рядок @Text[1].Add Х У Z регулюючи відступи та центрування пробілами можна було, звичайно, і через знак табуляції, але тоді на початку додайте: $Tab=@Calc char(9) $Tab=@DequoteText $Tab а в коді замість $Coordinates=@Map.Object[$PointObj].Point[1] @Text[1].Add $Coordinates напишіть: $Coordinates=@Map.Object[$PointObj].Point[1] $X=@StringPart 1 $Coordinates $Y=@StringPart 2 $Coordinates $Z=@StringPart 3 $Coordinates @Text[1].Add $X$Tab $Y$Tab $Z |
Автор: | VictorR [ 28 мар 2018 21:31 ] |
Заголовок сообщения: | Re: Все про скрипти |
Ще раз Дякую Микола!) З Вашою допомогою взагалі скоро забуду як скрипти складати)) |
Автор: | voha [ 11 апр 2018 06:53 ] |
Заголовок сообщения: | Re: Все про скрипти |
Шановні! Підкажіть, будь ласка. Як можна досягнути оновлення інформації у списку шарів Вложение: Qestion.JPG [ 46.52 Кб | Просмотров: 7789 ] Як би так обійтися без @ExecuteMenu MapLayers з функцією оновлення списку шарів |
Автор: | Руслан Пархуць [ 11 апр 2018 21:09 ] |
Заголовок сообщения: | Re: Все про скрипти |
voha писал(а): Шановні! Підкажіть, будь ласка. Як можна досягнути оновлення інформації у списку шарів Вложение: Qestion.JPG Наприклад: коли скриптом створюється шар в карті, не хочеться визначати перший доступний його ID, тому створюється шар з ID=0 а Digitals сам присвоює ID доданому шару. От тільки значення присвоєного ID шару стає відомим тільки після запуску менеджера шарів.Як би так обійтися без @ExecuteMenu MapLayers з функцією оновлення списку шарів Визначити новий доступний ID Код: $Lay=@Map.Layers.List
@Text.Text=$Lay $Count=@Text.Count $Max=@Text.Line[1] $Max=@StringPart 1 $Max %Cycle $Val=@Text.Line[$Count] $Val=@StringPart 1 $Val @If "$Val">"$Max" Then $Max=$Val $Count=$Count-1 @If $Count>0 Then @Goto %Cycle @Dialog.Message Max=$Max |
Автор: | voha [ 11 апр 2018 22:53 ] |
Заголовок сообщения: | Re: Все про скрипти |
Руслан Пархуць писал(а): Визначити новий доступний ID... Дякую за код.Воно то так можна, однак далі з доданим шаром працювати у скрипті - ще цікавіше : - позначені об'єкти карти переводяться у доданий шар функцією @Map.Selected.ChangeLayer - функція @Map.Layers.ObjectCount, застосована до вказаного шару повертає 0 Блін! Після @Map.Layers.ObjectCount запускаю вікно статус шарів - у шарі є об'єкти, а @Map.Layers.ObjectCount повертає НУЛЬ. Тільки після вікна "статус шарів" @Map.Layers.ObjectCount поверне вам кількість об'єктів у шарі, а без нього - НУЛЬ. Знаєте що мусив додати в скрипт, щоб був порядок? Код: ;Вікно | Статус шарів І сміх, і гріх. Порядком надоїло "надягати майку через ноги".@ExecuteMenu WindowLayerStatus ;Вікно | Статус шарів @ExecuteMenu WindowLayerStatus Я не бачу інших варіантів, як тільки аби розробники таки додали функцію оновлення списку шарів. Коротенький скрипт, який демонструє проблему Код: ;Створити нову карту на Normal запустіть, будь-ласка, за виключеного вікна "статус шарів".
@FileNew Нова карта /Template=Normal.dmf ;Визначити новий доступний ID $Lay=@Map.Layers.List @Text.Text=$Lay $Count=@Text.Count $Max=@Text.Line[1] $Max=@StringPart 1 $Max %Cycle $Val=@Text.Line[$Count] $Val=@StringPart 1 $Val @If "$Val">"$Max" Then $Max=$Val $Count=$Count-1 @If $Count>0 Then @Goto %Cycle $Max=$Max+1 ;Додати новий шар стилю Полігон/Полілінія $NumLay=@Map.Layers.Add $Max 1 Доданий шар ;Зібрати кілька лінійних об'єктів у шарі на замовчування @Map.SetCollectionLayer ID0 @CollectionTemplate 5 @SelectTab 1 @Dialog.WaitBox Зберіть об'єкти в шарі "DefaultLayer" і тисніть "Прордовжити" @Map.SelectAll ;Змінити шар зібраних об'єктів на "Доданий шар" @Map.Selected.ChangeLayer ID$Max ;УСІ МОЖЛИВІ ОНОВЛЕННЯ ЕКРАНУ ТА ПЕРЕРАХУНОК РОЗМАХУ КАРТИ @Window.Refresh @Map.CalculateRange ;Визначення кількості об'єктів у доданому шарі $CountObj=@Map.Layers.ObjectCount $NumLay @Dialog.Message Кількість об'єктів, повернута функцією Map.Layers.ObjectCount, якогось дідька рівна $CountObj ;ВИКЛИК ВІКНА "СТАТУС ШАРІВ" @ExecuteMenu WindowLayerStatus ;ВИЗНАЧЕННЯ КІЛЬКОСТІ ОБ'ЄКТІВ У ДОДАНОМУ ШАРІ $CountObj=@Map.Layers.ObjectCount $NumLay @Dialog.Message Кількість об'єктів, повернута функцією Map.Layers.ObjectCount після відображення вікна "Статус шарів" - "$CountObj" ;ЗАКРИВАННЯ ВІКНА "СТАТУС ШАРІВ" @ExecuteMenu WindowLayerStatus |
Автор: | Руслан Пархуць [ 11 апр 2018 23:30 ] |
Заголовок сообщения: | Re: Все про скрипти |
voha писал(а): Руслан Пархуць писал(а): Визначити новий доступний ID... Дякую за код.Воно то так можна, однак далі з доданим шаром працювати у скрипті - ще цікавіше : - позначені об'єкти карти переводяться у доданий шар функцією @Map.Selected.ChangeLayer - функція @Map.Layers.ObjectCount, застосована до вказаного шару повертає 0 ... а так вродi все ок (з командою @Map.RedefineLayers -7). Щось розробники не доробили, може з часом... Код: $Lay=@Map.Layers.List @Text.Text=$Lay $Count=@Text.Count $Max=@Text.Line[1] $Max=@StringPart 1 $Max %Cycle $Val=@Text.Line[$Count] $Val=@StringPart 1 $Val @If "$Val">"$Max" Then $Max=$Val $Count=$Count-1 @If $Count>0 Then @Goto %Cycle $Max=$Max+1 @Dialog.Message $Max ; $NewLayer=@Map.Layers.Add $Max 1 TestLayer $Cnt=@Map.Layers.ObjectCount $NewLayer @Dialog.WaitBox Виберiть елементи|К-сть на шарi [$NewLayer]: $Cnt @Map.Selected.ChangeLayer $Max ; @Map.RedefineLayers -7 ; $Cnt=@Map.Layers.ObjectCount $NewLayer @Dialog.Message Нова к-сть на шарi [$NewLayer]: $Cnt А для пошуку максимального i мiнiмального значення мали б вiдповiдати ф-цiї @Map.MaxParameterValue -7 та @Map.MinParameterValue -7, якi чомусь працюють некоректно. Щодо Вашого коду, то в мене все працює без WindowLayerStatus, правда, коли забрати @Map.CalculateRange, повертається нульове значення параметра. |
Автор: | voha [ 12 апр 2018 01:19 ] |
Заголовок сообщения: | Re: Все про скрипти |
Руслан Пархуць писал(а): ... а так вродi все ок (з командою @Map.RedefineLayers -7). Щось розробники не доробили, може з часом... На диво, коли я в приведений мною код вставив @Map.RedefineLayers -7, і в мене @Map.Layers.ObjectCount стала повертати кількість об'єктів.Щодо Вашого коду, то в мене все працює без WindowLayerStatus, правда, коли забрати @Map.CalculateRange, повертається нульове значення параметра. Навіть якщо знову видалити @Map.RedefineLayers -7 з наведеного коду і перезапустити Digitals - працює все ОК. Не годиться лише @Map.RedefineLayers -7 в "справжньому" скрипті на "справжній" карті, оскільки "После переопределения слоев по значению какого-либо параметра, те объекты, значения данного параметра у которых одинаковы, будут сгруппированы в один слой. Имя слоя берется из значения параметра." Як далі давати раду з усіма об'єктами у перепризначених, створених командою @Map.RedefineLayers і доданих в шаблон карти, шарах? Руслан Пархуць писал(а): А для пошуку максимального i мiнiмального значення мали б вiдповiдати ф-цiї @Map.MaxParameterValue -7 та @Map.MinParameterValue -7, якi чомусь працюють некоректно. Не знаю як у стандартному Normal-і, але в лісових картах службовий параметр -7 має тип "текстовий рядок". Ймовірно через це min/max не можна застосовувати до P[-7].P.S. Ну все! Вилікував скрипт. Принаймні у себе на компі: - додав @Map.RedefineLayers -7; - прогнав скрипт один раз; - закоментував @Map.RedefineLayers -7. Чемно дякую Руслану Пархуцю! |
Автор: | faram [ 15 апр 2018 11:04 ] |
Заголовок сообщения: | Re: Все про скрипти |
Добрый день. Как можно реализовать возможность добавления в шаблон кадастровый план каталога координат с двумя системами одновременно (СК63 и УСК2000). |
Автор: | Dmitry_Zolotar [ 16 апр 2018 17:04 ] |
Заголовок сообщения: | Re: Все про скрипти |
voha писал(а): - позначені об'єкти карти переводяться у доданий шар функцією @Map.Selected.ChangeLayer - функція @Map.Layers.ObjectCount, застосована до вказаного шару повертає 0 Спробуйте в оновленій версії. |
Автор: | Руслан Пархуць [ 17 апр 2018 11:14 ] |
Заголовок сообщения: | Re: Все про скрипти |
faram писал(а): Добрый день. Как можно реализовать возможность добавления в шаблон кадастровый план каталога координат с двумя системами одновременно (СК63 и УСК2000). Цитата: VictorR писал(а): Доброго дня. Можливо хтось вже зробив подібний скрипт, то поділіться будь-ласка) якщо ні то допоможіть його створити. Завдання в наступному: є база(точка), необхідно скриптом сформувати таблицю з її координатами у трьох системах (СК-63,УСК-2000 та МСК-...) Якщо володiєте мовою скриптiв, тодi не важко буде переробити пiд свої потреби http://www.geosystema.net/forum/viewtopic.php?f=1&t=2809&start=855#39649 |
Автор: | Vaho [ 23 май 2018 13:36 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго дня! Підкажіть будь-ласка, як зі скрипту запустити Reports.exe певний шаблон. В мене чомусь так не працює, пише що буде завантажений тестовий режим. Код: @Run $PrPath\Reports.exe -t$PrPath\Templates\TehDoc_Khodienkov.fr3 P.S. Само собою змінна $PrPath в коді визначена як системна папка |
Страница 58 из 83 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |