乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 58|回复: 8

[编程交流] 使用序列文件名打印

[复制链接]

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:19:39 | 显示全部楼层 |阅读模式
我用下面的lisp做批量绘图,并在这里寻求帮助。
 
上述代码打印的pdf文件名与模型空间中的dwg名称相同。
 
我正在寻找pdf文件名,例如
DWG_文件名-1。pdf,
DWG_文件名-2。pdf
以此类推,而不是DWG_文件名。pdf
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:31:02 | 显示全部楼层
试试这个,否则你需要保存一个全局变量,检查它是否存在,并向其中添加1。这只对当前会话有效。当你关闭dwg时,值将消失,但这可能没问题,因为你知道要打印的图纸编号
 
  1. (if (= sheetnum nil)(setq sheetnum 1)(setq sheetnum (+ sheetnum 1)))
  1. (setq sheetnum (Getint "\nEnter sheet number"))
  2. (setq pdfname(strcat (getvar 'DWGPREFIX)(vl-filename-base (getvar 'DWGNAME)) "-" sheetnum))
回复

使用道具 举报

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:39:16 | 显示全部楼层
嗨,比格尔,
 
我使用你的代码得到错误
  1. (_> )
  2. C:TESTPRINT
  3. Command: TESTPRINT
  4. Enter sheet number:1
  5. ; error: bad argument type: stringp 1

