Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
гришанова.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
270.85 Кб
Скачать

7. Раздел примитивы

Элементы графических примитивов размещаются как в разделе BLOCKS, так и в разделе ПРИМИТИВЫ (ENTITIES) файла DXF. Формат их размещения и в том и в другом разделе идентичен. Ниже приведен формат каждого графического примитива в таком виде, в каком он размещается в файле. Некоторые группы, которые определяют графический примитив, размещаются в файле всегда, а некоторые являются дополнительными, и появляются в файле только в том случае, если имеют такое значение, которое отличается от их значения по умолчанию. В приведенном описании для групп, которые всегда имеются в файле, дается номер группы и функция, адополнительные группы помечены словами "-дополнительная N", которые следуют после описания группы. Величина "N" представляет собой значение по умолчанию, которое принимается в том случае, если группа опущена.

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

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

Каждый графический примитив начинается с группы 0, указывающей его тип. Имена, которые используются для графических примитивов, даны в таблице, приведенной ниже. Каждый графический примитив содержит группу 8, в которой приведено имя слоя, на котором он постоянно находится. Если графический примитив имеет ненулевой подъем или толщину, тип линии, информацию о цвете. Следующие группы включены только в том случае, если примитив имеет отличные значения для этих свойств от значений по молчанию.

6

Имя типа линии (если не "BYLAYER"). Специальное имя "BYLAYER" указывает на тип линии вещественный.

38

Подъем (если не нулевой)

39

Толщина (если не нулевая)

62

Номер цвета (если нет "BYLAYER"). Нулевое значение определяет "BYBLOCK" (вещественный) цвет.

Остальные группы, которые составляют элемент описания графического примитива, следующие:

LINE /линия/

10 и 20 (начальная точка), 11 и 21(конечная точка)

POINT /точка/

10 и 20

CIRCLE /круг/

10 и 20 (центр), 40(радиус)

ARC /дуга/

10 и 20 (центр), 40 (радиус), 50 (начальный угол), 51 (конечный угол)

TRACE /трасса/

Четыре точки, задающие углы трассы: 10 и 20, 11 и 21, 12 и 22, 13 и 23

SOLID /тело/

Четыре точки, задающие углы сплошного тела: 10 и (сплошной) 20, 11 и 21, 12 и 22, 13 и 23. Если тело имеет только три стороны, то координаты, задаваемые с помощью групп 12 и 22,13 и 23 будут одни и те же (то есть, группы 12 и 13 одинаковые и группы 22 и 23 одинаковые)

TEXT /текст/

10 и 20(место вставки), 40 (высота), 1 (значение текста), 50 (угол поворота - дополнительная 0), 41 (относительный масштабный коэффициент по Х дополнительная 1), 51 (угол наклона-дополнительная 0), 7 (имя типа текста-дополнительная "STANDARD"), 71 (флажки генерации - дополнительная 0), 72 (тип выравнивания - дополнительная 0), 11 и 21 (точка выравнивания - дополнительная; имеется только в том случае, если есть не равная нулю группа 72)

SHAPE /форма/

10 и 20 (место вставки), 40 (размер), 2 (имя формы), 50 (угол поворота - дополнительная 0), 41 (относительный масштабный коэффициент по Х-дополнительная 1), 51( угол наклона - дополнительная 0)

BLOCK /блок/

2 (имя блока), 70 (флажки типа блока), 10 и 20 (базовая точка блока). Имеется только в разделе BLOCK

ENDBLK /конец блока/

Групп нет. Имеется только в разделе BLOCK

INSERT /вставка/

66 (флажок "Далее следуют атрибуты" -дополнительная 0), 2 (имя блока), 10 и 20 (место вставки), 41 (масштабный коэффициент по Х - дополнительная 1), 42 (масштабный коэффициент по Y-дополнительная 1), 50 (угол поворота - дополнительная 0), 70 и 71 (количество столбцов и строк -дополнительная 0), 44 и 45 (шаг столбцов и строк - дополнительная 0)

