OpenSCADAWiki: Doc/Vision/ El Figure ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/Vision/ElFigure from 2011-05-06 11:04:17..

5. Векторный графический редактор.

1. Назначение

Наличие собственного векторного графического редактора является неотъемлемой частью уважающей себя SCADA системы. Опыт показывает, что наиболее информативной формой представления технологических процессов являются мнемосхемы - совокупность сигнальных устройств, изображений оборудования и внутренних связей контролируемого объекта, выполняемые на персональном компьютере. Для их создания можно использовать любой из существующих графических редакторов. Однако, полученные таким образом мнемосхемы являются статическими и не отражают динамику изменения характеристик процесса, а следовательно, они неадекватны и неудобны для восприятия. Таким образом, одной из задач, стоящих перед разработчиками SCADA систем, является создание графического редактора для изображения объектов, характеристики которых могут быть динамически изменены.

2. Принципы и функции разработанного графического редактора

Основой описываемого редактора являются три графических примитива: линия, дуга, кривая Безье. К динамически изменяющимся характеристикам этих примитивов относятся:


Контрольные точки примитивов ElFigure (2 Kb)
Рис. 1. Контрольные точки линии, дуги и кривой Безье.

Примеры примитивов различного цвета, толщины, стилей с бордюрами и без бордюров приведены на рис. 2.


Примеры элементарных фигур (4 Kb)
Рис. 2. Примеры примитивов: линия, дуга и кривая Безье слева направо.

Предусмотрена возможность связи различных графических примитивов для создания сложных графических объектов. Если связанные примитивы образуют замкнутый контур, то он может быть залит цветом и/или изображением (рис. 3).


Заливки замкнутого контура цветом и/или изображениями (6 Kb)
Рис. 3. Заливки замкнутого контура цветом и/или изображениями.

Графический редактор позволяет масштабировать и поворачивать фигуры (примитивы и сложные графические объекты) (рис. 4).
К возможностям редактора также относятся выделение, перемещение, копирование и удаление фигур.


Масштабирование и поворот фигур. (6 Kb)
Рис. 4. Масштабирование и поворот фигур.

3. Основные принципы работы в описываемом графическом редакторе

Для того, чтобы приступить к работе с графическим редактором после запуска проекта OpenSCADA необходимо вызвать «Рабочий пользовательский интерфейс». Во вкладке «Виджет» содержится перечень существующих графических библиотек и принадлежащих им элементов.
Предположим, что нам необходимо добавить графический элемент в одну из существующих библиотек. Для этого выделим имя библиотеки и нажмем кнопку (Создание нового виджета элементарной фигуры (2 Kb)) на панели инструментов. В появившееся окно введем идентификатор и имя нового графического элемента. После чего перейдем к этому элементу и нажмем кнопку (Переход к редактированию виджета (2 Kb)). Справа появится поле для рисования. С помощью двойного щелчка мышью по этому полю либо при помощи контекстного меню войдем в режим редактирования — режим работы графического редактора, позволяющий осуществлять все предусмотренные манипуляции с фигурами. В тот момент, когда вновь созданный нами графический элемент находится в фокусе, вкладка «Атрибуты» приобретет вид, представленный на рис. 5.


Атрибуты элементарной фигуры. (17 Kb)
Рис. 5. Атрибуты элементарной фигуры.

С помощью мыши или поля «Геометрия» вкладки «Атрибуты» зададим размеры поля для рисования и масштабные коэффициенты.
Воспользовавшись полем «Линия» вкладки «Атрибуты», зададим ширину, цвет, стиль линий, которыми будем рисовать. С помощью поля «Граница» зададим ширину и цвет бордюра. Поле «Заполнение» позволяет задать цвет и изображение заливки. «Список элементов» содержит перечень примитивов, используемых при создании графического объекта. Элементы всех полей вкладки «Атрибуты» могут динамически изменяться в скриптах (программах) пользователя.
Графические примитивы могут быть нарисованы с помощью мышки или заданы с помощью списка графических примитивов («Список элементов»). В первом случае координаты контрольных точек создаваемого примитива вычисляются автоматически, ширина, цвет, стиль линии, ширина и цвет бордюра устанавливаются по умолчанию из вкладки «Атрибуты». Во втором случае примитив необходимо описать в «Списке элементов» следующим образом:


line:(x1|y1):(x2|y2):width:color:border_width:border_color:style (1)
arc:(x1|y1):(x2|y2):(x3|y3):(x4|y4):(x5|y5):width:color:border_width:border_color:style (2)
bezier:(x1|y1):(x2|y2):(x3|y3):(x4|y4):width:color:border_width:border_color:style, (3)


где (x1|y1) - координаты первой контрольной точки примитива;
(x2|y2) - координаты второй контрольной точки примитива;
(x3|y3) - координаты третьей контрольной точки примитива;
(x4|y4) - координаты четвертой контрольной точки примитива;
(x5|y5) - координаты пятой контрольной точки примитива;
width - ширина линии, которой будет нарисован примитив;
color - цвет линии, которой будет нарисован примитив;
border_width - ширина бордюра;
border_color - цвет бордюра;
stylе - стиль линии.


При этом приоритетными являются значения ширины, цвета, стиля линии, ширины и цвета бордюра, заданные в «Списке элементов». Если необходимо использовать какие- либо характеристики, устанавливаемые полями «Линия» или «Граница» вкладки «Атрибуты», то при описании примитива их следует пропустить. Например, мы хотим создать линию с шириной 3 красного цвета сплошную и без бордюра. При этом в поле «Линия» заданы ширина линии, равная 3, черный цвет линии, сплошной стиль линии; в поле «Граница» заданы ширина бордюра, равная 5, зеленый цвет. Тогда описание примитива в «Списке элементов» должно выглядеть следующим образом:


line:(x1|y1):(x2|y2)::red:0:: (4)


Формы записи (1) - (4) задают статические характеристики примитивов, которые не могут быть изменены программно. Для задания динамических характеристик необходимо использовать форму записи:


line:p1:p2:w1:c1:w2:c2:s1 (5)


Тогда в окно «Атрибуты» добавятся поля: Точка 1 (p1), Точка 2 (p2), Ширина 1 (w1), Ширина 2 (w2), Цвет 1 (c1), Цвет 2 (c2), Стиль 1 (s1) (рис.6) Значения этих полей можно изменять программно, с помощью одного из языков программирования проекта OpenSCADA. Очевидно, что при желании динамическими могут быть объявлены не все свойства примитива, а одно или несколько, кроме того одно динамическое свойство может быть использовано многократно.


Редактирование координат контрольных точек осуществляется либо с помощью мыши, либо путем их изменения в «Списке элементов» для статических точек или прямо во вкладке «Атрибуты», имея в наличии динамические точки («Точка 1»...). Редактирование других характеристик осуществляется с помощью изменения содержимого полей «Линия» , «Граница», «Заполнение» вкладки «Атрибуты» или «Списка элементов».


Динамические атрибуты элементарной фигуры. (29 Kb)
Рис. 6. Динамические атрибуты элементарной фигуры.

Предусмотрены возможности выделения (щелчок левой кнопкой мыши по фигуре), совместного выделения примитивов (левая кнопка мыши + нажатая клавиша «Ctrl» при выключенной кнопке «Подключиться»), совместного выделения рамкой, рисуемой с помощью нажатой левой кнопки мышки, их перемещения (клавиатура/мышь), копирования и вставки («Ctrl»+«C», «Ctrl»+«V» или из контекстного меню), удаления («Del»).
Для связи примитивов друг с другом необходимо:


Для заливки замкнутого контура необходимо два раза кликнуть мышкой внутри него либо задать заливку в «Списке элементов» следующим образом:
fill:(x1:y1):(x2:y2):...:(xn:yn):color:image - (статика),
fill:p1:p2:p3:...:c1:i1 - (динамика),
где (x1:y1):(x2:y2):...:(xn:yn) - координаты начальных/конечных точек примитивов, образующих замкнутый контур,
color - цвет заливки,
image - изображение заливки.


