Описание: пакет 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")))