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

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
Он выводит файл в А4, вместо А3.

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Может, проблема в коде, который отвечает за вызов?
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
А если я его загружаю вручную. То всё нормально. В макросах прописана команда. В автозагрузке стоит. Но работает по последней ручной подгрузке.

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Возможно, автоматически подгружается "не та" версия. Проверь.
P.S. Откровенно говоря, стараюсь вообще не использовать StartupSuite - есть более интересные способы загрузки приложений ;)
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
Автоматически это как?
Где смотреть?

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
В макросах прописана команда. В автозагрузке стоит
Чьи слова? :) Я так понимаю, что каким-то образом все же приложение загружается автоматически. Только загружается "не то и не оттуда". Вполне возможно, что загрузка прописана в StartupSuite (команда _.appload, потом нажать на портфельчик) - надо проверить, откуда код грузится.
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
В портфельчике подгружены. Но не работает...


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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Еще раз - откуда подгружается в порфеле? Чудес не бывает.
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
Папку я указываю свою, кнопкой Добавить...

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Из StartupSuite убрать старую версию. Перезапустить ACAD. Снова вызвать _.appload, указать каталог, в котором располагается "нормальная" версия и загрузить ее. Что будет в результате?
При ручной загрузке указывается тот же каталог? Может, все же разница есть?
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
А можете попробовать у себя?

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
У меня всего один вопрос - почему в двух разных lsp определяется одна и та же функция, которая по-разному срабатывает?
В pp-a3.lsp в функции poly-plot используется конструкция
Код - Auto/Visual Lisp [Выбрать]
  1.   (vla-put-canonicalmedianame layout "ISO_A3_(297.00_x_420.00_MM)")
pp-a4.lsp, там же:
Код - Auto/Visual Lisp [Выбрать]
  1.   (vla-put-canonicalmedianame layout "ISO_A4_(297.00_x_210.00_MM)")
Вот и не срабатывает. Надо функциям давать разные имена или вводить доп.параметры.
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Как вариант
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2. (setq *adoc* (vla-get-activedocument (vlax-get-acad-object)))
  3.  
  4. (defun c:poly-by-blocks_a4 (/ selset ins)
  5.   (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "INSERT"))))))))
  6.          'pickset
  7.          ) ;_ end of =
  8.     (progn
  9.       (foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))))
  10.         (if (wcmatch (strcase (vla-get-effectivename ent)) (strcase "Рамка_формат"))
  11.           (progn (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent))))
  12.                  (poly-plot (getfiled "Where to plot" (_kpblc-get-desktop-path) "pdf" 1)
  13.                             (mapcar (function (lambda (x) (mapcar '+ ins x))) '((0. 0. 0.) (210. 297. 0.)))
  14.                             "ISO_A4_(297.00_x_210.00_MM)"
  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 c:poly-by-blocks_a3 (/ selset ins)
  24.   (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "INSERT"))))))))
  25.          'pickset
  26.          ) ;_ end of =
  27.     (progn
  28.       (foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))))
  29.         (if (wcmatch (strcase (vla-get-effectivename ent)) (strcase "Рамка_формат"))
  30.           (progn (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent))))
  31.                  (poly-plot (getfiled "Where to plot" (_kpblc-get-desktop-path) "pdf" 1)
  32.                             (mapcar (function (lambda (x) (mapcar '+ ins x))) '((0. 0. 0.) (420. 297. 0.)))
  33.                             "ISO_A3_(297.00_x_420.00_MM)"
  34.                             ) ;_ end of poly-plot
  35.                  ) ;_ end of progn
  36.           ) ;_ end of if
  37.         ) ;_ end of foreach
  38.       ) ;_ end of progn
  39.     ) ;_ end of if
  40.   ) ;_ end of defun
  41.  
  42. (defun poly-plot (filename pt-lst name / layout)
  43.   (setq layout (vla-get-activelayout *adoc*)
  44.         pt-lst (mapcar (function (lambda (x) (list (car (trans x 0 2)) (cadr (trans x 0 2))))) pt-lst)
  45.         ) ;_ end of setq
  46.   (vla-refreshplotdeviceinfo layout)
  47.   (vla-put-configname layout "DWG to PDF.pc3")
  48.   (vla-put-canonicalmedianame layout name)
  49.   (vla-put-centerplot layout :vlax-true)
  50.   (vla-put-plotrotation layout ac90degrees)
  51.   (vla-put-standardscale layout acscaletofit) ;(vla-put-stylesheet layout "acad.ctb")
  52.   (vla-setwindowtoplot layout
  53.                        (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 1)) (car pt-lst))
  54.                        (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 1)) (last pt-lst))
  55.                        ) ;_ end of vla-setwindowtoplot
  56.   (vla-put-plottype layout acwindow)
  57.   (vla-regen *adoc* acallviewports)
  58.   (vla-plottofile (vla-get-plot *adoc*) filename)
  59.   ) ;_ end of defun
  60.  
  61. (defun _kpblc-get-desktop-path ()
  62.   (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
  63.                     "desktop"
  64.                     ) ;_ end of vl-registry-read
  65.   ) ;_ end of defun
  66.  

Хотя я, наверное, делал бы совсем по-другому :)
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 69
  • Карма: 1
Я прописал в каждом файле .lsp  функции poly-plot1 для А1, poly-plot2 для А2 и т.д. Работает. Огонь!!! Спасибо...