| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите найти ошибку в программе печати

Помогите найти ошибку в программе печати

Ответ
Поиск в этой теме
Непрочитано 11.06.2016, 05:08 #1
Помогите найти ошибку в программе печати
zenija2007
 
Регистрация: 18.09.2015
Сообщений: 120

Программа запускается из пространства модели, указываем две точки рамкой, после чего выводим предпросмотр. Принтер в настройках не задается. Пытался вывести предпросмотр последнего распечатанного листа с сохранением настроек - все сработало. Потом указываю сам область печати - в предпросмотре пустой лист. Программу взял из справки автокад, немного изменил, должно работать, но не работает. Ошибок в ходе работы не выдает, каждая функция запускается от своего объекта, не вижу, в чем причина. Autocad 2017.

Код:
[Выделить все]
 (defun c:printer ( / )
  (vl-load-com)
  (setq obj (vlax-get-acad-object))
  (setq actdoc (vla-get-activedocument obj))
  (setq actlay (vla-get-ActiveLayout actdoc))
  (setq input (vla-get-utility actdoc))
  (setq pr (vla-get-plot actdoc))

  (vla-InitializeUserInput input 128 "выХод")
  (setq tt1 (vla-getpoint input nil "Введите нижний левый угол: \n"))
  (setq tt1 (vlax-variant-value tt1))
  (setq t1 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (vlax-safearray-put-element t1 0 (vlax-safearray-get-element tt1 0))
  (vlax-safearray-put-element t1 1 (vlax-safearray-get-element tt1 1))
  (vla-InitializeUserInput input 128 "выХод")
  (setq tt2 (vla-getcorner input tt1 "Введите верхний правый угол: "))
  (setq tt2 (vlax-variant-value tt2))
  (setq t2 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (vlax-safearray-put-element t2 0 (vlax-safearray-get-element tt2 0))
  (vlax-safearray-put-element t2 1 (vlax-safearray-get-element tt2 1))
  (vla-put-plottype actlay acWindow)
  (vla-setwindowtoplot actlay t1 t2)
  (vla-displayplotpreview pr acFullPreview)
)
Массивы с 2D координатами проверил - значения верные. Принтер не указал, поэтому программа берет последний использованный (если печатали с сохранением настроек, конечно).
До этого делал печать с интерфейсом с выбором принтера, стиля и формата листа на lisp, сперва последовательно указывалуглы рамок на ечать, потом они так же последовательно печатались - все работало, единственное, не хватало функционала для печати листов в нескольких экземплярах, поэтому пробую activex.

----- добавлено через ~11 мин. -----
Простите, перезапустил автокад, все заработало. Даже не знаю, что за глюк.

Последний раз редактировалось zenija2007, 11.06.2016 в 05:21.
Просмотров: 1880
 
Непрочитано 11.06.2016, 11:04
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


1. Вам локальные и глобальные переменные - о чем то говорит?
2. Никогда при автоматизации не надейтесь на что-то по умолчанию - это грабли замедленного действия.
Сергей812 вне форума  
 
Непрочитано 11.06.2016, 11:05
#3
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


http://adndevblog.typepad.com/autoca...using-vba.html
Обрати внимание на необходимость преобразования координат из UCS/WCS в DCS
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите найти ошибку в программе печати

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрицательное число под корнем в расчете. Кто сталкивался с подобным? Ivan3891 Основания и фундаменты 13 06.06.2014 09:57
В плите перекрытия очень большие напряжения, помогите найти ошибку Olto SCAD 8 22.05.2014 22:09
Помогите найти ошибку в модели башни построенной в лире starovatt Лира / Лира-САПР 4 18.11.2013 17:11
Помогите найти ошибку Scad Toxel SCAD 12 14.04.2010 15:30