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

Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г

.pdf
Скачиваний:
182
Добавлен:
09.04.2015
Размер:
9.06 Mб
Скачать

Геометрические фигуры и текстовые шрифты

391

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

(0,-14) — параметры перевода строки;

0 — нуль, завершающий определение формы.

Первый байт данных (10), содержащийся в верхней строке определения, является номером формы, зарезервированным для определения перевода строки. Второй байт данных (5) указывает количество байтов данных, содержащихся в определении формы. Следующий байт данных (lf) является именем формы.

Во второй строке первый байт данных (2) является кодом, используемым для выключения режима рисования. Следующий байт данных (8) представляет собой специальный код (008), определяющий вектор со смещениями по осям X и Y. Третий и четвертый байты данных (0,-14) определяют величины соответствующих смещений. С их помощью выполняется перевод строки (т.е. перенос текста) на строку, расположенную на 14 единиц ниже базовой линии. Пятый байт данных (0) — нуль, который завершает определение формы.

Определение формы

Номер формы, содержащийся в определении текстового шрифта, должен совпадать с кодом ASCII, который соответствует данному символу. Например, для того чтобы написать определение формы для прописной буквы “М”, введите номер формы 77.

*77,50,ucm

Здесь

*77 — номер формы (код ASCII для прописной буквы “M”);

50 — количество байтов данных;

ucm — имя формы.

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

32

пробел

56

8

80

P

104

h

33

!

57

9

81

Q

105

i

34

58

:

82

R

106

j

35

#

59

;

83

S

107

k

36

$

60

<

84

T

108

l

37

%

61

=

85

U

109

m

38

&

62

>

86

V

110

n

39

,

63

?

87

W

111

o

40

(

64

@

88

X

112

p

41

)

65

A

89

Y

113

q

42

*

66

B

90

Z

114

r

43

+

67

C

91

[

115

s

44

68

D

92

\

116

t

45

-

69

E

93

]

117

u

46

.

70

F

94

^

118

v

47

/

71

G

95

_

119

w

48

0

72

H

96

120

x

49

1

73

I

97

a

121

y

50

2

74

J

98

b

122

z

51

3

75

K

99

c

123

{

52

4

76

L

100

d

124

|

53

5

77

M

101

e

125

}

54

6

78

N

102

f

126

~

55

7

79

O

103

g

 

 

392

Глава 11

Пример 6

Напишите файл формы текстового шрифта для прописной буквы “М”, показанной на рис. 11.16. Файл шрифта должен обеспечивать возможность генерирования горизонтального и вертикального текста. Расстояние между линиями сетки — 1 единица; направление векторов обозначено стрелочками.

Рис. 11.16. Форма прописной буквы “М” и схема перемещения пера

Шаг 1: запись файла формы

В представленном примере номера строк, показанные в правой части листинга, не являются частью файла, а используются только для ссылок. Для записи файла формы обычно используется какой-нибудь текстовый редактор.

*0,4,uppercase m

1

10,0,2,0

2

*10,13,lf

3

002,8,(0,-14),14,9,(0,14),(14,0),(0,0),0

4

*77,51,ucm

5

2,14,8,(-5,-10),

6

001,009,(0,10),(1,0),(4,-6),(4,6),(1,0),

7

(0,-10),(-1,0),(0,0),

8

003,2,

9

009,(0,17),(-7,-11),(-2,0),(-7,11),

10

(0,-17),(-2,0),(0,0),

11

002,8,(28,0),

12

004,2,

13

14,8,(-9,-4),0

14

Пояснения

Строка 1

*0,4,uppercase m

Первый байт данных (0) является номером специальной формы, который используется в файлах текстовых шрифтов. Следующий байт данных (4) указывает количество байтов данных, содержащихся в определении. Третий байт данных является именем формы.

Геометрические фигуры и текстовые шрифты

393

Строка 2

10,0,2,0

Первый байт данных задает общую высоту прописной буквы “М”, а второй байт данных (0) определяет длину элементов строчных букв, расположенных ниже базовой линии. Третий байт данных (2) указывает на текстовый режим с двойной ориентацией текста (горизонтальный и вертикальный). Если текстовые строки должны располагаться только в горизонтальном направлении, этот байт будет иметь значение 0. Четвертый байт данных (0) — нуль, завершающий определение формы.

Строка 3

*10,13,lf

Первый байт данных (10) — кодовое обозначение, зарезервированное для определения параметров перевода строки. Второй байт данных (13) указывает на количество байтов данных, содержащихся в определении формы. Третий байт данных (lf) — имя описываемой формы.

Строка 4

002,8,(0,-14),14,9,(0,14),(14,0),(0,0),0

