ADN Club > AutoLisp / VisualLISP и DCL

Пакетная печать блоков-форматов в PDF на LISP

<< < (2/24) > >>

Александр Ривилис:

--- Цитата: Андрей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\\Тест"

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии