如果模型空间中有多种格式,则在任何情况下都必须打开图形。这是选择框架所必需的。
可以一次打印所有内容,并指定打印设置,但需要您的示例进行检查。
附上文件示例。 这会将模型空间标题栏转换为图纸空间布局,然后您可以打印所有布局,这样就可以绕过打印所有问题,只重新定位标题栏,将所有其他对象留在模型空间中。如果你看这个,它也是一个布局的绘图范围。”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)
页:
1
[2]