27/02/2014
Работа с профилями AutoCAD через VisualLISP
Евгений Елпанов предоставил очень интересный код, который показывает некоторые возможности работы с профилями AutoCAD через VisualLISP.Известно, что системная переменная "cprofile" имеет доступ "ReadOnly", поэтому обычными средствами профиль AutoCAD'a не сменить.
Собственно код:
Код - Auto/Visual LISP: [Выделить]
- (vl-load-com)
- (defun eea-remake-profile (pn / a p)
- ;; pn - имя профайла
- ;; (setq pn "МойНовыйПрофиль")
- ;; (eea-remake-profile "МойНовыйПрофиль")
- (setq p (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
- (vla-getallprofilenames p 'a)
- (if (not (member pn (vlax-safearray->list a)))
- (vla-copyprofile p (vla-get-activeprofile p) pn)
- ) ;_ end of if
- (if (/= (vla-get-activeprofile p) pn)
- (vla-put-activeprofile p pn)
- ) ;_ end of if
- ) ;_ end of defun
Можно выполнить небольшую проверку:
Код - Auto/Visual LISP: [Выделить]
- (princ (strcat "\nActiveProfile : " (getvar "cprofile")))
- (eea-remake-profile "TestProfile")
- (princ (strcat "\nActiveProfile : " (getvar "cprofile")))
- (princ)
- ;| Результат:
- ActiveProfile : AutoCAD Debug
- ActiveProfile : TestProfile
- |;
Обсуждение: http://adn-cis.org/forum/index.php?topic=562
Опубликовано 27.02.2014Отредактировано 10.11.2014 в 23:22:47