Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 25 апр 2024 13:07

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 1236 ]  На страницу Пред.  1 ... 18, 19, 20, 21, 22, 23, 24 ... 83  След.
Автор Сообщение
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 06 ноя 2013 22:43 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Ivan0000 писал(а):
...якийсь один об'єкт залишається виділеним. Може рамка? Ось скрипт. Скрипт створює горизонталі з точок.
Справа не в скрипті, справа в карті. Пергляньте статуси шарів об'єктів карти, особливо шар ID-1 "видалені об'єкти".


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 06 ноя 2013 22:58 
Эксперт
Эксперт

Зарегистрирован:
12 дек 2011 23:13
Сообщения: 79
voha писал(а):
Ivan0000 писал(а):
...якийсь один об'єкт залишається виділеним. Може рамка? Ось скрипт. Скрипт створює горизонталі з точок.
Справа не в скрипті, справа в карті. Пергляньте статуси шарів об'єктів карти, особливо шар ID-1 "видалені об'єкти".


Статус - Схований. Всі інші як в Normal.

Так і не виявив проблему, прийшлось зробити кількість повтору циклу на один менше. Так пройшло. Звідки взявся ще один об'єкт, незнаю.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 11 ноя 2013 11:55 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
_Visco_ писал(а):
Что вы такое делаете. А то я скрипты как то не тяну. Но чую что они не хило помогли бы в работе. Может кто выложить видео пример как работают с скриптами, то есть скрипты в работе так сказать.
Прикріплюю посилання на відео по роботі зі скриптами "Приведення шаблону карти до шаблону Normal.dmf", "Підключення іншого шаблону до карти", а також "Перевірка карти на перекриття полігонів".


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 13 ноя 2013 15:57 
Гуру
Гуру

Зарегистрирован:
14 окт 2010 16:40
Сообщения: 265
слой ID70024 табличный и в нем 1 объект(таблица), в этой таблице 1 слово - )дорога( ,хочу его поменять на - (дорога)
@Map.SelectLayer ID70024
$Smej=@Map.SelectedObject
$Smejtext=@Map.Object[$Smej].TableText
$Smejtext=@Calc Replace("$Smejtext",")дорога(","(дорога)")
@Map.Object[$Smej].TableText $Smejtext
и ничего не получается.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 16 дек 2013 22:10 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Дозвольте обговорити скрипт з теми "Бібліотека корисних скриптів" на прохання автора і дати деякі поради, з мого бачення
- код можна спростити, замінивши перші 112 рядків на наступні 20:
Код:
;Відкриваємо карту з кварталами і зонами
$N=@Map.SelCount
@If $N<>1 @Break Виділіть один об'єкт
;запам'ятовуємо номер нашої карти
$MapFilename=@Map.Filename
$ThisMap=@GetMapNumber $MapFilename
$Obj=@Map.SelectedObject
@Map.Copy
;відкриваємо Чарівну карту
@FileOpen D:\Digitals\Чарівна карта.dmf
@Map.Paste
$ThisObj=@Map.SelectedObject
;полігон, в який об'єкт попав
$ParentObj=@Map.ParentObject $ThisObj
;не закриваємо карту, якщо зовнішній полігон не знайдений
@if $ParentObj=$ThisObj then @Break Ділянка залазить на інший квартал або поза межами району
;читаєм значення параметрів зовнішнього об'єкта
$P10010=@Map.Object[$ParentObj].Parameter[ID10010]
@Map[$ThisMap].Object[$ThisObj].Parameter[ID10010]=$P10010
$P10020=@Map.Object[$ParentObj].Parameter[ID10020]
@Map[$ThisMap].Object[$ThisObj].Parameter[ID10020]=$P10020
$P10030=@Map.Object[$ParentObj].Parameter[ID10030]
@Map[$ThisMap].Object[$ThisObj].Parameter[ID10030]=$P10030
$P50035=@Map.Object[$ParentObj].Parameter[ID50035]
@Map[$ThisMap].Object[$ThisObj].Parameter[ID10070]=$P50035
- складаючи скрипт, не бійтесь серед всіх доступних функцій, що є у списку вікна редактора коду (серед них знайдете @OpenLog і @CloseLog [Filename]), вибрати найбільш підходящу, тоді в лог-файлі, Ви побачите результат виконання кожної скриптової функції та оціните правильність і доцільність застосування ціх функцій у скрипті).
fendak писал(а):
...нема сенсу продовжувати.
Не ставте "крапку". Продовжувати треба, інакше не народжуються корисні скрипти. Нахрапа нічого не дається.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 03 янв 2014 23:13 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Даний спрощений скрипт не працює. Видає помилку про неправильний номер об'єкта в рядку 19.

