Описание: пакет dxf/in/bin позволяет преобразовать dxf-файл, сохраненный в бинарном формате в его посекционное представление. Главная функция проекта - read-file.
Функции
read-b-chunk
(stream)
Описание: функция read-b-chunk возвращает строку,
представляющую двоичные данные, сохраняемые в потоке stream.
Формат строки такой, что кажде два символа представляют один байт в
шестнадцатеричном формате.
Перед двоичными данными в потоке должна быть записана их длина (в
беззнаковом целом длиной в один байт).
read-double
(stream)
Описание: функция read-double осуществляет считывание
вещественного числа длиной 8 байт из потока stream.
Пример использования:
(let ((x 646.987654d0)
(fn (concatenate 'string dxf::*dxf-path* "in-bin.dxf")))
(with-open-file (dxf fn
:direction :output :if-exists :supersede
:element-type 'unsigned-byte)
(dxf/out/bin:wrt-double x dxf))
(with-open-file (dxf fn :element-type 'unsigned-byte)
(format t "~A = ~A~%" x (read-double dxf))))
read-file
(fname)
Описание: функция read-file возвращает посекционное
представление бинарного dxf-файла с именем fname.
read-file-pairs
(fname)
Описание: функция read-file возвращает список пар
ключ-значение бинарного dxf-файла с именем fname.
Пример использования:
(dxf/in/bin:read-file-pairs
(dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf"))
read-float
(stream)
Описание: функция read-double осуществляет считывание
вещественного числа длиной 8 байт из потока stream.
Пример использования:
(let ((x 646.987654e0)
(fn (concatenate 'string dxf::*dxf-path* "in-bin.dxf")))
(with-open-file (dxf fn
:direction :output :if-exists :supersede
:element-type 'unsigned-byte)
(dxf/out/bin:wrt-float x dxf))
(with-open-file (dxf fn :element-type 'unsigned-byte)
(format t "~A = ~A~%" x (read-float dxf))))
read-head
(stream)
Описание: функция read-head возвращает:
- T - если поток stream является бинарным;
- NIL - если поток stream не является бинарным (предположительно является текстовым);
read-int8
(stream)
Описание: функция read-int8 чтение символа как короткого
знакового целого в диапазоне от -128 до 127.
read-pair
(stream)
Описание: функция read-pair выполняет считывание пары ключ
значение из бинарного потока, имеющего формат dxf-файла системы
AutoCAD.
read-pairs
(stream)
Описание: функция read-pairs возвращает список
пар (ключ-значение), содержащихся в потоке, имеющем формат dxf-файла
системы AutoCAD.
Пара, обозначающая конец файла в результирующий список не попадает.
read-string
(stream)
Описание: функция read-string возвращает строку, считывамую
из потока stream. В потоке stream строка должна храниться как
нуль-терминированная (заканчиваться на символ #Nul). Указатель
чтения потока @(stream) после выполнения функции указывет на символ,
следующий за нуль-терминатором. Нуль-терминатор в возвращаемую
строку не попадает.
Пример использования:
(let ((s-01 (format nil "~A~C~C~C~C" "AutoCAD Binary DXF" #\CR #\LF #\SUB #\NUL))
(s-02 (format nil "~A~C" "Строка - 02" #\NUL)))
(with-open-file (dxf (concatenate 'string dxf::*dxf-path* "in-bin.dxf")
:direction :output :if-exists :supersede
:element-type 'unsigned-byte)
(write-sequence (babel:string-to-octets s-01) dxf)
(write-sequence (babel:string-to-octets s-02) dxf))
(with-open-file (dxf (concatenate 'string dxf::*dxf-path* "in-bin.dxf")
:element-type 'unsigned-byte)
(format t "~S~%~S" (read-string dxf)(read-string dxf))))
read-uint128
(stream)
Описание: функция read-uint128 целое неотрицательное число в
диапазоне от 0 до 2^128-1, считываемое из потока stream. В потоке
stream число хранится как двухбитное: младший бит - первый;
старший бит - последний.
read-uint16
(stream)
Описание: функция read-uint16 целое неотрицательное число в
диапазоне от 0 до 2^16-1, считываемое из потока stream. В потоке
stream число хранится как двухбитное: младший бит - первый;
старший бит - последний.
Пример использования:
(let* ((n 16)
(i (random `,(expt 2 n))))
(with-open-file (dxf (concatenate 'string dxf::*dxf-path* "in-bin.dxf")
:direction :output :if-exists :supersede
:element-type 'unsigned-byte)
(dxf/out/bin:wrt-uint16 i dxf))
(with-open-file (dxf (concatenate 'string dxf::*dxf-path* "in-bin.dxf")
:element-type 'unsigned-byte)
(format t "~A = ~A~%" i (read-uint16 dxf))))
read-uint32
(stream)
Описание: функция read-uint32 целое неотрицательное число в
диапазоне от 0 до 2^32-1, считываемое из потока stream. В потоке
stream число хранится как двухбитное: младший бит - первый;
старший бит - последний.
read-uint64
(stream)
Описание: функция read-uint64 целое неотрицательное число в
диапазоне от 0 до 2^64-1, считываемое из потока stream. В потоке
stream число хранится как двухбитное: младший бит - первый;
старший бит - последний.