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

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

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

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

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

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

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

Оффлайн Олег Боровой

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Может быть плохо искал, но не нашел как задать смещение x y, если (vla-put-centerplot layout :vlax-false).
Кто-то подскажет?

UPD
Сам задал, сам и отвечу.
смещение задается через свойство PlotOrigin, для примера...
Код - Auto/Visual Lisp [Выбрать]
  1. (vla-put-PlotOrigin layout (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) (list 10.0 5.0)))
« Последнее редактирование: 17-10-2018, 00:19:47 от Александр Ривилис »

Оффлайн Mr. Artman

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Уважаемые форумчане, не подскажете как заставить этот код работать с нестандартными форматами листов?
К примеру 910х297.
В настройках DWG to PDF настраиваю соответствующий формат, вписываю его в код. Но при попытке печати появляется следующее сообщение:
"Выберите объекты:  ; ошибка: Ошибка Automation. Неверный ввод"

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

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

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

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

Оффлайн Mr. Artman

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
А в названии, например, кодировка соблюдена? Иногда бывает и такое, что в код попадают английские символы, а в реале они русские.

Кодировка соблюдена. Данная ошибка появляется даже при использовании только цифр.
Создается впечатление что проблема в русификации. Работаю в Civil 3D 2017. Русская версия.
Так вот,  обратил внимание на следующую деталь:
При использовании в коде даже стандартного формата - к примеру "ISO_full_bleed_A1_(594.00_x_841.00_MM)" все работает,
Но в случае вставки формата как он отображен непосредственно в AutoCADе - "ISO_без_полей_A1_(594.00_x_841.00_мм)" - вылетает ошибка.
Не подскажете в чем может быть проблема?
Каким-то образом можно посмотреть в файле PC3 что там чему соответствует? ))

И еще дополнительный вопрос. Можно ли заставить программу использовать текущие настройки печати модели/листа?

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Надо использовать т.н. "канонические" имена, я так полагаю:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq layout (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (getvar "ctab")))
  2. (setq config_names (vlax-safearray->list (vlax-variant-value (vla-getcanonicalmedianames layout))))
Все, что сказано - личное мнение.

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

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

Оффлайн Балиев

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
День добрый!
Написал скрипт для печати в PDF используя скрипт Крыса. Последняя строка почему-то не выполняется. В чем проблема?
Код - Auto/Visual Lisp [Выбрать]
  1.         (vl-load-com)
  2.     (setq acadObj (vlax-get-acad-object))
  3.     (setq doc (vla-get-ActiveDocument acadObj))
  4.  
  5.         (setq objsToPrint (ssget))
  6.         (setq obj  (vlax-ename->vla-object (ssname objsToPrint 0)))
  7.     (vla-GetBoundingBox obj 'minp 'maxp)
  8.         (setq pmin (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  9.     (vlax-safearray-put-element pmin 0 (vlax-safearray-get-element minp 0))
  10.     (vlax-safearray-put-element pmin 1 (vlax-safearray-get-element minp 1))
  11.         (setq pmax (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  12.     (vlax-safearray-put-element pmax 0 (vlax-safearray-get-element maxp 0))
  13.         (vlax-safearray-put-element pmax 1 (vlax-safearray-get-element maxp 1))
  14.        
  15.     (setq layout (vla-get-activelayout doc))
  16.     (vla-refreshplotdeviceinfo layout)
  17.     (vla-put-configname layout "DWG to PDF.pc3")
  18.     (vla-put-canonicalmedianame layout "ISO_full_bleed_A4_(297.00_x_210.00_MM)")
  19.     (vla-put-centerplot layout :vlax-true)
  20.     (vla-put-plotrotation layout ac90degrees)
  21.     (vla-put-standardscale layout acscaletofit)
  22.     (vla-put-stylesheet layout "acad.ctb")
  23.     (vla-setwindowtoplot layout pmin pmax)
  24.     (vla-put-plottype layout acwindow)
  25.     (vla-regen doc acallviewports)
  26.     (vla-plottofile (vla-get-Plot doc) "D:\\tmp\\tmp")
  27.  

В командном окне почему-то пишет:  :vlax-false



Заранее благодарен.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Балиев,
Права на запись есть?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Балиев

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Балиев,
Права на запись есть?
Права на запись в папку? Специальных нет, обычные... А этого разве недостаточно?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Достаточно. BACKGROUNDPLOT установлено в 0?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Балиев

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
BACKGROUNDPLOT
Установил, но результат тот же...

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну тогда пошаговая отладка с проверкой результатов выполнения каждой из функций.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
День добрый!
Написал скрипт для печати в PDF используя скрипт Крыса. Последняя строка почему-то не выполняется. В чем проблема?
Код - Auto/Visual Lisp [Выбрать]
  1.         (vl-load-com)
  2.     (setq acadObj (vlax-get-acad-object))
  3.     (setq doc (vla-get-ActiveDocument acadObj))
  4.  
  5.         (setq objsToPrint (ssget))
  6.         (setq obj  (vlax-ename->vla-object (ssname objsToPrint 0)))
  7.     (vla-GetBoundingBox obj 'minp 'maxp)
  8.         (setq pmin (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  9.     (vlax-safearray-put-element pmin 0 (vlax-safearray-get-element minp 0))
  10.     (vlax-safearray-put-element pmin 1 (vlax-safearray-get-element minp 1))
  11.         (setq pmax (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  12.     (vlax-safearray-put-element pmax 0 (vlax-safearray-get-element maxp 0))
  13.         (vlax-safearray-put-element pmax 1 (vlax-safearray-get-element maxp 1))
  14.        
  15.     (setq layout (vla-get-activelayout doc))
  16.     (vla-refreshplotdeviceinfo layout)
  17.     (vla-put-configname layout "DWG to PDF.pc3")
  18.     (vla-put-canonicalmedianame layout "ISO_full_bleed_A4_(297.00_x_210.00_MM)")
  19.     (vla-put-centerplot layout :vlax-true)
  20.     (vla-put-plotrotation layout ac90degrees)
  21.     (vla-put-standardscale layout acscaletofit)
  22.     (vla-put-stylesheet layout "acad.ctb")
  23.     (vla-setwindowtoplot layout pmin pmax)
  24.     (vla-put-plottype layout acwindow)
  25.     (vla-regen doc acallviewports)
  26.     (vla-plottofile (vla-get-Plot doc) "D:\\tmp\\tmp")
  27.  

В командном окне почему-то пишет:  :vlax-false



Заранее благодарен.

Не похоже это на мой код. По крайней мере я такого не помню. Или это другой крыс :)
Все, что сказано - личное мнение.

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

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

Оффлайн Балиев

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Не похоже это на мой код. По крайней мере я такого не помню. Или это другой крыс
Ну, я его творчески переработал, разумеется. Но начиная с 15-й строки, ну очень на тебя похож.   ;)

Оффлайн Балиев

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Ну тогда пошаговая отладка с проверкой результатов выполнения каждой из функций.
Хм... А код чего-то взял и заработал... Возможно, все-таки установка BACKGROUNDPLOT в 0 помогла... Ну, или чудо... В любом случае спасибо!