Спростити можна було б, якби адміни добавили функцію [ Параметры.... ] / Створити шаблон і відповідно вставити. Але серед доступних функцій є тільки просто [ Параметры.... ] і неможливо дальше проводити дії по вибору вмісту даного пункту.

В чому причина нестабільної роботи скрипту вже зрозумів. Після перейменування шару ІН4квартал на ІН4ділянка потрібно ще активувати закладку Інфо. Бо інакше (в закладці Правка) шари не обновляються. І програма просто не знаходить потрібного шару, бо в кварталі його нема.


Вложения:
2.JPG
2.JPG [ 81.69 Кб | Просмотров: 11757 ]

_________________
додатково про скрипти Digitals на www.digitals.at.ua
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 04 янв 2014 00:03 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
Даний спрощений скрипт не працює. Видає помилку про неправильний номер об'єкта в рядку 19.
Згідний, я жодного разу не "крутив" цей скрипт. Але, дозвольте наголосити на основних принципах і методах написання скриптів:
1. В ході "відлагоджування" роботи скрипта, або в ході написання скрипта - використайте команду @Dialog.Message $ThisObj, або @Break $ThisObj, вставивши її відразу після рядка $ThisObj=@Map.SelectedObject. Можливо змінна $ThisObj не містить значення, оскільки немає позначеного об'єкта в карті? Будете мати можливість подивитись, який це такий "неправильний" номер об'єкта попадається в рядку 19. Використовуйте ці функції скрізь - де натикаєтесь на помилку при виконанні.
fendak писал(а):
...якби адміни добавили функцію [ Параметры.... ] / Створити шаблон і відповідно вставити.
А як же функції @Map.Parameters.SaveToFile FileName, @Map.Parameters.LoadFromFile FileName, або функції для роботи з параметрами по-окремо?
2. Переглядайте список доступних скриптових функцій, підбираючи найбільш підходящу.
fendak писал(а):
...Після перейменування шару ІН4квартал на ІН4ділянка потрібно ще активувати закладку Інфо. Бо інакше (в закладці Правка) шари не обновляються...
Мала б допомогти одна з функцій @Map.RefreshObject Index, @Map.CalculateRange.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 04 янв 2014 00:28 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
дякую, корисні поради.

А ще знайшов функцію - popFillin | Сохранить как шаблон... Але не знайшов функції вставлення збереженого шаблону.

Але взагалі збереження у файл, як і збереження як шаблону мені не дуже підходить тому, що в мене не співпадають на картах номери заповнених параметрів. Наприклад, адреса ділянки (Р[35]) в мене підтягується з Р[89].

