找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2690|回复: 7

[每日一码] 学习手记--自己写的批量打印程序~15.01.27

[复制链接]
发表于 2015-1-27 13:01:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
每日一码实在太难了~ 工作有点忙。今天上午没事 ,想学习批量打印的程序 。一直觉得这种东西好高大上 ,最后居然短短几个码就写好了, 不过实用性简直太简单了~~~
不过也算是自己的一个记录吧~
需要安装pdffactory,才能实现不用每打一页就输一页页码; 这个真心厉害~比我现在用的常青藤的打印好多了。。。
(defun c:d11(/ i)
(setvar "cmdecho" 0)
(setq os1 (getvar "osmode"))
(setvar "osmode" 0)
(setq xx1 (car(entsel"\n选取图框:\n")))
(setq bkdata (entget xx1))
(setq bkname (assoc 2 bkdata))
(setq bkpoint (assoc 10 bkdata))
(setq ss (ssget "x" (list bkname)))
(setq ssn (sslength ss))
(setq i (1- ssn))

(repeat ssn
(setq bkn (ssname ss i))
(setq bkdata (entget bkn))
(setq bkpoint (cdr(assoc 10 bkdata)))
(setq nx (cdr(assoc 41 bkdata)))
(setq ny (cdr(assoc 42 bkdata)))
(setq nz (cdr(assoc 43 bkdata)))
(setq pt1 (polar bkpoint (* 0.5 pi) (* 288.06 ny)))
(setq pt2 (polar pt1 0 (* 407.4 nx)))
(command "plot" "y" "" "pdffactory PRO" "A3" "m" "L" "n" "w" bkpoint pt2 "f" "c" "y" "1.ctb" "y" "w" "n" "n" "y")
(setq i (1- i))
)
(setvar "osmode" os1)
(princ))

还有一些问题想请教大神:

1、这个小程序只能在一个CAD里打印,而且我也不会DCL, 如果我想打印一个文件夹里的多个cad,这个怎么办呢 我查了很多教材 也没找到~~~
2、论坛逛了这么一段时间了 觉得大家讨论的东西还是不懂~ 什么XDXR-API啊 什么的 这是什么意思啊~

     2015年1月27日13:01:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2015-1-28 07:59:19 | 显示全部楼层
批量打印文件夹里的dwg文件我知道的方法有两种,一是用秋风打印软件1.3版本的(应该能实现,我没实际操作过),二是做个scr脚本,咱后进行文件夹dwg文件的批量操作程序。这个晓东论坛里的XDXR-API是个函数库,你加载该API后,打开vlide,在可操作编辑的对话框中,输入晓东函数,会发现这些函数是蓝色的,也就是说和平时自定义的函数颜色不一样,同cad本身自带的函数等级是相同的。

点评

谢谢你的热心解答~! 第二个问题懂了,第一个问题也大致明白了思路,只是不明白具体的操作,有没有实例的源码可以学习啊~  详情 回复 发表于 2015-1-29 16:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-1-29 16:40:30 | 显示全部楼层
Newbuser 发表于 2015-1-28 07:59
批量打印文件夹里的dwg文件我知道的方法有两种,一是用秋风打印软件1.3版本的(应该能实现,我没实际操作过 ...

谢谢你的热心解答~! 第二个问题懂了,第一个问题也大致明白了思路,只是不明白具体的操作,有没有实例的源码可以学习啊~

点评

为了不让你费心搜索论坛,我还是提供一下这个获取文件夹中dwg文件名的程序吧。有其他不称心的你自己相应的改改就行了。  详情 回复 发表于 2015-1-30 10:03
好吧。我就简单阐述以下我的思路。 先打开一个空白文档,将sdi值设置为0 然后新建一个txt文档,写入如下格式的内容 最后保存扩展名为scr的脚本 脚本内容格式如下: Open C:/例图/2595.40-472.75.dwg ;;打开目  详情 回复 发表于 2015-1-30 09:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-1-30 09:51:52 | 显示全部楼层
qiqiang2015 发表于 2015-1-29 16:40
谢谢你的热心解答~! 第二个问题懂了,第一个问题也大致明白了思路,只是不明白具体的操作,有没有实例的 ...

好吧。我就简单阐述以下我的思路。
先打开一个空白文档,将sdi值设置为0
然后新建一个txt文档,写入如下格式的内容
最后保存扩展名为scr的脚本
脚本内容格式如下:
Open C:/例图/2595.40-472.75.dwg  ;;打开目标文件
(load "C:/例图/dy.lsp")                      ;;运行打印程序(就是你写的单张图打印的程序)
dy                                                     ;;打印程序命令(自定义的运行程序命令)
close                                                 ;;关闭目标文件
Open C:/例图/2595.40-472.75.dwg ;;打开第二张图......
(load "C:/例图/dy.lsp")
dy
close

。。。。。。
。。。。。。
。。。。。。
。。。。。。
待所有工具准备完毕后,在cad空白文档中输入scr命令,寻找点击你的scr脚本即可实现自动打印。
前提是你的图中之后图框以内的东西,跑到图框外面的打印效果会很差,设置啥都看不清或看不见
提示一点,如果你的图有几百张之多,可以去网上搜一个获取文件名称的lisp,用excel编辑以下
在每一个文件名后加上重复操作的东西就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-1-30 10:03:09 | 显示全部楼层
qiqiang2015 发表于 2015-1-29 16:40
谢谢你的热心解答~! 第二个问题懂了,第一个问题也大致明白了思路,只是不明白具体的操作,有没有实例的 ...

为了不让你费心搜索论坛,我还是提供一下这个获取文件夹中dwg文件名的程序吧。有其他不称心的你自己相应的改改就行了。
  1. ;;qf_getFolder 引至明经社区
  2. (defun qf_getFolder (msg / WinShell shFolder path catchit)
  3.   (vl-load-com)
  4.   (setq winshell (vlax-create-object "Shell.Application"))
  5.   (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  6.   (setq
  7.     catchit (vl-catch-all-apply
  8.       '(lambda ()
  9. (setq shFolder (vlax-get-property shFolder 'self))
  10. (setq path (vlax-get-property shFolder 'path))
  11.        )
  12.     )
  13.   )
  14.   (if (vl-catch-all-error-p catchit)
  15.     nil
  16.     path
  17.   )
  18. )
  19. (defun C:jb(/ dfil qq bbb ml sm mb cdate ct)
  20. (setq qq (qf_getFolder "选择DWG所在文件夹:"))
  21. (if qq
  22. (progn
  23. (setq bbb(vl-directory-files qq))
  24. (setq bbb(cdr(cdr bbb)))
  25. (setq ml (open "C:\\dy.scr" "w"))
  26. (setq sm(length bbb))
  27.   (princ ";;目录共有文件 " ml)
  28.   (princ sm ml)
  29.   (princ "\n" ml)
  30.   (setq i 0)
  31.    (repeat sm
  32.    (setq mb(nth i bbb))
  33.    (setq dwg(strcat "*" "DWG"))
  34.    (setq dxg(strcat "*" "dwg"))
  35.    (if (or (wcmatch mb dwg) (wcmatch mb dxg))
  36.     (progn
  37.     (setq mb1(strcat qq "/" mb))
  38.     (princ "open " ml)
  39.     (princ mb1 ml)
  40.     (princ "\n" ml)  ;;空一格
  41.     (princ "(load c:/例图/dy.lsp)" ml)
  42.     (princ "\n" ml)
  43.     (princ "dy" ml)  ;;CAD执行命令,可重复
  44.     (princ "\n" ml)
  45.     (princ "qsave" ml)
  46.     (princ "\n" ml)
  47.     (princ "close" ml)
  48.     (princ "\n" ml)
  49.     )
  50.    )
  51. (setq i(1+ i))
  52.   )
  53. (close ml)
  54. ;;(startapp "notepad.exe" "C:\\dy.scr")
  55. )
  56. )
  57. (alert "脚本为C:\\dy.scr,请运行。\n工具→运行脚本…")
  58. )
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:生成批量打印scr程序.lsp 
下载次数:75  文件大小:1.43 KB 
下载权限: 不限 以上  [免费赚D豆]


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-10-27 16:00:32 | 显示全部楼层
还要下载DY.scr
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-10-23 16:47:51 | 显示全部楼层
为什么这句执行不了,一直执行结果为nil,但图中是有图框存在的(setq ss (ssget "x" (list bkname)))??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2018-1-12 13:58:26 | 显示全部楼层
楼主,问下你研究的多DWG文件批量打印出来了吗?  能否分享下源码,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-6 05:05 , Processed in 0.446925 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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