Реклама в Интернет

ГЛАВНАЯ
-----------------------------------
ДОВЕСКИ
часть 1
ДОВЕСКИ
часть 2
 
РУССИ-
ФИЦИРОВАННЫЙ
ШРИФТ
С МНОЖЕСТВОМ
ДОПОЛНИТЕЛЬНЫХ
ЭЛЕМЕНТОВ
 
КОМПОНОВЩИК
БИБЛИОТЕК
-----------------------------------
МЕНЕДЖЕР
СЛАЙДОВ
 
DCL
файлы диалога
-----------------------------------
ПРОГРАММЫ
Страница 1
Страница 2
Страница 3
-----------------------------------
ПРОГРАММЫ
2002 года
 
ОБ АВТОРАХ ПРОГРАММ
 
SHAPE . SHP

ШРИФТ
ФАЙЛ ШРИФТА И ФОРМ

 
Шрифт - это набор форм AutoCAD, описанных в одном файле, причем каждая форма соответствует одному символу (буква, значок, управляющий код). Для создания формы необходимо разработать ее определение и включить это определение в файл с расширением *.SHP . Набор отдельных форм-символов составит шрифтовой файл, который должен быть отранслирован (средствами AutoCAD'а), в результате чего формируется файл с расширением *.SHX, готовый к использованию.
Файл отдельных (или группы) форм загружается командой "LOAD", в отличие от него шрифтовой файл форм подключается к чертежу при определении гарнитуры шрифта командой "STYLE", имя SHX-файла связывается и именем стиля.
Принципы описания форм и символов одинаковы в обоих файлов шрифтов и форм. Отличие лишь в способе загрузки и вызова. Если форму, после загрузки, можно вызвать на прорисовку указав ее имя, то символы шрифтового файла вызываются по scan-коду (нажатием соответствующих клавиш).
Неруссифицированные стандартные шрифты AutoCAD можно дополнить начертаниями русских букв, другими символами. Часто вместе с русскими и латинскими символами в тексте необходимо использовать греческие буквы, разнообразные значки, показатели степеней и индексы. Дабы не плодить множество файлов с формами. надо их просто объединить в один файл. Ограничение по их количеству - 255 scan кодов минус несколько управляющих. В свое время я написал такой файл для DOS, а затем, из-за различия кодировок, и для Windows. Латинские и русские символы пишутся обычно переключая клавиатуру с одного языка на другой, а управляющие последовательности и значки - через указание кода (номер на малой клавиатуре при зажатой клавиши "Alt"). Можно, конечно, создать блок для такого значка или написать lisp-программу для его начертания - это проще, но дольше при его встаке. Единственное - надо знать скан-коды значков, для этого можно пользоваться , на первых порах, шпаргалкой (слайд в среде AutoCAD со скан-кодами).

Теперь, не переключая текстового стиля, можно написать следующее (см.рис.1)

Рис.1
Рис.1
Если это Вас заинтересовало - читайте дальше.
СТРУКТУРА ФАЙЛА.

Файл шрифта - текстовый файл, содержащий определения символов. Каждое определение состоит из двух разделов. Первый раздел - наименование, второй - описание формы.

 

Первый раздел

НОМЕР ФОРМЫ, при этом

  • строка начинается с символа " * "
  • номер формы должен находится в диапозоне от 1 до 255 и не повторяться в одном файле.

ЧИСЛО БАЙТОВ определяется только после составления описания.

ИМЯ ФОРМЫ (СИМВОЛА) не должно повторяться, т.е. быть уникальным в данном файле. Для форм имя набирается в верхнем регистре, а в файле шрифта оно теряет свое значение, т.к. символы вызываются не командой "SHAPE", а нажатием клавиш в ходе выполнения команды "TEXT" (для сокращения требуемой памяти имена символов лучше набирать в нижнем регистре клавиатуры, при компиляции они игнорируются и служат только комментариями).

 

Второй раздел

Содержит описание движения пера при прорисовки символа, состоящее из последовательности определенных кодов.

КОДЫ.

Каждый код соответствует одному байту и может быть представлен числом в десятичной (от 0 до 255) или шестнадцатеричной системе, содержащей три цифры, причем первой должен быть ноль (признак шестнадцатеричного числа). Коды разделяются запятыми, для удобства, разрешается использовать пробелы и круглые скобки. Условно коды можно разделить на четыре группы: основные, управляющие, числовые и код 0.

Основные
Задают движения по основным направлениям (рис. 2), для удобства записываются в шестнадцатеричной форме, где первая цифра - 0, вторая значение длины, третья - направление. Так для горизонтального вектора длиной 4 единицы код выглядит так:
слева на право - 040;
справа на лево - 048

Рис.2
Рис.2

Управляющие и Числовые  

Код
десятич-
ный

Код
шестнад-
цатеричный

Действие

Числовые коды
1 001 Опустить перо Нет
2 002 Поднять перо Нет
3 003 Делить длину на значение последующего кода Коэффициент деления
4 004 Умножить длину на значение последующего кода Коэффициент умножения
5 005 Занести текущую точку в стек Нет
6 006 Извлечь точку из стека и принять в качестве текущей Нет
7 007 Начертить субформу Код субформы из данного файла
8 008 Начертить вектор Смещение по Х, по Y
9 009 Начертить последовательность векторов ( (Смещение по Х, по Y),
(Смещение по Х, по Y),
... , 0,0
10 00A  

Начертить октантную дугу

Радиус, код дуги
11 00B Начертить произвольную дугу Смещение начала, конца,
старшие цифры радиуса, младшие,
код дуги
12 00C Начертить дугу, определяемую стрелкой прогиба Смещение по Х, по Y, стрелка прогиба
13 00D Начертить последовательность дуг, определяемых стрелкой (Смещение по Х, по Y,
стрелка прогиба),
... , 0,0
Пояснения к таблице.

Масштабирование коды 003 и 004, необходимо для изменения длины (если в реальном масштабе необходимо ввести не целое число) или для изменения размеров субформы (см. 007). Надо отметить, что масштабные коэффициенты действуют до конца описания формы и, более того, накапливаются, поэтому код 003 должен быть сразу отменен кодом 004.,

Cмещение по Х и по Y - любые целые числа в диапозоне от -128 до 127

Код дуги (00А, 00В)
  • перваявая цифра - ноль, вторая - начальный октант (см. рис. 3), третья - число охватываемых октантов (ноль - полная окружность);
  • знак минус перед кодом - направление дуги по часовой стрелке;
  • смещение начала определяется как разность между началом предыдущего октанта и началом дуги (в градусах), деленная на 45 и умноженная на 256;
  • смещение конца вычисляется также, но относительно последнего, пересекаемого дугой октанта;
  • старшие цифры радиуса - это сотни его значение (при R=325 старшие цифры - 3, младшие - 25, а при R=75 старшие цифры - 0, младшие - 75).
  • Код 00С и 00D позволяют как дуги, так и векторы (выражденная дуга). Дуга задается по трем точкам: начальная - известна, конечная - смещения по х и у и стрелка прогиба. Она рассчитывается по формуле: 

S=2 * H / L * 127

где L - хорда дуги; H - перпендикуляр, восстановленный из середины хорды.
При H, а следовательно и S равным нолю дуга вырождается в отрезок.
Если стрелка прогиба имеет знак минус - дуга направлена по часовой стрелке.

Рис.3
Рис.3
Завершающий
Код 0 - завершение описания формы. Присутствует всегда, как код окончания записи формы.
ОБЩИЕ ПРАВИЛА СОСТАВЛЕНИЯ
  • Описание начинается в начальной точке, введенной в ответ на запрос команды "TEXT", в этой точке перо опущено.
  • Каждое следующее движение пера начинается из текущей точки. Для перехода в другую точку необходимо сначала поднять перо и осуществить переход в новое положение, затем опустить перо.
  • Линейные перемещения быстрее осуществляются по 16 основным направлениям
  • Для основных направлений единица длины имеет различные значения и все векторы основных направлений имеют единичную длину.
  • Дуговые перемещения быстрее осуществляются по целому числу октантов.
  • Максимальное число, которое может быть задано в описании, - 255, однако однако этто число можно увеличить с помощью внутренних масштабных коэффициенов.
  • Значения перемещений должны быть только целыми, это следует учитывать при выборе единицы длины, выход - деление на чисел на целочисленный коэффициент.
  • При описании формы задаются некоторые условные первоначальные размеры, одинаковые во всех формах шрифтового файла. Окончательный размер определяется при вводе размера шрифта.
  • В стеке возможно запомнить, а затем извлечь, до четырех точек.
  • Допускается повторно использовать формы (Схожие по начертанию литеры кирилицы и латинские).
ПОДГОТОВКА К СОЗДАНИЮ ФОРМЫ
Если создается шрифтовой файл с кирилицей и другими символами, то сначала необходимо распределить символы по соответствующим номерам-кодам, для схожих по начертанию с латинскими просто вставить их кодом вставки 007. Для оставшихся придется написать программу движения пера.
Надо помнить, что перо, начав движение при вычерчивании формы из точки Ао, должна, после её вычерчивания, оказаться в поднятом состоянии в конечной точке формы, например Аn. Эти точки, для горизонтального шрифта, лежат на горизонтали на расстоянии шага шрифта. Вертикальный шрифт (буква под буквой) рассматривать пока не будем.
Шаг шрифта лучше делать постоянным во всех формах букв шрифта, кроме специальных символов и управляющих последовательностей. Ниже Я приведу некоторые описания символов, а сейчас несколько слов об определении форм, необходимых в шрифтовом файле.
Рис.4
Рис.4
ФОРМЫ В ШРИФТОВОМ ФАЙЛЕ
В шрифт необходимо включить форму ном ер 0, которая имеет значение внутреннего размера шрифта. Она выглядит так:

*0,4,<имя шрифта>
H, U, Признак, 0

У меня в шрифте эта строка такая:

*0,4,ruswind
6,2,0,0

Назначение некоторых параметров видно из рисунка "Размер шрифта". Сумма H и U определяет высоту или размер шрифта. Признак принимает значение 0 - шрифт только горизонтальный или 2 - шрифт может быть использован и для вертикально ориентированного текста (столбцом). В этом случае в каждой форме должен присутствовать код 00Е (или 14). Он указывает, что следующее за ним перемещение должно отрабатываться только при вертикально ориентированном тексте, причем если для горизонтально ориентированнов тексте перо должно закончить перемещение в форме в левом нижнем углу следующего символа, то для вертикально - верхняя центральная точка. Также должна быть определена форма с номером 10 и именем lf. Она используется при переводе строки (клавиша "Enter") и указывает на перемещение по вертикали между начальными точками предыдущей и последующей строк.

*10,3,lf
2,0AC,0

Приведу примеры греческих литер альфа, бета и омега в файле gewind.shx

*145,45,greeka
2,3,3,8,9,14,1,41,42,43,8,-1,-3,60,45,47,32,33,50,8,2,3,67,8,1,3,
2,152,1,32,30,45,8,2,-8,45,30,16,2,8,3,0,4,3,0

*146,58,greekb
2,3,3,8,12,21,1,41,42,75,9,-1,-3,-1,-4,-1,-6,-1,-8,0,0,2,8,10,28,1,32,46,60,
43,26, 41,56,2,8,0,0,1,47,46,45,60,43,26,41,40,39,22, 8,-1,3,2,8,15,-5,4,3,0

*151,56,greekw
2,3,3,8,8,14,1,41,8,-2,-3,8,-1,-3,60,8,1,-3,30,32,33,8,2,3,2,8,1,4,1,8,-1,-4,8,1,-3,
30,32, 33,8,2,3,8,1,3,52,8,-1,3,22, 2,8,5,-14,4,3,
0

Управление перемещением пера и возвратом в зону степени step-to, step-of и в зону индекса- index-to, index-off. Уменьшается и высота шрифта. Ввод номера осуществляется с клавиатуры удерживая клавишу <ALT>. В среде Windows необходимо вводить 4-х значный номер, добавляя 0 перед номером.

*188,8,step-to
2,044,010,003,3,004,2,0

*189,8,step-of
2,004,3,003,2,04C,010,0

*190,7,index-to 2,02C,003,3,004,2,0

*191,7,index-off 2,004,3,003,2,024,0

РУССИФИЦИРОВАННЫЙ ШРИФТ С МНОЖЕСТВОМ ДОПОЛНИТЕЛЬНЫХ ЭЛЕМЕНТОВ

На этом все.
Фонт-файл вместе с кратким описанием можете взять.

 
© Copyright Поспелов Геннадий "PG"