Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
274
Добавлен:
29.05.2015
Размер:
3.15 Mб
Скачать

Угол поворота <тйвсНСц>: 0

Результат вставки показан на чертеже.

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

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

Кроме кодов отрисовки векторов, в байте описания формы можно использовать ряд специальных кодов, предназначенных для создания дополнительных форм и выполнения других операций. Для того чтобы задать специальный код, нужно либо вписать 0 (нуль) во второй позиции трехсимвольной спецификации байта (описание длины вектора), либо поставить только номер кода. Например, верными будут как код 008, так и код 8.

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

Код

Описание

000

Конец описания формы

001

Включение режима отрисовки (опускание пера)

002

Отключение режима отрисовки (поднятие пера)

003

Деление длин векторов на следующий байт

004

Умножение длин векторов на следующий байт

005

Занесение текущей позиции в стек

006

Восстановление текущей позиции из стека

007Отрисовка субформы, номер которой определяется следующим байтом

008Смещение по осям X-Y, заданное следующими двумя байтами

226 | Глава 8 Формы и шрифты

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

Код Описание

009Ряд из нескольких смещений по осям X-Y, оканчивающийся на (0,0)

00A Октантная дуга, заданная следующими двумя байтами

00B Дробная дуга, заданная следующими пятью байтами

00C Дуга, заданная смещением X-Y и прогибом

00D Несколько дуг, заданных прогибом

00E Обработка следующей команды только для вертикального текста

Коды 0, 1 и 2: Конец формы и управление режимом построения

Кодом 0 маркируется конец описания формы.

Коды 1 и 2 управляют режимом построения. Режим отрисовки включается в начале каждой формы. При включенном режиме отрисовки (код 1) происходит отрисовка линий, заданных векторами. При отключенном режиме отрисовки (код 2) происходит перенос пера к новой позиции без проведения линии.

Коды 3 и 4: Управление размером

Коды 3 и 4 управляют относительным размером каждого вектора. Высота, указанная при вводе команды ФОРМА, первоначально считается длиной одного ортогонального вектора (в направлении 0, 4, 8 или C). Код 3 делит длину векторов на следующий байт. Код 4 умножает длину векторов на следующий байт. За кодами 3 и 4 следует байт, в котором содержится целочисленный масштабный коэффициент (от 1 до 255). Если нужно, чтобы реальная высота формы была точно равна значению высоты, заданному при вставке, а согласно описанию в ней укладывается 10 длин векторов, то для масштабирования необходимо использовать комбинацию 3,10. Масштабный коэффициент в пределах одной формы обладает свойством накопления; так, при умножении исходного значения на 2, а затем на 6 результатом будет коэффициент 12. Рекомендуется по окончании отрисовки формы восстанавливать исходный масштабный коэффициент, особенно для субформ и текстовых шрифтов. AutoCAD не выполняет сброс масштабного коэффициента.

Создание файлов описаний форм | 227

Коды 5 и 6: Сохранение и восстановление позиции

Код 5 загружает (сохраняет) в стек, а код 6 извлекает (восстанавливает) из стека текущие координаты пера. С их помощью можно вернуться к некоторой точке описания после отрисовки линий от нее. Необходимо всегда извлекать из стека все, что туда загружено. Стек может хранить не более четырех позиций. Если стек переполнен из-за избыточного количества операций записи или пропущенных операций считывания, при отрисовке формы появляется сообщение:

Переполнение позиционного стека в форме nnn

Аналогично, если попытаться считать из стека больше значений, чем туда было загружено, при отрисовке формы появляется сообщение:

Потеря значимости позиционного стека в форме nnn

Код 7: Субформа

Код 7 производит построение субформы, номер которой определяется следующим байтом. Для не-Unicode-шрифтов за кодом 7 следует номер формы от 1 до 255. Для Unicode-шрифтов за кодом 7 следует номер формы от 1 до 65535. Номера форм Unicode всегда являются двухбайтовыми (подробнее об отличиях шрифтов Unicode от обычных шрифтов см. раздел “Описания шрифтов Unicode” на стр.277). Производится отрисовка формы с заданным номером, хранящейся в том же файле. Автоматической установки режима отрисовки для новой формы не происходит. По завершении построения субформы возобновляется отрисовка текущей формы.

Коды 8 и 9: Смещения по X-Y

Стандартные коды позволяют выполнять отрисовку линий только в 16 фиксированных направлениях, причем максимальная длина вектора равна 15 единиц. Это ограничение повышает эффективность процедуры построения форм, но подчас существенно ограничивает ее возможности. Коды 8 и 9 служат для проведения нестандартных векторов, которые задаются смещениями по X-Y. Код 8 определяет смещение по осям X-Y , заданное следующими двумя байтами. За кодом 8 должны следовать два байта в формате:

8,X-смещение,Y-смещение

Смещения по X-Y могут принимать значения от -128 до +127. Знак "+" перед величиной смещения не обязателен, и для удобства можно использовать круглые скобки. В следующем примере описывается вектор, соединяющий текущую точку с точкой, отстоящей от нее на 10 единиц влево и на 3 единицы вверх.

8,(-10,3)

228 | Глава 8 Формы и шрифты

После того, как вектор по смещению отрисован, восстанавливается режим построения стандартных векторов.

Код 9 используется для последовательности "нестандартных" векторов. После него может следовать любое количество пар значений смещения по X-Y. Последовательность завершается значением (0,0). В следующем примере описывается построение трех нестандартных векторов с последующим возвратом в обычный режим.

9,(3,1),(3,2),(2,-3),(0,0)

Если не завершить последовательность смещений X-Y парой (0,0), AutoCAD не сможет правильно трактовать идущие далее векторы обычного формата и специальные коды.

Код 00A: Октантная дуга

Специальный код 00A (или 10) служит для отрисовки дуги по значениям двух следующих байт. Дуга называется октантной, так как она стягивает один или несколько 45-градусных октантов, причем начало и конец дуги лежат точно на границах октантов. Октанты нумеруются в направлении против часовой стрелки, начиная с положения "три часа", как показано на следующем рисунке.

Описание дуги имеет вид

10,радиус,(-)0SC

Радиус может принимать любое значение от 1 до 255. Второй байт указывает направление дуги (против часовой стрелки, если значение положительно, и по часовой стрелке - если отрицательно), начальный октант (s, значение от 0 до 7) и количество охватываемых дугой октантов (c, значение от 0 до 7, где значение 0 соответствует восьми октантам, т.е. полному кругу). Для удобочитаемости можно использовать круглые скобки. Рассмотрим в качестве примера следующий фрагмент описания формы:

...012,10,(1,-032),01E,...

Создание файлов описаний форм | 229

Соседние файлы в папке Справочные материалы