ADN Open CIS
Сообщество программистов Autodesk в СНГ

27/02/2014

Работа с профилями AutoCAD через VisualLISP

Евгений Елпанов предоставил очень интересный код, который показывает некоторые возможности работы с профилями AutoCAD через VisualLISP.
Известно, что системная переменная "cprofile" имеет доступ "ReadOnly", поэтому обычными средствами профиль AutoCAD'a не сменить.
Собственно код:

Код - Auto/Visual LISP: [Выделить]
  1. (vl-load-com)
  2. (defun eea-remake-profile (pn / a p)
  3.   ;; pn - имя профайла
  4.   ;; (setq pn "МойНовыйПрофиль")
  5.   ;; (eea-remake-profile "МойНовыйПрофиль")
  6.   (setq p (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
  7.   (vla-getallprofilenames p 'a)
  8.   (if (not (member pn (vlax-safearray->list a)))
  9.     (vla-copyprofile p (vla-get-activeprofile p) pn)
  10.     ) ;_ end of if
  11.   (if (/= (vla-get-activeprofile p) pn)
  12.     (vla-put-activeprofile p pn)
  13.     ) ;_ end of if
  14.   ) ;_ end of defun


Можно выполнить небольшую проверку:

Код - Auto/Visual LISP: [Выделить]
  1.   (princ (strcat "\nActiveProfile : " (getvar "cprofile")))
  2.   (eea-remake-profile "TestProfile")
  3.   (princ (strcat "\nActiveProfile : " (getvar "cprofile")))
  4.   (princ)
  5. ;| Результат:
  6. ActiveProfile : AutoCAD Debug
  7. ActiveProfile : TestProfile
  8. |;

Обсуждение: http://adn-cis.org/forum/index.php?topic=562

Опубликовано 27.02.2014
Отредактировано 10.11.2014 в 23:22:47