Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Создание пиктограмм предварительного просмотра для старых чертежей AutoCAD

Tony Hotchkiss
http://www.cadalyst.com/

Ко мне приходят письма пользователей с просьбами рассказать как быстро адаптировать библиотеки чертежей, сохраненных в старых версиях AutoCAD для удобного просмотра. Проблема состоит в том, что они не могут видеть корректную пиктограмму предварительного просмотра так как масштабирование чертежа не установлено.

Для этой целью мною была написана подпрограмма, состоящая из двух файлов, ZOOM-SAVE.LSP и ZOOM-SAVE.DCL, архив с которыми можно скачать отсюда. Подпрограмма позволяет открыть любое число DWG или DXF файлов и автоматически отмасштабировать их до 80% области экрана, что позволит потом ей сохранить их с корректными пиктограммами для предварительного просмотра.

Как использовать программу ZOOM-SAVE.LSP

Распакуйте архив в удобное место на жесткий диск. Используя функцию Appload выбрав в меню Tools пункт Load Application загрузите ZOOM-SAVE.LSP.

Чтобы запустить программу, введите ZS в командной строке AutoCAD, и вы увидите диалоговое окно Zoom-Save.


В диалоговом окне Zoom-Save выберите файлы для обработки.

Вы можете выбрать тип файлов для отображения, используя переключатели DWG и DXF. Выберите диск и каталог, где находятся файлы чертежей для обработки, и вы увидите список файлов чертежей в области диалогового окна справа. Чтобы выбрать файлы используйте стандартные для Microsoft Windows процедуры выбора: щелчок мышью по файлу влечет выбор единичного файла; нажатие клавиши shift позволяет выбрать группу файлов; удерживание нажатой клавиши Ctrl и щелчок мышью влечет добавление к группе выбора произвольного файла.

Нажатие на кнопку OK влечет за собой автоматическое открытие, масштабирование и сохранение поочередно каждого файла из списка. После завершения операции происходит возврат обратно в диалоговое окно подпрограммы Zoom-Save. Вы снова можете изменить тип файлов, диск и каталог для того чтобы выбрать еще одну группу файлов для обработки. Нажмите на кнопку All Done что бы закрыть диалоговое окно, когда все файлы будут сконвертированны.

Описание кода подпрограммы

После запуска моих стандартных функций для обработки ошибок и управления системными переменными, программа активизирует функцию ZOOM-SAVE, которая управляет диалоговым окном. Обратите внимание, что устанавливаются значения системных переменных FILEDIA, LISPINIT и SDI. Эти системные переменные позволяют программе LIST запускаться и оставаться загруженной при любом числе открытых чертежей, а так же запрещать отображение стандартных диалоговых окон AutoCAD. ZOOM-SAVE использует глобальную переменную DTYPE для того, чтобы отслеживать, какой тип файлов (DWG и DXF) выбран. Эта же функция так же инициализирует диалоговое окно и определяет действия при выборе элементов диалогового окна. ZOOM-SAVE вызывает несколько функций, включая INIT-DWG, DO-DRIVES, DO-DIRBOX, GET-FILES и DO-MDWGS.

INIT-DWG вызывает MAKE-DRIVELIST, которая возвращает список всех дисков на компьютере пользователя. Чтобы это сделать функция Visual LISP VL-FILE-SIZE используется как тест, так как она возвращает 0 если ее аргумент - каталог. Функция DO-DRIVES используется что бы отобразить список дисков в диалоговом окне, а функция DO-DIRBOX возвращает список каталогов на указанном диске.

GET-FILES использует повторяющийся цикл чтобы создать список файлов, выбранных пользователем в диалоговом окне. Список используется впоследствии функцией DO-MDWGS следующим образом:

(defun do-mdwgs (dlist / dname)
 (if dlist
 (progn
  (repeat (length dlist)
     (if dlist
      (progn
      (setq dname (car dlist)
           dlist (cdr dlist)
     ) ;_ end of setq
      (new-open)
      (vl-cmdf dname)
      (zoomsave)
;;; zoom and save operation on a drawing
      ) ;_ end of progn
     ) ;_ end of if
  ) ;_ end of repeat
 ) ;_ end of progn
 ) ;_ end of if
) ;_ end of do-mdwgs

Эта функция вызывает NEW-OPEN, которая в свою очередь является модифицированной версией функции Autodesk, написанной более чем 10 лет назад. Ниже дана модифицированная версия:

(defun new-open ()
 (vl-cmdf "open")
 (if (not (= 0 (getvar "dbmod")))
 (vl-cmdf "N")
 ) ;_ end of if
 (princ)
) ;_ end of new-open

Функция ZOOMSAVE так же вызывается из DO-MDWGS. Она выполняет работу по масштабированию и сохранению каждого чертежа и DXF-файла. Ее код показан ниже:

(defun zoomsave ()
 (vl-cmdf "ZOOM" "E")
 (vl-cmdf "ZOOM" "0.8XP")
 (if (= *DTYPE* "dwg")
 (vl-cmdf "SAVEAS" "2004" "" "Y")
 (vl-cmdf "SAVEAS" "DXF" "" "" "Y")
 )
) ;_ end of zoomsave

Переменная DTYPE используется для определения типа файла (DWG и DXF), в зависимости от чего впоследствии файл и сохраняется.



Copyright © Сайт поддержки пользователей САПР by Victor Tkachenko