ATTDEF

10 и 20 (начало текста), 40 (высота текста), 1 (значение по умолчанию), 3 (строки приглашения), 2 (строка), 70 (признаки атрибута), 73 (длина поля – дополнительная 0), 50 (поворот текста -дополнительная 0), 41 (относительный масштабный коэффициент по Х – дополнительная 1), 51 (угол наклона-дополнительная 0), 7 (имя типа текста-дополнительная "STANDARD"), 71 (признаки генерации текста - дополнительная 0), 72 (тип выравнивания текста - дополнительная 0), 11 и 21 (точка выравнивания - дополнительная; имеется только в том случае, если есть не равная нулю группа 72)

ATTRIB

10 и 20 (начало текста), 40 (высота текста), 1 (значение), 2 (описатель атрибута), 70 (признаки атрибута), 73 (длина поля - дополнительная 0), 50 (поворот текста - дополнительная 0), 41 (относительный масштабный коэффициент по Х – дополнительная 1), 51 ( угол наклона-дополнительная 0), 7 (имя типа текста -дополнительная "STANDARD"), 71 (признаки генерации текста - дополнительная 0), 72 (тип выравнивания текста - дополнительная 0, имеется только в том случае, если есть не равная нулю группа 72)

POLYLINE

70 (признаки ломаной), 40 (начальная ширина по умолчанию), 41 (конечная ширина по умолчанию); признаки имеют в данное время значения битов 1 (замкнутая ломаная) и 2 (добавлена информация о встраивании кривой). Значения ширины по умолчанию относятся к любой вершине (точке перегиба), у которой нет значений ширины (смотри ниже).

VERTEX

10 и 20 (местоположение), 40 (начальная ширина дополнительная, смотри выше), 41 (конечная ширина дополнительная, смотри выше), 42 (кривизна (выпуклость)), 70 (признаки точки перегиба), 50 (направление касательной к сглаживающей кривой дополнительная). Выпуклость - это тангенс 1/4 внутреннего угла для сегмента дуги, который становится отрицательным, если направление дуги отсчитывается от начальной точки к конечной по часовой стрелке; выпуклость равна 0 на прямолинейном участке, а на полукруглом участке равна 1. В настоящее время признаки точки перегиба включают 1 (дополнительная точка перегиба, образованная путем подгонки кривой) и 2 (определен тангенс подгонки кривой). Нулевое значение тангенса может опускаться в выходных данных DXF, однако оно является значимым, если в признаках точки перегиба установлен бит "тангенс определен".

SEQEND

Нет полей. С помощью этой величины отмечается конец точек перегиба (имя типа -VERTEX) для ломаных или конец величин атрибутов (имя типа ATTRIB) для графического примитива INSERT, который имеет атрибуты (определяемые по наличию не равной нулю группы 66 в графическом примитиве INSERT).

Codes 00C and 00D: Bulge-Specified Arcs

Специальные коды 00С и 00D (12и13) обеспечивают другой механизм для включения сегмента дуги в описании примитива. Они похожи на коды 8 и 9, в том, что вы можете использовать их, чтобы задать X-Y координаты. Однако, коды 00С и 00D позволяют вам рисовать дуги, применяя фактор выпуклости к вектору положения.

Код 00С создает один сегмент дуги, а код 00D создает несколько сегментов дуг (полидуг) до тех пор пока он не будет прерван выражением (0,0) код 00С должен формироваться 3 байтами описывающими дугу.

0C,X-координата,Y-координата, выпуклость

X и Y координаты и bulge, которые описывают кривизну дуги могут варьироваться от 127 до –127. Если координата сегмента линии описана длиной D, и перпендикуляр расстояния середины этого сегмента имеет высоту H , тогда величина Bulge будет ((2 * H / D) * 127). Знак отрицателен, если дуга направлена по часовой стрелке.