Смекни!
smekni.com

Операции над графикой (стр. 1 из 10)

ГРАФИЧЕСКИЕ СТАНДАРТЫ

В настоящее время в графических системах используются различные

форматы и стандарты, такие как 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(таймер прошедшего времени пользователя)