sumulong
2007-06-07, 12:08 AM
I'm trying to import a layout into a number of drawings and was thinking that I can just change a few codes from this lisp I got from this forum. I was hoping that it would have been this simple. Here's the code.
;;; Main program, command: batchjob
(defun c:BatchJob (/ dwgs file dwgName scrFile folderName)
(setq folderName
(browsefolder "Select folder to perform batch job: ")
)
(setq dwgs (vl-directory-files folderName "*.dwg"))
(setq scrFile (open (strcat folderName "\\batchJob.scr (file://batchJob.scr/)") "w"))
(foreach file dwgs
(setq dwgName (strcat "\"" folderName "\\" file "\""))
(write-line ".Open" scrFile)
(write-line dwgName scrFile)
(write-line "_layout t N:/test/changed/107i03202-1_00.dwg" scrfile)
(write-line ".zoom e" scrFile)
(write-line "CLOSE " scrFile)
)
(close scrFile)
(command ".script" (strcat folderName "\\batchJob.scr (file://batchJob.scr/)"))
(princ)
)
;;; Function to browse folder
;;; This code was originally posted by kpblc2000 in AUGI AutoLisp Forum
;;;
(defun browsefolder (title / shlobj folder fldobj)
(vl-load-com)
(setq
shlobj (vla-getinterfaceobject
(vlax-get-acad-object)
"Shell.Application"
)
folder (vlax-invoke-method shlobj 'browseforfolder 0 title 0)
)
(vlax-release-object shlobj)
(if folder
(progn
(setq
fldobj (vlax-get-property folder 'self)
folderName (vlax-get-property fldobj 'path)
)
(vlax-release-object folder)
(vlax-release-object fldobj)
folderName
)
)
)
(princ "\nBatchJob is loaded, Type BatchJob to run.")
(princ)
;;; Main program, command: batchjob
(defun c:BatchJob (/ dwgs file dwgName scrFile folderName)
(setq folderName
(browsefolder "Select folder to perform batch job: ")
)
(setq dwgs (vl-directory-files folderName "*.dwg"))
(setq scrFile (open (strcat folderName "\\batchJob.scr (file://batchJob.scr/)") "w"))
(foreach file dwgs
(setq dwgName (strcat "\"" folderName "\\" file "\""))
(write-line ".Open" scrFile)
(write-line dwgName scrFile)
(write-line "_layout t N:/test/changed/107i03202-1_00.dwg" scrfile)
(write-line ".zoom e" scrFile)
(write-line "CLOSE " scrFile)
)
(close scrFile)
(command ".script" (strcat folderName "\\batchJob.scr (file://batchJob.scr/)"))
(princ)
)
;;; Function to browse folder
;;; This code was originally posted by kpblc2000 in AUGI AutoLisp Forum
;;;
(defun browsefolder (title / shlobj folder fldobj)
(vl-load-com)
(setq
shlobj (vla-getinterfaceobject
(vlax-get-acad-object)
"Shell.Application"
)
folder (vlax-invoke-method shlobj 'browseforfolder 0 title 0)
)
(vlax-release-object shlobj)
(if folder
(progn
(setq
fldobj (vlax-get-property folder 'self)
folderName (vlax-get-property fldobj 'path)
)
(vlax-release-object folder)
(vlax-release-object fldobj)
folderName
)
)
)
(princ "\nBatchJob is loaded, Type BatchJob to run.")
(princ)