Формат DXF.

Алгоритм сжатия LZW.

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

Пример. aabcdabcddd

Сначала bc, потом ab, потом abc. Исходная таблица состоит из четырёх двухразрядных кодов.

 

a
b
c
d
ab
bc
abc

 

 

Длина исходного кода зависит от количества исходных символов. Есть ли какое-либо сочетание повторяющееся? Не хватает трёх разрядов, добавляем ещё. Полученный код получится избыточным. Поэтому задействованы не все комбинации. Достоинство: является не зависимым от начальной статистики. Мы получим свою таблицу кодировки для каждого набора данных. При передаче файла, таблица кодировки передаётся с данными. Используется в форматах TIFF, GIF. Пользователю математический аппарат знать не надо.

Конечно, можно пользоваться и стандартными архиваторами, но в 90% случаев из 100% мы получим не уменьшение размера файла, а его увеличение. Для графики нужно пользоваться специальными методами сжатия конкретно для графики.

 

Представляет собой последовательность команд, которые записаны кодами ASCII. Каждая команда занимает две строки.

Строка 1 – код группы команды.

Строка 2 – сама команда.

В каждой группе могут быть различные форматы команд. Диапазон кодов команд ограничен числами от 0 до 999.

Группа Тип Содержание
string Начало элемента
string Текстовое значение, связанное с графическим примитивом
string Имя элемента
3,4,5 string Прочие текстовые значения или имена
string Тип линии
string Имя шрифта
string Имя слоя
string Имя переменной, который может использоваться в заголовке файла.
real Первая координата по x
11-19 real Прочие координаты по x
real Первая координата по y
20-29 real Прочие координаты по y
real Первая координата по z
30-39 real Прочие координаты по z
40-48 real Параметры различных размеров
real Для организации таблицы, в которой есть повторяющиеся значения
50-58 real Угловые данные
    Свободная зона
int Номер цвета
boolean Флаг «1»: дальше будут следовать графические примитивы; Флаг «0»: данных дальше нет
70-78 boolean Набор флагов, управляющими различными режимами
string Позволяет записывать различные комментарии документов

Все команды разбиты на четыре части: заголовки, таблицы, примитивы, блоки. Ни один раздел не является обязательным. Единственной обязательной командой является 0 EOF – конец файла. Открытие и закрытие секций выполняется так:

0 section

0 endsec

Если говорить о разделах примитивов, то они всегда помещаются в конце созданного файла.

Заголовки определяют настройки внутренних переменных языка. Текущее значение настроек используется до момента, пока их не изменяют. Если опустить заголовки, то по умолчанию возьмётся стандартный набор. Структура заголовка:

0 SECTION

HEADER

$ …

ENDSEC

Где $ – это описание переменной. Далее следует таблица (толщина линии, виды шрифтов, используемые стандартные цвета).

0 SECTION

TABLES

ENDTAB

 

TABLES

ENDTAB

ENDSEC

Количество таблиц не ограничено. Названия видов таблиц:

LAYER

LTYPE

STYLE

VIEW

VPORT

VCS

 

LAYER.

Когда слой надо сделать невидимым, то после записи такого вида добавляется команда с номером 70. Эта команда управляется одним битом под номером 6.

LTYPE

Типы линий в одном слое. Имеется возможность создавать собственные типы, например

 
 

 


STYLE

Изменяется стандартное начертание шрифтов. Можно изменить высоту текста, угол наклона литеры, растянуть по ширине, изменить расстояние между символами, задать направление вывода текста.

VIEW

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