ADN Club > Адаптация Civil 3D
Импорт стилей и настроек CIVIL3D LISP
Алексей Кулик:
В качестве улучшения кода (ну надоело мне работать!)
--- Код - Auto/Visual Lisp [Выбрать] ---(vl-load-com) (defun c:aeccimportstylesandsettings_ra (/ adoc sysvar file) (if (and (setq file "S:\\Standart\\20181023.dwt") (findfile file) (vl-file-systime file)) (progn (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object)))) (setq sysvar (vl-remove-if-not (function cdr) (mapcar (function (lambda (x / tmp) (if (setq tmp (getvar (car x))) (progn (setvar (car x) (cdr x)) (cons (car x) tmp)) ) ;_ end of if ) ;_ end of lambda ) ;_ end of function '(("sysmon" . 0) ("cmddia" . 0) ("filedia" . 0)) ) ;_ end of mapcar ) ;_ end of vl-remove-if-not ) ;_ end of setq (vl-catch-all-apply (function (lambda () (command "_textscr") (command "_.qsave") (command "AECCIMPORTSTYLESANDSETTINGS" file "_Y" " ") (command "'_.ZOOM" "_E") ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply (foreach item sysvar (setvar (car item) (cdr item))) (vla-endundomark adoc) ) ;_ end of progn (princ (strcat "\nОшибка : файл \"" file "\" не обнаружен либо открыт!")) ) ;_ end of if (princ) ) ;_ end of defun
Александр Панькин:
Благодарю, за ответ.
Я сделал топорно, но работает.
После импорта добавил purgestyles и purge по циклу 3 раза, после это qsave и ещё раз importstylesandsettings, только в таком случае стили, которые ранее были установлены по умолчанию для команд затираются.
Но осталась проблема, если стиль применён к объекту - его не удалить.
Как написать на лисп не знаю, поэтому перед запуском лисп переназначаю стиль объектам, и после лиспа на "ничего" ( он есть и в новом и старом шаблоне), а после обновления возвращаю нужный.
Завтра выложу код и отредактирую это сообщение.
Алексей Кулик:
Сугубо ИМХО.
Работать с вертикальными приложениями из-под лиспа чертовски неудобно. Если есть возможность, переходи на .NET.
P.S. Редактировать пост не надо, зачем?
Навигация
Перейти к полной версии