明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 912|回复: 2

[提问] 快速打印求修改

[复制链接]
发表于 2017-8-11 21:20 | 显示全部楼层 |阅读模式
;办公室快速打印
;调用形式 (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 "") )
        ;;;生成矩形的对角线并将对角线加入选择集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 | 显示全部楼层
非常好的代码
发表于 2021-5-19 20:28 | 显示全部楼层
想用 PublishToWeb JPG.pc3 输出JPG,目前不成功。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 21:48 , Processed in 0.569825 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表