Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 20 ноя 2017 18:58

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Создание скриптов для обработки событий
СообщениеДобавлено: 16 фев 2010 13:08 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Добавлена возможность создания скриптов для обработки событий:
viewtopic.php?p=6584#6584

Замечания и предложения приветствуются...

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 18 фев 2010 13:40 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Очень полезная штука - уже опробовала - и просто умиляюсь - ещё Шубин в своё время просил об этом и наконец-то - свершилось!!! Умнички!!!

Просьба добавить ещё одно событие (на данный момент ;-) ) - OnLevelChange.

Сразу же хочется спросить - работают ли эти обработчики - если дейсвтяи с нимим произошли через скрипт - удаление точки, добавление точки, изменение её, создание нового объекта и т.д.?

Обнаружены также следующие недочёты в работе:

- при создании объекта и присвоении этому объекту значения какого-либо параметра через обработчик - невозможно потом его удалить. Программа всё равно его добавляет.

- если панель была закрыта при включённой кнопке - скрипт всё равно продолжает выполняться.

- как отключать один из обработчиков событий в 1-ой кнопке - через коментарий самого OnChange - не работает.

- не совсем корректно работает обработчик OnCollect.
Вложение:
OnChangeEvent.exe [187.7 Кб]
Скачиваний: 510


Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 18 фев 2010 15:12 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
pippa писал(а):
Просьба добавить ещё одно событие (на данный момент ;-) ) - OnLevelChange.

Level или Layer?
Когда должно вызываться это событие?
pippa писал(а):
Сразу же хочется спросить - работают ли эти обработчики - если дейсвтяи с нимим произошли через скрипт - удаление точки, добавление точки, изменение её, создание нового объекта и т.д.?

Пока OnChange работает только при перемещении точки мышью или при изменении параметров на закладке Инфо. Все варианты изменения объекта отследить довольно трудно, но если что-то нужно то будем добавлять.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 18 фев 2010 16:03 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Sergey Oleynik писал(а):
pippa писал(а):
Просьба добавить ещё одно событие (на данный момент ;-) ) - OnLevelChange.

Level или Layer?

В смысле изменении слоя.
Sergey Oleynik писал(а):
Когда должно вызываться это событие?

