Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 12
Тема: Типы линий. Создание новых типов. Модификация. Формы. Назначение, создание и редактирование. Применение форм.
Цель: Ознакомиться с типами линий, используемыми в системе AutoCAD; знать порядок их создания, применения и удаления; разобраться и научиться эффективно назначать и менять тип линии, создавать новые оригинальные типы линий; понять назначение форм, способов их создания и применения (в частности для разработки шрифтов).
Ход работы:
1. Загрузить систему AutoCAD.
2. Создать новый или открыть имеющийся файл (.DWG).
3. Действия над типами линий, используемыми в системе.
3.1. Базовые сведения по созданию нового типа линии.
При создании собственного типа линии необходимо понять несколько условий. Каж-дый тип линии использует 2 строки «кода» для определения образца типа линии. Первая строка кода содержит имя типа линии и описание. Имя типа линии не может содержать про-белы и начинается со звездочки, сопровождаемой запятой, после которой можно добавлять необязательное описание для оказания помощи при визуализации типа линии. Это видно в следующем руководстве и примере для типа линии под именем INSIDE_DD:
*Типлин_имя, необязательное описание/начертание
*INSIDE_DD,_._ . . _._ . . _._ . . _._
Вторая строка определения типа линии представляет собой код, определяющий обра-зец для «движения пера», используемого при создании отрезков с этим типом линии. Образец всегда начинается с кода выравнивания «А», за которым непосредственно следуют серии от-деленных запятыми описаний, определяющих первую полную последовательность образца типа линии. Запрещено вводить пробелы в какое-либо место определения типа линии. Для простых типов линий используйте следующий синтаксис, чтобы создать определение образ-ца:
• Положительное число: длина штриха в единицах измерения рисунка («перо вниз»)
• Отрицательное число: длина пробела в единицах измерения рисунка («перо вверх»)
• 0 (ноль): точка («перо вниз», «перо вверх» в одном месте)
Следующее определение образца типа линии предназначено для типа линии IN-SIDE_DD:
А,.25,-.1,0,-.1,.25,-.125,0,-.125,0,-.125
Примечание! Описание типа линии может быть графическим представлением образца или строкой текста типа «Используйте этот тип линии для характеристических линий». Это опи-сание будет отображаться в диалоговом окне Load or Reload Linotypes. Если принимается решение пропустить описание в первой строке, не следует ставить запятую после имени типа линии.
3.2.Создание простого типа линии.
Одно из больших преимуществ работы в среде Windows — это способность перехо-дить к другой прикладной программе, создавать или редактировать желательный файл или документ и затем возвращаться к первоначальному приложению. Можно держать несколько приложений или программ открытыми одновременно.
В следующем упражнении откроем приложение Notepad системы Windows и созда-дим новый файл определения типа линии под именем inside14.lin из существующего файла acad.lin, а затем добавим определение для типа линии INSIDE_DD.
Действия следующие:
А) Откройте Notepad. Если используется Windows 95 или Windows NT 4.х, выберите Start? Programs? Accessories? Notepad.
Б) Выберите File?Open и откройте папку Acadr14\support, используя Look в раскрываю-щемся списке в диалоговом окне Open.
Г) Измените образец в текстовом поле File name на *.lin, выберите acad.lin из списка и затем щелкните на Open, чтобы отобразить приложение Notepad.
Д) Выберите File?Save As. Введите Insidel4.1in в текстовом поле File name и щелкните на Оk.
Е) Прокрутите список вниз и добавьте новое имя типа линии и определение в нижней части файла, под определением образца для типа линии Zigzag, вводя следующее:
*INSIDE_DD,__.__ . . __._ . . __._ . .
Ж) Во второй строке введите следующее определение образца (не вводите пробелов в это определение) и нажмите по окончании клавишу Enter:
А, . 25, — . 1,0, — . 1, . 25, — . 125,0, — . 125,0, -. 125
З) Выберите File?Save для сохранения insidel4.1in, затем вновь переключитесь к текущему сеансу AutoCAD с данным рисунком.
И) Чтобы использовать новое определение типа линии, выберите инструмент Linetype для отображения закладки Linetype диалогового окна Layer & Linetype Properties, а затем щелкните на кнопке Load.
К) Щелкните на кнопке File диалогового окна Load or Reload Linotypes, выберите inside14.lin из папки Acadr14\Support и щелкните на Open.
Л) Выберите Inside_DD из перечня доступных типов линий (они в данный момент выстрое-ны в алфавитном порядке) и щелкните на Оk.
М) Из списка типов линий выберите Inside_DD и установите масштаб текущего объекта рав-ным 1.0000 в области Details закладки Linetype.
Н) Щелкните на кнопке Current, чтобы установить тип линии Inside_DD текущим, затем щелкните на Оk.
О) Выберите инструмент Line из панели инструментов Draw и укажите точки начала и кон-ца линии и затем нажмите Enter для сохранения рисунка.
3.3. Рассмотрение определения сложного типа линии
Типы линий, содержащие текстовые объекты или формы, считаются сложными, по-тому что их определение образца несколько сложнее, чем определение, включающее в себя точки, штрихи и пробелы. Определения сложных типов линий, однако, могут также содер-жать элементы, используемые при создании определений простых типов линий. Сложный образец занимает в определении 2 строки. Первая строка определения, содержащая имя и не-обязательное описание, идентична таковой простого типа линии. Вторая строка сложного определения содержит в скобках элементы преобразования, которые определяют используемые текст и формы. Ниже приведен пример сложного типа линии, использующего в об-разце строку текста. На Рис. 1 показано, где применяются некоторые значения.
Рис.1. Тип линии 4 BOARD и примененные переменные.
Описание будет иметь следующий вид:
A,l,[«4 BOARD»,Instyle,S=.25,R=30,X=0,Y=-.75],-1.50
Общие комментарии и смысл элементов записи:
Начальная буква А и «перо вверх», «перо вниз» идентичны синтаксису, используемому в простых типах линий. [Элементы преобразования в скобках] определены в следующем спи-ске (каждый элемент отделяется запятой без пробелов):
• «Текстовая строка»: любые текстовые символы, которые нужно использовать в сложном типе линии, должны быть в кавычках и могут содержать пробелы.
• Гарнитура шрифта: указываемая гарнитура шрифта — второй элемент в квадратных скобках — должна существовать в рисунке, иначе сложный стиль не будет загружен. Ес-ли не определена никакая гарнитура шрифта, LT использует текущую гарнитуру.
• S-значение: масштабный коэффициент, который нужно использовать для высоты текста. Если высота определенной гарнитуры шрифта задана (>0), этот коэффициент умножается на установку высоты. Если высота гарнитуры — 0, введенное значение S представляет со-бой высоту текста. Это значение будет умножено на текущий коэффициент LTSCALE.
• R-значение: введенное значение угла поворота из заданной по умолчанию точки выравни-вания текста (нижняя левая). При использовании значения R поворот осуществляется от-носительно угла расположения линии. Чтобы задать абсолютный угол относительно те-кущей ПСК, замените R= на А= и определите абсолютный угол для каждого образца тек-ста.
• X-значение: это значение определяет расстояние, на которое текст смещается по оси Х ти-па линии. Если это значение — 0 или опущено, тип линии генерируется без смещения.
• Y-значение: введите отрицательное значение для этого элемента, чтобы текстовая строка располагалась посередине типа линии, подобно «текст-«. Если оставлено значение 0, текст появится как «текст».
• Перо вверх: значение представляет собой расстояние, на которое перо поднимается вверх относительно точки вставки текста.
Примечание! Включение гарнитур шрифтов, использующих нестандартные шрифты Auto-CAD, в заказные типы линий не рекомендуется. При пересылке рисунка другим пользовате-лям им потребуется иметь те же файлы шрифтов для перезагрузки и использования заказного типа линии в других рисунках. Это также может нарушить законы об авторском праве, если вы копируете свои заказные шрифты для передачи их другим.
После символа выравнивания «А» первый числовой ввод выполняется для длины пер-вого штриха. Хотя обычно в определениях простых типов линий нет необходимости следо-вать длине штриха «пером вверх» с отрицательным значением при создании сложных типов линии с переменными преобразования в квадратных скобках, особенно, если текст должен поворачиваться.
3.4 Создание сложного типа линии.
Сложными типами линий считаются те, в которых применяется текст или специаль-ная графика. Например, для обозначения газовой магистрали на плане города обычно ис-пользуется одна из линий с буквами G (Рис. 2). Заборы и изгороди часто обозначают пере-межающимися буквами X.
Используя метод, примененный для создания простого типа линии, в следующем уп-ражнении, переключимся обратно к Notepad и добавим новый сложный тип линии в файл In-side14.lin типов линий, а затем добавим его к текущему рисунку.
Операции по созданию сложной линии следующего плана:
А) Продолжая предыдущее упражнение, переключитесь обратно к Notepad и поместите кур-сор в нижнюю часть файла.
Б) Введите для первой строки сложного типа линии:
*4_BOARD,—4 BOARD—4 BOARD—4 BOARD
В) Во второй строке введите следующее описание образца:
Рис. Примеры сложных типов линий
А,1,[«4 BOARD»,Instyle,S=.25,R=30,X=0,Y=-0.75],-1.50
Г) Выберите File?Save для сохранения файла insideU.lin. Затем возвратитесь к текущему се-ансу AutoCAD.
Д) Выберите инструмент Linetype. Щелкните на кнопке Load.
Е) Щелкните на кнопке File, выберите insideU.lin из папки Support и щелкните на Оk, чтобы возвратиться к диалоговому окну Load or Reload Linotypes.
Ж) Выберите 4_board из списка доступных типов линий и щелкните на Оk.
Рис. 3 Тип линии 4_BOARD, нарисованный на узловом плане.
З) Выберите 4_board из списка на закладке Linetype. Щелкните на кнопке Current и введите 0.50 в поле Current object scale.
И) Выберите инструмент Line и укажите точки1 — 4 для помещения ограждающей линии 4 BOARD, как показано на Рис. 3. Нажмите Enter.
Примечание! Любые формы или текст, содержащиеся в сложных типах линий, всегда рису-ются целиком. Версия 14 AutoCAD всегда начинает и заканчивает сложный тип линии штрихом, внося небольшие корректировки в длину сегментов с обоих концов. Текст и формы в сложном типе линии, следовательно, не будут урезаны.
В графических объектах, включающих в себя сложные типы линий, можно применять любые файлы шрифтов AutoCAD. С помощью шрифта создается стиль текста, а затем в опи-сании типа линии задается соответствующий символ.
Для создания типа линии, содержащей текст, применяются процедуры, которые опи-сывались выше, с добавлением в квадратных скобках необходимой информации о шрифтах. Предположим, нужно создать тип линии для вышеупомянутой газовой магистрали. Это можно сделать, добавив в файл Acad.lin следующее описание:
*Gas line — G — G —
a,1.0,-0.25, [«G», standard, S=.2, R=0, X=-.1, Y=-.1], -0.25
Информация в квадратных скобках описывает характеристики текста. Сам текст, ко-торый нужно выводить в линии, заключается в кавычки. Далее следует стиль текста, мас-штаб, угол поворота, смещение X и смещение Y.
Примечание! Для создания сложного типа линии нежелательно применять команду -Lilnetype. Лучше открыть файл Acad.lin и в текстовом редакторе (например, в Notepad Win-dows) добавить описание типа линии в конец файла. Необходимо убедиться, что имя введен-ного типа линии не совпадает с уже существующим в этом файле именем типа линии.
Как видно из приведенного ниже примера, значение угла поворота R можно заменить на А: a,1.0,-0.25, [«G», standard, S=.2, A=0, X=-.1, Y=-.1]. -0.25
В результате независимо от направления линии текст будет выводиться под одним и тем же углом. Вданном примере значения X и Y равны —.1. Это приведет к центрированию букв G в линии. Масштабный коэффициент .2 задает высоту символов текста в .2 единицы, т.е. —.1 является половиной высоты.
4. Изменение существующего сложного типа линии.
4.1. Базовые сведения и настройки.
При создании новых определений типа линии, особенно сложных, результат затра-ченных усилий не всегда оказывается тем, к чему стремились. В предыдущем упражнении длина текста несколько больше, а частота текста в строке могла бы быть несколько меньше. Поворот на 30°, вероятно, также не нужен, но было интересно видеть результаты вращаемого текста в сложном типе линии.
В следующем упражнении возвратимся к окну Notepad и изменим установку угла по-ворота, далее заменим текст «4 BOARD» на «4-BD» и увеличим интервал текста в строке.
Для операций с линиями, связанными с модификацией типа, применяется команда LINE-TYPE. Ее формат:
Command: linetype <Enter>
В команде используются следующие ключи:
Set — установить текущий тип линии для отрезков, окружностей, дуг и полилиний. Для задания типов линий, необходимых для получения конструкторской документации исполь-зуются ключи CONTINUOUS (непрерывный), DASHED (пунктирный) и DASHDOT (штрих пунктирный). Ключевое слово Bylayer означает что примитив будет создаваться в соответствии с типом линии, определенным для текущего слоя. Ключевое слово BYBLOCK означает, что примитивы будут изображаться сплошными (CONTINUOUS) линиями. Будучи объеди-нены в блок, эти объекты принимают тип линии, установленный для слоя, которому принад-лежит точка вставки блока;
? — просмотр списка типов линий;
Create — создать новый тип линии;
Load — загрузить, сделать доступным для использования.
Начальные установки типа линий определяются рисунком-прототипом.
Тип линии может быть присвоен любому примитиву, но изображаются соответствующим типом линии только отрезки, дуги, круги и двухмерные полилинии. Все остальные примити-вы изображаются непрерывным типом линии. Для присвоения типа линии для новых прими-тивов можно также использовать системную переменную CELTYPE.
Длина штрихов и пробелов, составляющих штрих пунктирную линию, измеряется в ус-ловных единицах.
Начальная установка масштаба типа линии для каждого рисунка — 1 ед. AutoCAD позво-ляет задать масштаб изображения линии с помощью команды LTSCALE.
Для изменения масштаба выводится запрос:
New scale factor <default>:<ввести число><Enter>
(Новый масштаб <по умолчанию>:)
Ответом на запрос должен быть положительный масштабный коэффициент. После изме-нения масштабного коэффициента изображение на экране регенерируется автоматически, если значение системной переменной REGENMODE равно 1. Текущее значение масштабно-го коэффициента хранится в системной переменной LTSCALE.
4.2. Пример изменения сложного типа линии.
К) Продолжая предыдущее упражнение (п.И), переключитесь к Notepad системы Windows 95 и измените описание в первой строке определения типа линии на:
—4-BD——4-BD——4-BD.
Л) Во второй строке измените элемент поворота с R=30 на R=0 и замените текст в кавычках «4_BOARD» на «4-BD».
М) Поскольку слово теперь короче, измените Y=значение с Y= — 0.75 на Y= — 0.1 (обратите внимание, что значение остается отрицательным).
Н) Сформируйте необходимый штрих и выполните изменения разрыва в начале и конце оп-ределения, чтобы определение сложного типа линии для 4_B0ARD походило на следую-щее:
A.1.50,-.25,[«4-BD»,instyle,S=.25,R=0,X=0,Y=-0.l],-1.25
О) Выберите File?Save для сохранения файла inside14.lin. Прейдите вновь к рисунку.
П) Выберите инструмент Linetype и щелкните на Load.
Р) Щелкните на кнопке File, выберите inside14.lin из списка и щелкните на Оk, чтобы воз-вратиться к диалоговому окну Load or Reload Linotypes. Описание типа линии в списке Available Linetype должно отобразить новый текст 4-BD.
Рис. 4 Модифицированный тип линии 4_BOARD.
C) Выберите 4_BOARD из списка и щелкните на Оk.
T) Появляется окно предупреждения Reload Linetype относительно перезагрузки типа линии 4_BOARD. Щелкните на Yes.
У) В закладке Linetype щелкните на Оk, чтобы возвратиться к рисунку.
Ф) Чтобы заставить AutoCAD регенерировать рисунок с новым определением типа линии 4_BOARD, выберите View?Regen из выпадающих меню. Ваш рисунок должен похо-дить на Рис. 4.
Примечание! Поскольку R=значение отсчитывается относительно угла нарисованной линии, для достижения правильно читаемого текста рисуйте линии от левого нижнего до правого верхнего угла или от левого верхнего до нижнего правого. Линии, нарисованные в других направлениях, приведут к тому, что текст типа линии будет перевернутым.
Поэкспериментируйте с типами линий 4 board, изменяя переменную R= на А= для абсо-лютного угла расположения текста в линии. На Рис. 4 представлено применение пространст-венных переменных, используемых в предыдущем упражнении, с тем чтобы можно было лучше понять результаты.
Рис. 4. Обновленные переменные для типа линии 4_BOARD.
Кроме шрифтов, в определениях типов линий можно задавать специальные формы. Вместо букв они выводят специальные символы. Формы хранятся не в рисунке, а как файлы определений (аналогично файлам текстовых шрифтов). Файлы форм имеют то же расшире-ние (.shx), что и шрифты, и тот же формат. Рис. 5 показывает некоторые символы из файлов форм.
При использовании формы в коде типа линии можно применять тот же формат, что и для текста, однако в этом случае указываются имя формы и имя ее файла:
*Capline, ====
a,1.0,-0.25, [CAP,ES.SHX,S = .2,R=0,X=-.1,Y=-.1],-0.25
В данном примере используется символ Сар из файла форм Es.shx. Данный символ масшта-бируется в .2 единицы с углом поворота 0 и смещениями X и Y, равными —.1.
Рис. 5 Примеры форм
5. Использование форм.
5.1. Базовые сведения.
Одно из основных направлений доработки системы AutoCAD состоит в приспособле-нии ее к ГОСТам ЕСКД, в частности, включении в ее состав стандартных обозначений типа знаков шероховатoсти, обозначений сечений, сварных швов и т.п.
Любое из обозначений можно создать тремя способами:
— выполнить как отдельный рисунок и включать в чертежи как внешний блок;
— разработать программу создания обозначения на языке AutoLISP;
— coздать форму.
Последний способ наиболее адекватен данной цели, так как позволяет сократить и требуемую память и время воспроизведения формы на экране: новую форму можно рассмат-ривать, как новый примитив, доступный в системе AutoCAD. Однако coздавать форму труд-нее, чем LISP-программу, и намного труднее, чем блок. Для создания форм используется достаточно специфичный язык, освоение которого потребует усилий.
Шрифт в системе AutoCAD — это набор форм, составленный так, что каждая форма соответствует одному символу данного шрифта. Таким образом, для создания новых шриф-тов, в том числe шрифтов, предусмотренных ЕСКД, но отсутствующих в AutoCAD, также необходимо освоить язык создания форм.
Таблица 1.Связь между системами счисления
Десятичная система Шестнадцатеричная система
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 А
11 В
12 С
13 Д
14 Е
15 F
5.2. Системы счисления, используемые для написания форм. Краткие сведения.
При разработке форм используется запись данных в шестнадцатеричной и деся-тичной системах счисления.
Шестнадцатеричная система счисления — это система, где для записи чисел ис-пользуются не 10 различных знаков, как в десятичной системе, а 16. Таким образом, в шестнадцатеричной системе числа от 0 до 15 могут быть записаны, как однозначные. Со-ответствие между десятичной и шестнадцатеричной записями этих чисел приведено вы-ше (см. Таблица 1).
Пример. Число 12А в шестнадцатеричной системе может быть переведено в деся-тичную следующим образом:
1 x 162 + 2 x l61 + 10 = 298
Для хранения одной цифры шестнадцатеричного числа используется четыре дво-ичных разряда, т.е. полбайта. Максимальное число, которое можно записать в один байт — FF (в десятичной форме 255).
5.3.Создание форм. Основные понятия и принципы.
Для создания формы необходимо разработать ее определение и включить это оп-ределение в какой-либо файл форм — файл с расширением .SHP. Затем SНР-файл должен быть оттранслирован с помощью команды СOMPILE, введенной в командной строке AutoCAD в ходе сеанса работы с редактором:
Command: compile <Enter>
В результате чего на экране появляется окно, где требуется указать файл-источник с расширением .SHP, который компилируется в файл расширением SHX, используемый в дальнейшем. Чтобы использовать формы, находящиеся в каком-либо .SНX-файле, этот файл должен быть загружен в текущий рисунок или рисунок-прототип командой LOAD.
Command: load <Enter>
После чего на экране появляется окно, где требуется указать файл-источник с расширением .SHX
Примечание! Для создания форм в последующих сеансах работы с рисунком необходи-мо, чтобы SHX-файл существовал на диске.
Определение формы должно содержать ее код (номер), имя и описание.
1) код формы имеет важное значение для шрифтовых форм, а для других форм может использоваться в специальном случае (вызов субформы), о чем будет подробно сказано ниже.
2) имя формы — это то имя, по которому форма будет вызываться командой SHAPE.
3) Описание формы, по существу, есть закон движения пера вооброжаемого гра-фопостроителя в процессе вычерчивания формы. Описание составляется на специальном языке, который будет подробно рассмотрен далее.
Перед изложением формальных правил этого языка pacсмотрим его принципиаль-ные возможности. При описании формы допускается:
— управлять «поднятием и опусканием пера»;
— вычерчивать векторы заданной длины и направления;
— вычерчивать дуги окружностей заданного радиуса.
Таким образом, форма может содержать любое изображение, состоящее из векто-ров, дуг и промежутков между ними (точка представляется как вектор малой длины или окружность малого радиуса)
Следует отметить, что если требуется «заливка» какого-либо участка формы, то придется выполнить достаточно плотный узор из векторов внутри этого участка.
При составлении описания необходимо иметь в виду следующее:
— предполагается, что описание начинается в начальной точке, т.е. точке, введенной в ответ на запрос команды SHAPE, в этой точке пepo опущено;
— каждое следующее движение пера должно начинаться из точки текущего положения пера, поэтому для перехода в любую другую точку необходим «холостой ход» с под-нятым пером;
— при линейных перемещениях наиболее быстро совершают движения по 16 стандартным направлениям, каждое из которых закодировано шестнадцатеричной цифрой (Рис. 6), од-нако возможны и другие направления;
Рис. 6 Стандартные направления Рис. 7 Октанты дуг
векторов
— для стандартных направлений единица длины имеет paзличные значения (на Рис. 6 все векторы имеют единичную длину);
— при дуговых перемещениях наиболее быстро совершаются движения по целому числу октантов Рис. 7, однако возможно вычерчивание и произвольной дуги;
— максимальное число, которое может быть задано в описании — 255, однако это число можно увеличить с помощью внутренних масштабных коэффициентов;
— значения перемещений могут быть только целыми, это следует учитывать при выборе единицы длины, однако возможно деление задаваемых чисел на целочисленный коэффи-циент;
— при составлении описания формы задаются некоторые первоначальные размеры (с уче-том внутренних масштабных коэффициентов), окончательный же размер определяется при каждой конкретной вставке формы с учетом задаваемого при этом внешнего мас-штабного коэффициента;
— имеется возможность запоминания координат точек (до четырех) в так называемом стеке и последующего извлечения этих координат из стека (работу со стеком поясняет Рис. 8); таким образом, в процессе «движения пера» можно заменять текущую точку;
Рис. 8 Возможная последовательность загрузки в стек
и выгрузки из стека (шесть шагов)
— есть возможность повторного использования фрагмента формы: такой фрагмент должен быть оформлен как отдельная форма в этом же SHP-файле и называется с у б ф о р м о й.
5.4.Подготовка к созданию формы.
Как и в случае создания образца штриховки, подготовка к созданию формы — доста-точно трудоемкий процесс, включающий точное вычерчивание, измерения, a также планиро-вание и предварительное описание “движения пeра”. Форму целесообразно вычерчивать на миллиметровой бумaге, где единица деления соответствует линейной единице рисунка.
Предлагается следующий порядок подготовки.
1) Подготовить лист миллиметровой бумаги необходимых размеров.
2) Выбрать начальную точку.
3) Выбрать размер линейной единицы, т.е. общий масштаб.
4) Спланировать последовательность движений пера при вычерчивании формы, стре-мясь при этом к минимизации «холостых ходов», преимущественному использова-нию векторов стандартныx направлений и октантных дуг. Продумать возможности использования субформ и стека.
5) Вычертить форму, используя линейку и циркуль. При изображении дуг необходимо записывать их радиусы или помечать на рисунке точки центров. При этом желатель-но нумеровать на рисунке точки этой последовательности.
6) Записать эту последовательность в форме, удобной для дальнейшего анализа и кон-троля, например в форме таблицы (см. Таблица 2).
Примep. Подготовка к .созданию формы, показанной на Рис. 9, проводится следующим обра-зом:
— начертить форму (см. Рис. 9,a), где в качестве начальной точки выбрать левую нижнюю точку первой буквы;
Рис. 9. Изображение формы и последовательность вычерчивания фрагменте формы
— все размеры линейных отрезков и радиусы дуг при вычерчивании формы должны быть кратны заданной единице измерения (в данном случае 2.5 мм).
Примечание! Таким образом, длину единичного вектора следует выбрать равной 2.5 мм. При задании масштаба, равного 4, в ответ на вопрос команды SHAPE форма будет отображена на экране так же, как на бумаге (т.е. высота символов будет равна 20 мм).
Таблица 2. Последовательность вычерчивания субформы А
Номер точки (Рис. 9,б) Тип элемента Характеристика элемента Примечание
Масштабный
множитель Деление на 4
1 Вектор ?х = 10, ?у = 24 Перо опущено
Масштабный мно-житель Умножение на 4
2 Дуга R=4, ?н = 150°, ?к = 90° -//-//-
3 Вектор ?х = 0, ?у = -8 -//-//-
4 Вектор L = 2, ? = 90° Перо поднято
5 Вектор ?х = -5, ?у = 0 Перо опущено
Таблица 3. Последовательность вычерчивания формы ACAD
Номер точки (Рис. 9,б) Тип элемента Характеристика элемента Примечание
0 Субформа А Перо опущено (A)
1 Вектор ?x = 13, ?y = 0 Перо поднято (C)
2 Дуга R = 5, ?н = 335°, ?к = 295° Перо опущено
3 Вектор L = -2, ? = 180° -//-//-
4 Дуга R = 5, ?н = 245°, ?к = 205° -//-//-
5 Вектор L = 4, ? = 90° -//-//-
6 Дуга R = 5, ?н = 155°, ?к = 115° -//-//-
7 Вектор L = 2, ? = 0° -//-//-
8 Дуга R = 5, ?н = 65°, ?к = 25° -//-//-
0 Вектор ?х = 2, ?у = -6 Перо поднято
Субформа А Перо опущено (A)
Таблица 3 (окончание)
1 Вектор ?х = 7, ?у = -2 Перо поднято (D)
Масштабный
множитель Деление на 2
2 Вектор ?х = 7, ?у = 0 Перо опущено
Масштабный
множитель Умножение на 2
3 Дуга со «стрелкой прогиба» ?х = 0, ?у = 8, S = 79 -//-//-, обход против часовой стрелки
Масштабный
множитель Деление на 4
4-5-6 Группа векторов ?х = -14, ?у = 0, ?х = 3, ?у = 0, ?х = 0, ?у = -32 Перо опущено
Масштабный
множитель Умножение на 4
В рассматриваемой форме, по своему рисунку, выделяется субформа — буква «А». Следовательно, «движение пера» будет планироваться отдельно для субформы, а затем — для формы. План движения записывается в таблицу с одновременной простановкой но-меров точек на рисунке (см. Рис. 9,б).
5.5. Структура и правила построения файла форм.
Файл форм (SHP-файл) — это текстовый файл, содержащий определения форм. Каж-дое определение формы может содержать две строки и более. Первая строка включает номер формы, число байтов в последующих строках описания, имя формы. При этом:
— строка должна начинаться с символа «*»;
— номер формы должен находиться в диапазоне 1…255, в одно файле номера не должны повторяться;
— число байтов в описании может быть определено после составления описания;
— имя формы не должно совпадать с именем другой формы этом же файле и его следует набирать в верхнем регистре (последнее не относится к шрифтам, о чем будет сказано ниже).
Вторая и последующие строки содержат описание формы т.е. программу «движения пера», составленную на определенном языке. Рассмотрим правила этого языка.
Описание состоит из последовательности кодов. Каждый код соответствует одному байту и может быть выражен числом в десятичной или шестнадцатеричной системе.
Число в десятичной системе может лежать в диапазон 0…255.
Число в шестнадцатеричной системе должно содержать три цифры, причем первой цифрой должен быть нуль (что и является признаком шестнадцатеричного числа).
Коды должны разделяться запятыми. Для удобства чтения разрешается использовать пробелы и круглые скобки. Все коды можно разделить на четыре группы:
— основные коды, задающие движения по стандартным направлениям (см. Рис. 10);
— управляющие коды (см. Таблица 4);
— коды, назначение которых определяется ближайшим «слева» управляющим кодом;
— код 0, который должен завершать описание.
Основные коды наиболее удобно записываются в шестнадцатеричной форме, где первая цифра — 0, вторая — значение длины вектора, третья — направление в соответствии с Рис. 6.
Пример: Начертание буквы «Г» (Рис 10,a) кодируется следующим образом:
054, 030, 01A, 0
Полностью определение этой формы могло бы выглядеть так:
*131, 4, г
030, 01A, 0
Рис.10. Примеры описания форм: а) — отдельная форма; б) — форма в составе шрифта, ори-ентированного горизонтально; в) — форма в составе шрифта, ориентированно-го горизонтально и вертикально
Для более сложных форм требуются более сложные описания с использованием управляющих кодов. В Таблице 4 приведены управляющие коды с объяснением их на-значения и указанием последовательности кодов, появление которой предполагается за управляющим кодом.
Таблица 4. Управляющие коды языка описания форм
Код
деся-тичный Код
шестнад-цатеричный Выполняемое действие Последующие коды
1 001 Опустить перо Нет
2 002 Поднять перо Нет
3 003 Делить длину на значение последующего кода Число, задающее коэффици-ент деления
4 004 Умножить длину на значение по-следующего кода Число, задающее коэффици-ент умножения
5 005 Занести текущую точку в стек Нет
6 006 Извлечь значение из стека и при-нять его в качестве текущей точки Нет
7 007 Начертить субформу Код субформы из данного файла
8 008 Начертить вектор Смещение по х, смещение по у
9 009 Начертить последовательность векторов (смещение по х, смещение по у), … 0,0
10 00А Начертить октантную дугу Радиус, код дуги
11 00B Начертить произвольную дугу Смещение начала, смещение конца, старшие цифры радиу-са, младшие цифры радиуса, код дуги
12 ООС Начертить дугу, определяемую- стрелкой прогиба Смещение по х, смещение по у, стрелка прогиба
13 00D Начертить последовательность дуг, определяемых стрелкой прогиба (смещение по х, смещение по Y, стрелка прогиба),… 0,0
Рис.11 Дробная дуга, описываемая Рис. 12. Дуга, определяемая стрелкой
последовательностью кодов: прогиба и описываемая последова-
11, (85, 170, 0, 20, 003) тельностью кодов: 13, (5, 18, -85)
Комментарии к Таблице. 4.
• Масштабирование, задаваемое кодами 003 и 004, действует до конца описания. Мас-штабные коэффициенты, задаваемые последовательно, накапливаются. Таким обра-зом, если задается «временный» масштаб (например, кодом 003), то он затем должен быть отменен (например, кодом 004).
• При задании смещений за кодами 008 и 009 можно использовать числа от -128 до 127.
• При задании дуг кодами 00A и 00В дальнейшие коды имеют следующий смысл:
• код дуги наиболее удобно записывается в шестнадцатеричной форме: первая цифра — нуль; вторая — начальный октант; третья — число охватываемых октантов; нуль на третьей позиции означает полную окружность; знак минус перед кодом означает на-правление по часовой стрелке;
• смещение начала определяется как разность между началом предыдущего октанта и началом дуги (в градусах), деленная на 45 и умноженная на 256 (Рис. 11);
• смещение конца вычисляют аналогично, только относительно последнего октанта, пересекаемого дугой;
• старшие цифры радиуса дают возможность задать его значение, превышающее 255: если это значение меньше 255, то в качестве старших цифр можно записать 0. Напри-мер, если радиус paвен 10, то старшие цифры радиуса — 0, младшие цифры — 10, ecли радиус равен 345, то старшие цифры радиуса — 3, младшие — 45.
• Коды 00С и 00D позволяют вычерчивать как дуги, так и векторы, причем код 00D по-зволяет описать последовательность дуг и векторов. Дуга фактически задается по трем точкам (см. Рис. 12); начальная точка дуги совпадает с текущей точкой, конеч-ная точка задается смещениями ?х и ?y по осям х и у, кроме того, дуга проходит че-рез точку, задаваемую «стрелкой прогиба».
«Стрелку прогиба» S расчитывают по формуле:
S=2H/L х 127,
L — длина отрезка между начальной и конечной точками дуги (т.е. длина «хорды»); H — дли-на перпендикуляра, восстановленного из середины хорды.
Если стрелка прогиба указана со знаком минус, то считается, что дуга направлена по часовой стрелке.
Примечание! Нетрудно видеть, что при S=0 дуга вырождается в отрезок, а максимальное значение S=127, что соответствует дуге 180?.
Пример. Определение формы, показанной на Рис. 10,a составленное на основе плана, приве-денного в Таблицах 2, 3, может выглядеть следующим образом:
Таблица 5.
Определение формы Комментарии
*1, 23, А Субформа А:
3, 4, деление на коэффициент 4
8, (10, 24), вектор к точке 1
4, 4, умножение на коэффициент 4
11, (28, 0, 0, 4, -032), дуга к 2
8, (0, -8), вектор к 3
2, 024, подъем пера, переход к 4
1, 8, (-5, 0), 0 опускание пера, вектор к 5
*2, , ACAD Форма ACAD:
7,1, вычерчивание субформы А
2, 8,(13,0), подъем пера, переход к 1 (буква С)
1, 11, (113, 142, 0, 5,-072). дуга к 2
028, 11, (113, 142, 0, 5, -052), вектор к 3, дуга к 4
024, 11, (113, 142, 0, 5, -032). вектор к 5, дуга к 6
020, 11, (113, 142, 0, 5, -012). вектор к 7, дуга к 8
2, 8,(2,-6), подъем пера, переход к букве А
1, 7, 1, опускание пера, вычерчивание субформы А
2, 8, (7, -2), подъем пера, переход к 1 (буква D)
3, 2, 1, 8, (7, 0), деление на 2,опускание пера, вектор к т.2
4, 2, 12, (0, 8, 79), умножение на 2, дуга от т.2 к т.3
3, 4, 9, (-14, 0), (3, 0), (0, -32), 0, 0, Деление на 4, последовательность векторов к т.4, 5, 6
4, 4, 0 Умножение на 4, конец описания
Приведенное определение формы (см. Рис. 9) не является единственно возмож-ным. Например, траекторию пера для 6yквы «С» можно было бы описать с помощью кода 13, управляющего последовательностью дуг, заданных стрелкой прогиба.
Лучшим описанием следует считать то, в котором используется меньше кодов.
5.6. Особенности определения шрифтов.
• Ш р и ф т — это набор форм, описанных в одном файле, причем каждая форма соответствует одному символу. В этой ситуации важное значение приобретают коды форм, так как код формы должен соответствовать коду данного символа в кодовой таб-лице данной ЭВМ — этим обеспечивается правильное отображение символа на экране при нажатии соответствующей клавиши. Кодовые таблицы для ЭВМ IBM PC приведены в литературе по ПЭВМ (таблицы ASCII-кодов).
Имя формы в рассматриваемой ситуации, наоборот, теряет свое значение, так как символы вызываются не командой SHAPE, а нажатием клавиш в ходе выполнения ко-манды TEXT. Поэтому для сокращения требуемой памяти имена форм рекомендуется набирать в нижнем регистре клавиатуры. Такие имена игнорируются при трансляции форм и служат только комментариями.
В шрифте должна быть определена форма с номером 0, имеющая специальное значение. Определение формы выглядит следующим образом:
*0, 4, имя шрифта
высота, снижение, признак, 0
, где «высота» определяет высоту прописной буквы над уровнем начальной точки (Рис.13), «снижение» — выход строчной буквы за уровень начальной точки. Сумма этих двух значений определяет собственную высоту строки текста (размер шрифта), т.е. ту, которая получится при вводе единицы в ответ на вопрос команды TEXT.
Признак, описываемый в форме 0, может принимать значение 0 или 2. Значение, равное двум, говорит о том, что данный шрифт может быть использован для создания не только горизонтально и вертикально ориентированного текста (т.е. текста, расположеннoго столбцом).
В шрифте должна быть описана форма с номером 10 и именем “if”. Эта форма ис-пользуется при переводе строки. Форма задает движение от начальной точки предыду-щей строки до начальной точки последующей строки по вертикали.
Например:
*10, 5, if
2, 8, (0, -12), 0
Эта форма задает разность между Y — координатами начальных точек двух строк, рав-ную 12 единицам.
Рис. 13. Прописная и строчная буквы шрифта для определения формы 0.
Описание каждого символа должно заканчиваться «перемещением поднятого пера» в начальную точку следующего символа. Таким образом, буква «Г» должна вычерчиваться так, как казано на Рис. 10,б, а кодироваться следующим образом:
*131, 7, г
054. 030, 01A, 2, 04C, 020, 0
Если признак вертикальности данного шрифта, описанный в нулевой форме, равен двум, то в описаниях символов этого шрифта может присутствовать код 00E (или 14). Этот код показывает, что следующий за ним код должен отрабатываться только при вертикально ориентированном тексте. Различие при вычерчивании горизонтального и вертикального тек-стов может быть вызвано тем, что в AutoCAD приняты различные начальные точки:
— для горизонтально ориентированных символов — это левая нижняя точка;
— для вертикально ориентированных символов — это верхняя центральная точка (см. Рис. 10,в).
Отсюда в описаниях символов могут присутствовать дополнительные «холостые хо-ды», необходимые только при формировании текста в столбец.
Например, описание буквы «Г» для шрифта, рассчитанного на горизонтальное и вер-тикальное использование, выглядело бы следующим образом:
*131, 25. г
2, 3, 2. 14, 8, (-3.-10), 4, 2, 1,
054, 030. 01А, 2, 04C, 020,
3, 2, 14, 8, (-5, -4), 4, 2, 0
Видно, что определение значительно усложнилось из-за дополнительных «холостых xoдов”. Кроме того, оказалось необходимым задать дробные значения перемещений. Для этого при-шлось вводить масштаб с помощью кода 3. а затем отменять его с помощью кода 4.
5.7. Особенности использования шрифтов.
Созданный SHP-файл, содержащий описания шрифта, транслируется в SНХ-файл с по-мощью ACAD так же, как и любой файл форм. Однако в отличие от файла форм этот файл не загружается в рисунок с помощью команды LOAD. SНХ-файл шрифта подключается к ри-сунку при определении гарнитуры шрифта командой STYLE (СТИЛЬ). С помощью этой ко-манды имя SHX-файла связывается с именем гарнитуры шрифта. Все определенные таким
способом гарнитуры могут использоваться при создании чертежа при условии, что соответ-ствующие SHX-файлы существуют.