Первый байт данных (002 или 2) представляет собой код, используемый для выключения режима рисования (перо поднято). Три следующих байта данных (8,(0,-14)) определяют вектор со смещениями по осям X и Y, величины которых равны соответственно 1 и –14. Этот вектор обеспечивает возврат каретки в точку, которая находится на 14 единиц ниже точки ввода первой текстовой строки. Это подходит только для тех случаев, когда текст вычерчивается в горизонтальном направлении. Если текст располагается вертикально, то при возврате каретки точка ввода должна смещаться вправо от существующей строки. Выполнение этой операции обеспечивается с помощью семи следующих байтов. Обратите внимание на байт данных 14. Если текст располагается горизонтально, код, находящийся справа от указанного байта данных, игнорируется. Этот код выполняется только в том случае, когда текст располагается вертикально. Следующий набор байтов данных (0,14) определяет вектор, конечная точка которого расположена на 14 единиц ниже предыдущей точки. На рис. 11.17 величина смещения вектора обозначается размером D1.

Рис. 11.17. Возврат каретки для вертикального и горизонтального текста

394 Глава 11

Байты данных (14,0) определяют вектор, конечная точка которого смещена на 14 единиц вправо (размер D2 на рис. 11.17). Эти четыре байта данных ((0,14),(14,0)) обеспечивают возврат каретки в точку, которая находится в 14 единицах справа от существующей строки. Следующая пара байтов данных (0,0) завершает выполнение кода 009, а последний байт (0) завершает определение формы.

Строка 5

*77,51,ucm

Первый байт данных (77) является кодовым обозначением ASCII, которое соответствует прописной букве “M”. Во втором байте данных (51) указано количество байтов данных, содержащихся в определении формы. Следующий байт данных (ucm) является именем файла формы, написанным строчными буквами.

Строка 6

2,14,8,(-5,-10),

Код 002, содержащийся в первом байте данных (2), выключает режим рисования (перо поднято), а код 14 (второй байт данных) обеспечивает игнорирование следующего кода при горизонтальном расположении текста. Как показано на рис. 11.16, точка ввода горизонтального текста является начальной точкой текстовой строки. Тем не менее, если текст располагается вертикально, начальной точкой текстовой строки становится верхняя средняя точка прописной буквы “М”. Выполнение этого условия обеспечивается тремя следующими байтами данных [8,(-5,-10)], которые перемещают начальную точку на 5 единиц влево (ширина прописной буквы “М” равна 10) и на 10 единиц вниз (высота этой буквы равна 10).

Строки 7 и 8

001,009,(0,10),(1,0),(4,-6),(4,6),(1,0), (0,-10),(-1,0),(0,0),

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

Строки 9, 10, 11

003,2, 009,(0,17),(-7,-11),(-2,0),(-7,11), (0,-17),(-2,0),(0,0),

Высота внутренней вертикальной линии, которая образует правую “ножку” прописной буквы “М”, равна 8,5 единицы. Однако нельзя определить вектор, длина которого не является целым числом. Вместо этого можно определить вектор, имеющий длину 2 × 8,5 = 17 единиц, а затем разделить его на 2. В результате этого вы получите вектор длиной 8,5 единицы. Эта операция выполняется с помощью специального кода 003 и числа 2, содержащегося в следующем байте данных. Длины всех векторов, которые определены в двух следующих строках, будут разделены на 2.

Строка 12

002,8,(28,0),

Первый байт данных (002) отменяет режим рисования, а три следующих байта данных определяют вектор, конечная точка которого смещена на 14 единиц (28/2 = 14)

Геометрические фигуры и текстовые шрифты

395

вправо. Это означает, что точка, с которой начнется вычерчивание следующего символа, будет расположена в 4 единицах (14 – 10 = 4) справа от уже существующего символа. Это относится к горизонтально расположенному тексту.

Строка 13

004,2,

Код 004 умножает все ранее определенные векторы на 2, тем самым аннулируя результат, полученный при использовании кода 003,2 (т.е. при делении на 2).

Строка 14

14,8,(-9,-4),0

Если текстовые строки располагаются вертикально, следующая буква должна начинаться ниже предыдущей. Это условие выполняется с помощью байтов данных 8,(-9,-4), которые определяют вектор, смещенный по осям X и Y на –9 единиц и на –4 единицы, соответственно. Байт данных 0 завершает определение формы.

Шаг 2: загрузка файла формы