也可以从1开始硬编码页码,这样用户就不必每次都输入页码。它将从第1页开始按顺序运行,直到用户取消该命令。
 
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:44:27 | 显示全部楼层
也许是这样。
  1. (defun c:Testprint (/ CM FD P1 P2 PDFNAME)
  2. (setq cm (getvar 'CMDECHO))
  3. (setvar 'CMDECHO 0)
  4. (setq fd (getvar 'filedia))
  5. (setvar 'filedia 0)
  6. (if (= sheetnum nil)
  7.    (setq sheetnum 1)
  8.    (setq sheetnum (+ sheetnum 1))
  9. )
  10. (while (and (setq p1 (getpoint "\nSpecify first corner <exit> : "))
  11.          (setq p2 (getcorner p1 "\nSpecify opposite corner <exit> : "))
  12.     )
  13.    (progn
  14.      (setq pdfname (strcat (getvar 'DWGPREFIX)
  15.                (vl-filename-base (getvar 'DWGNAME))
  16.                "-"
  17.                (itoa sheetnum)
  18.            )
  19.      )
  20.      (command "-plot"           "Y"           "model"
  21.           "DWG To PDF.pc3"               "ISO A4 (210.00 x 297.00 MM)"
  22.           "Millimeters"   "Landscape"     "Y"
  23.           "Window"           p1           p2
  24.           "Fit"           "0.00, 0.00"    "Y"
  25.           "monochrome.ctb"               "Y"
  26.           "Wireframe"     pdfname           "N"
  27.           "Y"
  28.          )
  29.      (setq sheetnum (+ sheetnum 1))
  30.    )
  31. )
  32. (setvar 'CMDECHO cm)
  33. (setvar 'filedia fd)
  34. (princ)
  35. )
HTH
亨里克
回复

使用道具 举报

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:51:01 | 显示全部楼层
谢谢亨里克的努力。
 
您提供的代码按顺序打印pdf文件名,但当我们取消并重新启动或在绘图中进行几次修改后的某个时间后打印时,该命令只需从它开始打印,直到之前结束。
 
例如,我们从一个文件中画出5个不同的页面,它以“file-name-5.pdf”结尾,当我们开始打印这些页面时,它以“file-name-6.pdf”开头。
 
我认为在scipt结束时,函数必须将sheetnum值置零。这可能会奏效。
 
 
另外,我尝试在下面的代码中匹配此代码,但未能成功。你能这样做吗?提前谢谢。
 
  1. ; Batch plot using object in landscape mode a4 sheet
  2. (defun prl ( mnp mxp /)
  3.    (setq cm (getvar 'CMDECHO))
  4.    (setvar 'CMDECHO 0)
  5.    (setq fd (getvar 'filedia))
  6.    (setvar 'filedia 0)
  7.    
  8.    (setq pdfname(strcat (getvar 'DWGPREFIX)(vl-filename-base (getvar 'DWGNAME))))
  9.        (command "-plot" "Y" "model" "DWG To PDF.pc3" "ISO A4 (210.00 x 297.00 MM)" "Millimeters" "Landscape" "Y" "Window" mnp mxp "Fit"
  10.     "0.00, 0.00" "Y" "monochrome.ctb" "Y" "Wireframe" pdfname "N" "Y")
  11.         
  12.    (setvar 'CMDECHO cm)
  13.    (setvar 'filedia fd)
  14.    
  15.         
  16. )
  17. ; Batch plot using object in portrait mode a4 sheet
  18. (defun prp ( mnp mxp /)
  19.    (setq cm (getvar 'CMDECHO))
  20.    (setvar 'CMDECHO 0)
  21.    (setq fd (getvar 'filedia))
  22.    (setvar 'filedia 0)
  23.    
  24.    (setq pdfname(strcat (getvar 'DWGPREFIX)(vl-filename-base (getvar 'DWGNAME))))
  25.        (command "-plot" "Y" "model" "DWG To PDF.pc3" "ISO A4 (210.00 x 297.00 MM)" "Millimeters" "Portrait" "N" "Window" mnp mxp "Fit"
  26.     "0.00, 0.00" "Y" "monochrome.ctb" "Y" "Wireframe" pdfname "N" "Y")
  27.         
  28.    (setvar 'CMDECHO cm)
  29.    (setvar 'filedia fd)
  30.    
  31.         
  32. )
  33. (defun c:pblock (/ ob ss bn mn mx)
  34.      (vl-load-com)
  35.            (if (and (progn
  36.                 (initget "B")
  37.           (setq ob (entsel "\nSelect rectangular Block/B for blockname: "))
  38.                (cond
  39.                ((eq ob "B")
  40.                    (setq bn (getstring "\nEnter rectangular block name: "))
  41.                    )
  42.                ((and (eq (type ob) 'LIST)
  43.               (vlax-method-applicable-p (vlax-ename->vla-object (car ob)) 'getboundingbox))
  44.                      (setq bn (cdr (assoc 2 (entget (car ob))))))))
  45. (tblsearch "BLOCK" bn)
  46.                bn     
  47.                (setq ss  (ssget "_X" (list '(0 . "INSERT")'(410 . "Model")(cons 2 bn))))
  48.                      )
  49.                   
  50.                
  51. (progn
  52.          (vla-zoomextents (vlax-get-acad-object))
  53.        (repeat (setq i (sslength ss))
  54.   (vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'mn'mx)
  55.   (setq mnp (trans (vlax-safearray->list mn) 0 1))
  56.      (setq mxp (trans (vlax-safearray->list mx) 0 1))
  57.      (if (< (car (mapcar '- mxp mnp)) (cadr (mapcar '- mxp mnp)))
  58.        (prp mnp mxp)
  59.        (prl mnp mxp)
  60.      )
  61.                 )
  62.          )
  63.          (princ "\nNo Blocks Selected: ")
  64.          )(princ)
  65.      )
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:58:34 | 显示全部楼层
您好nura235,
像这样的?
  1. 7

 
HTH公司
亨里克
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:08:27 | 显示全部楼层
下面是通过自动查找标题“块”在模型空间中绘制所有标题块的另一个示例。您可以做的额外事情之一是从标题块中提取图纸编号,并将其添加到文件名中。将需要标题栏dwg或块名称和属性标记名称来更改代码。我添加了一个更高版本的plot all,如plot by range,第4-7页,这可以添加,也可以在这里发布,但会找到布局,但方法相同。
 
  1. 8
回复

使用道具 举报

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:13:42 | 显示全部楼层
@hmsilva:谢谢你的时间和努力,你的代码按我的意愿为我工作。
 
@比格尔:感谢您和cadtutor论坛帮助我们这些不具备vlisp知识的人。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:20:06 | 显示全部楼层
不客气,nura235
很高兴我能帮忙
 
 
亨里克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:30 , Processed in 0.598705 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表