明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 463|回复: 0

[源码] 一个简单快捷的打印代码,求修订部分代码

[复制链接]
发表于 2020-4-27 15:00 | 显示全部楼层 |阅读模式

有大佬能改下这个打印代码吗?
命令Y1=根据代码中默认的打印机和打印样式打印,但是这个貌似无法获取图框的范围。
命令Y3=根据图纸中默认打印布局打印文件。不用更改。

需要更改命令Y1中的代码,无法获取图框的范围。


  1. (vl-load-com)(setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  2. (setvar "cmdecho" 0)


  3. (defun c:y1( / plotdevice  minp maxp  minpoint   maxpoint tkname ourset ilast i  my  ent1  orientation)
  4.   (setq plotdevice "pdfFactory Pro (6.x)")
  5. (print "选择图框块" )
  6.   (SETQ keytk (car (entsel)))
  7.   (while (or (null keytk) (/= (cdr (assoc '0 (entget  keytk)))  "INSERT"))
  8.   (SETQ keytk (car (entsel)))
  9.   )   
  10.   (setq  tkname (cdr (assoc '2 (entget  keytk)) ))
  11.   (alert (strcat "你要打印 \" " tkname "\"吗?" ))
  12. (setq papersize "A3")
  13. (setq plotstyle "monochrome.ctb")
  14.   (command "ucs" "w")
  15. (print "选择您要打印的内容:")
  16.   (SETQ ourset (ssget (list (cons 2 tkname))))   
  17. (while (null ourset)
  18.   (SETQ ourset (ssget (list (cons 2 tkname))))
  19. )   
  20. (setq ilast (sslength ourset))
  21. (setq i 0)(setq iplot 0)
  22.   (repeat ilast
  23.          (setq my (ssname ourset i))
  24.          (setq ent1 (entget my))
  25.   (if (= (cdr (assoc '2 ent1) ) tkname)
  26.     (progn   
  27.       (vla-getboundingbox (vlax-ename->vla-object my) 'minpoint 'maxpoint )
  28.    (setq minp (vlax-safearray->list  minpoint))
  29.    (setq maxp (vlax-safearray->list  maxpoint))
  30.    (if ( > (- (car maxp)(car minp))(- (cadr maxp)(cadr minp)))  (setq orientation "landscape") (setq orientation "portrait"))
  31.          (command "-plot" "y" "model" plotdevice papersize "Millimeters" orientation
  32.     "no" "w"  minp  maxp   "fit" "c" "y" plotstyle  "y" "n" "n" "n"  "y")
  33.     (setq iplot (1+ iplot))
  34.        )
  35.      )  
  36.   (setq i (1+ i))      
  37.   )
  38.   (princ "\nThe total isú║")(princ iplot)
  39.   (print "over!!!")
  40.   (princ)
  41. )



  42. (defun c:y3( / plotdevice  minp maxp  minpoint   maxpoint tkname ourset ilast i  my  ent1  orientation)
  43. ;(setq plotdevice "pdfFactory Pro (6.x)")
  44. (print "select keytk" )
  45.   (SETQ keytk (car (entsel)))
  46.   (while (or (null keytk) (/= (cdr (assoc '0 (entget  keytk)))  "INSERT"))
  47.   (SETQ keytk (car (entsel)))
  48.   )   
  49.   (setq  tkname (cdr (assoc '2 (entget  keytk)) ))
  50.   (alert (strcat "Do you want to print \" " tkname "\"?" ))
  51.   (setq papersize "")

  52.   (setq plotstyle "")
  53.    (command "ucs" "w")
  54. (print "Select what you want to print:")
  55.   (SETQ ourset (ssget (list (cons 2 tkname))))
  56. (while (null ourset)
  57.   (SETQ ourset (ssget (list (cons 2 tkname))))
  58. )   
  59. (setq ilast (sslength ourset))
  60. (setq i 0)(setq iplot 0)
  61.   (repeat ilast
  62.          (setq my (ssname ourset i))
  63.          (setq ent1 (entget my))
  64.   (if (= (cdr (assoc '2 ent1) ) tkname)
  65.     (progn   
  66.       (vla-getboundingbox (vlax-ename->vla-object my) 'minpoint 'maxpoint )
  67.    (setq minp (vlax-safearray->list  minpoint))
  68.    (setq maxp (vlax-safearray->list  maxpoint))
  69.    (if ( > (- (car maxp)(car minp))(- (cadr maxp)(cadr minp)))  (setq orientation "landscape") (setq orientation "portrait"))
  70.          (command "-plot" "y" "model" "" "" "Millimeters" orientation
  71.     "no" "w"  minp  maxp   "fit" "c" "y" ""  "y" "n" "n" "n"  "y")
  72.     (setq iplot (1+ iplot))
  73.        )
  74.      )  
  75.   (setq i (1+ i))      
  76.   )
  77.   (princ "\nThe total isú║")(princ iplot)
  78.   (print "over!!!")
  79.   (princ)
  80. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 06:12 , Processed in 0.224575 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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