Структура и правила построения файла форм.


Файл форм с расширением .SHV содержит определение формы, содержащего 2 и более строк.
1-ая содержит номер формы, число байт, в последующих строках описание, имя формы. При этом строка должна начинаться с символа *, номер формы должен быть от 1 до 255. В одном файле номера не должны повторяться. Число байтов описания определяется после составления описания. Имя формы не должно совпадать с именем другой формы и его следует набирать в верхнем регистре.
2-ая и последующие строки содержат описание программы движения пера, составляют на языке описания.
Описание состоит из последовательности кодов. Каждый код соответствует одному байту и может быть выражено в десятиричной или 16-ричной системе. Число в 10-ой системе это от 0 до 256. В 16-ричной – 3 цифры 1-я – 0.
Коды разделяются запятыми. Для удобства размещения используется пробел и круглые скобки.
Коды делятся на 4 группы:
1)Основные коды задающие движение по стандартным направлениям .
2)Управляющие коды – см. таблицу.
3)Коды знечение которых определяются ближайшим слева управляющим кодом.
4)Код 0 – должен завершать описание.

Основные коды удобно записывать в 16-ричной форме при которой:
1-ый — 0
2-ой — длина вектора
3-ий – направление
Управляющие коды
Код десятичный Код 16-ричный действие Последующие коды
1 001 Опустить перо Нет
2 002 Поднять перо Нет
3 003 Делить длину на значение последующего кода Число задающее деление
4 004 Умножить длину на значение последующего кода Число, задающее которое умножают
5 005 Занести точку в стек Нет
6 006 Извлечь точку из стека и принять в качестве текущей Нет
7 007 Начерть субформу Код субформа из данного файла
8 008 Начертить вектор Смещение по Х(?Х), смещение по у(?у)
9 009 Начертить последовательность векторов Смещение по Х(?Х), по у(?у)
10 00А Начертить произвольную дугу Радиус , код дуги
11 00В Начертить дугу Смещение начала, смещение конца, старшие цифры радиуса, младшие цифры радиуса, код дуги
12 00С Начертить дугу, определенную стрелкой перегиба Смещение по Х, смещение по у, стрелка прогиба
13 00D Начертить последовательность дуг, определенных стрелкой прогиба Смещение по Х, смещение по у, стрелка прогиба

Масштабирование задаваемое кодами 003 и 004 действуют до конца описания. Масштабные коэффициенты, задаваемые последовательно, накапливаются. Т.о. если временный масштаб задан кодом 003 , затем он должен быть отменен кодом 004. При задании смещений за кодом 008, 009 используются числа от –128 до 127.
При задании дуг кодами 00А и 00В дальнейшие коды имеют следующий смысл. Код дуги записывается в 16-ричной форме, первая цифра — 0, вторая – начальный октант, третья – число охватываемых октантов. Ноль на третьей позиции означает полную окружность. Знак минус перед кодом дуги означает направление по часовой стрелке.
Смещение начала определяется как разность между началом предыдущего октанта и началом дуги (в градусах).
Смещение конца вычисляется аналогично только относительно предыдущего октана, пересекаемого дугой.
Старшие цифры радиуса дают возможность задавать значение >255.
Младшие цифры – если значение <255.
Коды 00С и 00D позволяют вычерчивать как дуги, так и векторы. 00D позволяет задавать последовательность дуг и векторов.
Дуга задает по 3 точки: начальная точка дуги, конечная точка дуги, и точка задаваемая стрелкой прогиба. Стрелка прогиба определяется по формуле: .
Если стрелка прогиба указана со знаком “-” дуга направляется по часовой стрелке. Для S=0 дуга преобразуется в отрезок А, для S=127, угол –180 (полуокружности).

Загрузка...