tranney 发表于 2017-8-11 21:20:09

快速打印求修改

;办公室快速打印
;调用形式 (dayin0"打印机""纸张""样式表")
;绘图仪
(defun c:A1 () (cmdla0)(princ "09打印类程序绘图仪A1:\n")(dayin0 "HP DesignJet 500" "过大尺寸: ISO A1" "TArch9.ctb") (cmdla1))
(defun c:A2 () (cmdla0)(princ "09打印类程序绘图仪A2横:\n")(dayin0 "HP DesignJet 500" "过大尺寸: ISO A2 (横向)" "TArch9.ctb")(cmdla1))
(defun c:A2s () (cmdla0)(princ "09打印类程序绘图仪A2竖:\n")(dayin0 "HP DesignJet 500" "过大尺寸: ISO A2 (纵向)" "TArch9.ctb") (cmdla1))
(defun c:A31 () (cmdla0)(princ "09打印类程序绘图仪A3横:\n")(dayin0 "HP DesignJet 500" "过大尺寸: ISO A3 (横向)" "TArch9.ctb")(cmdla1))
;小打印机
(defun c:A3 () (cmdla0)(princ "09打印类程序办公室快速打印A3:\n")(dayin0 "LBP3500建" "A3" "TArch9.ctb")(cmdla1))
(defun c:A4 () (cmdla0)(princ "09打印类程序办公室快速打印A4:\n")(dayin0 "LBP3500建" "A4" "TArch9.ctb")(cmdla1))
;小打印机2
(defun c:BA3 () (cmdla0)(princ "09打印类程序备份办公室快速打印A3:\n")(dayin0 "LBP3500计" "A3" "TArch9.ctb")(cmdla1))
(defun c:BA4 () (cmdla0)(princ "09打印类程序备份办公室快速打印A4:\n")(dayin0 "LBP3500计" "A4" "TArch9.ctb")(cmdla1))
;pdf打印机
(defun c:PA1 () (cmdla0)(princ "09打印类程序PDF快速打印A1:\n")(dayin0 "pdfFactory Pro" "A3" "TArch9.ctb")(cmdla1))
(defun c:PA2 () (cmdla0)(princ "09打印类程序PDF快速打印A2:\n")(dayin0 "pdfFactory Pro" "A4" "TArch9.ctb")(cmdla1))
(defun c:PA3 () (cmdla0)(princ "09打印类程序PDF快速打印A3:\n")(dayin0 "pdfFactory Pro" "A3" "TArch9.ctb")(cmdla1))
(defun c:PA4 () (cmdla0)(princ "09打印类程序PDF快速打印A4:\n")(dayin0 "pdfFactory Pro" "A4" "TArch9.ctb")(cmdla1))

(defun dayin0 (dayinji zhizhang dayinstyle / ent fx i maxpoint maxx0 maxy0 minpoint minx0 miny0 os pmax pmin ptlist ss sstk)
(setq   ss (ssadd)    sstk (ssadd))
(princ "\n 请选取矩形图框:")
(while (setq ss (ssget ":S" (list '(0 . "LWPOLYLINE") '(90 . 4))))
    (setq ent (ssname ss 0))
    (vla-getboundingbox (vlax-ename->vla-object ent) 'minpoint 'maxpoint)
    (setq pmax (vlax-safearray->list maxpoint)pmin (vlax-safearray->list minpoint)
          minx0 (car pmin)miny0 (cadr pmin)   maxx0 (car pmax)maxy0 (cadr pmax))
    (if (>= (- maxx0 minx0) (- maxy0 miny0))   (setq fx "L")      (setq fx "P") )
      ;;;生成矩形的对角线并将对角线加入选择集sstk
    (entmake (list '(0 . "LINE") (cons 8 "Defpoints") (cons 62 6) (cons 10 (list minx0 miny0 0)) (cons 11 (list maxx0 maxy0 0))))
    (setq sstk (ssadd (entlast) sstk))
    (entmake (list '(0 . "LINE") (cons 8 "Defpoints") (cons 62 6) (cons 10 (list minx0 maxy0 0)) (cons 11 (list maxx0 miny0 0))))
    (setq sstk (ssadd (entlast) sstk))
      ;;;生成矩形的对角线并将对角线加入选择集sstk结束
    (setq ptlist (cons (list pmin pmax fx) ptlist))
    (princ (strcat "\n 一共选择了" (itoa (length ptlist) ) "张图纸>>>>>>>> "))
)
(initget "Y N ")
(if (/= (getpoint (strcat "\n 确定批量打印?[确认(Y)/退出(N)]:<Y> ")) "Y")
    (progn
      (command "erase" sstk "")
      (repeat (setq i (length ptlist))
      (setq ent (nth (setq i (1- i)) ptlist )pmin (car ent) pmax (cadr ent) fx (last ent))
      (command "_.PLOT" "Y" "" dayinji zhizhang "M" fx "N" "W" pmin pmax "F" "C" "Y" dayinstyle "Y" "N" "N" "N" "Y")
      (princ (strcat "\n 程序正在打印第" (itoa (- (length ptlist) i)) "张>>>>>>>> "))
      )
    )
    (command "erase" sstk "")
)
)


(defun cmdla0 ()
(defun new_error (msg)
(princ (strcat "\n" msg))
(setq *error* olderr)
(command "_.undo" "end")
(princ) )
(command "undo" "group")
(setq   olderr *error*
         *error* new_error)
(setq cmd (getvar "CMDECHO"))
(setq oom (getvar "orthomode"))
(setq osm (getvar "osmode"))
(setq hlt (getvar "highlight"))
(setq rmode (getvar "regenmode"))
(setq odltp (getvar "celtype"))       ;记录当前线型设置
(setq odclr (getvar "cecolor"))       ;记录当前颜色设置
(setq odlay (getvar "clayer"))      ;记录当前层
(setq odsty (getvar "textstyle"))   ;记录当前文本样式
(setq odzin (getvar "dimzin"))      ;记录主单位值消零处理方式
(setq odfr (getvar "filletrad"))
(setvar "regenmode" 0)
(setvar "CMDECHO" 0)
(SETVAR "blipmode" 0)
(princ)
)
(defun cmdla1 ()
(setvar "CMDECHO" cmd)
(setvar "orthomode" oom)
(setvar "osmode" osm)
(setvar "highlight" hlt)
(setvar "regenmode" rmode)
(setvar "celtype" odltp)
(setvar "cecolor" odclr)
(setvar "textstyle" odsty)
(command "layer" "s" odlay "")
(setvar "dimzin" odzin)               ;恢复主单位值消零处理方式
(setvar "filletrad" odfr)
(setq *error* olderr)
   (command "_.undo" "end")
(princ)
)
(defun ccy_err (msg)
(princ (strcat "\ncc错误:" msg "\n"))   ;打印错误原因
(cmdla1)                              ;调用函数cmdla1恢复程序开始前的设置
(setq *error* oderr)                  ;恢复原来的*error*
(princ))
这个版本的快速打印是非常好用的,我自己修改了一下,但是功力不够,出错后绘图的交叉线还保留,请大哥版本修改一下,谢谢

烟盒迷唇 发表于 2020-2-4 13:13:58

非常好的代码

zhangcn 发表于 2021-5-19 20:28:08

想用 PublishToWeb JPG.pc3 输出JPG,目前不成功。
页: [1]
查看完整版本: 快速打印求修改