Dxf » DXF/IN/BIN

Описание: пакет 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 число хранится как двухбитное: младший бит - первый; старший бит - последний.