Hello guys,
I've modified and created lisp, that creates layout with viewport zoomed to selected rectangle/block from modelspace.
But now I'm having issues with modifying its page setup. I'm not that good with vla or lisp at all, so I would appreciate any help!
Code:
;Creates Layouts, by predefining Sheetsize and Orientation,
; and continious frame picking(rectangle/block) with name input for each layout
(defun C:VLD_LAYOUT2 (/ OBJ1 SHTSIZE LNAME1 layoutObj ssVP)
(vl-load-com)
(setq acadApp (vlax-get-Acad-object))
(setq acadDoc (vla-get-ActiveDocument acadApp))
(setq layouts (vla-get-Layouts acadDoc))
(COMMAND "PSLTSCALE" "0")
;*PREDEFINING SHEETSIZE:
(initget "A4 A3 A2 A1 A0")
(setq SHTSIZE
(cdr
(assoc (cond ((getkword "\nChoose [A4/A3/A2/A1/A0] <A4>: ")) ("A4"))
'(
("A4" . "ISO full bleed A4 (297.00 x 210.00 MM)")
("A3" . "ISO full bleed A3 (420.00 x 297.00 MM)")
("A2" . "ISO full bleed A2 (594.00 x 420.00 MM)")
("A1" . "ISO full bleed A1 (841.00 x 594.00 MM)")
("A0" . "ISO full bleed A0 (841.00 x 1189.00 MM)")
)
)
)
)
;*PREDEFINING ORIENTATION:
; (initget "Landscape Portrait")
; (setq OR-LP (cond ((getkword "\nChoose [Landscape/Portrait] <Landscape>: ")) ("Landscape"))) ;Haven't figured out how to assign this to pagesetup
;*CONTINIOUS OBJECT SELECTION AND NAME INPUT FOR EACH LAYOUT:
(while (setq OBJ1 (ssget "_:S:E" '((0 . "INSERT,LWPOLYLINE"))))
(vla-getboundingbox (vlax-ename->vla-object (ssname OBJ1 0)) 'mn 'mx)
(setq LNAME1 (getstring "\nSpecify Layout name:"))
;*DELETE THE LAYOUT NAMED LNAME1 IF IT EXISTS:
(vlax-for objLayout layouts
(if (= (vla-get-name objLayout) LNAME1)
(progn
(princ
(strcat "\nDeleted Layout named "
(vla-get-name objLayout) "..."
)
)
(vla-delete objLayout) ;delete the Layout
(vlax-release-object objLayout) ; release the Layout Object
);progn
);if
) ;vlax-for
;*CREATE THE NEW LAYOUT, NAMED LNAME1:
(setq layoutObj (vla-add layouts LNAME1))
;*MAKE THE NEW LAYOUT ACTIVE:
(if (/= LNAME1 (getvar 'ctab))
(setvar 'ctab LNAME1)
)
; (vla-put-activelayout acadDoc layoutObj) ; Alternate vla method
; (COMMAND "_.LAYOUT" "NEW" LNAME1) ; Alternate non-vla method
; (COMMAND "_.LAYOUT" "SET" LNAME1) ; Alternate non-vla method
;*ASSIGN BLACK-GRAY-WHITE.CTB TO THE LAYOUT:
(vla-put-StyleSheet layoutObj "BLACK-GRAY-WHITE.CTB")
;*ASIGN DWF CONFIGURATION TO THE LAYOUT:
(if (= (substr (vlax-variant-value (vla-getvariable acadDoc "ACADVER")) 1 2) "15")
(vla-put-configname layoutObj "PublishToWeb DWF.pc3")
(vla-put-configname layoutObj "DWG To PDF.pc3")
) ;if
;*ASSIGN THE DEFINED SHEETSIZE TO THE LAYOUT:
(vla-put-canonicalmedianame layoutObj SHTSIZE)
;*DELETES THE INITIAL VIEWPORT, FROM THE CREATED LAYOUT:
(setq ssVP
(ssget "_x"
(list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))
)
)
(command "erase" ssVP "")
;*CREATES NEW VIEWPORT FOR THE LAYOUT:
(COMMAND "_.VPORTS" "FIT")
(COMMAND "_.MSPACE")
(command "_.ZOOM"
(trans (vlax-safearray->list mn) 0 1)
(trans (vlax-safearray->list mx) 0 1)
)
(COMMAND "_.PSPACE")
(COMMAND "_.CTAB" "MODEL")
) ;end of while
(princ)
)