Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г
.pdf
Геометрические фигуры и текстовые шрифты |
381 |
*210,10,PO1
005,005,005,012,006,014,006,016,006,0
*211,8,SUB1
020,007,210,030,007,210,020,0
Здесь
•*210 — номер фигуры;
•007 — ссылка на подформу;
•210 — номер формы.
Фигура, генерируемая в этом примере, показана на рис. 11.7, б.
Код 008: смещение по осям X и Y
В предыдущем примере вы могли заметить, что использование векторов имеет определенные ограничения. Как уже упоминалось, векторы можно провести только в одном из 16 ранее определенных направлений, при этом длина векторов не должна превышать 15 единиц. Подобные ограничения упрощают определение фигур и повышают его эффективность, но при этом делают его менее гибким. Таким образом, использование кодов 008 и 009 дает возможность генерировать нестандартные векторы при вводе величин смещений по осям X и Y. Код 008 имеет следующий формат:
008, XDISPLACEMENT, YDISPLACEMENT
или
008, (XDISPLACEMENT, YDISPLACEMENT)
Величина смещения по осям X и Y может изменяться в пределах от +127 до –128. Положительное смещение обозначается знаком “плюс” (+), а отрицательное — знаком “минус” (–). Следует заметить, что знак “плюс”, который ставится перед положительными числами, является обязательным. Круглые скобки улучшают читабельность файла, но на определение формы они совершенно не влияют.
Код 009: многократные смещения по осям X и Y
Код 008 позволяет генерировать нестандартные векторы при вводе величин смещений по осям X и Y. В свою очередь, код 009 дает вам возможность определить величины сразу нескольких смещений. Строка кода завершается вводом нулевых смещений (0,0). Код 009 имеет следующий формат:
009, (XDISP, YDISPL), (XDISPL, YDISPL), ... ,(0,0)
Код 00А или 10: определение октанта дуги
Если вы разделите весь круг (360 градусов) на восемь равных частей, то получите восемь секторов, стороны которых образуют угол, равный 45 градусам. Полученные 45градусные сегменты называются октантами, а линии, которые их образуют, называются границами октанта. Границы октанта пронумерованы от 0 до 7, как показано на рис. 11.8. Определение октанта имеет следующий формат:
10,(R,+/-0SN)
382 |
Глава 11 |
где
•R — радиус дуги;
•+/- — определение направления (“плюс” (+) — против часовой стрелки, “минус”
(–) — по часовой стрелке);
•0 — шестнадцатеричная система счисления;
•S — номер начальной границы октанта;
•N — число октантов.
Пример
10,(3,-043)
Первое число (10) является обозначением кода 00А, используемого для определения октантов дуги. Второе число (3) определяет величину радиуса вычерчиваемой дуги. Знак “минус” указывает на то, что данная дуга будет генерироваться по часовой стрелке. Если число имеет положительный знак (+) или не имеет никакого знака, дуга будет генерироваться против часовой стрелки. Нуль (0) указывает на использование шестнадцатеричной системы счисления, а следующее число (4) является номером границы октанта, с которой начинается построение дуги. В этом примере будет создана дуга, показанная на рис. 11.9. Ниже приведен листинг файла, используемого для генерирования этой фигуры:
*214,5,FOCT1 001,10,(3,-043),0
Рис. 11.8. Границы октантов
Рис. 11.9. Созданная дуга
Геометрические фигуры и текстовые шрифты 383
Код 00В или 11: дробная дуга
Код 00В или 11 дает возможность генерировать нестандартные дробные дуги. С помощью этого кода вы сможете вычертить дугу, начиная и заканчивая ее в любой точке окружности. Определение дуги, в котором используется пять байтов данных, имеет следующий формат:
11,(начальное смещение, конечное смещение, верхнее значение радиуса, нижнее значение радиуса, +/-0S/N)
Байт начального смещения определяет расстояние от начальной точки дуги до границы октанта, а байт конечного смещения определяет расстояние от границы октанта до конечной точки дуги. Байт нижнего значения радиуса является величиной радиуса создаваемой дуги. Если радиус дуги меньше или равен 255 единицам, байт верхнего значения радиуса имеет значение 0. Знак “плюс” (+) или “минус” (–) указывает на то, что дуга вычерчивается против или, соответственно, по часовой стрелке. Следующий элемент (S) определяет номер октанта, с которого начинается вычерчивание дуги, а элемент N указывает на число октантов, через которые проходит данная дуга. Следующий пример иллюстрирует основные принципы построения дробной дуги.
Смещение начальной точки = (начальный угол дуги – близлежащий угол октантов, сумма которых меньше величины начального угла) × 256 / 45
Смещение конечной точки = (конечный угол дуги – близлежащий угол октантов, сумма которых меньше величины конечного угла) × 256 / 45
Пример 4
Начертите дробную дугу радиусом 3 единицы, которая ограничена линиями, поведенными под углом 20° (начальная точка) и 140° (конечная точка). Дуга проводится против часовой стрелки.
Решение этой задачи состоит из следующих этапов.
Шаг 1: вычисление необходимых параметров
Найдите границу ближайшего октанта, угол которой меньше 140 градусов. Как вы видите, ближайшей является граница октанта номер 4, угол которой равен 135 градусам (3×45°=135°). Определите величину смещения конечной точки и округлите ее до целого числа:
Смещение конечной точки = (140° – 135°) × 256 / 45 = 28,44 = 28
Найдите границу ближайшего октанта, угол которой меньше 20 градусов. Как следует из рисунка, ближайшей является граница октанта под номером 0, угол которой равен 0 градусов. Определите величину смещения начальной точки и округлите ее до целого числа:
Смещение начальной точки = (20° – 0°) × 256 / 45 = 113,7 = 114
Теперь необходимо определить количество октантов, через которые проходит данная дуга. В представленном примере дуга начинается в первом октанте и заканчивается в четвертом; следовательно, она проходит через четыре октанта (против часовой стрелки).
Определите октант, с которого начинается формирование дуги. В нашем примере дуга начинается в октанте под номером 0.
384 Глава 11
Радиус дуги равен 3. Величина радиуса меньше 255, поэтому количество байт “верхнего значения радиуса” будет равно 0.
Теперь введите полученные значения в определение дробной дуги:
11,(114,28,0,3,004)
Шаг 2: запись файла формы
Для записи файла формы обычно используется какой-нибудь текстовый редактор. Следующий файл генерирует дробную дугу, показанную на рис. 11.10:
*221,8,FOCT2
001,11,(114,28,0,3,004),0
Рис. 11.10. Дробная дуга
Шаг 3: сохранение и загрузка файла формы
Сохраните текстовый файл в виде файла с расширением .shp. Затем скомпилируйте и загрузите файл формы, используя для этого команды COMPILE и LOAD. Для вставки созданной фигуры в открытый чертеж используется команда SHAPE.
Код 00С или 12: определение дуги, заданной радиусом и величиной смещения
Код 00С может быть использован для построения дуги, определенной коэффициентом криволинейности и величиной смещения конечной точки. Величины смещений по осям X и Y находятся в пределах от –127 до +127. Коэффициент криволинейности может изменяться от –127 до +127. Дуга, коэффициент криволинейности которой равен 127, представляет собой правильный полукруг, а дуга с нулевым коэффициентом криволинейности является прямой линией. Если коэффициент криволинейности имеет отрицательное значение, дуга вычерчивается по часовой стрелке.
Коэффициент криволинейности = ((2 ×H)/D) × 127, где
•H — высота дуги;
•D — величина смещения.
Для полукруга 2H = D.
Таким образом, коэффициент криволинейности = (D/D)×127 = 127. Для прямой линии H = 0.
Следовательно, коэффициент криволинейности = (0/D)×127 = 0.
Геометрические фигуры и текстовые шрифты 385
Как показано на рис. 11.11, расстояние между начальной и конечной точками дуги равно 4, а высота дуги равна 1. Теперь можно определить коэффициент криволинейности, подставив соответствующие значения в ранее приведенную формулу:
Коэффициент криволинейности (целое число) = (2×1/4)×127 = 63,5 = 63
Следующее определение формы позволит вычертить дугу, показанную на рис. 11.11.
*213,5,BULGE1 12,(4,0,-63),0
Здесь
•4 — величина смещения по оси X;
•0 — величина смещения по оси Y;
•- — знак “минус”, обеспечивающий вычерчивание дуги по часовой стрелке;
•63 — коэффициент криволинейности.
Код 00D или 13: фигура, образованная несколькими кривыми линиями
Код 00D (или 13) позволяет создавать фигуры, образованные несколькими дугами, имеющими различные коэффициенты криволинейности. В этом случае определение фигуры должно заканчиваться выражением (0,0). Следующий файл определяет геометрические параметры дуг, образующих фигуру, показанную на рис. 11.12:
*214,16,BULGE2 13,(4,0,-111), (0,4,63), (-4,0,-111), (0,-4,63),(0,0),0
Рис. 11.11. Вычисление коэффициента криволинейности
Рис. 11.12. Геометрические параметры дуг, образующих данную фигуру
386Глава 11
Примечание
Данные, описывающие геометрические параметры различных дуг, могут быть указаны в одной строке. Для удобства пользователей определение фигуры в ранее приведенном примере разделено на несколько отдельных строк.
Код 00Е или 14: обозначение вертикального текста
Код 00Е или 14 используется в том случае, когда одно и то же определение текстового шрифта
применяется для формирования как вертикально, так и горизонтально ориентированного текста.
Если строки текста вычерчиваются в горизонтальном направлении, вектор, определенный после кода 14, игнорируется. Этот вектор учитывается при вертикальном расположении текста, что дает возможность генерировать текст в вертикальном и горизонтальном направлении, используя для этого один и тот же файл формы.
Начальной и конечной точками горизонтально расположенного текста являются соответственно
нижние левая и правая точки. В вертикально ориентированном тексте начальная точка находится в верхней средней точке, а конечная точка — в нижней средней точке текстового фрагмента, как по-
казано на рис. 11.13. На первый взгляд может показаться, что для определения горизонтального и вертикального текста требуется два отдельных файла, но это не совсем так. Используя код 14, вы сможете избавиться от необходимости дважды определять одну и ту же фигуру.
На рис. 11.13 показана траектория, по которой перемещается перо при вычерчивании буквенного символа “G”. При горизонтальном расположении текста строка, следующая после кода 14, автоматически игнорируется. Но эта строка учитывается при использовании вертикального текста, что приводит к переустановке начальной и конечной точек текстового фрагмента в соответствии с требованиями для вертикально выровненного текста.
*215,28,FLAG
002,14, (При горизонтальном расположении текста строка 008,(-2,-6), указанная после кода 14, автоматически пропускается.)
008,(-2,-6), 042,001, 014,016,028,01A, 04C,01E,020,012,014, 002,018, 001,020,01C, 002,01E,
14, (При горизонтальном расположении текста строка 008,(-4,-1), указанная после кода 14, автоматически пропускается.) 008,(-4,-1), 0
Геометрические фигуры и текстовые шрифты |
387 |
Пример 5
Напишите файл формы, который позволит вам вычертить контур молотка, показанный на рис. 11.14. Имя этой формы — “HAMMER”; файл формы сохранен под именем hmr.shp. Ниже приведен листинг определения этой формы. Номера строк не являются
частью файла, а используются только в качестве ссылки.
Шаг 1: запись файла формы
Запишите следующее определение формы, используя для этого текстовый процессор или редактор текстов.
*204,34,HAMMER |
1 |
|||||||||||||||||||||||||||||||
003,22, |
|
|
|
|
|
2 |
||||||||||||||||||||||||||
002,8,(2,-1), |
|
|
|
|
3 |
|||||||||||||||||||||||||||
001,024, |
|
|
|
|
|
4 |
||||||||||||||||||||||||||
8,(-1,4), |
|
|
|
|
|
5 |
||||||||||||||||||||||||||
00A,(1,004), |
6 |
|||||||||||||||||||||||||||||||
8,(-1,-4),06C, |
7 |
|||||||||||||||||||||||||||||||
00C,(4,0,63), |
8 |
|||||||||||||||||||||||||||||||
044,8,(17,-1), |
|
|
|
9 |
||||||||||||||||||||||||||||
00C,(0,4,63), |
10 |
|||||||||||||||||||||||||||||||
8,(-17,-1),0 |
|
|
|
|
|
11 |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 11.14. Размеры молотка (в дюймах)
Пояснения
Строка 1
*204,34,HAMMER
Это строка заголовка, содержащая номер формы (204), число байтов данных, имеющихся в определении формы (34), и имя фигуры (HAMMER).
Строка 2
003,22,
Байт данных 003 используется для деления длин векторов на значение следующего байта данных (22). В результате этого контур молотка уменьшается до единичного раз-
388 Глава 11
мера, что обеспечивает выполнение операций масштабирования при вставке фигуры в открытый чертеж.
Строка 3
002,8,(2,-1),
Байт данных 002 отменяет режим рисования (перо поднято), а следующий байт данных (код 008) определяет вектор, смещенный на 2 единицы по оси Х и на –1 единицу по оси Y. Линия не будет вычерчена, так как перо плоттера поднято.
Строка 4
001,024,
Байт данных 001 активизирует режим рисования (перо опущено), а следующий байт данных (024) определяет линию, имеющую длину 2 единицы и проходящую вдоль вектора под номером 4.
Рис. 11.15. Движения пера, формирующие контур молотка
Строка 5
8,(-1,4),
Первый байт данных (код 008) определяет вектор со смещениями по осям X и Y, величина которых указана в двух следующих байтах. В нашем примере смещение по оси X равно –1, а смещение по оси Y равно 4.
Строка 6
00А,(1,004),
Байт данных 00А определяет октант дуги, радиус которой задан в следующем байте данных (1). Первый элемент байта данных 004 указывает на использование шестнадцатеричной системы счисления. Второй элемент этого байта (0) определяет начальный октант дуги, а третий элемент байта (4) определяет последний октант этой дуги.
Строка 7
8,(-1,-4),06С
Байт данных 8 (код 008) определяет вектор, имеющий смещение по оси X, равное –1, и смещение по оси Y, равное –4. Следующий байт данных (06С) определяет вектор длиной 6 единиц, направленный вдоль вектора С.
Геометрические фигуры и текстовые шрифты 389
Строка 8
00С,(4,0,63),
Первый байт данных (00С) определяет дугу, имеющую смещение по оси X, равное 4, смещение по оси Y, равное 0, и коэффициент криволинейности 63.
Коэффициент криволинейности = (2×H)/D×127 = (2×1)/4×127 = 63,5 = = 63 (целое число)
Строка 9
044,8,(17,-1),
Первый байт данных (044) определяет вектор длиной 4 единицы, направленный вдоль вектора 4. Второй байт данных (8) определяет вектор, имеющий смещение по оси X, равное 17, и смещение по оси Y, равное –1.
Строка 10
00С,(0,4,63),
Первый байт данных (00С) определяет дугу, имеющую смещение по оси X, равное 4, смещение по оси Y, равное 0, и коэффициент криволинейности 63.
Коэффициент криволинейности = (2×H)/D×127 = (2×1)/4×127 = 63,5 = = 63 (целое число)
Строка 11
8,(-17,-1),0
Первый байт данных (8) определяет вектор, имеющий смещение по оси X, равное – 17, и смещение по оси Y, равное –1. Байт данных 0 завершает определение формы.
Шаг 3: сохранение и загрузка файла формы
Сохраните текстовый файл в виде файла с расширением .shp. Затем скомпилируйте и загрузите файл формы, используя для этого команды COMPILE и LOAD. Чтобы вставить созданную фигуру в открытый чертеж, воспользуйтесь командой SHAPE.
Файлы текстовых шрифтов
В дополнение к определению геометрических фигур, программа AutoCAD обеспечивает возможность создания новых текстовых шрифтов. После того как вы создадите и скомпилируете файл текстового шрифта, вы сможете вставлять в чертежи текстовые фрагменты, содержащие новые шрифты. В этом случае текстовые файлы представляют собой обычные файлы форм, содержащие дополнительную информацию, которая описывает текстовые шрифты и определяет параметры перевода строки. Стандартный файл текстового шрифта имеет следующую структуру:
•описание текстового шрифта;
•перевод строки;
•определение формы.
Описание текстового шрифта
Описание текстового шрифта состоит из двух строк:
*0,4,имя_шрифта верхний_интервал, нижний_интервал, режимы, 0
390 |
Глава 11 |
Здесь
•*0 — номер формы текстового шрифта;
•4 — количество байтов данных;
•имя_шрифта — имя шрифта, набранное строчными буквами;
•верхний_интервал — величина верхнего интервала;
•нижний_интервал — величина нижнего интервала;
•режимы: 0 — горизонтальный текст; 2 — текст с двойной ориентацией;
•0 — нуль, используемый для завершения определения.
Например, если необходимо написать определение формы прописной буквы “М”, то описание текстового шрифта должно иметь следующий вид:
*0,4,ucm
10,4,2,0
Первый байт данных (0), содержащийся в верхней строке определения, является номером специальной формы, используемой во всех текстовых шрифтах. Этот номер должен использоваться во всех файлах текстовых шрифтов. Следующий байт данных (4) определяет количество байтов данных в следующей строке, а выражение ucm является именем формы (или в данном случае, именем шрифта). В файлах текстовых шрифтов в именах форм должны использоваться только строчные буквы. Это сделано для того, чтобы компьютеру не приходилось сохранять в системной памяти имена используемых шрифтов. Тем не менее, при редактировании вы можете создавать ссылки на имена форм.
Первый байт данных (10) во второй строке определяет высоту прописной буквы относительно базовой линии. Например, как показано на рис. 11.16, высота прописной буквы “М” относительно базовой линии равна 10 единицам. Следующий байт данных (4) определяет высоту подстрочных элементов строчных букв (т.е. элементов, расположенных ниже базовой линии). В программе AutoCAD эта информация используется для автоматического масштабирования шрифтов. Например, если вы укажете, что высота текста равна 1 единице, то получите текст именно такой высоты, несмотря на то, что в определении текстового шрифта задана высота 10 единиц. Третий байт данных (2) определяет режим ввода текста. Этот байт может иметь два значения: 0 или 2. Если текстовые строки расположены по горизонтали, используется режим 0; если текст имеет двойную ориентацию (горизонтальный и вертикальный), используется режим 2. Четвертый байт данных (0) завершает определение формы.
Перевод строки
Использование перевода строки позволяет избежать наложения символов, содержащихся в соседних строках, и обеспечивает размещение текстовых строк на определенном расстоянии друг от друга. Для определения перевода строки в программе AutoCAD зарезервировано число 10, которое является одним из кодовых обозначений ASCII.
*10,5,lf 2,8,(0,-14),0
Здесь
•*10 — число ASCII, зарезервированное для перевода строки;
•5 — количество байтов данных, содержащихся в определении;
•lf — имя формы;
