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

Автор Тема: Пакетная печать блоков-форматов в PDF на LISP  (Прочитано 29552 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
Здравствуйте, Максим Маркевич. Можно ли переделать код VBA 16 урока- Пакетная печать блоков-форматов  на LISP?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13190
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
Здравствуйте, Максим Маркевич. Можно ли переделать код VBA 16 урока- Пакетная печать блоков-форматов  на LISP?
Максим Маркевич не пишет на lisp'е. А в чем смысл этой переделки?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
Смысла особого нет. Просто, чтобы установить VBA-редактор нужны права администратора(что проблематично для меня), а LISP-редактор уже есть.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13190
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
Андрей1986
В любом случае перевод "в лоб" кода с VBA на VisualLisp смысла не имеет, так как напрямую воспользоваться ты им не сможешь и нужно будет переписывать его под себя. Например, в коде Максима подразумевается, что в качестве рамки используется блок с именем "A1" имеющий точку вставки в левом нижнем углу, что размер рамми соответствует формату A1, что печать идёт в PDF на стандартный AutoCAD'овский плоттер, ну и т.д.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
А есть уже созданная тема- Пакетная печать блоков-форматов в PDF  на LISP? Может есть примеры кода, хотя бы для одного формата, напр. А1?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13190
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
А есть уже созданная тема- Пакетная печать блоков-форматов в PDF  на LISP?
Уже есть - ты в ней. :)
Может есть примеры кода, хотя бы для одного формата, напр. А1?
Кто-нибудь думаю поможет с этим.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
В принципе, переписывать 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 [Выбрать]
  1. (vl-load-com)
  2.  
  3. (setq *adoc* (vla-get-activedocument (vlax-get-acad-object)))
  4.  
  5. (defun poly-by-blocks (/ selset ins)
  6.   (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "INSERT"))))))))
  7.          'pikset
  8.       ) ;_ end of =
  9.     (progn
  10.       (foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))))
  11.         (if (wcmatch (strcase (vla-get-effectivename ent)) "A1,А1")
  12.           (progn (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent))))
  13.                  (poly-plot "c:\\Users\\evthi\\Desktop\\Тест"
  14.                             (mapcar (function (lambda (x) (mapcar '+ ins x))) '((0. 0. 0.) (841. 594. 0.)))
  15.                  ) ;_ end of poly-plot
  16.           ) ;_ end of progn
  17.         ) ;_ end of if
  18.       ) ;_ end of foreach
  19.     ) ;_ end of progn
  20.   ) ;_ end of if
  21. ) ;_ end of defun
  22.  
  23. (defun poly-plot (filename pt-lst / layout)
  24.   (setq layout (vla-get-activelayout *adoc*))
  25.   (vla-refreshplotdeviceinfo layout)
  26.   (vla-put-configname layout "DWG to PDF.pc3")
  27.   (vla-put-canonicalmedianame layout "ISO_full_bleed_A1_(594.00_x_841.00_MM)")
  28.   (vla-put-centerplot layout :vlax-true)
  29.   (vla-put-plotrotation layout ac90degrees)
  30.   (vla-put-standardscale layout acscaletofit)
  31.   (vla-put-stylesheet layout "acad.ctb")
  32.   (vla-setwindowtoplot layout (car pt-lst) (last pt-lst))
  33.   (vla-put-plottype layout acwindow)
  34.   (vla-regen *adoc* acallviewports)
  35.   (vla-plottofile (vla-get-plot *adoc*) filename)
  36. ) ;_ end of defun
  37.  
« Последнее редактирование: 20-07-2017, 16:43:57 от Алексей Кулик »
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
Код сохранил. дал имя. подгрузил через вкладку Управление-Загрузка приложения. Не работает.
нужно присвоить функцию через defun?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
А как вызываешь? Надо так:
(poly-by-blocks)Я ж как команду не оформлял.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13190
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
Путь "c:\Users\evthi\Desktop\Тест" поменял на свой? Кстати должны быть двойные обратные слэши, т.е что-то типа "c:\\Users\\evthi\\Desktop\\Тест"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
Ох, елки, совсем забыл! Исправляюсь...
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
Не понял. Как надо в итоге?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
Я последний код исправил
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Андрей1986Автор темы

  • ADN OPEN
  • **
  • Сообщений: 60
  • Карма: 1
Почему-то не получается вызвать функцию poly-by-blocks?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
А как вызываешь? И где - в ком.строке или в своем коде?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!