这是一个批量打印成pdf文件的源码,希望那位大侠能帮我加一个对图框(从左到右再从上到下)排序的功能,谢谢了。 (vl-load-com) (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setvar "cmdecho" 0)
(defun c:pdf( / plotdevice minp maxp minpoint maxpoint tkname ourset ilast i my ent1 orientation) (setq plotdevice "pdfFactory") (print "select keytk" ) (SETQ keytk (car (entsel))) (while (or (null keytk) (/= (cdr (assoc '0 (entget keytk))) "INSERT")) (SETQ keytk (car (entsel))) ) (setq tkname (cdr (assoc '2 (entget keytk)) )) (alert (strcat "Do you want to print \" " tkname "\"?" )) (setq papersize "A3") (setq plotstyle "kongel.ctb") (command "ucs" "w") (print "Select what you want to print:") (SETQ ourset (ssget (list (cons 2 tkname)))) (while (null ourset) (SETQ ourset (ssget (list (cons 2 tkname)))) ) (setq ilast (sslength ourset)) (setq i 0)(setq iplot 0) (repeat ilast (setq my (ssname ourset i)) (setq ent1 (entget my)) (if (= (cdr (assoc '2 ent1) ) tkname) (progn (vla-getboundingbox (vlax-ename->vla-object my) 'minpoint 'maxpoint ) (setq minp (vlax-safearray->list minpoint)) (setq maxp (vlax-safearray->list maxpoint)) (if ( > (- (car maxp)(car minp))(- (cadr maxp)(cadr minp))) (setq orientation "landscape") (setq orientation "portrait")) (command "-plot" "y" "model" plotdevice papersize "Millimeters" orientation "no" "w" minp maxp "fit" "c" "y" plotstyle "y" "n" "n" "n" "y") (setq iplot (1+ iplot)) ) ) (setq i (1+ i)) ) (princ "\nThe total is:")(princ iplot) (print "over!!!") (princ) ) |