AutoCAD图形打印技巧

Author: 张文明 Date: 1999年 第42期 38版


  众多使用过AutoCAD的朋友都知道,AutoCAD2000的打印功能较以前的版本已大有提高。如果您想打印出一幅图(譬如A3幅),但是您的打印机只能打印A4幅,这时您只有用打印功能里的窗选功能手工选择打印。为了以后图形的拼接方便,您还得手工给出窗选点的坐标,实在烦琐。笔者用Visual Lisp编了个小程序,能够实现从A3图幅到A4图幅的自动打印,稍加改动能够实现A1图幅到A3图幅的打印等,限于篇幅,这里不在详细介绍。原程序如下:
  (Defun c:a34();;;打印主程序
  (Command ″layer″ ″on″ ″*″ ″″)
  (initpt)
  (Command ″Plot″ ″w″ (ret1 pt 1 0) (ret2 pt 2 1) ″n″)
  (Command ″Plot″ ″w″ (ret1 pt 0 0) (ret2 pt 1 1) ″n″)
  (Command ″qsave″ ″y″)
  )
  ;;;-----------;;;
  (Defun initpt()
  (SetQ ptmax (Getvar ″extmax″)
  a1 (Car ptmax)
  a2 (Cadr ptmax)
  ptmin (Getvar ″extmin″)
  b1 (Car ptmin)
  b2 (Cadr ptmin)
  s3 0
  lengthx (- a1 b1)
  lengthy (- a2 b2)
  factor (/ 2850 1980)
  unitx (/ lengthx 2)
  unity (* unitx factor)
  )
  (If (< (/ lengthx 2) (* lengthy factor))
  (Progn (SetQ unity (/ lengthy 2)
  unitx (/ unity factor)
  )
  )
  )对瘦长的图形进行长宽对调
  );;;确定图形的范围并对瘦长的图形进行“处理”;;;
  ;;;------------;;;
  (Defun ret1 (Pt numx numy)
  (SetQ s1 (* unitx numx)
  s1 (+ s1 b1)
  s2 (* unity numy)
  s2 (+ s2 b2)
  s3 0
  pt (List s1 s2 s3)
  )
  );;;求窗选点1
  ;;;------------;;;
  (Defun ret2 (Pt numx numy)
  (SetQ s1 (* unitx numx)
  s2 (* unity numy)
  s1 (+ b1 (* s1 101))
  s2 (* s2 101)
  s3 0
  pt (List s1 s2 s3)
  )
  );;;求窗选点2;;;