ГРАФИЧЕСКИЕ СТАНДАРТЫ
В настоящее время в графических системах используются различные
форматы и стандарты, такие как Initial Graphics Exchenge Specification
(IGES), AutoCAD Drawing Exchenge Format (DXF), PEX, U.S. Bureau of the
Census GBF/DIME и TIGER/Line файлы, ETAK MapBase файлы, USGS DLG-3
файлы и U.S. Departament of the Interior MOSS файлы данных. Все эти
форматы широко применяются. В данной работе остановимся на рассмотре-
нии форматов DXF и PEX.
Формат файла AUTOCAD DXF
Общая структура файла
1. Текстовый файл в кодах ASCII.
2. Раздел Заголовка (HEADER). Общая информация о чертеже. Каждый
параметр содержит имя переменной и соответствующее значение.
3. Раздел таблиц (TABLES). Содержит определения именованных эле-
ментов таблица типов линий (LTYPE):
таблица слоев
таблица типов шрифтов
таблица видов.
4. Раздел блоков (BLOCKS). Содержит графические примитивы опреде-
лений блоков, которые описывают примитивы, входящие в состав каждого
блока изображения.
5. Раздел примитивов (ENTITIES). Содержит графические примитивы
чертежа, включая любые ссылки на блоки.
6. Конец файла.
7. Если используется опция ENTITIES команды DXFOUT, выходной
DXF-файл будет содержать только секции Примитивы и Конец файла, раздел
Примитивы будет отражать только выбранные для вывода примитивы.
8. DXF-файл состоит из множества групп, каждая из которых занима-
ет 2 строки в файле. В 1 строке - код группы - положительное ненулевое
целое число формата I3 языка фортран, (выровненное вправо число, за-
полненное пробелами в 3-символьном поле) 2-я строка группы - значение
группы. Формат зависит от кода группы.
Присвоение кодов групп зависит от того, какой элемент описывается
в файле. Тип значения, которое дает эта группа, определяется из кода
группы следующим образом:
0-9 - строковое;
10-59 - с плавающей запятой;
60-79 - целое.
Форма представления значений в DXF-файле не зависит от установки
параметров в команде UNITS: координаты всегда представляются в виде
10-х чисел (или, если они очень большие, то в виде научных обозначе-
ний), а углы представляются в виде 10-х градусов, причем отсчет ведет-
ся от направления на восток от начала координат.
Переменные, точки входа в элементы таблиц и графические примитиве
описываются с помощью группы, которая представляет элемент, задавая
его тип и/или имя, после чего следуют многочисленные группы, которые
представляют собой значения, связанные с этим элементом. Кроме того,
для разделителей файлов, таких как метки конца и начала разделов, таб-
лиц и самих файлов, используются специальные группы.
Графические примитивы, точки входа в таблицы и разделители файлов
всегда вводятся с помощью группы 0, за которой следует имя, описываю-
щие элемент.
Коды групп
Коды групп используются для указания типа значения группы и ука-
зания общего назначения группы. Специальная функция кода группы зави-
сит от фактической переменной, элемента таблицы или описания графичес-
кого примитива. В данном разделе указано общее назначение групп, при-
чем те, которые всегда выполняют одну и ту же функцию, отмечены словом
"(фиксированный)".
0 │Устанавливает начало графического примитива, входа в таблицу,
│или же разделителя файлов. О чем именно идет речь, указывает
│следующее за ним текстовое значение.
1 │Первичное текстовое значение для графического примитива.
2 │Имя; описатель атрибута, имя блока и т.д.
3-5 │Другие текстовые или именованные значения.
6 │Имя типа линий (фикс.).
7 │Имя типа текстового шрифта (фикс.).
8 │Имя слоя (фикс.).
9 │Идентификатор имени переменной (используется только в разделе
│Заголовок файла).
10 │Первичная координата Х (начальная точка линии или текстового
│графического примитива, центр окружности и т.д.).
11-18│Другие координаты Х.
20 │Первичная координата Y. Значения второй координаты всегда
│соответствуют значениям первой координаты и следуют непосред-
│ственно за ним в файле.
21-28│Другие координаты Y.
30 │Первичная координата Z. Значения третьей координаты всегда
│соответствует значениям первой и второй координат и следуют
│непосредственно за ними в файле.
31-36│Другие координаты Z (в будущем).
38 │Если ненулевое значение, то это таблица графического
│примитива (фикс.).
39 │Значение с плавающей запятой (высота текста, масштабные
│коэффициенты и т.д.).
40-48│Повторное значение - многократные группы 49 могут попадаться
│в одном графическом примитиве для таблиц переменной длины.
49 │Для задания длины таблицы перед первой группой 49 всегда
│предусматривается группа 7х.
50-58│Углы.
62 │Номер цвета (фикс.).
66 │Флажок "Далее идут графические примитивы" (фикс.).
70-78│Целочисленные значение, такие как количество повторений, биты
│флажков, или режимы.
Раздел Заголовок
Раздел Заголовок (HEADER) файла DXF содержит установочные значе-
ния для переменных, которые непосредственно связаны с чертежем. Эти
переменные устанавливаются с помощью различных команд и относятся к
такому виду информации, который отображается на дисплее с помощью ко-
манды STATUS. Каждая переменная указывается в разделе заголовка с по-
мощью группы 9, задающей ее имя, после чего следуют группы, определяю-
щие ее значения. Переменные заголовка, последующие группы и их значе-
ния приведены в данной таблице:
$ACADVER │ 1(номер версии системы AutoCAD)
$ANGBASE │ 50(угол направления 0)
$ANGDIR │ 70(1=углы по часовой, 0=против часовой)
$ATTMODE │ 70(видимость атрибута: 0=нет, 1=нормальная, 2=все)
$AUNITS │ 70(формат UNITS для углов)
$AUPREC │ 70(точность UNITS для углов)
$AXISMODE │ 70(если значение не равно 0, то оси включены)
$AXISUNIT │ 10 и 20(разметка осей X и Y)
$BLIPMODE │ 70(если значение не равно 0, то "включение" режима
│ отметки на экране)
$CECOLOR │ 62(N цвета примитива: 0=BYBLOCK, 256=BYLAYER)
$CELTYPE │ 6(имя типа линии примитива, или BYBLOCK или BYLAYER)
$CHAMFERA │ 40(1 параметр фаски)
$CHAMFERB │ 40(2 параметр фаски)
$CLAYER │ 8(имя текущего слоя)
$COORDS │ 70(0=статическое отображение координат, 1=непрерывное
│ обновление, 2="d<a" формат)
$DIMALT │ 70(если не 0, размерность в альтернативных единицах)
$DIMALTD │ 70(число десятичных знаков для альтернативных единиц)
$DIMALTF │ 40(масштабный коэффициент альтернативных единиц)
$DIMASZ │ 40(величина размерной стрелки)
$DIMBLK │ 2(имя блока стрелки)
$DIMCEN │ 40(размер центровых меток/линий)
$DIMDLE │ 40(продолжение линии размерности)
$DIMDLT │ 40(увеличение размерной выносной линии)
$DIMEXE │ 40(продолжение выносной линии)
$DIMEXO │ 40(смещение выносной линии)
$DIMLFAC │ 40(масштабный коэффициент линейных размеров)
$DIMLIM │ 70(если не равно 0, то вырабатываются пределы размеров)
$DIMRND │ 40(значение округления для расстояний размера)
$DIMSCALE │ 70(масштабный коэффициент габаритных размеров)
$DIMSE1 │ 70(если не равно 0, то 1 выносная линия подавляется)
$DIMSE2 │ 70(если не равно 0,то вторая выносная линия подавляется)
$DIMTAD │ 70(если не равно 0, то текст располагается над размерной
│ линией)
$DIMTIH │ 70(если не равно 0, то текст располагается под горизон-
│ талью)
$DIMTM │ 40(отрицательный допуск)
$DIMTON │ 70(если не равно 0, то текст располагается над горизон-
│ талью)
$DIMTOL │ 70(если не равно 0, то вырабатываются допуски размеров)
$DIMTP │ 40(положительный допуск)
$DIMTSZ │ 40(задание размеров штриховой разметки: 0=разметки нет)
$DIMTXT │ 40(задание высоты размерностей текста)
$DIMZIN │ 70(если не 0, включать 0-вые дюймы в тексте)
$DRAGMODE │ 70(0=включено, 1=включено, 2=автоматическое)
$DRAGP1 │ 70(скорость съема ввода для трансформации с регенера-
│ цией)
$DRAGP2 │ 70(скорость съема ввода для быстрой трансформации)
$ELEVATION │ 40(установка текущего подъема с помощью команды ELEV)
$EXTMAX │ 10 и 20(правый верхний угол пределов чертежа)
$EXTMIN │ 10 и 20(левый нижний угол пределов чертежа)
$FASTZOOM │ 70(0=выключено, 1=включено)
$FILLETRAD │ 40(радиус сопряжения)
$FILLMODE │ 70(если не равно 0, то "включение" режима FILL)
$GRIDMODE │ 70(если не равно 0, то "включение" режима GRID)
$GRIDUNIT │ 10 и 20(размещение координатной сетки по осям X и Y)
$HIGHLIGHT │ 70(1=подсвечивать выбранные объекты, 2=не подсвечивать)
$INSBASE │ 10 и 20(установка базы вставки с помощью команды BASE)
$LIMCSECK │ 70(не равно 0, если "включена проверка пределов)
$LIMMAX │ 10 и 20(правый верхний угол границ чертежа)
$LIMMIN │ 10 и 20(левый нижний угол границ чертежа)
$LTSCALE │ 40(глобальный масштаб типа линии)
$LINITS │ 70(формат команды UNITS для координат и расстояний)
$LUPREC │ 70(точность команды UNITS для координат и расстояний)
$MENU │ 1(имя файла меню)
$MIRRTEXT │ 70(если не 0, текст MIRROR)
$ORTHOMODE │ 70(если неравно 0, то "включение" режима ORTHO)
$OSMODE │ 70(действующий режим привязки объекта)
$PDMODE │ 70(режим отображения точек)
$PDSIZE │ 40(размер отображения точек)
$PLINEWID │ 40(ширина ломанной по умолчанию)
$QTEXTMODE │ 70(если не равно 0, то "включение" режима "быстрого
│ текста")
$REGENMODE │ 70(если не равно 0, то "включение" режима REGENAUTO)
$SKETCHINC │ 40(инкремент эскизной записи)
$SKOLY │ 70(0=эскиз линиями, 1=эскиз ломаными)
$SNAPANG │ 50(угол вращения сетки привязки)
$SNAPBASE │ 10 и 20(начало отсчета сетки привязки)
$SNAPISOPAIR│ 70(изометрическая плоскость: 0=слева, 1=сверху,
│ 2=справа)
$SNAPMODE │ 70(если не равно 0, то"включение" режима привязки)
$SNAPSTYLE │ 70(тип привязки: 0=стандартный, 1=изометрический)
$SNAPUNIT │ 10 и 20(размеры сетки по X и Y)
$TDCREATE │ 40(дата/время создания чертежа)
$TDINDWG │ 40(накопленное время редактирования для данного
│ чертежа)
$TDUPDATE │ 40(дата/время последнего обновления чертежа)
$TDUSRTIMER │ 40(таймер прошедшего времени пользователя)