Message 1 of 4
Extract Excel Data from multiple drawings
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Dear all,
I came across the below LISP routine, which helps me extract the table contents from multiple AutoCAD drawings in an excel.
I further wish to customize this LISP routine to extract a specific table from all the drawings. This table will have a certain common name (Say, e.g. List of Elements). Can anyone suggest how to improvise this change in the LISP routine?
I got this routine from this forum.
(defun c:Exp_Table ( / sh folder folderobject result en eo fname f row col str n qt NO)
(vl-load-com)
(setq sh (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ))
(setq folder (vlax-invoke-method sh 'BrowseForFolder 0 "Browse The Folder Containing Drawings" 0))
(vlax-release-object sh)
(if folder
(progn
(setq fname (getstring T "Enter file path to exported data: "))
(if (setq f (open fname "a"))
(progn
(setq SDI_Val (getvar "SDI") LISPI_Val (getvar "LISPINIT"))
(vl-cmdf "SDI" 1)
(vl-cmdf "LISPINIT" 0)
(setq FolderObject (vlax-get-property folder 'Self))
(setq result (vlax-get-property FolderObject 'Path))
(vlax-release-object folder)
(vlax-release-object FolderObject)
(setq Files_Folder (vl-directory-files result "*.dwg"))
(command "save" (strcat (getvar "dwgprefix") (getvar "dwgname")) "Y")
(setq n 0)
(while (< n (length Files_Folder))
(command "fileopen" (strcat result "\\" (nth n Files_Folder)))
(setq qt 0)
(if (setq ss (ssget "_X" '((0 . "ACAD_TABLE"))))
(progn
(repeat (setq NO (sslength ss))
(setq en (ssname ss (setq NO (1- NO))))
(setq eo (vlax-ename->vla-object en))
(princ (strcat "\n" (getvar 'DWGNAME) " - Table - " (itoa (setq qt (1+ qt))) "\n\n\n") f)
(setq row -1)
(while (< (setq row (1+ row)) (vla-get-Rows eo))
(setq col -1 str "")
(while (< (setq col (1+ col)) (vla-get-Columns eo))
(setq str (strcat str ",\"" (vla-GetText eo row col) "\""))
)
(princ (substr str 2) f)
(princ "\n" f)
)
)
)
)
(setq n (+ 1 n))
)
(vl-cmdf "SDI" SDI_Val)
(vl-cmdf "LISPINIT" LISPI_Val)
(close f)
)
)
)
)
)