Получить все рабочие пространства

Появилась у меня тут задача - необходимо было получить все доступные рабочие пространства, описанные в основном файле меню AutoCAD.

В принципе, ничто не предвещало: cui - обычный xml, который читается "на ура", cuix - zip-подобный архив, который... Который придется "вскрывать". По некоторым условиям применять сторонние архиваторы (WinZIP / WinRAR / 7z и т.п.) нельзя, необходимо обойтись стандартными возможностями Windows. Одно хорошо: Windows гарантированно 7, почти гарантированно - 64-битная.

Общая технология была ясна с самого начала, трудность вызывала только распаковка архива. Благодаря Андрею Бушману и gomer'у с dwg.ru проблема была решена: в созданной мною теме Как получить доступ к архиву zip из лиспа? gomer предоставил недостающий код (а заодно показал весьма полезную ссылку).

В результате получился такой код: get-all-workspaces.lsp. Код проверен на AutoCAD 2008-2015, в каждом случае возвращает корректные значения.

На всякий случай добавлю код, позволяющий лиспу работать с zip-архивами: lisp&zip.lsp

Хотелось бы отметить следующее: при работе из-под лиспа с архивом есть несколько условий:

  • расширение файла - zip. Без вариантов. Мне не удалось заставить "распаковать" zip-архив, если у него расширение было не zip
  • обрабатываемый архив должен быть свободен. Если я открывал скопированный zip, например, через WinRAR или 7z, то код вываливал ошибку. Может быть, это всего одна конкретная ситуация, но я предпочту перестраховаться


Поделитесь своим мнением


Я не робот.