madcadder
2006-12-15, 08:24 PM
I have the following LISP that used to work perfect, but now my needs have changed.
The routine works great, but now I need it to add the descriptions I've added for the layers.
So, how can I grab the info from the descriptions to be added to the XLS file?
;;; Layer2xls.lsp
;;; by Tod Winn 05/05
;;; modified version of layerout.lsp Nov. 2001, Stig Madsen, no rights reserved
;;; changed file to create an XLS file and open it in Excel instead of a TXT
;;; file with NOTEPAD.
;;; LAYEROUT.LSP *
;;; Exports layer information to a simple tabulated text file *
;;; with the following format: *
;;; Name Status Frozen Locked Color LType LWeight Plot *
;;; *
(DEFUN printit (llay / tmp)
(SETQ props (LIST
(CDR (ASSOC 2 llay))
(IF (MINUSP (CDR (ASSOC 62 llay)))
"off"
"on"
)
(IF (= (LOGAND (CDR (ASSOC 70 llay)) 1))
"no"
"yes"
)
(IF (= (LOGAND (CDR (ASSOC 70 llay)) 4))
"no"
"yes"
)
(ABS (CDR (ASSOC 62 llay)))
(STRCASE (CDR (ASSOC 6 llay)) T)
(IF (< (SETQ tmp (CDR (ASSOC 370 llay))) 0)
"default"
(/ tmp 100.0)
)
(IF (= (CDR (ASSOC 290 llay)) 1)
"yes"
"no"
)
)
)
)
(DEFUN c:layer2xls (/) ; (/ lay fn alay layl props ask)
(IF (/= (GETVAR "FILEDIA") 1)
(PROGN
(SETQ fname (GETSTRING "File name: "))
(IF (/= (SUBSTR fname (- (STRLEN fname) 3) 4) ".XLS")
(SETQ fname (STRCAT fname ".XLS"))
)
)
(SETQ fname (GETFILED "Save text file" "" "XLS" 1)) ; "txt" 1))
)
(SETQ fn (OPEN fname "w"))
(SETQ lay (TBLNEXT "LAYER" T))
(WRITE-LINE
(STRCAT "\n" "Name" "\t" "Status" "\t" "Frozen" "\t" "Locked" "\t"
"Color" "\t" "LType" "\t" "LWeight" "\t" "Plot"
)
fn
)
(WHILE lay
(SETQ alay (TBLOBJNAME "LAYER" (CDR (ASSOC 2 lay)))
layl (ENTGET alay)
)
(SETQ props (printit layl))
(FOREACH n props
(PRINC n fn)
(PRINC "\t" fn)
)
(PRINC "\n" fn)
(SETQ lay (TBLNEXT "LAYER"))
)
(IF fn
(CLOSE fn)
)
(INITGET 1 "Y N _Yes No")
(SETQ ask (GETKWORD "Open file in EXCEL? Yes/<No>: "))
(IF (= ask "Yes")
(PROGN
(SETQ
program
"C:\\PROGRAM FILES\\MICROSOFT OFFICE\\OFFICE\\EXCEL.EXE"
)
;;; (SETQ fname (STRCAT "\42" fname "\42")) ;this works-opt B
;;; (SETQ fname (STRCAT (CHR 34) fname (CHR 34))) ;this works-opt C
;;; (STARTAPP program fname) ;this works-opt B & C
;;; (STARTAPP program (STRCAT "\42" fname "\42")) ;this works-opt D
(STARTAPP program (STRCAT (CHR 34) fname (CHR 34)))
)
)
(IF (SETQ tmp (FINDFILE fname))
(PRINC (STRCAT "Layer list saved as " tmp))
(PRINC (STRCAT "Layer list saved as " fname))
)
(PRINC)
)
The routine works great, but now I need it to add the descriptions I've added for the layers.
So, how can I grab the info from the descriptions to be added to the XLS file?
;;; Layer2xls.lsp
;;; by Tod Winn 05/05
;;; modified version of layerout.lsp Nov. 2001, Stig Madsen, no rights reserved
;;; changed file to create an XLS file and open it in Excel instead of a TXT
;;; file with NOTEPAD.
;;; LAYEROUT.LSP *
;;; Exports layer information to a simple tabulated text file *
;;; with the following format: *
;;; Name Status Frozen Locked Color LType LWeight Plot *
;;; *
(DEFUN printit (llay / tmp)
(SETQ props (LIST
(CDR (ASSOC 2 llay))
(IF (MINUSP (CDR (ASSOC 62 llay)))
"off"
"on"
)
(IF (= (LOGAND (CDR (ASSOC 70 llay)) 1))
"no"
"yes"
)
(IF (= (LOGAND (CDR (ASSOC 70 llay)) 4))
"no"
"yes"
)
(ABS (CDR (ASSOC 62 llay)))
(STRCASE (CDR (ASSOC 6 llay)) T)
(IF (< (SETQ tmp (CDR (ASSOC 370 llay))) 0)
"default"
(/ tmp 100.0)
)
(IF (= (CDR (ASSOC 290 llay)) 1)
"yes"
"no"
)
)
)
)
(DEFUN c:layer2xls (/) ; (/ lay fn alay layl props ask)
(IF (/= (GETVAR "FILEDIA") 1)
(PROGN
(SETQ fname (GETSTRING "File name: "))
(IF (/= (SUBSTR fname (- (STRLEN fname) 3) 4) ".XLS")
(SETQ fname (STRCAT fname ".XLS"))
)
)
(SETQ fname (GETFILED "Save text file" "" "XLS" 1)) ; "txt" 1))
)
(SETQ fn (OPEN fname "w"))
(SETQ lay (TBLNEXT "LAYER" T))
(WRITE-LINE
(STRCAT "\n" "Name" "\t" "Status" "\t" "Frozen" "\t" "Locked" "\t"
"Color" "\t" "LType" "\t" "LWeight" "\t" "Plot"
)
fn
)
(WHILE lay
(SETQ alay (TBLOBJNAME "LAYER" (CDR (ASSOC 2 lay)))
layl (ENTGET alay)
)
(SETQ props (printit layl))
(FOREACH n props
(PRINC n fn)
(PRINC "\t" fn)
)
(PRINC "\n" fn)
(SETQ lay (TBLNEXT "LAYER"))
)
(IF fn
(CLOSE fn)
)
(INITGET 1 "Y N _Yes No")
(SETQ ask (GETKWORD "Open file in EXCEL? Yes/<No>: "))
(IF (= ask "Yes")
(PROGN
(SETQ
program
"C:\\PROGRAM FILES\\MICROSOFT OFFICE\\OFFICE\\EXCEL.EXE"
)
;;; (SETQ fname (STRCAT "\42" fname "\42")) ;this works-opt B
;;; (SETQ fname (STRCAT (CHR 34) fname (CHR 34))) ;this works-opt C
;;; (STARTAPP program fname) ;this works-opt B & C
;;; (STARTAPP program (STRCAT "\42" fname "\42")) ;this works-opt D
(STARTAPP program (STRCAT (CHR 34) fname (CHR 34)))
)
)
(IF (SETQ tmp (FINDFILE fname))
(PRINC (STRCAT "Layer list saved as " tmp))
(PRINC (STRCAT "Layer list saved as " fname))
)
(PRINC)
)