Dxf » DXF/SPLIT

Описание: пакет dxf/split содержит вспомогательные функции для разделения dxf-пар на группы, представляющие данные какого-то объекта. Определения, используемые в насроящем парете:

пара (pair)
список, состоящий из двух элементов: ключ и значенние. Где тип ключа - целое число; тип значения определятся по значению ключа;
список пар (pairs)
список, состоящий из пар;
секционное представление dxf (sections)
список, состоящий из списков пар, представляющий содержимое dxf. Каждый списк пар в котором представляет отдельную секцию из которой исключаюся пары, обозначающие начало и конец секции: соответственно - '(0 "SECTION") и '(0 "ENDSEC") .

Функции

after(pairs &key (key (function (lambda (el) (first el)))) (test (function (lambda (el) (= 0 el)))) (inclusive t))
Описание: функция after возвращает список списков пар, разделяя список пар pairs на группы. В качестве разделителей используется предикат test. В качестве ключа предикат @(key). Пример использования:

  (after
   (select-section
    "ENTITIES"
    (dxf/in/bin:read-file 
     (dxf/utils:make-path-relative-to-system
      :dxf
      "dxf/bin/2018.dxf"))))
between(start-pair end-pair pairs &key (inclusive nil) (start-inclusive inclusive) (end-inclusive inclusive))
Описание: функция between возвращает сгруппированный список пар. Группировка списка пар pairs выполяется по группам пар находящимися между парами заданными аргументами start-pair и end-pair. Начальная и конечная пара попадает в подгруппы если аргуметы start-inclusive и end-inclusive не равны NIL для соосветствующей пары. Пример использования:

 (between `(0 ,dxf/sec:*section*) `(0  ,dxf/sec:*endsec*)
          (dxf/in/bin:read-file-pairs
           (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf")))
  (between `(0 ,dxf/sec:*section*) `(0  ,dxf/sec:*endsec*)
           (dxf/in/bin:read-file-pairs
            (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf"))
           :inclusive T)
select-section(name sections)
Описание: функция select-section возвращает содержимое секции с именем name на основании секционного представления dxf sections. При этом из скеционного представления соответствующей секции исключается пара, содержащая имя секции, например: (2 "HEADER") (2 "CLASSES") или (2 "TABLES") и т.д. Пример использования:

  (select-section "TABLES"
                  (dxf/in/bin:read-file 
                   (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf")))
split-blocks(sections)
Описание: функция split-entities выделяет из посекционного представления dxf - файла секцию BLOCKS и преобразует ее в список с dxf - представлениями объектов. Пример использования:

 (split-blocks
  (dxf/in/bin:read-file 
   (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf")))
split-by-sections(pairs)
Описание: функция split-by-sections возвращает список секций, содержащихся в списке пар pairs - секционное представление. Пример использования:

 (split-by-sections
  (dxf/in/bin:read-file-pairs
   (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf")))
split-entities(sections)
Описание: функция split-entities выделяет из посекционного представления dxf - файла секцию ENTITIES и преобразует ее в список с dxf - представлениями объектов. Пример использования:

 (split-entities
  (dxf/in/bin:read-file 
   (dxf/utils:make-path-relative-to-system :dxf "dxf/bin/2018.dxf")))