Okay, so I got bored, and wanted to see how easy it would be, and it wasn't very hard to do.
(defun c:XrefFindv02 (/ *error* FindXrefs GetAllFiles CkStr DirPath DwgList DiaRtn Opened dbxApp oVer tempFile)
; This will search the directory selected, and all subdirectories to find the xref name entered.
; The xref name is not case sensitive, and can be entered as a partial string; ie *-a-*
; will work.
; The text file will be placed in the directory selected, and it will only list drawings that had
; xref names match the string, or had an error upon opening.
(defun *error* (msg)
(if dbxApp (vlax-release-object dbxApp))
(setq dbxApp nil)
(if Opened (close Opened))
(if msg
(prompt (strcat "\n Error --> " msg))
)
)
;----------------------------------------------------------
(defun FindXrefs (doc str / tempName tempList)
(vlax-for i (vla-get-Blocks doc)
(if
(and
(= (vla-get-IsXref i) :vlax-true)
(or
(wcmatch (strcase (setq tempName (vla-get-Name i))) (strcase str))
(= str "")
)
)
(setq tempList (cons tempName tempList))
)
)
tempList
)
;-------------------------------------------------
(defun Directory-Dia ( Message / sh folder folderobject result)
;; By Tony Tanzillo
;; Modified by Tim Willey
;; 16 Will let you type in the path
;; 64 Will let you create a new folder
(vl-load-com)
(setq sh
(vla-getInterfaceObject
(vlax-get-acad-object)
"Shell.Application"
)
)
(setq folder
(vlax-invoke-method
sh
'BrowseForFolder
(vla-get-HWND (vlax-get-Acad-Object))
Message
0 ; This is the bit number to change.
)
)
(vlax-release-object sh)
(if folder
(progn
(setq folderobject
(vlax-get-property folder 'Self)
)
(setq result
(vlax-get-property FolderObject 'Path)
)
(vlax-release-object folder)
(vlax-release-object FolderObject)
(if (/= (substr result (strlen result)) "\\")
(setq result (strcat result "\\"))
result
)
)
)
)
;----------------------------------------------------------------
(defun GetAllFiles (dir ext / FileList)
(if (/= (substr dir (strlen dir)) "\\")
(setq dir (strcat dir "\\"))
)
(if (setq tempList (vl-directory-files dir ext 1))
(setq FileList (append FileList (mapcar '(lambda (x) (strcat dir x)) tempList)))
)
(if (setq tempList (cddr (vl-directory-files dir "*" -1)))
(foreach i tempList
(setq FileList (append FileList (GetAllFiles (strcat dir i) ext)))
)
)
FileList
)
;----------------------------------------------------------------
(if
(and
(setq CkStr (getstring "\n Enter name to check for [*]: "))
(setq DirPath (Directory-Dia "Select directory to search for xrefs."))
(setq DwgList (GetAllFiles DirPath "*.dwg"))
(setq Opened (open (setq tempFile (strcat Dirpath "XrefFindReport.txt")) "w"))
(setq dbxApp
(if (< (atoi (setq oVer (substr (getvar "acadver") 1 2))) 16)
(vla-GetInterfaceObject (vlax-get-acad-object) "ObjectDBX.AxDbDocument")
(vla-GetInterfaceObject (vlax-get-acad-object) (strcat "ObjectDBX.AxDbDocument." oVer))
)
)
)
(foreach i DwgList
(if (vl-catch-all-error-p (vl-catch-all-apply 'vla-Open (list dbxApp i)))
(write-line (strcat "++ Error opening file: " i "\n") Opened)
(if (setq XrFound (FindXrefs dbxApp CkStr))
(progn
(write-line (strcat "- " i) Opened)
(foreach j XrFound
(write-line (strcat " " j) Opened)
)
(write-line "\n" Opened)
)
)
)
)
)
(prompt (strcat "\n Log file: " tempFile))
(*error* nil)
(princ)
)