І, зверніть, будь-ласка, увагу, що у запропонованих вами формулах $P10010=@Map.Object[$ParentObj].Parameter[ID10010] не підсвічується правильно синтаксис. @Map.Object і Parameter мали б бути жирними чи кольоровими, а вони виглядають, як звичайний текст.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 04 янв 2014 00:50 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
...у запропонованих вами формулах $P10010=@Map.Object[$ParentObj].Parameter[ID10010] не підсвічується правильно синтаксис. @Map.Object і Parameter мали б бути жирними...
Функції роботи з масивами завжди не жирним шрифтом. Це - перевірено.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 04 янв 2014 01:32 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Короче, вийшло зпростити ось так:
Код:
Вигляд | Синхронізація позицій
;Відкриваємо карту з кварталами і зонами
$SourceMap=D:\Digitals\Чарівна карта.dmf
;Параметр, з якого будемо копіювати на Чарівній карті(код нас.пункту)
$SrcParam1=ID10010
;параметр, в який будемо вставляти в нашу ділянку(код нас.пункту)
$DestParam1=ID10010
;Параметр, з якого будемо копіювати на Чарівній карті(номер зони)
$SrcParam2=ID10020
;параметр, в який будемо вставляти в нашу ділянку(номер зони)
$DestParam2=ID10020
;Параметр, з якого будемо копіювати на Чарівній карті(НОМЕР КВАРТАЛУ)
$SrcParam3=ID10030
;параметр, в який будемо вставляти в нашу ділянку(НОМЕР КВАРТАЛУ)
$DestParam3=ID10030
;Параметр, з якого будемо копіювати на Чарівній карті(ГОЛОВА С/Р)
$SrcParam4=ID50035
;параметр, в який будемо вставляти в нашу ділянку (ГОЛОВА С/Р)
$DestParam4=ID10070
;Параметр, з якого будемо копіювати на Чарівній карті(7 ЦИФР КАД.НОМЕРА)
$SrcParam5=ID50034
;параметр, в який будемо вставляти в нашу ділянку(7 ЦИФР КАД.НОМЕРА)
$DestParam5=ID20010
;Параметр, з якого будемо копіювати на Чарівній карті (АДРЕСА ДІЛЯНКИ)
$SrcParam6=ID50036
;параметр, в який будемо вставляти в нашу ділянку(АДРЕСА ДІЛЯНКИ)
$DestParam6=ID20020
$N=@Map.SelCount
@If $N<>1 @Break Виділіть один об'єкт
;запам'ятовуємо номер нашої карти
$ThisMap=@ActivateMap 1
;копіюємо позначений об'єкт в буфер
@Map.Copy
;відкриваємо Чарівну карту
@FileOpen $SourceMap
;вставляємо у відкриту карту наш об'єкт
@Map.Paste
;номер нашого об'єкта
$ThisObj=@Map.SelectedObject
;полігон, в який об'єкт попав
$ParentObj=@Map.ParentObject $ThisObj
;не закриваємо карту, якщо зовнішній полігон не знайдений
@if $ParentObj=$ThisObj then @Break Ділянка залазить на інший квартал або поза межами Дрогобицького
;копіюємо значення параметра зовнішнього об'єкта
$P1=@Map.Object[$ParentObj].Parameter[$SrcParam1]
$P2=@Map.Object[$ParentObj].Parameter[$SrcParam2]
$P3=@Map.Object[$ParentObj].Parameter[$SrcParam3]
$P4=@Map.Object[$ParentObj].Parameter[$SrcParam4]
$P5=@Map.Object[$ParentObj].Parameter[$SrcParam5]
$P6=@Map.Object[$ParentObj].Parameter[$SrcParam6]
;повертаємося до карти з нашою ділянкою
@CloseMap
@ActivateMap $ThisMap
;вставляємо зкопійований параметр
$ThisObj=@Map.SelectedObject
@Map.Object[$ThisObj].Parameter[$DestParam1]=$P1
@Map.Object[$ThisObj].Parameter[$DestParam2]=$P2
@Map.Object[$ThisObj].Parameter[$DestParam3]=$P3
@Map.Object[$ThisObj].Parameter[$DestParam4]=$P4
;обновляємо об'єкт
@Map.RefreshObject $ThisObj
;Копіюємо квартал, вставляємо і перейменовуємо на ділянку
@Map.Copy
@Map.Paste
@Map.ChangeSelectedLayer 3
$ThisObj=@Map.SelectedObject
@Map.Object[$ThisObj].Parameter[$DestParam5]=$P5
@Map.Object[$ThisObj].Parameter[$DestParam6]=$P6
;обновляємо об'єкт
@Map.RefreshObject $ThisObj
;викликаємо вікно заповнення адреси ділянки
@Dialog.EditParameter ID20020
$ThisMap=@ActivateMap
;викликаємо вікно заповнення ПІП
@Dialog.EditParameter ID20030
$ThisMap=@ActivateMap
;викликаємо вікно вибору цільового призначення
@Dialog.EditParameter ID20040
$ThisMap=@ActivateMap
Вигляд | Синхронізація позицій


Мене це в повній мірі задовільняє. Тепер буду доповнювати іншими функціями, щоби максимально автоматизувати роботу:)

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 янв 2014 14:14 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
...як мітка %Start означає початок циклу, то яка мітка тоді означає кінець циклу? %Finish: ?
Поняття циклу For…Next в скриптовій мові немає. Є лише поняття переходу на мітку з умовою, аналог If...Then...Else. От і складайте "цикли". Рекомендую Digitals-scripts.pdf
fendak писал(а):
...формула @Map.Layers.ObjectCount не працює. В любому випадку, є на карті шар 87 чи нема, карту перейменовує на 61...
От тільки пробував скрипт - працює справно. Дайте свій скрипт, попробую в себе.
Я би не використовував для ідентифікації шару в скрипті його порядковий номер. Тільки ID шару :!:
З власного досвіду: порядок сортування шарів у менеджері шарів записується в карті. Отже, достатньо раз сортувати шари за алфавітом, зберігши зміни в карті - отримаєте непередбачуваний результат роботи скрипта.
І головне - яка у Вас версія Digitals?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 янв 2014 18:17 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
voha писал(а):
fendak писал(а):
...як мітка %Start означає початок циклу, то яка мітка тоді означає кінець циклу? %Finish: ?
Поняття циклу For…Next в скриптовій мові немає. Є лише поняття переходу на мітку з умовою, аналог If...Then...Else. От і складайте "цикли". Рекомендую Digitals-scripts.pdf
fendak писал(а):
...формула @Map.Layers.ObjectCount не працює. В любому випадку, є на карті шар 87 чи нема, карту перейменовує на 61...
От тільки пробував скрипт - працює справно. Дайте свій скрипт, попробую в себе.
Я би не використовував для ідентифікації шару в скрипті його порядковий номер. Тільки ID шару :!:
З власного досвіду: порядок сортування шарів у менеджері шарів записується в карті. Отже, достатньо раз сортувати шари за алфавітом, зберігши зміни в карті - отримаєте непередбачуваний результат роботи скрипта.
І головне - яка у Вас версія Digitals?