При этом приоритетными являются значения цвета и изображения заливки, заданные в «Списке элементов». Если необходимо использовать характеристики, устанавливаемые полем «Заполнение» вкладки «Атрибуты», то при описании примитива их следует пропустить.


Для масштабирования фигур необходимо в поле «Геометрия» задать значения масштаба по осям «X» и «Y». Кроме того, существует возможность визуально увеличить/уменьшить изображение, не меняя масштаб. Для этого необходимо выйти из режима редактирования, щелкнуть правой кнопкой мыши по полю виджета, в появившемся контекстном меню выбрать пункт «Увеличить (+10%)»/ «Уменьшить (-10%)» либо покрутить колесико мышки, удерживая при этом нажатой клавишу «Ctrl». Выход из режима редактирования осуществляется либо с помощью нажатия клавиши «Esc», либо с помощью контекстного меню виджета.


Существует возможность поворачивать содержимое виджета. Для поворота созданных объектов следует в окне «Атрибуты» задать «Угол поворота» от -360 до 360.
Графический редактор поддерживает прозрачность цвета, задаваемую следующим образом: color-t, где color - цвет, а t - прозрачность от 0 (полностью прозрачный) до 255 (непрозрачный).

4. Контекстное меню графического редактора

Предусмотрено контекстное меню, вызываемое щелчком правой кнопки мышки в области редактируемого виджета. В зависимости от того, какой объект находится под указателем мышки, контекстное меню может принимать несколько различный вид. Ниже, на рисунке 6 приведены примеры контекстного меню.


Контекстное меню для линий (27 Kb) Котекстное меню для заливки (26 Kb)
Рис. 6. Контекстное меню для линий (линия, дуга, кривая Безье) и для заливки слева направо.

Контекстное меню включает следующие секции (сверху вниз):


5. Диалог свойств элементарной фигуры

Диалог, варианты которого представлены на рисунках 7, 8, 9, реализован для интерактивного и удобного управления свойствами фигур(ы).


Диалог свойств элементарной фигуры для одной линии (линия, дуга или кривая Безье) (40 Kb)
Рис. 7. Диалог свойств элементарной фигуры для одной линии (линия, дуга или кривая Безье).

Диалог свойств элементарной фигуры для группы выбранных линий (33 Kb) Диалог свойств элементарной фигуры для группы фигур в исключенными свойствами (30 Kb)
Рис. 8. Диалог свойств элементарной фигуры для группы выбранных линий.

Диалог свойств элементарной фигуры для заливки (22 Kb)
Рис. 9. Диалог свойств элементарной фигуры для заливки.

Как видно из рисунков выше, диалог может иметь три различных формы в зависимости от объекта, для которого вызывается.
Если диалог вызван для одиночной фигуры (линия, дуга или кривая Безье), то в нем существует возможность редактировать координаты точек фигуры (рис. 7). Если точка соединена с точкой другой фигуры или фигур, и включен режим «привязок» ( «Подключиться» ), то введенные координаты будут применены ко всем фигурам, для которых эта точка общая, а заливки, в которых участвует фигура, будут соответственно перерисованы.


Если же диалог вызван для группы выбранных фигур (рис. 8), то свойства (атрибуты), указанные в диалоге, будут применены ко всем фигурам, перечисленным в заглавии диалога. При вызове диалога в полях свойств будут отображаться данные той фигуры из группы выбранных, относительно которой было вызвано контекстное меню. Существует возможность включать/исключать отдельные свойства диалога. Для этого предусмотрена кнопка (Кнопка включения/исключения свойств (2 Kb)). В случае исключения отдельных свойств они не будут обрабатываться при подтверждении диалога (кнопка «Принять»). При подтверждении диалога все указанные данные для включенных свойств будут применены для всей группы фигур.


Диалог для свойств заливки (рис. 9) позволяет управлять свойствами отдельной заливки.


При выборе флажка справа от свойства оно (свойство) после подтверждения диалога устанавливается в значение по умолчанию, которое указано во вкладке «Атрибуты». Кнопки «Дин/Стат» делают соответствующие свойства динамическими либо статическими.


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]