stevesfr Posted June 4, 2009 Posted June 4, 2009 I've modified the following code found within this site. http://www.cadtutor.co.uk/forum/showthread.php?t=30175 to the following: ;Global ATTribute EXtractor ; ; by Miklos Fuccaro [email="mfuccaro@hotmail.com"]mfuccaro@hotmail.com[/email] ;-------------------------November 2004 ------- ;revised by Steveo May 2009 (defun gattex() (setq ss (ssget "X" '((0 . "INSERT") (66 . 1)))) (if (not ss) (quit)) (setq file (open "c:\\DWG\\RAKE.CSV" "a") i -1) (write-line (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") " -found " (itoa (sslength ss)) " block(s) with attributes") file) (repeat (sslength ss) (setq l (entget (setq e (ssname ss (setq i (1+ i)))))) (write-line (strcat "block name:" "," (cdr (assoc 2 l))) file) (while (/= (cdr (assoc 0 l)) "SEQEND") (if (= (cdr (assoc 0 l)) "ATTRIB") (write-line (strcat ",," (cdr (assoc 1 l)) "," (cdr (assoc 2 l))) file)) (setq l (entget (setq e (entnext e)))) ) ) (close file) (princ) ) (gattex) the revised code works fine for a block called Key-Item with two attributes, Item and Quantity. it "rakes" info to Excel nicely. However, I would like the program to sum quantities for like "items" before writting to Excel. For example; ITEM QUANTITY Hydrant 1 Hydrant 1 would like it to sum quantities before writting to Excel, so result is ITEM QUANTITY Hydrant 2 any thoughts on modification appreciated. (gone fishin' ) Steve Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 Give this a shot Steve: [i][color=#990099];; Summing Attributes Before Extraction[/color][/i] [i][color=#990099];; By Lee McDonnell[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:AttSum [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss ofile attlst x y lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"INSERT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]2[/color][/b] . [b][color=#ff00ff]"KEY-ITEM"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ofile [b][color=RED]([/color][/b][b][color=BLUE]open[/color][/b] [b][color=#ff00ff]"c:\\DWG\\RAKE.csv"[/color][/b] [b][color=#ff00ff]"a"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=#ff00ff]"ITEM,QUANTITY"[/color][/b] ofile[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] attlst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-sort[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x1 x2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] x1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] x2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-variant-value[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getAttributes[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] attlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] y lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] x lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] attlst [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] attlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] x lst [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]distof[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ofile[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<!> No Blocks Found <!>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
stevesfr Posted June 4, 2009 Author Posted June 4, 2009 Give this a shot Steve: [i][color=#990099];; Summing Attributes Before Extraction[/color][/i] [i][color=#990099];; By Lee McDonnell[/color][/i] [b][color=red]([/color][/b][b][color=blue]defun[/color][/b] c:AttSum [b][color=red]([/color][/b][b][color=blue]/[/color][/b] ss ofile attlst x y lst[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vl-load-com[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]if[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] ss [b][color=red]([/color][/b][b][color=blue]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=darkred]'[/color][/b][b][color=red]([/color][/b][b][color=red]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"INSERT"[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=#009900]2[/color][/b] . [b][color=#ff00ff]"KEY-ITEM"[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]progn[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] ofile [b][color=red]([/color][/b][b][color=blue]open[/color][/b] [b][color=#ff00ff]"c:\\DWG\\RAKE.csv"[/color][/b] [b][color=#ff00ff]"a"[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=#ff00ff]"ITEM,QUANTITY"[/color][/b] ofile[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] attlst [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]vla-get-TextString[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vl-sort[/color][/b] x [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x1 x2[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]<[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-get-TagString[/color][/b] x1[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-get-TagString[/color][/b] x2[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vlax-safearray->list[/color][/b] [b][color=red]([/color][/b][b][color=blue]vlax-variant-value[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-getAttributes[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]vlax-ename->vla-object[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]cadr[/color][/b] [b][color=red]([/color][/b][b][color=blue]ssnamex[/color][/b] ss[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]while[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] x [b][color=red]([/color][/b][b][color=blue]car[/color][/b] attlst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]if[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] y [b][color=red]([/color][/b][b][color=blue]assoc[/color][/b] [b][color=red]([/color][/b][b][color=blue]car[/color][/b] x[b][color=red])[/color][/b] lst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] lst [b][color=red]([/color][/b][b][color=blue]subst[/color][/b] [b][color=red]([/color][/b][b][color=blue]append[/color][/b] y [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b] y lst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] lst [b][color=red]([/color][/b][b][color=blue]cons[/color][/b] x lst[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] attlst [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] attlst[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]foreach[/color][/b] x lst [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=red]([/color][/b][b][color=blue]strcat[/color][/b] [b][color=red]([/color][/b][b][color=blue]car[/color][/b] x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]rtos[/color][/b] [b][color=red]([/color][/b][b][color=blue]apply[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]+[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]distof[/color][/b] [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] ofile[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]princ[/color][/b] [b][color=#ff00ff]"\n<!> No Blocks Found <!>"[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]princ[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] Before writting dwg data to Excel file, I need to write on first line of respective data, the drawing name and path, (write-line (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") then at end of data need to write line like --------------------------------------------- to separate data from next drawing to be appended to same file, over and over for subsequent drawings from same family of drawing set. Why is Excel file locked and read only? never saw this before when acad is open? need to unlock it. seems its only unlocked when acad is completely shut down? (fish is on line, now to reel it in !!! ) Steve Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 Before writting dwg data to Excel file, I need to write on first line of respective data, the drawing name and path,(write-line (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") then at end of data need to write line like --------------------------------------------- to separate data from next drawing to be appended to same file, over and over for subsequent drawings from same family of drawing set. Why is Excel file locked and read only? never saw this before when acad is open? need to unlock it. seems its only unlocked when acad is completely shut down? (fish is on line, now to reel it in !!! ) Steve Sorry about read-only - forgot to include a line to close file (amateur mistake)... Is the data writing properly though? Are the quantities correct? Did you want me to make your dinner too? a thank you would only be 9 keystrokes you know... Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 Try this: [i][color=#990099];; Summing Attributes Before Extraction[/color][/i] [i][color=#990099];; By Lee McDonnell[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:AttSum [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss ofile attlst x y lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"INSERT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]2[/color][/b] . [b][color=#ff00ff]"KEY-ITEM"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ofile [b][color=RED]([/color][/b][b][color=BLUE]open[/color][/b] [b][color=#ff00ff]"c:\\DWG\\RAKE.csv"[/color][/b] [b][color=#ff00ff]"a"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"DWGPREFIX"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"DWGNAME"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ofile[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=#ff00ff]"ITEM,QUANTITY"[/color][/b] ofile[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] attlst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-sort[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x1 x2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] x1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] x2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-variant-value[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getAttributes[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] attlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] y lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] x lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] attlst [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] attlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] x lst [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]distof[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ofile[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=#ff00ff]"-----,-----"[/color][/b] ofile[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]close[/color][/b] ofile[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<!> No Blocks Found <!>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
Commandobill Posted June 4, 2009 Posted June 4, 2009 Sorry about read-only - forgot to include a line to close file (amateur mistake)... Is the data writing properly though? Are the quantities correct? Did you want me to make your dinner too? a thank you would only be 9 keystrokes you know... If your already making dinner... lol You know Lee there comes a time were you need to let them figure out the rest on their own... especially when it's (close ofile) Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 If your already making dinner... lol You know Lee there comes a time were you need to let them figure out the rest on their own... especially when it's (close ofile) I know what you mean Bill, - but when I know exactly what the answer is, why not just put them out of their misery...? Quote
Commandobill Posted June 4, 2009 Posted June 4, 2009 Before writting dwg data to Excel file, I need to write on first line of respective data, the drawing name and path,(write-line (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") then at end of data need to write line like --------------------------------------------- to separate data from next drawing to be appended to same file, over and over for subsequent drawings from same family of drawing set. Why is Excel file locked and read only? never saw this before when acad is open? need to unlock it. seems its only unlocked when acad is completely shut down? (fish is on line, now to reel it in !!! ) Steve so honestly you couldnt figure out how to put that info into the lisp? I dont mean to be mean you said you tweaked the last lisp... if that were true then you should know how to add in the dwg name, add a seperating line and how to close the file... just saying you shouldnt need the fish's help to reel it in... Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 so honestly you couldnt figure out how to put that info into the lisp? I dont mean to be mean you said you tweaked the last lisp... if that were true then you should know how to add in the dwg name, add a seperating line and how to close the file... just saying you shouldnt need the fish's help to reel it in... What is with the "fish" reference anyway? Am I metaphorically the "fish"? Quote
Commandobill Posted June 4, 2009 Posted June 4, 2009 I know what you mean Bill, - but when I know exactly what the answer is, why not just put them out of their misery...? well you could always do what freerefill does to me and just give them an analogy and not the full answer... lol they always amuse me. Quote
Commandobill Posted June 4, 2009 Posted June 4, 2009 What is with the "fish" reference anyway? Am I metaphorically the "fish"? hmm perhaps i should have said 'you shouldnt need the current to help you reel in the fish' in that case you would be the current and the lisp would be the fish and the old lisp was the bait... hmm still doesnt work... oh well he kept saying he was (fishing) so i had to try... lol Quote
Freerefill Posted June 4, 2009 Posted June 4, 2009 Ah, thankfully, I don't need to make one up this time, I can just use a classic one. Give a man a fish, he eats for a day. Teach a man to fish, he eats for a lifetime. Quote
stevesfr Posted June 4, 2009 Author Posted June 4, 2009 Try this: [i][color=#990099];; Summing Attributes Before Extraction[/color][/i] [i][color=#990099];; By Lee McDonnell[/color][/i] [b][color=red]([/color][/b][b][color=blue]defun[/color][/b] c:AttSum [b][color=red]([/color][/b][b][color=blue]/[/color][/b] ss ofile attlst x y lst[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vl-load-com[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]if[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] ss [b][color=red]([/color][/b][b][color=blue]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=darkred]'[/color][/b][b][color=red]([/color][/b][b][color=red]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"INSERT"[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=#009900]2[/color][/b] . [b][color=#ff00ff]"KEY-ITEM"[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]progn[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] ofile [b][color=red]([/color][/b][b][color=blue]open[/color][/b] [b][color=#ff00ff]"c:\\DWG\\RAKE.csv"[/color][/b] [b][color=#ff00ff]"a"[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=red]([/color][/b][b][color=blue]strcat[/color][/b] [b][color=red]([/color][/b][b][color=blue]getvar[/color][/b] [b][color=#ff00ff]"DWGPREFIX"[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]getvar[/color][/b] [b][color=#ff00ff]"DWGNAME"[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] ofile[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=#ff00ff]"ITEM,QUANTITY"[/color][/b] ofile[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] attlst [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]vla-get-TextString[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vl-sort[/color][/b] x [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x1 x2[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]<[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-get-TagString[/color][/b] x1[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-get-TagString[/color][/b] x2[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=red]([/color][/b][b][color=blue]function[/color][/b] [b][color=red]([/color][/b][b][color=blue]lambda[/color][/b] [b][color=red]([/color][/b]x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]vlax-safearray->list[/color][/b] [b][color=red]([/color][/b][b][color=blue]vlax-variant-value[/color][/b] [b][color=red]([/color][/b][b][color=blue]vla-getAttributes[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]vlax-ename->vla-object[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]cadr[/color][/b] [b][color=red]([/color][/b][b][color=blue]ssnamex[/color][/b] ss[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]while[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] x [b][color=red]([/color][/b][b][color=blue]car[/color][/b] attlst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]if[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] y [b][color=red]([/color][/b][b][color=blue]assoc[/color][/b] [b][color=red]([/color][/b][b][color=blue]car[/color][/b] x[b][color=red])[/color][/b] lst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] lst [b][color=red]([/color][/b][b][color=blue]subst[/color][/b] [b][color=red]([/color][/b][b][color=blue]append[/color][/b] y [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b] y lst[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] lst [b][color=red]([/color][/b][b][color=blue]cons[/color][/b] x lst[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]setq[/color][/b] attlst [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] attlst[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]foreach[/color][/b] x lst [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=red]([/color][/b][b][color=blue]strcat[/color][/b] [b][color=red]([/color][/b][b][color=blue]car[/color][/b] x[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]rtos[/color][/b] [b][color=red]([/color][/b][b][color=blue]apply[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]+[/color][/b] [b][color=red]([/color][/b][b][color=blue]mapcar[/color][/b] [b][color=darkred]'[/color][/b][b][color=blue]distof[/color][/b] [b][color=red]([/color][/b][b][color=blue]cdr[/color][/b] x[b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] ofile[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]write-line[/color][/b] [b][color=#ff00ff]"-----,-----"[/color][/b] ofile[b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]close[/color][/b] ofile[b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]princ[/color][/b] [b][color=#ff00ff]"\n<!> No Blocks Found <!>"[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] [b][color=red]([/color][/b][b][color=blue]princ[/color][/b][b][color=red])[/color][/b][b][color=red])[/color][/b] Lee, this is Perfect !!! sums correctly, (and for those ready to sit down to a delicious din din, say Grace !) Many thanks... I guess not everyone read the first post where I was indeed trying to fish. Thanks for prodding the fish toward my hook mate ! Steve Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 Well, I'm glad it works ok for your Steve - I was just a bit put-out that, after my first code post, I only received more requests in a response. Quote
stevesfr Posted June 4, 2009 Author Posted June 4, 2009 Well, I'm glad it works ok for your Steve - I was just a bit put-out that, after my first code post, I only received more requests in a response. :oops:I do owe you an apology for being so ungrateful. You have always been most helpful to all here. This is the greatest place to browse and learn. (Troll and fish !) Yes the previous posted saying is what its all about. If I'm not home, I've gone "fishing". Steve Quote
Lee Mac Posted June 4, 2009 Posted June 4, 2009 :oops:I do owe you an apology for being so ungrateful. You have always been most helpful to all here. This is the greatest place to browse and learn. (Troll and fish !) Yes the previous posted saying is what its all about. If I'm not home, I've gone "fishing".Steve Apology accepted Steve, and I do enjoy writing these LISPs, but it is always nice to hear that what you have written is appreciated After all, like other forum members, I volunteer my time and effort to assist those who visit CADTutor without benefit of renumeration, and so a thank you is always an appreciated return Thanks, Lee Quote
kheajohn Posted September 4, 2010 Posted September 4, 2010 can someone PLEASEhelp me. I have a similar request or wish which is to automatically extract a specified block name from multiple drawings into excel or *.csv Say the attribute block name is G-TB-INFO. Quote
Lee Mac Posted September 4, 2010 Posted September 4, 2010 Search for Global Attribute Extractor. Quote
Tekenmeester Posted October 5, 2010 Posted October 5, 2010 PS: you can also use CADTools for this. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.