Версія за 28.12.2013

Ось скрипт (той самий, що ви мені запропонували):
Код:
$N=@Map.SelCount
@If $N<>1 @Break Виділіть один об'єкт
$Z1=@Map.Layers.ObjectCount 87
@if $Z1>=1 then @Map.ChangeSelectedLayer 89 else @Map.ChangeSelectedLayer 61

Вибираю шар ІN4 ділянка і запускаю скрипт.
В результаті є на карті шар 35.1 капітальна чи нема, все одно перейменовує ділянку на 05 рілля. А повинно на 35.3 прибудинкова територія.
номери шарів співпадають, перевірив. Та й ніколи шари не сортую по-іншому, ніж вони є по замовчуванню.
А взагалі не поставив замість номерів шарів ID бо в описі деяких функцій в програмі Digitals в дужках написано написано пояснення "номер шару(неID). Не розумію, в яких випадках ставиться ID, а в яких номер шару.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 янв 2014 20:40 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
...Ось скрипт (той самий, що ви мені запропонували)...
А от він у дії відео. Вже й не знаю що Вам казати. Користуйтесь @OpenLog, @CloseLog, аналізуйте лог-файл.

Знайшов :D . Перепрошую, у Вас в скрипті проблема зі змінною $Z1. Дивіться відео.

Ще раз перепрошую: справа не в змінній, справа у тому, що функція @Map.Layers.ObjectCount оцінює кількість об'єктів правильно, якщо номери цих об'єктів вже були записані в карті. Отже так:
- якщо карта не містить об'єктів у шарі 87 і об'єкт-1 перевести в шар з порядковим номером 87 - функція @Map.Layers.ObjectCount 87 поверне 0;
- якщо карта не містить об'єктів у шарі 87 і об'єкт-1 перевести в шар з порядковим номером 87 і застосувати @Map.CalculateRange - функція @Map.Layers.ObjectCount 87 поверне 1.
Справа в оновленні карти.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 янв 2014 22:22 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
ага, точно в оновленні.
добавив функцію перерисовки карти і все гаразд

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 06 янв 2014 00:37 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Щастить мені на різні глюки і недооновлення. Але тут вже справа не в недооновленні обєкта, оновлення і перерисовка нічого не дає.
Суть формули така:
-якщо в параметрі KZ значення "для будівництва...." і на карті є угіддя 35.1 (капітальна), то міняємо вставлений раніше шар на 35.3 (прибудинкова)
-якщо в параметрі KZ значення "для будівництва...." і на карті є угіддя 58 (незаверш.буд-во), то міняємо вставлений раніше шар на 35.3 (прибудинкова)
-якщо в параметрі KZ значення "для будівництва...." і на карті нема угіддя 58 (незаверш.буд-во) і нема угіддя 35.1, то міняємо вставлений раніше шар на шар 59 (нерозп.буд-во)

Код:
;викликаємо вікно вибору цільового призначення
$LayControl=@Dialog.ListSelect Виберіть цільове призначення|для будівництва і обслуговування жилого будинку, господарських будівель та споруд|для ведення особистого селянського господарства|для ведення садівництва|для гаражного будівництва
@Map.Object[$ThisObj].Parameter[ID20040]=$LayControl

$Zminna1=@Map.Layers.ObjectCount 87
$Zminna2=@Map.Layers.ObjectCount 160
@If "$LayControl"="для будівництва і обслуговування жилого будинку, господарських будівель та споруд" and $Zminna1>=1 then @Map.ChangeSelectedLayer 89
@If "$LayControl"="для будівництва і обслуговування жилого будинку, господарських будівель та споруд" and $Zminna2>=1 then @Map.ChangeSelectedLayer 89
@If "$LayControl"="для будівництва і обслуговування жилого будинку, господарських будівель та споруд" and $Zminna1<1 and $Zminna2<1 then @Map.ChangeSelectedLayer 161

А ось результат перевірки:
00:10:34.939 IF "для будівництва і обслуговування жилого будинку, господарських будівель та споруд"="для будівництва і обслуговування жилого будинку, господарських будівель та споруд" and 1<1 and 0<1 then @Map.ChangeSelectedLayer 161
00:10:34.939 MAP.CHANGESELECTEDLAYER 161
00:10:34.983 1

от не розумію яким чином коли одна з умов не виконується в результаті получається 1. Чи 1<1 :D ?

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1236 ]  На страницу Пред.  1 ... 18, 19, 20, 21, 22, 23, 24 ... 83  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 262


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB