明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11522|回复: 76

[经验] 【原创】用纯lisp实现打印任意尺寸pdf

    [复制链接]
发表于 2024-2-18 13:40:59 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2024-2-18 13:49 编辑

    惊惊大侠在cad.net 读写pc3,pmp打印机文件 - 惊惊 - 博客园 (cnblogs.com)中实现了用c#打印任意尺寸pdf,用autolisp能不能做到呢?

为了实现这一功能,我研究了两个多月,踩坑无数,经过多次的cad崩溃,一次又一次的试验,屡败屡战,我自己也有点佩服自己的毅力了。
多次想要放弃,又重新拾起来,终于在年假期间做出来了,今天上班第一天,拿出来和大家分享。
低版本的acad的dwg to pdf.pc3有缺陷,本程序只支持2018及以后版本。
加载本程序后,执行命令是syzpdf。选择图框后进行批量打印成pdf。(注意只能选图框,不能选其它矩形实体)
程序代码参考了kucha007  llsheng_73大侠的部分代码,在此表示感谢。
程序实现原理是在打印每一个图框之前临时建立打印机,根据图框的尺寸来建立纸张。这样就可以不用考虑图框大小,实现打印任意尺寸的pdf
程序中定义了一个函数 syz-create-pmp1,作用是临时创建pc3和pmp文件,打印机名是 syzpdf.pc3  纸张是usertk1
用法是这样的:

             (setq pdfw (strcat (itoa (fix Width)) ".0"))   ;pdf纸张宽度
             (setq pdfh (strcat (itoa (fix Lenght)) ".0"))  ;;pdf纸张高度
            (syz-create-pmp1 pdfw pdfh)                    ;建立打印机和纸张


(command "_.plot"
                    "Yes"
                    (car XX)
                    "syzpdf.PC3"
                    "usertk1"
                    "Millimeters"
                   (if (>= LenX LenY)
                      "Landscape";横向
                      "Portrait";纵向
                    )
                    "No"
                    "Window"
                    (cadr XX)
                    (caddr XX)
                    "Fit"
                    "Center"
                    "Yes"
                    "monochrome.ctb"
                    "Yes"
                    ""
            )
部分代码参考这里【TT】批量打印、图框排序、图框大小、图框加长 - 源码共享 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
需要本程序源码者请联系作者QQ5520971(不免费)


本帖子中包含更多资源

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

x

评分

参与人数 6明经币 +7 金钱 +30 收起 理由
ssyfeng + 1 赞一个!
highflybird + 2 + 30 神马都是浮云
kucha007 + 1 赞一个!
clinber + 1 很给力!
飞雪神光 + 1 赞一个!
hubeiwdlue + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-2-19 17:57:57 | 显示全部楼层
太厉害了,等待大佬解密!
回复 支持 1 反对 2

使用道具 举报

发表于 2024-2-19 10:25:12 | 显示全部楼层
本帖最后由 crtrccrt 于 2024-2-23 15:44 编辑

利用PDF-factory自定义尺寸,也可以方便打印任意尺寸pdf,配合自研的批量打印,按图号顺序批量+自动打印,事半千倍。

说来惭愧,明经陪伴我廿多年了,自从**年前论坛改规则后,没有独立发帖权,借本贴共享一个思路。

友情【提醒】各位注意:附件谨慎下载(BAT批处理部分代码,仅定义【--A3--__--0】尺寸,其余尺寸没有贴出),级别不够的,也不要抱怨。

不喜勿喷。不喜勿喷。不喜勿喷。
也不会回复任何疑问。

=========================================================
=========================================================

修改PDF-factory自定义尺寸,可以使用BAT/REG/INF/LSP,BAT/REG/INF/三者能够相互转换,我采用LSP直接生成BAT/REG/INF/LSP四种格式。

REG/INF/LSP三种格式部分代码如下::

LSP方法:
(vl-registry-delete  "HKCU\\Software\\FinePrint Software\\pdfFactory8\\CustomPapers\\--A3--__--0"          )
(vl-registry-write   "HKCU\\Software\\FinePrint Software\\pdfFactory8\\CustomPapers\\--A3--__--0"          "Width"   (atoi "00445000"))

INF方法:
hkcu,"Software\FinePrint Software\pdfFactory8\CustomPapers\--A3--__--0",          "Width",   0x10001,48,CA,06,00

REG方法:
[-HKCU\Software\FinePrint Software\pdfFactory8\CustomPapers\--A3--__--0]
[HKCU\Software\FinePrint Software\pdfFactory8\CustomPapers\--A3--__--0]
"Width"=dword:0006CA48


BAT方法见附件

不靠附件挣明经币。《《《《前后矛盾》》》》应坛友请求,降低下载权限。钻石会员以上可以下载了。
=========================================================
=========================================================
利用PDF-factory自定义尺寸,经测试,支持XP++(PDF-f--3.5.1/7.2.1),Win10-64++(PDF-f--3.5.1/7.2.1/8.17),Win-7/8未测试,支持PDF-factory-3.5.1/7.2.1/8.17,其他PDF-factory未测试。



本帖子中包含更多资源

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

x

点评

这个可以有  发表于 2024-2-27 19:12
太厉害了~  发表于 2024-2-19 12:27

评分

参与人数 3明经币 +3 收起 理由
xiaoyingzi + 1 很给力!
p-3-ianlcc + 1 很给力!
baitang36 + 1 很给力!

查看全部评分

回复 支持 2 反对 1

使用道具 举报

发表于 2024-2-27 10:45:14 | 显示全部楼层
zhang007 发表于 2024-2-23 09:01
以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定 ...

其实还有第三种思路:裁剪pdf,效果也不差。。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2024-2-23 09:01:59 | 显示全部楼层
以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定义纸张,然后把DWG To PDF.pmp、DWG To PDF.pc3拷贝到其他电脑上,再用程序寻找大小最接近的纸张来实现自动出图
回复 支持 1 反对 0

使用道具 举报

发表于 2024-2-18 13:54:28 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-2-18 15:02 编辑

鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌
要不要做一个lisp编译器
发表于 2024-2-18 16:10:50 | 显示全部楼层
谢谢大佬分享,,太好了。。。
发表于 2024-2-18 16:23:27 | 显示全部楼层
给大佬点赞
发表于 2024-2-18 16:45:58 | 显示全部楼层
太厉害了,对于玩lisp的来说太好了,c#自定义纸张的虽然大佬搞出来了,但是需要会c#才可以,要是有大佬把c#的搞成lisp可调用的函数才能直接供lisp玩家使用。
发表于 2024-2-18 17:12:52 | 显示全部楼层
厉害了大佬,可以继续完善加入顺序等功能
发表于 2024-2-18 17:15:12 | 显示全部楼层

这些文件数据都是zlib加密的,难道大神自己用lisp写了zlib解析库么,大神牛逼。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 15:53 , Processed in 0.201012 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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