После изменения слоя для выбранного объекта (через Вкладку Правка или через функцию - @Map.Selected.ChangeLayer LayerIndex


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 19 фев 2010 11:16 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Добавлены еще два события:

%Events.OnAdd - вставка объекта из буфера обмена
%Events.OnLayerChange - изменение слоя объекта

Цитата:
Сразу же хочется спросить - работают ли эти обработчики - если дейсвтяи с нимим произошли через скрипт - удаление точки, добавление точки, изменение её, создание нового объекта и т.д.?

Пока все события вызываются только в случае действий пользователя. Идея с вызовом обработчиков при действиях из скрипта нам не кажется хорошей. Во-первых возможно зацикливание, а во вторых идея событий в том, чтобы дать разработчику скрипта возможность реагировать на события, которые ему недоступны. А это действия пользователя. В свой же скрипт можно сразу внести все необходимую обработку не прибегая к событиям.

Цитата:
- если панель была закрыта при включённой кнопке - скрипт всё равно продолжает выполняться.

Исправлено

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 22 фев 2010 12:35 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Спасибо за добавленные функции.

Сразу возник вопрос - можно ли получать информацию - с какого именно слоя был перенесён объект. Куда был перенесён - можно определить, а вот откуда? А это часто нужно знать.

И всё же неработет - у меня что OnChange что OnCollect - работают одинаково - как будто одна и та же функция вызывается.

Вот скрипты - оба выдают один и тот же результат.

%Events.OnCollect
@CheckErrors 1
$S=@EventObject
@If $S=0 then @Break
@Map.Object[$S].Parameter[1]=30

%Events.OnChange
@CheckErrors 1
$S=@EventObject
@If $S=0 then @Break
@Map.Object[$S].Parameter[1]=31

Оба выдают - 31.

Что делать? :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 23 фев 2010 09:19 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
pippa писал(а):
Что делать? :cry:

У меня все работает:
Вложение:
Events.exe [252.25 Кб]
Скачиваний: 492

У вас последняя версия Ged?

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 23 фев 2010 09:54 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Sergey Oleynik писал(а):
pippa писал(а):
Что делать? :cry:

У меня все работает:
Вложение:
Events.exe

У вас последняя версия Ged?

Да, последняя. Билд - 19.02.2010.
Пробовала на разных файлах - и на разных шаблонах. Не работает. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 23 фев 2010 10:09 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
pippa писал(а):
Да, последняя. Билд - 19.02.2010.

Это же старье четырехдневной давности :D

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 23 фев 2010 10:31 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Sergey Oleynik писал(а):
pippa писал(а):
Да, последняя. Билд - 19.02.2010.

Это же старье четырехдневной давности :D


5 балов!!! :lol:

Но - нет. То же самое - выдаёт - для обоих событий - одинаковый параметр подсавляет. Даже подстановка чистого Ged.ini - не помогла. :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 24 фев 2010 10:12 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Я разобралась в чём дело :lol: - какая-то проблема существует вне обработчиков событий - если стоит галочка - Сбор :arrow: автоподписи и Сбор :arrow: Автопараметры. Если они отключены - тогда работает правильно, если хоть одна из них включена - то даже закрытие панели с кнопочкой со скриптом не решает проблему (хоть и было сказано - что исправлено :( )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 25 фев 2010 15:06 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Так будет решена эта проблема или мне не ждать? :cry:

И ещё:

при изменении объекта и обработчика событий OnChange , а потом применении функции правка :arrow: отменить изменение - исходный параметр возвращается назад, но при изменении слоя с помощью функции OnLayerChange, а потом применении функции правка :arrow: отменить изменение - параметр не возвращается. :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 25 фев 2010 15:38 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
pippa писал(а):
Так будет решена эта проблема или мне не ждать? :cry:

Какая именно проблема? Если та, что при включенных автопараметрах или автоподписях вызывается OnChange, то так и должно быть. Это событие всегда вызывается при изменении объекта или его параметров.
pippa писал(а):
И ещё:

при изменении объекта и обработчика событий OnChange , а потом применении функции правка :arrow: отменить изменение - исходный параметр возвращается назад, но при изменении слоя с помощью функции OnLayerChange, а потом применении функции правка :arrow: отменить изменение - параметр не возвращается. :cry:

Как то очень сумбурно и непонятно. Что значит изменение слоя с помощью функции OnLayerChange? OnLayerChange это не функция меняющая слой, а событие которое вызывается когда оператор изменяет слой вручную. И какой параметр куда должен возвращаться после отмены изменения слоя?

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 01 мар 2010 12:14 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
10 апр 2009 10:29
Сообщения: 392
Sergey Oleynik писал(а):
Как то очень сумбурно и непонятно. Что значит изменение слоя с помощью функции OnLayerChange? OnLayerChange это не функция меняющая слой, а событие которое вызывается когда оператор изменяет слой вручную. И какой параметр куда должен возвращаться после отмены изменения слоя?

Смысл в том, что внутри скрипта OnLayerChange есть функция - меняющая один из параметров объекта - так вот - если сделать Правка - Отменить - то не отменяется это изменёный параметр.

Можно ли разделить в функции OnChange - изменение геометрии и изменение параметров - иногда необходимо отслеживать каждое из событий отдельно. :roll:

И ещё - замечены следующие результаты тестирования:

1. Событие OnChange не реагирует на изменение объекта путём параллельного переноса - т.е. маркируя сторону с помощью Alt и двигая её целиком.

2. Событие OnChange не реагирует на изменение высоты как целиком объекта (при нажатии кнопки H), так и изменении высоты любой из точек объекта.

3. Событие OnChange не реагирует на изменение объекта при использовании инструментов на панели Правка - объединить, соединить и т.д.

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание скриптов для обработки событий
СообщениеДобавлено: 01 мар 2010 14:34 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
pippa писал(а):
Смысл в том, что внутри скрипта OnLayerChange есть функция - меняющая один из параметров объекта - так вот - если сделать Правка - Отменить - то не отменяется это изменёный параметр.

Дело в том, что те изменения, которые происходят в скриптах, автоматически в лог Undo не заносятся. Это касается не только обработки событий, но и всех скриптов вообще.
Создатель скрипта должен, при необходимости, сам заносить операции в лог, перед модификацией объекта или его параметров.
Для этого имеются соответствующие функции:
@Map.Undo.SaveObject Number
@Map.Undo.SaveObjectParameters Number
@Map.Undo.StartOperationGroup

pippa писал(а):
Можно ли разделить в функции OnChange - изменение геометрии и изменение параметров - иногда необходимо отслеживать каждое из событий отдельно.

Изначально мы так и собирались. Но проблема в том, что изменение геометрии влечет за собой измененние некоторых параметров, например площади и периметра. Также изменение некоторых параметров может изменить геометрию. Например параметр Z.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals | Страница в Facebook


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 7


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

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