利用opecdcl的非模态对话框进行多文件批量处理(多图打印)
本帖最后由 war32 于 2018-12-5 17:36 编辑[*]利用odcl的非模态对话框,对dwg文件进行批量打印,打印全部采用vla的函数进行,非模态对话框运行时不能采用command命令,打印的通用函数见http://bbs.mjtd.com/thread-176453-1-1.html
[*]
[*]
[*];打印pdf
[*](defun c:dwgpichuli/Form1/plotpdf#OnClicked (/ acaddoc activedoc doc en end fenshu i listname lujing maxp minp shuxingbiaotilan tufu)
[*](setq acaddoc (vla-get-documents (vlax-get-acad-object)))
[*](setq activedoc (vla-get-activedocument (vlax-get-acad-object)))
[*](while (/= (dcl-ListView-GetCount dwgpichuli/Form1/ListView1) 0) ;当列表框内文件数量不为0时,依次打开文件
[*] (progn
[*] (setq doc (vla-open acaddoc(dcl-ListView-GetItemText dwgpichuli/Form1/ListView1 0 0)))
[*] ;转至多图打印函数
[*] (setq *filename* (getvar "dwgname"))
[*] (dayinpeizhi) ;读取打印配置的自定义文件,包含打印机设置和纸张设置信息等
[*]
[*] (setq en (ssget"X" '((0 . "INSERT")(410 . "Model")(2 . "A3,A4,A2,A1")))) ;选取块名为A3、A2、A4、A1的块用以判断图框
[*] (setq i 0)
[*] (repeat (sslength en)
[*] (setq end (ssname en i))
[*] (vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp)
[*] (setq minp (vlax-safearray->list minp)
[*] maxp (vlax-safearray->list maxp))
[*] ;判断纵向横向,l为横向,p为横向
[*] (setq p1 minp)
[*] (setq p2 maxp)
[*] (setq x1 (car p1) y1 (cadr p1) x2 (car p2) y2 (cadr p2))
[*] (setq x (abs (- x1 x2)) y (abs (- y1 y2)) )
[*] (if (> y x) (setq st "p") (setq st "l"))
[*]
[*] (setq fenshu (dcl_control_gettext dwgpichuli_Form1_TextBox1))
[*] (gm-dayin dayinjipdf tufu p1 p2"y" fenshu lujing T "n")
[*] (setq i (1+ i))
[*] )
[*]
[*] (vla-close doc :vlax-false)
[*] (dcl-ListView-DeleteItem dwgpichuli/Form1/ListView1 0) ;删除列表中已打印的文件
[*] )
[*])
[*])
本帖最后由 李钊伟2012 于 2020-4-13 16:19 编辑
感觉不错,有机会试试看 建议可以按属性识别图幅来自动完成批量打印(最好是动态属性块图框),这样做批打软件时就变得简单了,不知道可有QQ群进行交流
页:
[1]