明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4515|回复: 21

5币 求以点选矩形框并可以统计数量的打印程序

  [复制链接]
发表于 2011-6-24 22:19 | 显示全部楼层 |阅读模式
8明经币
本帖最后由 669423907 于 2011-7-21 23:06 编辑

在工作中经常要用到其他部门的和外来的图纸,图框很不统一,图框所在的图层也不统一,但多数都是以矩形块做的图框,打印很不方便(秋风大师的再次情况下不适用)。恳请大师们帮忙写一个打印的小程序,谢谢了。
程序要求如下:
1,两个快捷键(dy,yd),一个横向打印一个纵向打印
2,其他打印设置项在cad里设置
3,只打印以矩形或矩形为块中的内容
4,可以窗选(如图所示)
5,可以提示数量(已选xx张),每选一次就加1
6,按右键确定打印并提示共打印张数
7,可以可以自动排除重复的
8,可以取消 Shift+左键 选择的对象,数量同时减少

附件: 您需要 登录 才可以下载或查看,没有账号?注册
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-6-25 00:25 | 显示全部楼层
本帖最后由 raimo 于 2011-6-25 00:26 编辑

秋枫的批量打印已经很好用了,为什么不行呢? 感觉楼主没能完全明白秋枫的程序的功能
图框所在的图层也不统一,但多数都是以矩形块做的图框,

既然是图块,秋枫的程序就是能够选中并批量的.
如果不是同样的图块名把图框块改变到自定义打印图层上去,
或者在自定义打印图层上新建矩形,就可以使用图层打印...

用点小技巧就能办到的事情,还需要另求其他的程序吗?

回复

使用道具 举报

 楼主| 发表于 2011-6-25 00:56 | 显示全部楼层

标题

回复 raimo 的帖子

谢谢你的回复!
经常要用别人电脑上的图纸,图纸不能改,
是只读的!
回复

使用道具 举报

 楼主| 发表于 2011-6-25 01:05 | 显示全部楼层

标题

本帖最后由 669423907 于 2011-6-25 07:40 编辑

不好意思,用手机上的,发重了。
回复

使用道具 举报

发表于 2011-6-25 08:19 | 显示全部楼层
用途:1个CAD档里多个分图一次性打印
批量打印要求: 1.打印前必须先设定好“打印-模型”里的打印机名称及打印样式,并应用到布局(当然如果这两项你都可以固定的话,那你可以直接把它加在下面的原码里)2.要打印的图档必须有同名的块的边框 (其实打印原理就是找出图框块的两个斜对角点用窗口打印的)
现在打印顺序是从右向左,从上往下的。如果要修改自己改一下,不会可以留言把你要的顺序写上
命令:A3以A3纸打印,A4以A4纸打印。当然你还可按你的需求自己添加。
(defun c:A3()
  (AAAX "A3")
)
(defun c:A4()
  (AAAX "A4")
)
(defun AAAX( AAA / L TT TQ TQQ  T1 TT1 TT2 PC PDX PDY)
  (princ  "\n打印前必须先设定好“打印-模型”并应用到布局" )
(setq l 0)
  (initget  128 "S  " )
      (setq tt (GETSTRING "\n请输入图框块名或键入<S>继承对象块名: "))
  (if (or(= "" tt )(= nil tt ))(setq tt "图框块"))
  (if (or(= "S" TT)(= "s" TT))
    (progn
      (setq TQ (ENTsel "\n选取继承对象块")
     TQQ (cdr (assoc 0 (entget (car TQ)))))
      (WHILE (/= "INSERT" TQQ)
(setq TQ (ENTsel "\n选取错误,请重新选取继承对象块")
       TQQ (cdr (assoc 0 (entget (car TQ)))))
)
      (SETQ tt (cdr (assoc 2 (entget (car TQ)))))
      
      )
    )
(COMMAND "ucs" "w")
  (PRINC "\n打印块名为<")(PRINC tt)(PRINC ">")
  (PRINC "\n请选择要打印的区域")
    (setq t1 (SSGET (list (cons 2 tt)))
   tqq '())
    (while (= nil t1)
      (PRINC "\n区域内没有指定块,请重新选择要打印的区域")
    (setq t1 (SSGET (list (cons 2 tt))))
        )
(repeat (sslength t1)
(vla-getboundingbox (vlax-ename->vla-object (ssname t1 l)) 'minp 'maxp)
    (setq tt1 (vlax-safearray->list minp)
   tt2 (vlax-safearray->list maxp)
   )
  (setq PDX (ABS(- (caR tt1) (caR tt2)))
        PDY (ABS(- (caDR tt1) (caDR tt2)))
        PC "L")
(if (< PDX PDY)                                    
(setq PC "P"))
  (if (/= nil tqq)
    (setq tqq (cons (list (car tt1) tt1 tt2 pc) tqq ))
    (setq tqq (list (list (car tt1) tt1 tt2 pc)))
    )
    (setq l (+ 1 l))
)
(foreach n (MAPCAR '(LAMBDA (R) (assoc R tqq)) (vl-sort (MAPCAR '(LAMBDA (RR) (car RR)) tqq) '<))
  (COMMAND "-PLOT" "Y" ""  "" AAA "" (LAST N) "" "W" (NTH 1 N) (NTH 2 N) "F" "C" "Y" "" "Y" "W" "N" "Y" "Y")
  )
   (alert (stRcat "已成功发送"(itoa l)"张打印命令!"))
  )


看看是否可以
回复

使用道具 举报

 楼主| 发表于 2011-6-25 13:29 | 显示全部楼层
首先谢谢你的回复!
1,“要打印的图档必须有同名的块的边框 ”
经常要用别人电脑上的图纸,图纸不能改,
是只读的!
2,可以去掉“A3” ,“A4” 功能
3,要“横向”,“纵向” 功能
回复

使用道具 举报

 楼主| 发表于 2011-6-25 13:29 | 显示全部楼层
回复 198526 的帖子

首先谢谢你的回复!
1,“要打印的图档必须有同名的块的边框 ”
经常要用别人电脑上的图纸,图纸不能改,
是只读的!
2,可以去掉“A3” ,“A4” 功能
3,要“横向”,“纵向” 功能

回复

使用道具 举报

 楼主| 发表于 2011-6-26 20:08 | 显示全部楼层
自己顶一顶!
回复

使用道具 举报

发表于 2011-6-26 21:56 | 显示全部楼层
本帖最后由 langjs 于 2011-6-26 21:56 编辑

看看是否适合你,选第二个打印模式
http://bbs.mjtd.com/thread-86573-1-3.html
回复

使用道具 举报

 楼主| 发表于 2011-6-26 22:25 | 显示全部楼层
回复 langjs 的帖子

谢谢你的好意,之前下过了,不适合。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 06:52 , Processed in 0.266323 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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