ADN Club > AutoLisp / VisualLISP и DCL
Пакетная печать блоков-форматов в PDF на LISP
Александр Ривилис:
--- Цитата: Андрей1986 от 17-07-2017, 17:41:47 ---А есть уже созданная тема- Пакетная печать блоков-форматов в PDF на LISP?
--- Конец цитаты ---
Уже есть - ты в ней. :)
--- Цитата: Андрей1986 от 17-07-2017, 17:41:47 --- Может есть примеры кода, хотя бы для одного формата, напр. А1?
--- Конец цитаты ---
Кто-нибудь думаю поможет с этим.
Алексей Кулик:
В принципе, переписывать VBA на VisualLISP не проблема. Советую почитать http://adn-cis.org/forum/index.php?topic=909.0 и http://www.cad.dp.ua/stats/vla_doc.php - там все достаточно просто и доступно описано. Учитывая, что код в http://adn-cis.org/forum/index.php?topic=7270.msg23517#msg23517 достаточно короткий, думаю, проблем составить не должно.
Код (что успел) без проверок и тестирования:
--- Код - Auto/Visual Lisp [Выбрать] ---(vl-load-com) (setq *adoc* (vla-get-activedocument (vlax-get-acad-object))) (defun poly-by-blocks (/ selset ins) (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "INSERT")))))))) 'pikset ) ;_ end of = (progn (foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))) (if (wcmatch (strcase (vla-get-effectivename ent)) "A1,А1") (progn (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent)))) (poly-plot "c:\\Users\\evthi\\Desktop\\Тест" (mapcar (function (lambda (x) (mapcar '+ ins x))) '((0. 0. 0.) (841. 594. 0.))) ) ;_ end of poly-plot ) ;_ end of progn ) ;_ end of if ) ;_ end of foreach ) ;_ end of progn ) ;_ end of if) ;_ end of defun (defun poly-plot (filename pt-lst / layout) (setq layout (vla-get-activelayout *adoc*)) (vla-refreshplotdeviceinfo layout) (vla-put-configname layout "DWG to PDF.pc3") (vla-put-canonicalmedianame layout "ISO_full_bleed_A1_(594.00_x_841.00_MM)") (vla-put-centerplot layout :vlax-true) (vla-put-plotrotation layout ac90degrees) (vla-put-standardscale layout acscaletofit) (vla-put-stylesheet layout "acad.ctb") (vla-setwindowtoplot layout (car pt-lst) (last pt-lst)) (vla-put-plottype layout acwindow) (vla-regen *adoc* acallviewports) (vla-plottofile (vla-get-plot *adoc*) filename)) ;_ end of defun
Андрей1986:
Код сохранил. дал имя. подгрузил через вкладку Управление-Загрузка приложения. Не работает.
нужно присвоить функцию через defun?
Алексей Кулик:
А как вызываешь? Надо так:
--- Код: ---(poly-by-blocks)
--- Конец кода ---
Я ж как команду не оформлял.
Александр Ривилис:
Путь "c:\Users\evthi\Desktop\Тест" поменял на свой? Кстати должны быть двойные обратные слэши, т.е что-то типа "c:\\Users\\evthi\\Desktop\\Тест"
Навигация
Перейти к полной версии