明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6961|回复: 16

[讨论] 怎么用lisp实现自动选择打印窗口

  [复制链接]
发表于 2013-4-20 13:40 | 显示全部楼层 |阅读模式

如图所示,在打印时,我想将打印范围设置为窗口,然后点击右边的“窗口”,从图纸中选择打印范围,那么我怎么通过lisp实现我想选择的2个点呢,不知道我有没有说清楚

本帖子中包含更多资源

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

x
发表于 2013-4-20 14:27 | 显示全部楼层
说清楚了,没有这个必要吧
 楼主| 发表于 2013-4-20 14:36 | 显示全部楼层
tiyi8888@126.co 发表于 2013-4-20 14:27
说清楚了,没有这个必要吧

是这样,图纸中有很多张连续的图,我想批量打印,请问您知道怎么写lisp吗
发表于 2013-4-20 15:40 | 显示全部楼层
用批量打印就好了
发表于 2013-4-20 17:48 | 显示全部楼层
按我的理解,,你想全自动傻瓜式自动批量打印,,我是这样做的,仅供你参考

核心命令用-plot进入无对话框命令模式,,,

这两个窗口,必须要用一些特征,以便可以通过程序自动寻找,,我以前的做法是,图框采用特定图层,用多义线按制作,,

打印机可以用变量通过函数选定,有一个问题要注意就是纸张的配对,不同型号的打印机对应A3纸的描述是不同的,例如有的是“A3",有的是”A3(297×420mm)",有的是"A3 (297×420mm)“,,差一个字符都不行,程序会卡壳的,,解决方法,必须事先建立一个打印机纸张配对库,,让程序自动查找。

剩下来就简单了,先选择打印机,根据打印机自动选择对应的纸张配对符号,再通过查找图框的子函数,将本图符合条件的图都找出来,编入列表,包含两个角点(三个角点用于倾斜的图纸,例如道路平面图)的坐标,,,然后根据列表坐标,运行-polt命令打印,,,

-plot命令还设计到其他的一些参数设置,剩下的都比较简单了,,

评分

参与人数 1明经币 +1 收起 理由
004 + 1 很给力!

查看全部评分

 楼主| 发表于 2013-4-22 09:40 | 显示全部楼层
guisu771 发表于 2013-4-20 17:48
按我的理解,,你想全自动傻瓜式自动批量打印,,我是这样做的,仅供你参考

核心命令用-plot进入无对话框 ...

你好,非常感谢你的解答。
我还是没明白,是怎么确定每张图左上角和右上角的坐标呢
发表于 2013-4-22 16:11 | 显示全部楼层
(command "_.plot"
                     "y"
                     ""
                     (GetPrintName) ;_系统默认打印机
                     "A3"
                     "m"
                     "l"
                     "n"
                     "w"
                     "non"
                     PT0
                     "non"
                     PT1
                     (/ 1.0 SC)
                     "-4.24,-6.03"
                     "Y"
                     "ACAD"
                     "Y"
                     "A"
                     "N"
                     "N"
                     "Y"
            )
        )

pt0和pt1就是打印窗口的角点
发表于 2013-4-23 00:44 | 显示全部楼层
DCMZ 发表于 2013-4-22 09:40
你好,非常感谢你的解答。
我还是没明白,是怎么确定每张图左上角和右上角的坐标呢

这个跟图纸以及个人习惯有关,,有几种做法,可以搜索到图框角点坐标,
常用的是把图框做成一个标准块,插入到图中,,,你自己编程序搜索这个图框块,取得图块的各种属性,根据几何关系判断角点坐标。

如果你编过lisp,,,这是很简单的,,,如果没编过,,那就需要买本lisp的书,学一下,,,,

批量打印的程序并不难写,,,核心就是我说的-plot命令,,,主要的功夫就是看你,,怎么样用程序自动快速判定打印范围了
发表于 2013-4-23 00:47 | 显示全部楼层
iamxx 发表于 2013-4-22 16:11
(command "_.plot"
                     "y"
                     ""

特别注意,,”A3"对某些打印机是合适的,,某些打印机是不合适的,有可能是“A3(297×420mm)"或其他的
发表于 2013-4-23 13:13 | 显示全部楼层
(defun c:w31( / p1 p2 px n)
(setq old (getvar "osmode"))
(setvar "osmode" 1)

(command "-plot" "n" "" "上一次打印" "" "n" "y" "n")

(setq p1 (getpoint "\n 请选择第一个点:"))
(setq p2 (getpoint "\n 请选择第二个点:"))
(setq n (getint "\n 请选择连续页数:"))
(setq e (getint "\n 横向<1>纵向<2>:"))
(setvar "osmode" 0)
(if (= n nil) (setq n 1))
(repeat n
(if (= 2 e)
(command "-plot" "y" "模型" "" "A3" "M" "P" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;纵向
(if (= 1 e)
(command "-plot" "y" "模型" "" "A3" "M" "L" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;横向
(setq px (- (car p2) (car p1)))
(setq p1 (list (+ px ( car p1)) (cadr p1)))
(setq p2 (list (+ px ( car p2)) (cadr p2)))
)
(princ)
(setvar "osmode" old)
)


(defun c:w41(/ p1 p2 px n e)
(setq old (getvar "osmode"))
(setvar "osmode" 1)
(command "-plot" "n" "" "上一次打印" "" "n" "y" "n")
(setq p1 (getpoint "\n 请选择第一个点:"))
(setq p2 (getpoint "\n 请选择第二个点:"))
(setq n (getint "\n 请选择连续页数:"))
(setq e (getint "\n 横向<1>纵向<2>:"))
(setvar "osmode" 0)
(if (= n nil) (setq n 1))
(repeat n
(if (= 2 e)
(command "-plot" "y" "模型" "" "A4" "M" "P" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;纵向
(if (= 1 e)
(command "-plot" "y" "模型" "" "A4" "M" "L" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;横向
(setq px (- (car p2) (car p1)))
(setq p1 (list (+ px ( car p1)) (cadr p1)))
(setq p2 (list (+ px ( car p2)) (cadr p2)))
)
(princ)
(setvar "osmode" old)
)

;\\\\172.1.2.65\\Canon iR2200-3300 PCL6




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




(defun c:ww31( / p1 p2 px n)
(setq old (getvar "osmode"))
(setvar "osmode" 1)

(command "-plot" "n" "" "上一次打印" "" "n" "y" "n")

(setq p1 (getpoint "\n 请选择第一个点:"))
(setq p2 (getpoint "\n 请选择第二个点:"))
(setq n (getint "\n 请选择连续页数:"))
(setq e (getint "\n 横向<1>纵向<2>:"))
(setq f (getreal "\n 请输入图框间距:"))
(setvar "osmode" 0)
(if (= n nil) (setq n 1))
(repeat n
(if (= 2 e)
(command "-plot" "y" "模型" "" "A3" "M" "P" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;纵向
(if (= 1 e)
(command "-plot" "y" "模型" "" "A3" "M" "L" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;横向
(setq px (- (car p2) (car p1)))
(setq p1 (list (+ f px ( car p1)) (cadr p1)))
(setq p2 (list (+ f px ( car p2)) (cadr p2)))
)
(princ)
(setvar "osmode" old)
)







(defun c:ww41(/ p1 p2 px n e)
(setq old (getvar "osmode"))
(setvar "osmode" 1)
(command "-plot" "n" "" "上一次打印" "" "n" "y" "n")
(setq p1 (getpoint "\n 请选择第一个点:"))
(setq p2 (getpoint "\n 请选择第二个点:"))
(setq n (getint "\n 请选择连续页数:"))
(setq e (getint "\n 横向<1>纵向<2>:"))
(setq bc (getreal "\n 请输入图框间距:"))
(setvar "osmode" 0)
(if (= n nil) (setq n 1))
(repeat n
(if (= 2 e)
(command "-plot" "y" "模型" "" "A4" "M" "P" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;纵向
(if (= 1 e)
(command "-plot" "y" "模型" "" "A4" "M" "L" "N" "W" P1 P2 "F" "" "" "" "y"  "w" "N" "Y" "Y"))
;横向
(setq px (- (car p2) (car p1)))
(setq p1 (list (+ bc px ( car p1)) (cadr p1)))
(setq p2 (list (+ bc px ( car p2)) (cadr p2)))
)
(princ)
(setvar "osmode" old)
)

;\\\\172.1.2.65\\Canon iR2200-3300 PCL6




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

本版积分规则

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

GMT+8, 2024-5-2 05:51 , Processed in 6.436347 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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