Сохраните файл под именем ucm.shp. Для того чтобы скомпилировать файл формы, используйте команду COMPILE. Теперь с помощью этой формы вы сможете создавать текстовые фрагменты. Чтобы определить стиль текста, откройте диалоговое окно Text Style, выбрав команду Text Style из раскрывающегося меню Format, а затем создайте новый стиль. Чтобы создать стиль, который бы соответствовал скомпилированному файлу .SHX, введите выражение -STYLE в командную строку. Обратите внимание на параметры, которые вам придется определить, используя команду -STYLE. Допустим, что MYUCM1 — имя нового текстового стиля.

Command: -STYLE

Enter name of text style or [?] <Standard>: MYUCM1

Определение нового стиля:

Specify full font name or font filename (TTF or SHX) <txt>: ucm.shx Specify height of text <0.0000>: 1

Specify width factor <1.0000>: <Enter> Specify obliquing angle <0>: <Enter>

Display text backwards? [Yes/No] <N>: <Enter> Display text upside-down? [Yes/No] <N>: <Enter> Vertical? <N>: <Enter>

◊◊◊

Полное имя шрифта или файловое имя шрифта (TTF или SHX) <txt>: ucm.shx Высота текста <0.0000>: 1

Коэффициент ширины <1.0000>: Нажмите клавишу <Enter>

Угол наклона <0>: Нажмите клавишу <Enter>

Обратное отображение текста? [Да/Нет] <Нет>: Нажмите клавишу <Enter> Отображение текста в перевернутом виде? [Да/Нет] <Нет>: Нажмите клавишу <Enter>

Вертикально? <Нет>: Нажмите клавишу <Enter>

Теперь текущим текстовым стилем является MYUCM1.

Чтобы написать букву “М” (рис. 11.18), используя текстовый стиль MYUCM1, введите выражение TEXT (ТЕКСТ) в командную строку.

396

Глава 11

 

 

 

 

Рис. 11.18. Использование определенного текстового шрифта

Пример 7

Напишите файл формы текстового шрифта для строчной буквы “m”, показанной на рис. 11.19. Файл шрифта должен обеспечивать генерирование текста как в вертикальном, так и горизонтальном направлении. Расстояние между линиями сетки равно 1 единице; направление векторов обозначено стрелочками.

Рис. 11.19. Форма строчной буквы “m”

Шаг 1: запись файла формы

Перед вами листинг файла текстового шрифта, описанного в примере 7. Номера строк, показанные в правой части листинга, не являются частью файла, а используются только для ссылок. Для записи файла формы обычно используется какой-нибудь текстовый редактор.

*0,4,lowercase m

1

14,3,2,0

2

*10,13,lf

3

002,8,(0,-18),14,9,(0,18),(27,0),(0,0),0

4

Геометрические фигуры и текстовые шрифты

397

*109,57,lcm

5

2,14,8,(-11,-14),

6

005,005,001,020,084,

7

00A,(4,-044),

8

08C,020,084,

9

00A,(4,-0440),

10

08C,020,084,

11

00B,(0,62,0,6,004),

12

00B,(193,239,0,6,003),

13

006,9,(0,14),(2,0),(0,0),

14

003,5,07C,004,5,

15

006,2,8,(27,0),

16

14,8,(-16,-5),0

17

Пояснения

Формат большей части строк примерно такой же, как и в предыдущем примере, поэтому объясняются только строки, которые используются для сохранения и восстановления исходных координат и определения октантов и дуг.

Строка 7

005,005,001,020,084,

Первый и второй байты данных (005) обеспечивают сохранение координат исходной точки. Остальные байты данных используются для активизации режима рисования и определения векторов.

Строка 8

00A,(4,-044),

Первый байт данных (00А) представляет собой код, используемый для определения дуги, состоящей из целого числа октантов. Второй байт данных (4) определяет радиус дуги. Отрицательное значение третьего байта данных обеспечивает вычерчивание дуги по часовой стрелке. Первый элемент (0) указывает на использование шестнадцатеричной системы счисления. Второй элемент (4) определяет номер начального октанта, а третий элемент (4) определяет количество октантов, через которые проходит данная дуга.

Строка 12

00B,(0,62,0,6,004),

Первый байт данных (00В) является кодовым обозначением дробной дуги, параметры которой определены пятью следующими байтами данных. Второй байт данных (0) представляет собой смещение начальной точки первой дуги, как показано в следующих вычислениях.

Первая дуга

Начальный угол = 0; Начальный октант = 0;

Начальное смещение = (0 – 0)×256/45 = 0; Конечный угол = 146; Конечный октант = 4;

Конечное смещение = (146 – 135)×256/45 = 62,57 = 62 (целое число).

398

Глава 11

Третий байт данных (62) определяет положение конечной точки дуги, а четвертый байт данных (0) является предельным радиусом дуги. Пятый байт данных (6) определяет радиус дуги. Второй элемент (0) следующего байта данных представляет собой номер начального октанта, а третий элемент (4) определяет число октантов, через которые проходит данная дуга.

