Здесь на форуме уже описал, как на работе распечатываем чертежи, но повторюсь.
На работе А4 печатаем на одном принтере, А3 на другом, А2 и А1 выводим на плоттер и бывает, что в одном файле (модели) есть несколько областей для печати разных форматов. Поэтому
использую программу, где нужно указать только два противоположных угла области для печати, а
программа сама выбирает принтер и ориентацию формата. Если выбранная область не соответствует (заданы допуска по длине и углу между указанными точками) ГОСТ-форматам, то масштабирование на А4.
;|====================================================
Печать выбранной области
Макрос для кнопки:
^C^C^P(load "Print_Den");Print_Den
Проверить путь до принтера (скопировать в командную строку):
(command "_.plot" "_y" "Model" "?" nil)
Проверить форматы принтера, например, Canon S4500:
(command "_.plot" "_y" "Model" "\\\\Printserver01\\Canon S4500" "?" nil)
====================================================|;
(defun C:Print_Den (/ a0 a1 a2 a3 a4 a5 a6)
(setq a0 (list "\\\\Printserver01\\Canon LASER SHOT LBP-1120" ; Формат А4
"\\\\Printserver01\\Canon S4500" ; Формат А3
"\\\\Printserver01\\HP DesignJet 500 24 by HP" ; Формат А2, А1
)
a1 (getpoint "\nПервый угол области печати:")
a6 nil)
(if a1 (progn
(while (null a6)
(if (setq a2 (getcorner a1 "\nПротивоположный угол области печати:"))
(setq a3 (distance a1 a2)
a4 (angle a1 a2)
a6 (* (cos a4)(sin a4)))
)
(if (equal a6 0 1e-015)(progn
(setq a6 nil)
(princ "\nНеверное определение рамки.")
))
)
(cond
((not (equal (abs a6) 0.4714 0.001))
(setq a5 0
a3 "A4")
)
((equal a3 (sqrt 264609) 4)
(setq a5 1
a3 "A3")
)
((equal a3 (sqrt 529236) 4)
(setq a5 2
a3 "Oversize: ISO A2 (альбомная)")
)
((equal a3 (sqrt 1060117) 4)
(setq a5 2
a3 "Oversize: ISO A1 ")
)
(t
(setq a5 0
a3 "A4")
)
)
(setq a0 (nth a5 a0)
a5 a0)
(while (setq a6 (vl-string-search "\\" a5))
(setq a5 (substr a5 (+ 2 a6)))
)
(princ (strcat "\nПринтер: " a5 ", Формат: " a3 "\n"))
(setvar "CMDECHO" 0)
(command "_.plot" "_y" "Model" a0 a3 "_m" (if (< (abs (sin a4)) (sqrt 0.5)) "_l" "_p")
"_n" "_w" a1 a2 "" "_c" "_y" "monochrome.ctb" "_y" "_a" "_n" "_y" "_y")
(setvar "CMDECHO" 1)
))
(princ)
)