-
Коллеги, приветствую всех.
Стоит задача автоматизировать импорт стилей и настроек из шаблона, для последующего использования в autodesk batch utility и вручную.
Написал лист с вызовом из командной строки и указал путь шаблона, но команда проскакивает импортируя 0 стилей и 0 настроек.
Lisp не знаю, но могу написать команды с вызовом через командную строку.
в сети искал, толком ничего не нашел. https://www.3dcadworld.com/aeccimportstyles-and-aeccimportstylesandsettings-undocumented-commands (https://www.3dcadworld.com/aeccimportstyles-and-aeccimportstylesandsettings-undocumented-commands)
Подскажите, пожалуйста, есть ли возможность запустить команду или нет, если да то как?
Заранее благодарен за ответ.
(defun c:AECCIMPORTSTYLESANDSETTINGS_RA()
(command "_textscr")
(setvar "CMDDIA" 0)
(setvar "FILEDIA" 0)
(command "_.qsave")
(command "AECCIMPORTSTYLESANDSETTINGS" "S:\Standart\20181023.dwt" "_Y" " ")
(command "'_.ZOOM" "_E")
(setvar "CMDDIA" 1)
(setvar "FILEDIA" 1)
)
Результат работы лиспа
Извините, вам запрещён просмотр содержимого спойлеров.
-
попробуй IMPORTSTYLESANDSETTINGS
NET Api
StyleBase.ExportTo(Autodesk.AutoCAD.DatabaseServices.ObjectIdCollection styleIds, Autodesk.AutoCAD.DatabaseServices.Database destinationDatabase, Autodesk.Civil.StyleConflictResolverType conflictResolution)
-
Спасибо за ответ,
IMPORTSTYLESANDSETTINGS попробовал, ведет себя также.
а Net api еще пока не выучил ;D
Извините, вам запрещён просмотр содержимого спойлеров.
-
видимо нечего импортировать
-
ручной импорт с этого файла
Извините, вам запрещён просмотр содержимого спойлеров.
-
укажи версию Civil'а
у меня в 2017 импортирует, но может это от файлов зависит...
-
Александр Панькин,
Обрати внимание на правильное форматирование кода на форуме (у меня в подписи) и соблюдай его!
Замени в пути к файлу символы "\" (в лиспе они должны быть двойными) на "/".
-
Коллеги, благодарю, лисп стал работать.
причина была в том, что чертеж на который я ссылался был открыт, после закрытия все стили и настройки импортировались.
-
Как вариант проверки "файл в режиме только чтение или нет" попробуй к файлу применить vl-file-systime. У открытого файла функция вернет nil.
-
Коллеги, благодарю, лисп стал работать.
причина была в том, что чертеж на который я ссылался был открыт, после закрытия все стили и настройки импортировались.
И всё-так почувствуй разницу:
(https://farm2.staticflickr.com/1960/45472854232_c04a750c1e_o.png)
-
В качестве улучшения кода (ну надоело мне работать!)
(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. Редактировать пост не надо, зачем?