Строка 13

00B,(193,239,0,6,003),

Первый байт данных (00В) является кодовым обозначением дробной дуги, геометрические параметры которой определены следующими байтами данных. Величины угловых смещений вычисляются следующим образом.

Вторая дуга

Начальный угол = 34; Начальный октант = 0;

Начальное смещение = (34 – 0)×256/45 = 193,4 = 193 (целое число); Конечный угол = 132; Конечный октант = 3;

Конечное смещение = (132 – 90)×256/45 = 238,9 = 139 (целое число).

Примечание

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

Строка 14

006,9,(0,14),(2,0),(0,0),

Первый байт данных (006) восстанавливает ранее сохраненные координаты исходной точки, а остальные байты данных определяют векторы, использующие код 009.

Шаг 2: загрузка файла формы

Чтобы загрузить файл формы, выполните процедуру, описанную в примере 6. Это даст вам возможность использовать данную форму при создании текстовых фрагментов.

Примечание

Как и файлы форм, компилированные файлы шрифтов (.shx) должны быть доступны для каждого открытого чертежа. Это необходимое условие, поэтому, отправляя чертежи другому пользователю, не забывайте также о файлах форм и текстовых шрифтов.

Геометрические фигуры и текстовые шрифты

399

Задания для самопроверки

Ответьте на следующие вопросы и сравните свои ответы с правильными ответами, приведенными в конце этой главы.

1.Основными объектами, которые используются в файлах форм, являются ________

и ________.

2.Геометрические фигуры упрощают процесс вставки объектов и занимают меньше дискового пространства, чем ________. Тем не менее, использование фигур имеет определенные недостатки. В частности, пользователь не может их ________ или вносить какие-либо изменения.

3.В качестве номера формы может использоваться любое число от 1 до ________, которое должно быть уникальным для каждого файла.

4.В файле формы не должно быть нескольких различных ________, имеющих одинаковые имена.

5.Ведущий ________, стоящий перед числовым значением, указывает на использование шестнадцатеричной системы счисления.

6.Максимальное количество байтов данных, используемых в определении формы, составляет ________.

7.Чтобы определить какой-нибудь вектор, необходимо указать его длину и ______.

8.Для загрузки файла формы используется команда ________.

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

________ векторов. Для решения этой проблемы могут использоваться ________, которые позволяют повысить гибкость и улучшить контроль над созданием геометрических фигур.

10.Код 001 активизирует режим ________, а код ________ выключает режим рисования.

11.Байт данных, который вводится после кода деления (003), представляет собой число, на которое будут разделены длины всех ________ векторов.

12.Код 004 используется в том случае, когда вы хотите умножить длины векторов на определенное число. Это позволяет также ________ результат, полученный после использования кода 003.

400 Глава 11

Повторение пройденного материала

Ответьте на следующие вопросы.

1.Масштабные коэффициенты, примененные к одному объекту, ________.

2.Количество сохраненных данных (код 005) должно соответствовать числу ______

(код ________).

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

________.

4.Подформа определяется точно так же, как и стандартная подпрограмма. Для создания ссылки на подформу используется код _________.

5.Векторы можно провести только в одном из 16 ранее определенных направлений; при этом длина векторов не должна превышать ________ единиц.

6.Для создания нестандартной дробной дуги может быть использован код 00В или

________.

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

8.Коэффициент криволинейности может изменяться в пределах от –127 до ______.

9.Код 00Е или _________ используется тогда, когда одно и то же определение текстового шрифта применяется для формирования как вертикально, так и горизонтально ориентированного текста.

10.Текстовые файлы представляют собой обычные файлы _________, содержащие дополнительную информацию, которая описывает текстовые шрифты и определяет параметры перевода строки.

11.В файлах текстовых шрифтов в именах форм должны использоваться только строчные буквы. Это сделано для того, чтобы компьютеру не приходилось сохранять имена используемых шрифтов в ________.

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

13.Номер формы, содержащийся в определении текстового шрифта, должен совпадать с кодом ________, который соответствует данному символу.

14.Чтобы обеспечить возможность вызова подформы, она должна быть ________ в том же файле формы.

15.45-градусные сегменты, полученные при делении круга, называются ________.

16.Число 10, являющееся кодом ASCII, зарезервировано программой AutoCAD для определения ________.

17.Формы, вставленные в чертеж, не могут быть ________.

18.SHAPE NAME является именем формы, состоящим из ________ букв.

19.В определении формы первая строка является строкой ________, а вторая строкой ________.

Соседние файлы в папке Книги_AutoCad_2