#Общие сведения о графической системе
Система двухмерной анимации предназначена для создания движущихся графических изображений и подключения их к тем или иным значениям, получаемым от расчетного ядра программного комплекса. При помощи данной системы можно создавать многоуровневые мнемосхемы устройств и наглядные примеры.
Графическая система реализуется с использованием пяти типов блоков:
1. Блоки для анимации на основном схемном окне:
«Анимация из портов»,
«Анимация из памяти»,
2. Блоки для анимации в отдельном окне:
«Панель управления с обменом через память»
«Панель управления с обменом через порты».
«Панель управления с обменом через общие блоки памяти»

Основным элементом графической системы является графический редактор, предназначенный для создания и изменения изображений. Графический редактор поддерживает некоторые стандартные объекты ОС Windows и технологию OLE (Objects Linked and Embedded), что позволяет вставлять внешние объекты (например, диаграммы, видеофрагменты) на основное схемное окно и в панели управления.

{

Окно графического редактора


#

Анимация из портов
Блок позволяет выводить изображение на основном схемном окне. Данный блок находится в библиотеке Анимация «Линейки» типовых блоков. Для создания и изменения изображения необходимо произвести двойной щелчок по блоку.

Свойства:

Количество входов, количество выходов - установка нужного количества входов и выходов.
Ссылка на панель управления  имя панели управления, связанной с данным блоком. Панель управления будет вызываться в режиме работы при двойном щелчке по блоку.


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

{

Окно
проекта с блоком «Анимация из портов»

В списке свойств этого блока имеется пункт «Ссылка на панель управления». Если в проекте имеются блоки типа Панель управления, то в этом пункте можно указать имя панели, которая будет вызываться при двойном щелчке по блоку в режиме моделирования. При этом в панель управления будет пересылаться список данных «Глобальные свойства» графического контейнера данного блока. Это позволяет управлять несколькими блоками при помощи одной панели управления.


#K Анимация из памяти
Блок анимация из памяти аналогичен блоку Анимация из портов, но отличается способом подключения данных. Данные принимаются из списка переменных в памяти (см. блоки В память и Из памяти) и отдаются в список внешних сигналов проекта.

Свойства:

Управляемые данные, Отображаемые данные  списки сигналов, которые исходят и поступают в анимационную систему.
Ссылка на панель управления  имя панели управления, связанной с данным блоком. Панель управления будет вызываться в режиме работы при двойном щелчке по блоку.

Для подключения данных у этого блока необходимо:
1. Произвести двойной щелчок по блоку и в открывшемся окне графического редактора создать или загрузить изображение (графический контейнер).
2. Произвести щелчок правой кнопкой мыши по блоку и выбрать в меню «Свойства».
3. В окне редактирования свойств выбрать «Отображаемые данные». В появившемся окне выбрать нужную переменную и занести её в список отображаемых данных, вспомогательный список показывает соответствие переменных проекта и внутренних сигналов графического контейнера.

{


Редактор связывания данных

Список источник содержит список переменных «В память» для отображаемых данных и список внешних сигналов проекта для управляемых. Поле «Номер элемента вектора» позволяет указать какой именно элемент векторного сигнала будет пересылаться во внутренние переменные анимационного блока.

4. Создать внешние сигналы проекта, куда должны пересылаться данные.
5. В окне редактирования свойств выбрать «Управляемые данные». В появившемся окне выбрать нужный сигнал и занести его в список отображаемых данных, вспомогательный список показывает соответствие сигналов проекта и внутренних сигналов графического контейнера.
Пересылка данных производится в том же порядке, что и для блока «Анимация из портов».


# Панель управления с обменом через память
Блок Панель управления с обменом через память позволяет выводить изображение в отдельном окне, полностью аналогичном окну графического редактора при редактировании блоков Анимация из портов и Анимация из памяти. Подключение данных к панели управления полностью аналогично блоку Анимация из памяти.


# Панель управления с обменом через порты
Блок Панель управления с обменом через порты позволяет выводить изображение в отдельном окне. Способ обмена данными аналогичен блоку Анимация из портов. В остальном блок аналогичен блоку Панель управления с обменом через память

Свойства:

Количество входов, количество выходов - установка нужного количества входов и выходов.
Способ обмена данными  если это свойство имеет значение «Один порт  один сигнал», то каждому порту блока будет соответствовать только один сигнал панели управления, если свойство имеет значение «Один порт  все сигналы», то значения сигналов при чтении данных будут присваиваться последовательно, т.е. элементу 1 векторного входа будет соответствовать первый по порядку в списке сигналов элемент, 2  второй и т.д., аналогично для выходов, при этом сигналы должны быть скалярными (для векторов будет присвоен только первый элемент).


#K Панель управления с обменом через общие блоки памяти
Этот блок предназначен для создания анимационных изображений в отдельном окне. Для передачи данных этому блоку используется технология общих блоков памяти (Common  блоки). Использование этой технологии позволяет получать данные из других проектов, рассчитываемых программным комплексом.

Свойства
:

Отображаемые данные  список переменных, передаваемых из общих блоков памяти ПК «МВТУ» в список сигналов панели отображения.

Управляемые данные  список переменных, передаваемых из панели отображения в общий блок памяти.


#Добавление и редактирование свойств примитивов
В отличие от растровых графических редакторов, графическое изображение в этой программе состоит из отдельных объектов  примитивов. Для добавления нового элемента необходимо щёлкнуть по его пиктограмме на панели примитивов, а затем разместить его в поле графического редактора.

{


Панель
примитивов

Каждый примитив имеет свойства, которым можно присваивать значения. Для редактирования свойств примитива необходимо выделить нужный примитив, а затем выбрать в меню графического редактора пункт «Редактирование - Свойства объекта», при этом появляется окно редактирования свойств примитива.

{

Окно
редактора свойств примитивов
Имя свойства используется при текстовом описании анимации и в редакторе связей. Для изменения значения свойства нужно щёлкнуть левой кнопкой мыши по нужной строке в столбце «Значение» редактора свойств.


#Пересылка данных и операции над примитивами
Над примитивами можно выполнять операции  перемещение, поворот, масштабирование и изменение пропорций. Все примитивы, которые выводятся на экран, принадлежат специальному объекту  графическому контейнеру.
Контейнер  объект объединяющий несколько примитивов сразу. Он не имеет собственных методов рисования, но имеет метод, позволяющий стирать изображение в заданной прямоугольной области, причём эта область имеет угол поворота и два масштаба  по ширине и по высоте. Данный объект содержит список примитивов, которые должны выводится на экран, а также он распределяет команды между примитивами и вызывает метод их перерисовки. Также контейнер производит присвоение свойствам примитива каких-либо данных. Данные в контейнере содержатся в списке сигналов, глобальных и локальных свойств. Эти списки содержат элементы типа «Сигнал».
Сигнал  объект, содержащий элемент данных определённого типа. Данный объект содержит информацию о типе, имени и названии, хранящегося в нём элементе данных, а также методы, позволяющие читать и сохранять элемент данных в поток (файл, буфер). Сигналы, а также глобальные свойства и локальные переменные в отличие от свойств примитива имеют изменяемый тип данных и их можно редактировать в специальном редакторе. Для редактирования списка портов (глобальных или локальных свойств) необходимо выбрать в меню пункт «Сервис  Сигналы» («Сервис  глобальные свойства» или «Сервис  локальные переменные»). Для добавления нового сигнала нужно нажать на кнопку «Добавить сигнал».

{


Окно редактора сигналов графического контейнера

При перерисовке контейнера с объектами происходит сначала присвоение свойств примитивов, а затем их перерисовка.
В Анимационной Системе предусмотрены несколько способов передачи данных :
1. Посредством написанного для каждого контейнера скрипта.
Скрипт  это текстовое описание действий, выполняемых над данными и объектами, который при запуске проекта компилируется и выполняется на каждом шаге перерисовки или только при запуске.
2. Путем заполнения массива связей контейнера.
3. Путем связывания сигнала (глобального или локального свойства) с каким-либо свойством одного из примитивов.
При помощи скрипта над примитивами можно производить следующие действия:
1. Присвоение одному из свойств примитива какого-либо значения. Например, пусть контейнер содержит в своём составе примитив типа «Линия» (TLine) c именем «Line» и имеет порт с именем MyPort и типом данных  вещественное число. Запись «Line.Points[0]:X=MyPort» означает, что координате X начальной точке линии будет при перерисовке присвоено значение хранящееся в порте MyPort. Над данными можно выполнять арифметические операции  сложение, вычитание, умножение и деление, а также применять к ним различные математические функции.
2. Перемещение, поворот, масштабирование и растяжение-сжатие объекта-примитива (объектные операции). Примеры: запись «Move Line 0 MyPort» означает, что при перерисовке объект с именем «Line» будет перемещён на вектор [0, значение сигнала MyPort]; запись «Rotate Line 0 0 MyPort» означает, что при перерисовке объект с именем Line будет повёрнут относительно точки с координатами [0,0] на угол, соответствующий значению сигнала MyPort.
Для редактирования скрипта необходимо выбрать в меню пункт «Сервис  Скрипт», при этом появляется окно редактирования скрипта.

{

Окно редактора скрипта

Массив связей содержит информацию список объектов типа «Связь». Каждая связь включает информацию об имени источника и имени приёмника. При перерисовке в контейнере будет производится присвоение свойств согласно данной таблице, т.е. данные из списка источников будут перемещены в список приемников. Данный механизм является более быстрым по сравнению со скриптом (особенно, если контейнер имеет большое количество портов). Для редактирования списка связей необходимо выбрать в меню пункт «Сервис  Связи», при этом появляется окно редактора связей. Для создания связи надо выделить нужный объект на схеме, при этом в закладке «Объект» редактора связей появятся его свойства и список сигналов. Затем перетащить нужное свойство мышкой в таблицу связей объекта. Аналогично в таблицу перетаскиваются сигналы, глобальные свойства и локальные переменные окна (группы). В массиве связей можно выбрать номер (поле) комплексного элемента данных, аналогично операндам скрипта (например Line.Points[0]:X  это координата X первой опорной точки объекта с именем Line), для этого  щёлкните два раза по нужному элементу таблицы.


{

Окно редактора связей

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

{

Окно отладки анимации


#

Группы
Содержимое графического редактора можно записать в файл, для чего нужно выбрать пункт меню « Файл  Сохранить как » и указать в появившемся диалоговом окне имя файла. Для загрузки изображения из файла необходимо выбрать пункт меню « Файл  Открыть ». Сохранённые графические файлы можно также загрузить и вставить в редактор как единый объект  группу. Для этого нужно выбрать пункт меню «Файл  вставить из файла» или нажать кнопку на панели примитивов «Вставить из файла». При загрузке файла как группы ранее сохранённый список глобальных свойств будет добавлен в свойства группы и станет доступен через редактор свойств, а список сигналов  будет доступен в скрипте и в списке связей. Файлы с содержимым графического редактора имеют расширение « *.gcn ». Уже вставленные группы можно также сохранить в специальный тип файла  файл группы ( *.gr ), для чего надо выбрать в меню пункт «Файл  Сохранить группу». Вставленную группу можно отредактировать сделав по ней двойной щелчок. Содержимое групп можно менять, не изменяя их имён и положения. Для этого необходимо выделить заменяемые группы, выбрать в меню пункт «Файл  заменить группы» и указать нужный файл.
Графический редактор позволяет также сохранить в файл отдельные элементы изображения. Для этого надо выделить нужные объекты и выбрать пункт меню «Файл  сохранить выделенное», в появившемся диалоге укажите имя файла. Для вставки объектов, сохранённых в файл выберите «Файл  вставить из файла» и в диалоге выбора файлов выберите тип файлов «Элементы». Объекты будут вставлены из файла, аналогично вставке из буфера.


#Ссылки
К любому примитиву можно подсоединить панель управления. Для этого надо открыть окно редактирования свойств примитива и щёлкнуть по свойству «Имя управляющей формы» и выбрать в появившемся окне нужную панель управления. Выбранная панель управления будет появляться при двойном щелчке по данной группе в режиме отображения. При этом в панель управления экспортируется список свойств примитива и список сигналов примитива. При отображении панели управления по ссылке свойства примитива доступны через список глобальных свойств панели.

Например у группы в списке сигналов есть элемент Signal, а в списке глобальных свойств есть элемент Property. Для доступа к этим данным у присоединённой по ссылке панели управления в списке глобальных свойств должны быть заданы элементы Signal и Property. Свойства, заданные в списке глобальных свойств панели управления должны быть в списке сигналов и списке глобальных свойств группы, к которой присоединена эта панель.


#Шаблоны
Анимационная система позволяем автоматизировать процесс создания сигналов и связей. Для этого предусмотрен механизм шаблонов. Шаблон  это текст, согласно которому создаются сигналы (глобальные свойства, локальные переменные), связи и строки скрипта. Шаблон может быть задан для любого примитива. Для создания шаблона надо в редакторе свойств примитива заполнить поле «Шаблон автозаполнения».
Чтобы выполнить действия шаблона, надо выделить объект и выбрать в меню «Сервис  Генерация сигналов и связей»

Шаблон состоит из команд с параметрами. Общий формат записи :

<Команда> <Параметр 1>, <Параметр 2> &

Разделитель между параметрами  запятая.

Команды шаблона:
Пример Результат Если Если Если Действие Действие
Параметры Описание Плавное Плавное При


Описание Создать Очистка Загрузка Сохранение Вставка Сохранение Замена Сохраняет Запись
Описание Вырезать Копировать Копировать Вставка Удаление Выделение Снять Выделение Выделение Создание Разрушение Перемещение Поворот Пропорциональное Непропорциональное Изменение Перемещение Перемещение
Описание Увеличить Увеличение Уменьшение Увеличение Устанавливает Установка
Описание Сигналы Вызов Вызов Вызов Автоматическая Изменение Установка Вызов Вызов Вызов
Описание Показать Установка Установка Показывает Показывает Установка Установка Если Выберите Если Выбор Выбор
Описание Скрыть Закрывает Открывает
В
Команда
написания
SCRIPT <Строка> SCRIPT $Name$.Width=0 свойство Name объекта присвоено «Line1», то будет создана строка скрипта:
Line1.Width=0
CONNECT <Источник>, <Приёмник> CONNECT Signal1, $Name$.Width имя объекта  Line1, то будет создана связь, где источник будет сигнал с именем Signal1, а приёмник  свойство Width объекта Line1. По этой команде новые сигналы не создаются, создаётся только связь.
SIGNAL <Имя>, <Режим  вход или выход>, <Тип данных>, <Название> SIGNAL $Name$Out, out, boolean, Состояние имя объекта  Line1, то будет создан сигнал с именем «Line1Out», режим  «выход», тип данных  двоичные, название сигнала  «Состояние».
Если уже есть сигнал с таким именем, то команда игнорируется. Если параметр «режим» не указан (пробел), то по умолчанию сигнал будет входом, для того чтобы сигнал был выходом надо указать Out. Если не указан тип данных, то по умолчанию  вещественное число. Идентификаторы типов данных:

INTEGER  целое
BOOLEAN  вещественное
ARRAY  массив вещественных чисел
COLOR  цвет

Если не указано название, то оно совпадает с именем. В простейшем случае достаточно написать:

SIGNAL <Имя сигнала>
PROPERTY <Параметры как у команды SIGNAL> PROPERTY $Name$Input команды аналогично команде SIGNAL, но создаётся на сигнал, а глобальное свойство.
VAR <Параметры как у команды SIGNAL> VAR $Name$LocalVar команды аналогично команде SIGNAL, но создаётся локальная переменная.
команд шаблона могут задаваться в виде форматированных строк (кроме типа данных и режима данных в команде SIGNAL):

$PropName$Текст      

Часть строки $PropName$ - будет заменена на значение свойства с именем «PropName», представленном в строковом виде.




#Специальные сочетания клавиш графического редактора

Сочетание клавиш

Control + Левая кнопка мыши масштабирование изображения в поле редактора (Zoom).
Control+ Правая кнопка мыши перемещение изображения в поле редактора (Aerial View).
Shift + Левая кнопка мыши щелчке по полю редактирования, если удерживать клавишу Shift, будет появляться окно выбора объектов, в котором можно указать нужный объект, если его заслоняет другой объект.
#Команды меню графического редактора
Группа команд «Файл».

Название
содержимого окна редактирования
Открыть содержимого окна редактирования из файла
Сохранить как содержимого редактора в файл графики с расширением *.gcn.
Вставить из файла группового объекта из файла графики (*.gcn или *.gr) или вставка нескольких отдельных элементов из файла элементов (*.elt). Тип вставляемого файла выбирается в диалоге выбора файла.
Сохранить группу выделенной группы в отдельный файл группы (*.gr).
Заменить группы содержимого выделенных групп на новое из графического файла.
Сохранить выделенное один или несколько выделенных объектов в файл элементов (*.elt).
Запись в видеофайл изображения окна редактора в файл видео (*.avi) в стандартном формате.
Группа команд «Редактирование».

Название
выделенные объекты в буфер и удалить его с поля редактирования.
Копировать образы выделенных объектов в буфер.
Вставить ранее копированных объектов из буфера в поле редактирования
Удалить выделенных объектов.
Выделить все всех объектов, находящихся в поле редактирования.
Снять выделение выделение со всех объектов, находящихся в поле редактирования.
Выделить по типу примитивов заданного типа.
Выделить по имени примитивов по выбранному имени.
Сгруппировать из выделенных примитивов группы. Для группировки примитивов надо их выделить и выбрать данный пункт меню.
Разгруппировать выделенной группы. Для выполнения действия надо выделить группу и выбрать данный пункт меню.
Переместить выделенных объектов. Для перемещения надо сначала выделить нужные объекты, а затем выбрать данный пункт меню. Потом указать начальную и конечную точки вектора смещения.
Повернуть выделенных объектов. Для поворота надо выделить нужные объекты, выбрать данный пункт меню, указать мышью центр поворота и вторую точку вектора поворота.
Масштабировать изменение размеров выделенных объектов. Для масштабирования надо выделить нужные объекты, выбрать данный пункт меню, указать мышью центр масштабирования и вторую точку.
Растянуть-сжать изменение размеров выделенных объектов. Последовательность действий аналогична предыдущей команде.
Свойства объекта свойств выделенного объекта или общих свойств (по типу и названию) нескольких выделенных объектов.
Выдвинуть вперёд выделенного объекты в конец списка объектов, т.е. он будет рисоваться поверх всех остальных.
Поместить назад выделенного объекта в начало списка объектов, т.е. он будет рисоваться сзади всех остальных.
Группа команд «Лупа».

Название
в 2 раза масштаба изображения в 2 раза.
Уменьшить в 2 раза масштаба изображения в 2 раза
Увеличить фрагмент выделенного фрагмента изображения во всё окно. Для увеличения  сначала выбрать пункт меню, я затем выделить фрагмент изображения.
Исходное положение вид схемы в соответствии с её начальным загруженным состоянием. Для нового окна  масштаб 1:1, центр координат  посередине. При редактировании группы для сохранения относительного положения входящих в неё примитивов выберите этот пункт меню.
Стандартный масштаб масштаба изображения 1:1
Группа команд «Сервис».

Название
редактора внешних сигналов графического контейнера.
Глобальные переменные редактора глобальных переменных графического контейнера.
Локальные переменные редактора локальных переменных графического контейнера.
Генерация сигналов и связей генерация сигналов, связей и скрипта по шаблонам для выделенных объектов.
Порядок перерисовки порядка перерисовки объектов.
Свойства формы общих свойств формы редактирования: цвет фона, имя формы, заголовок формы.
Связи редактора связей и дерева проекта данного окна.
Скрипт текстового редактора для редактирования скрипта  текстового алгоритма перерисовки.
Отладка окна отладки графики текущего редактора.
Группа команд «Вид».

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

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

Команды главного меню редактора частично продублированы во всплывающем меню. Для доступа к всплывающему меню надо щёлкнуть по полю редактирования правой кнопкой мыши.



#Скрипт и его использование

Скрипт  это алгоритм, записанный в текстовом виде при помощи специального набора команд, согласно которому при перерисовке объектов в режиме «работа» будет производиться перерисовка графических объектов.
Команды скрипта делятся на функции, объектные операции, операторыи специальные команды. Функции  это команды, содержащие знак присваивания (=). Объектные операции  это команды у которых тип одного из операндов  примитив. Операндами могут являться примитивы, свойства примитивов, сигналы, глобальные переменные и локальные переменные, при этом в скрипте записываются их имена (см. поле «Имя» в редакторе свойств примитива или в редакторе сигналов).
Формат описания операндов:

Для свойств и сигналов объекта:

        <Имя объекта>.<Имя свойства>[<Номер элемента в массиве>]:<Идентификатор поля>,

например:

Line.Points[0]:X  это координата X первой опорной точки объекта с именем Line

Line.Width  ширина линии.

Line.Color  цвет линии.

Для глобальных свойств, сигналов, локальных переменных контейнера:

         <Имя свойства>[<Номер элемента в массиве>]:<Идентификатор поля>,

например:

Signal  переменная с именем «Signal»

Point:X  координата X переменной типа «Точка» с именем «Point».

Array[1]  элемент номер 1 переменной типа «Массив» с именем «Array»

Специальные операнды:

         GlobalColor - цвет фона главного окна, тип  цвет.
GroupColor - цвет фона текущего контейнера (для групп  цвет группы), тип  цвет.




#KОператоры

Семантика Выполняемые Складывает Вычитает С Перемножает С Делит С Возводит Присваивание Если Если Если
В
Оператор действия
+ C=A+B операнды A и B и помещает результат в операнд C
- C=A-B из операнда A операнд B и помещает результат в операнд C
*=A*B операнды A и B и помещает результат в операнд C
/=A/B операнд A на операнд B и помещает результат в операнд C
^=A^B операнд A в степень B и помещает результат в операнд C
= B=A. Помещает содержимое операнда A в операнд B
C=A=B A равно B, то C=1, иначе C=0
> C=A>B A больше, чем B, то C=1, иначе C=0
< C=A<B A меньше, чем B, то C=1, иначе C=0
арифметических операторах допустимо использовать вещественные, целые, двоичные и массивы. При использовании в качестве операнда массива будет использован его первый элемент (кроме операции присваивания). Данный интерпретатор не поддерживает сложные математические выражения. Семантика арифметических операций должна точно соответствовать показанной выше таблице. В параметрах функций и операций не допускаются арифметические выражения.



#Функции

Семантика Выполняемые Выбирает Выбирает Вычисляет Производит Вычисляет Ограничивает Помещает Помещает Если Если Вычисление Вычисление Вычисление Вычисление Перевод Вычисление Вычисление


Семантика Выполняемые Параллельный Поворот Увеличение Растяжение Привязка Привязка
В
Функция действия
MIN Y=MIN X1 X2 минимальное значение из множества {X1, X2} и помещает результат в операнд Y
MAX Y=MAX X1 X2 максимальное значение из множества {X1, X2} и помещает результат в Y
ABS Y=ABS X модуль X и помещает результат в Y
LINTERP Y=LINTERP X MinX MaxX MinY MaxY линейную интерполяцию аргумента X, находящегося в интервале [MinX, MaxX], в интервал [MinY, MaxY] и помещает результат в Y
COLOR Y=COLOR X MinX MaxX MinColor MaxColor цвет в интервале [MinColor, MaxColor] по значению аргумента X, находящегося в интервале [MinX, MaxX] и помещает результат в Y. Значения Y, MinColor и MaxColor должны иметь тип «Цвет».
LIMIT Y=LIMIT X MinY MaxY значение X в пределах [MinY, MaxY] и помещает результат в Y
SET Array=SET Value Index значение Value в массив Array под индексом Index. Значение Index должно лежать в пределах [0, ArrayCount-1], где ArrayCount  размерность массива
GET Value=GET Array Index элемент массива Array с индексом Index в операнд Value. Значение Index должно лежать в пределах [0, ArrayCount-1], где ArrayCount  размерность массива
IF Y=IF Bool X значение Bool больше нуля, то помещает значение X в Y
ELSE Y=ELSE Bool X значение Bool меньше или равно нулю, то помещает X в Y
DISTANCE D=DISTANCE P1 P2 расстояния между точками P1 и P2
MIDDLE MiddlePoint=MIDDLE P1 P2 середины отрезка {P1,P2}
CENTER CenterPoint=CENTER P1 P2 P3 центра дуги окружнности по трём точкам P1, P2 и P2
EXCENTER Height=EXCENTER P1 P2 Point расстояния от точки Point до прямой, заданной точками P1 и P2
GLOBAL GlobalCoord=GLOBAL LocalCoord координат из локальных координат группы в координаты владельца данной группы
SLIDE Point=SLIDE P1 P2 StartP EndP R точки пересечения линии {P1,P2} и окружности с центром StartP и радиусом R, наиболее близкой к точке EndP
GETANGLE Angle=GETANGLE P1 P2 угла от полярной оси до отрезка {P1, P2}
#Объектные операции

Операция
действия
MOVE MOVE Object X Y перенос объекта с именем Object на вектор {X,Y}
ROTATE ROTATE Object X Y Angle объекта Object относительно точки с координатами {X,Y} на угол Angle
SCALE SCALE Object X Y ScaleFactor объекта Object относительно точки с координатами {X,Y} в количество раз равное ScaleFactor
STRETCH STERETCH Object X Y ScaleX ScaleY или сжатие объекта Object относительно точки {X,Y} в ScaleX раз по оси X и ScaleY раз по оси Y
CONSTR2P CONSTR2P RectObject StartPoint EndPoint прямоугольного объекта RectObject к двум точкам при сохранении высоты. Объект привязывается в середине по высоте по краям области
SLIDELINE SLIDELINE Line P1 P2 StartPoint конца линии Line к прямой, заданной точками P1 и P2 при сохранении длины и заданной начальной точке линии StartPoint
объектных операциях первый операнд должен обязательно быть именем какого-либо примитива.



#Специальные команды

Семантика Выполняемые Команды


Команда действия
INIT&ENDINIT INIT
Command_1
Command_2
-------------
ENDINIT
, находящиеся в блоке INIT&ENDINIT, выполняются только один раз  при запуске проекта на выполнение или при отображении формы по ссылке.
#KПример создания анимации  простейший стрелочный прибор

         Дополним освоение процедуры работы в Анимационной Системе примером создания стрелочного прибора с цветовыми индикаторами.
         Сформулируем условия данного примера. Виртуальный стрелочный прибор типа вольтметр, расположенный на схемном окне Проекта, «измеряет» входной сигнал, изменяющийся по гармоническому закону
                                    .
Стрелочный прибор имеет 2 цветовых индикатора типа лампочка, причем:
если x(t) < 1, то должна «загораться» желтая лампочка;
если x(t) > 9, то должна «загораться» красная лампочка.
         Для создания виртуального прибора необходимо произвести следующие действия:
1) Запустить программный комплекс «МВТУ».
2) Создать новый проект, выполнив щелчок «мышью» по командной кнопке Новый в Главном Окне ПК «МВТУ» (Главной панели инструментов) или нажать клавишу F3.
3) Перенести в схемное окно: из библиотеки Источники блоки Константа и Синусоида; из библиотеки Операции  блок Сумматор; из библиотеки Анимация - блок Анимация из портов (первый слева в закладке Анимация).
         Внимание.
         Блоки Анимация из портов и Анимация из памяти при переносе их в схемное окно проекта из «Линейки» типовых блоков первоначально не имеют визуального образа в виде пиктограммы. Если в настройках ПК «МВТУ» установлен флаг Рисовать обрамление (опция Настройки в командном меню Опция), то визуальный образ блока  прямоугольник с входным портом слева. Если в настройках не установлен флаг Рисовать обрамление, то визуальный образ блока  только входной порт плюс маркеры выделения по углам «невидимого» обрамления.
4) Соедините блоки линиями связи и введите (или измените) параметры в диалоговых окнах блоков Константа, Синусоида и Сумматор. Если в настройках ПК «МВТУ» установлен флаг Рисовать обрамление, то структурная схема Проекта на данном этапе примет вид, подобный структурной схеме на рисунке 1.
{

Рисунок 1
5) Переместите курсор «мыши» на блок Анимация из портов и выполните 2-х кратный щелчок левой клавишей «мыши»: откроются окна с заголовками Примитивы (Панель графических примитивов) и Графический редактор, причем последнее окно имеет сетку и «чистое» (т.е. незаполненное).
6) Переместите курсор «мыши» в окно Примитивы, далее на кнопку Стрелочный прибор и выполните однократный щелчок «мышью». Затем переместите изображение полукруглой шкалы в окно Графический редактор, указав позицию установки переносимого изображения новым щелчком «мыши».
7) Переместите курсор «мыши» в окне Графический редактор на примитив Стрелочный прибор и выполните однократный щелчок левой клавишей «мыши»: примитив Стрелочный прибор выделен и доступен для редактирования. Откройте меню Редактирование и в падающем меню выберите опцию Свойства: откроется окно Свойства: Voltmeter1 (окно Свойства примитива Стрелочный прибор), внешний вид которого должен быть близок к рисунку 2.
         Примечание.
         Окно Свойства примитива Стрелочный прибор можно было открыть и другим способом. Переместите курсор «мыши» в окне Графический редактор на примитив Стрелочный прибор и выполните однократный щелчок правой клавишей «мыши»: откроется падающее меню Редактирование примитива Стрелочный прибор, в котором выберите опцию Свойства объекта&
         Измените следующие параметры: Верхний предел  10; Шаг  1. Остальные параметры в окне Свойства примитива Стрелочный прибор можно оставить без изменения&
{

Рисунок
2
8) Опять переместите курсор «мыши» в окно Примитивы, далее на кнопку Круг и выполните однократный щелчок «мышью». Затем переместите курсор «мыши» в окно Графический редактор, указав позицию установки центра переносимого изображения новым щелчком «мыши». Далее нажмите левую клавишу «мыши» и, удерживая клавишу, слегка сдвиньте «мышь»: появится круг зеленого цвета, причем размер круга пропорционален перемещению «мыши».
9) Переместите курсор «мыши» в окне Графический редактор на примитив Круг и выполните однократный щелчок левой клавишей «мыши»: примитив Круг выделен и доступен для редактирования. Откройте меню Редактирование и в падающем меню выберите опцию Свойства: откроется окно Свойства примитива Круг (рисунок 3).
{

Рисунок 3  Окно Свойства объекта Круг
         Измените цвет заливки примитива на желтый (окно выбора цвета заливки открывается щелчком «мыши» по ячейке «Цвет» - «Значение»).
         Примечание.
         Окно Свойства примитива Круг также можно было открыть и другим способом (см. Примечание в п. 7)&
10) Повторите действия пункта 8 и перенесите в окно Графический редактор второй круг. Повторите действия пункта 9 и измените цвет заливки 2-го круга на красный цвет.
Используя «мышь» измените размеры окна Графический редактор: немного растяните окно по горизонтали и сожмите окно по вертикали.
После вышеописанных действий изображение в окне Графический редактор должно принять вид, близкий рисунку 4.
{

Рисунок 4 - Окно Графического редактора с примитивами
11) Откройте в окне Графический редактор меню Сервис, далее в падающем меню выберите опцию Сигналы: появится окно с заголовком Сигналы. Переместите курсор «мыши» на кнопку Добавить порт (красная стрелка в левом нижнем угле окна Сигналы) и выполните однократный щелчок левой клавишей «мыши»: в окне появится строка таблицы. Измените имя сигнала на новое - Input.
Результат вышеописанных действий иллюстрируется рисунком 5.
{

Рисунок 5  Заполненное окно Сигналы
Выполните в окне Сигналы щелчок по кнопке Ok: окно Сигналы будет закрыто.
12) Задание значений входного сигнала, соответствующих включению цветовой индикации.
         Откройте в окне Графический редактор меню Сервис, далее в падающем меню выберите опцию Локальные переменные: появится окно с заголовком Локальные переменные. Переместите курсор «мыши» на кнопку Добавить порт (красная стрелка в левом нижнем угле окна Локальные переменные) и выполните два щелчка левой клавишей «мыши»: в окне появится две строки таблицы.
         В 1-ой строке: в колонке Имя введите новое имя  V1; в колонке Режим  выберите ненаправленный; в колонке Значение  введите 1.
         Во 2-ой строке: в колонке Имя введите новое имя  V2; в колонке Название  скорректируйте  Переменная2; в колонке Режим  выберите ненаправленный; в колонке Значение  введите 9.
Результат вышеописанных действий иллюстрируется рисунком 6.
{

Рисунок 6
         Примечание.
         Задание «границ» включения цветовой индикации можно было выполнить и посредством меню Сервис и опции Глобальные свойства&
        
13) Откройте в окне Графический редактор меню Сервис, далее в падающем меню выберите опцию Скрипт: появится окно с заголовком Текстовый редактор.
В этом окне введите с клавиатуры текст, идентичный тексту, представленному на рисунке 7.
Закройте окно Тестовый редактор щелчком «мыши» по кнопке Ok.
{

Рисунок 7
14) Откройте в окне Графический редактор меню Сервис, далее в падающем меню выберите опцию Отладка: появится окно с заголовком Отладка анимации, в поле Сигналы щелчком левой клавиши «мыши» выберите сигнал - Input. Установите в поле Минимум значение, равное 0 (нуль), а в поле Максимум введите число 10.
Окно Отладка анимации примет вид, подобный рисунку 8.
{

Рисунок 8  Окно Отладка анимации
Если появится окно сообщений - значит где-то при создании объекта была допущена ошибка. Если же все верно, то кнопка Отладка гаснет, а активизируется кнопка Редактирование.
Если теперь в окне Отладка анимации посредством «мыши» подвигать движок, то на изображении в окне Графический редактор должна перемещаться стрелка, а также при x(t) < 1 и x(t) > 9 должны включаться желтая и красная «лампочка», соответственно.
15) Закройте окно Графический редактор, выполнив щелчок «мышью» по «крестику» в правом верхнем угле этого окна.
После некоторого редактирования внешнего вида схемного окна Проекта (изменение текста и/или расположение подписей под блоками) изображение в схемном окне создаваемого Проекта примет вид, близкий рисунку 9.
{

Рисунок
9
15) Переместите курсор «мыши» в Главном Окне на командную кнопку Параметры счета и выполните щелчок левой клавишей «мыши»: откроется окно Параметры расчета.
         Измените в закладке Основные следующие параметры: Время интегрирования  100 с; Максимальный шаг интегрирования  0.1 с; Шаг вывода результатов  0.1 с. Остальные параметры можно оставить по умолчанию.
         В закладке Скорость установите флаг в поле Режим масштабирования времени, а в поле Множитель ускорения введите число 5. Это означает, что процесс моделирования будет выполнен в 5 раз быстрее реального времени.    
         Закройте окно Параметры расчета (щелчок левой клавишей «мыши» по кнопке Да).
16) Откройте меню Стиль в командном меню Главного Окна и далее выберите опцию Настройки. Отключите флаг Рисовать обрамление: исчезнет внешняя окантовка блоков, в том числе и окантовка виртуального стрелочного прибора.
Выполните щелчок «мышью» приблизительно в центре виртуального стрелочного прибора: блок станет выделенным. Используя меню Стиль в командном меню Главного Окна и опцию Фон блока установите светло-зеленый цвет фона виртуального стрелочного прибора. Изменив подпись под виртуальным прибором, придайте схемному окну Проекта внешний вид, близкий рисунку 10.
{

Рисунок 10
17) Переместите курсор «мыши» в Главном Окне на командную кнопку Продолжить и выполните однократный щелчок «мышью»: начнется процесс моделирования&
         За время моделирования стрелка виртуального прибора совершит более 3-х «пробегов» по шкале прибора, причем, если x(t) < 1, то будет «гореть» желтая лампочка, а если x(t) > 9, то будет «гореть» красная лампочка. По завершении процесса расчета внешний вид схемного окна Проекта будет иметь вид, близкий рисунку 11.
{

Рисунок
11
18) Рекомендуем сохранить созданный Вами Проект под «оригинальным» именем&
Для дальнейшего освоения процедурами работы в Анимационной Системе начинающему Пользователю рекомендуется самостоятельно ознакомиться с несколькими демонстрационными примерами, расположенными в подкаталоге DEMO\Анимация. В этих примерах показан ряд методов и «технологических» приемов, часто используемых при создании анимационных и других мультимедийных эффектов применительно к задачам разработки виртуальных пультов управления и виртуальных лабораторных работ.



#Пример создания анимации  модель кривошипно-шатунного механизма

В контекстную справочную систему ПК «МВТУ» включено описание основных процедур работы в Анимационной Системе, дополненное подробным описанием («step by step») двух демонстрационно-ознакомительных примеров:
1) Создание кривошипно-шатунного механизма;
2) Создание стрелочного индикатора.
Рассмотрим подробно процедуры работы в Анимационной Системе при создании визуального образа кривошипно-шатунного механизма, которому приданы мультимедийные свойства, а именно: анимация перемещений элементов механизма.
Для создания анимационного изображения кривошипно-шатунного механизма надо выполнить следующие действия:
1.       Создать новый проект и перенести из «Линейки» типовых блоков в Схемное окно проекта блок Панель анимации с обменом через порты (библиотека Анимация).
2.       Перенести в Схемное окно блок типовой блок Модельное время (библиотека Источники) и соединить выход этого блока со входом ранее перенесенного блока. Результат этих действий представлен на рисунке 1.
{


Рисунок
1 - Экранная копия Главного Схемного окна проекта
3.       Выполнить двойной щелчок «мышью» по блоку Панель анимации с обменом через порты: появится Панель графических примитивов (окно Примитивы на рисунке 2) и окно Графический редактор, вид которого представлен на рисунке 3.
{

Рисунок
2 - Экранная копия окна Примитивы
{

Рисунок
3 - Экранная копия окна Графического редактора
4.       В командном меню Сервис выбрать опцию Сигналы: появится окно Редактора сигналов анимации (окно Сигналы на рисунке 4). В окне Сигналы надо нажать кнопку Добавить сигнал (стрелка типа в левом нижнем угле окна Сигналы). Затем в таблице сигналов задать новое имя появившегося сигнала  для этого надо сделать двойной щелчок «мышью» по таблице в поле Имя и ввести Fi. Этот сигнал будет задавать угол поворота кривошипа относительно его положения в режиме редактирования. Затем надо нажать кнопку Ok.
{

Рисунок
4 - Экранная копия окна Редактора сигналов анимации
5.       В окне Примитивы выполнить щелчок «мышью» по кнопке Линия, и затем в окне Графического редактора щелчками «мыши» указать 1-ю точку, а затем 2-ю точку линии, которая будет изображать кривошип механизма (рисунок 5). Длину и положение линии можно изменять, перетаскивая «мышью» ее концы.
{

Рисунок
5
6.       Выполнить 2-х кратный щелчок «мышью» по линии, «нарисованной» в окне Графического редактора: появится окно Редактирования свойств объекта (окно Свойства на рисунке 6). В Редакторе свойств объекта необходимо изменить Имя объекта на Crank, для чего необходимо произвести двойной щелчок по полю Значение в строке Имя объекта. Можно также изменить еще какие-нибудь свойства вида линии. Закрытие окна Свойства выполняется щелчком «мыши» по кнопке Ok.
Результат вышеописанных действий представлен на рисунке 6.
{

Рисунок
6 - Экранная копия окна Редактора свойств объекта
7.       В панели примитивов выполнить щелчок «мышью» по кнопке Линия и провести осевую линию кривошипно-шатунного механизма, как показано на рисунке.
{

Рисунок
7 - Экранная копия окна графического редактора
8.       Выполнить двойной щелчок по осевой линии (см. п. 7) и установить для нее новое имя Axis и свойство Стиль линии - Штрихпунктирная. Затем нажать кнопку Ok.
{

Рисунок
8
9.       В панели примитивов нажать кнопку Линия и провести линию от конца линии с именем Crank (кривошип) до пересечения с линией с именем Axis (осевой линии) как показано на рисунке 9. Эта линия будет изображать шатун механизма.
{

Рисунок
9
10.      Выполнить двойной щелчок «мышью» по проведённой в п. 9 линии и в появившемся окне Редактора свойств установить имя объекта Line. Затем нажать кнопку Ok.
Результат действия показан на рисунке 10.
{

Рисунок
10
11.      В панели примитивов нажать кнопку Залитый прямоугольник и указать в окне графического редактора центральную точку прямоугольника так, чтобы она находилась на конце линии, проведенной в п.9. (шатун). Затем установить нужный размер прямоугольника, растягивая или сжимая его посредством «мыши» за точку (красный квадратик) на верхней или на правой боковой стороне. Результат операции показан на рисунке 11.
{

Рисунок
11
12.      Выполнить щелчок правой клавишей «мыши» по нарисованному в п.11 прямоугольнику и выбрать свойство Поместить назад.
13.      Выполнить «мышью» двойной щелчок по прямоугольнику, нарисованному в п.11 и ввести новое имя объекта Rect. Результат операции показан на рисунке 12.
{

Рисунок
12
14.      В окне графического редактора выбрать пункт меню Сервис-Скрипт. Появится окно текстового редактора скрипта. В текстовом редакторе надо ввести следующий текст
ROTATE Crank Crank.Points[0]:X Crank.Points[0]:Y Fi
SLIDELINE Line Axis.Points[0] Axis.Points[1] Crank.Points[1]
Rect.Points[0]=Line.Points[1]
Первая строка скрипта производит поворот кривошипа на угол Fi (в радианах). В скрипте все углы измеряются в радианах (положительным считается поворот против часовой стрелки). Вторая строка производит перемещение (привязку) шатуна, соответствующее положению оси и шатуна. Третья строка производит привязку положения прямоугольника к концу шатуна механизма. На рисунке 13 показан текст, введенный в редактор скрипта. Двойной символ « /» - комментарий.
{

Рисунок
13 - Экранная копия окна редактирования скрипта
15) Если Ваш рисунок не вмещается в окно редактора, или расположен не по центру, то можно изменить его масштаб. Для уменьшения масштаба или выберите в меню Лупа опцию Уменьшить в 2 раза или нажмите клавишу CTRL + левая кнопка «мыши» и «мышью» плавно измените масштаб. Увеличенный и сцентрированный по окну механизм показан на рисунке 14.

{

Рисунок
14
16)      Выберите в меню Сервис опцию Отладка: появится окно отладки анимации. Нажмите в окне отладки кнопку Отладка и выберите в списке сигналов сигнал Fi. Затем установите в поле Максимум значение 10. Попробуйте подвигать движком в окне отладки, при этом рисунок в окне редактора должен прийти в движение. Если при нажатии кнопки Отладка будет выдано сообщение об ошибке, то проверьте значения имен объектов и правильность заполнения скрипта. Окно отладки анимации показано на рисунке 15.
{

Рисунок
15 - Экранная копия окна отладки анимации

17)      В Главной панели инструментов ПК «МВТУ» нажмите командную кнопку Параметры расчета и установите следующие значения:
В закладке Основные - время интегрирования  100 секунд.
В закладке Скорость - выберите режим масштабирования времени.
18)      В Главной панели инструментов ПК «МВТУ» выполните щелчок «мышью» по командной кнопке Продолжить расчет: механизм должен начать двигаться.
19)      Дождитесь остановки расчета. В окне графического редактора выполните щелчок «мышью» по линии с именем Crank (кривошип) и по линии с именем Line (шатун). Затем в меню Редактирование выберите опцию Свойства объекта. Появится окно редактора свойств, в котором будут отображаться общие свойства выделенных объектов. Измените свойство Толщина линии до значения 7, а свойство Цвет линий - сделайте красным. Нажмите кнопку Ok. Экранная копия заполненного окна редактора свойств приведена на рисунке 16, а экранная копия окна Графического редактора приведена на рисунке 17.
{

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

{

Рисунок
17

{

Рисунок
18
21)      В Главной панели инструментов ПК «МВТУ» выполните щелчок «мышью» по командной кнопке Продолжить расчет: механизм должен начать двигаться.
22)      Сохраните проект на жесткий диск. Для этого в Главной панели инструментов ПК «МВТУ» необходимо выполнить щелчок «мышью» по кнопке Сохранить.
На этом краткое описание процедур создание анимационного объекта (кривошипно-шатунного механизма) завершено.