这会将模型空间标题栏转换为图纸空间布局,然后您可以打印所有布局,这样就可以绕过打印所有问题,只重新定位标题栏,将所有其他对象留在模型空间中。如果你看这个,它也是一个布局的绘图范围。”http://www.cadtutor.net/forum/showthread.php?69132-正在打印LISP帮助&高亮显示=打印LISP。
- ; make layouts using title blocks from mspace
- ; by Alan H April 2017
- ; title blocks can be any scale
- ; this code is for metric and may need modification for feet
- ; the code is hard coded for a A1 title block with a mview window
- ; of 800x500
- ; the manual pick is to ensure layouts are created in correct order.
- ; the cnr1 is based on the size of the title block and correct mview size
- ; the L & H is outside title block size in true size
- ; use a cond to check for various title blocks
- (defun convmodel-pspace ( / L H cnr1 cnr2 cenx ceny obj obj1 objent ins xsc ysc cen laynum x lay)
- (setq L 801.0) ;sheet size
- (setq h 554.0)
- (setq cnr1 (list 1.0 51.0)) ; mview corners
- (setq cnr2 (list 800.0 553.0))
- (setq cenx 400.05) ; centre of mview
- (setq ceny 302.00)
- ; end of titleblock params
- (setq oldsnap (getvar "osmode"))
- (setvar "osmode" 0)
- ; pick title blocks
- (while (setq objent (car (entsel "\nPick title block")))
- (setq obj (vlax-ename->vla-object objent))
- (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint obj)))) ; expects lower left as insert
- (setq xsc (vla-get-xscalefactor obj))
- (setq ysc (vla-get-xscalefactor obj))
- (setq cen (list (+ (car ins) (* xsc cenx))(+ (cadr ins) (* ceny ysc)))) ;adjust cen pt to model co-ords
- (command "layout" "n" "")
- (setq alllayouts (vla-get-Layouts (vla-get-activedocument (vlax-get-acad-object))))
- (setq num 999) ; dummy max value
- (SETQ LAYNUM 0)
- (vlax-for x alllayouts
- (Setq laynum (+ 1 laynum))
- )
- (if (> num laynum)
- (setq num (- laynum 1))
- )
- (vlax-for lay alllayouts
- (if (= num (vla-get-taborder lay))
- (setvar "ctab" (vla-get-name lay))
- )
- )
- ; find any mviews and erase make sure to have a true blank layout found in testing
- (command "erase" "W" (list -100 -100)(list 1000 1000) "")
- (command "mview" (list -10 -10) (list 900 900)) ; new mview adjust for bigger sheet
- (setq objl (entlast))
- (command "zoom" "e")
- (command "mspace")
- (command "zoom" "c" ins 100)
- (command "chspace" objent "")
- (command "erase" objl "")
- (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint obj))))
- (command "move" objent "" ins (list 0 0)) ; put title block to 0,0
- (vla-put-xscalefactor obj 1) ; make title true size
- (vla-put-yscalefactor obj 1)
- (vla-put-zscalefactor obj 1)
- ; put correct layer here for mview
- (command "mview" cnr1 cnr2)
- (command "mspace")
- (command "zoom" "C" cen 1)
- (command "zoom" (strcat (rtos (/ 1.0 xsc) 2 0) "xp"))
- ; end of repeat
- (setvar "ctab" "Model")
- ) ; while
- (setvar "osmode" oldsnap)
- ) ; defun
- (convmodel-pspace)
|