Got it working...here is my final routine:
Special thanks to Tim Willey and Marko Ribar.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Print Xref Nesting ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;http://www.theswamp.org/index.php?topic=28062.msg337119#msg337119
;;; Tim Willey
;;; Marko Ribar
;;; Prints nested xref tree to command line, no matter how deep the nesting.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun PrintXrefNestingIT (/ mainfilter filter
opened projectDesc projectName
datestring
)
(defun ARCH:ProjectName ()
(setq DirPath (getvar "dwgprefix"))
(setq ProjectNum (substr DirPath 14 6))
(setq ARCH#PROJ (substr DirPath 14 6))
(cond ((/= (atoi ProjectNum) 0) (setvar "users1" ProjectNum)))
(cond ((/= (getvar "users1") 0)
(setq ProjectName
(dos_getini
"PROJECTS"
(getvar "users1")
(strcat ARCH#CUSF "FILE/ARCH_Projects.ini")
)
)
)
)
(cond ((= ProjectName nil) (setq ProjectDesc ""))
((/= ProjectName nil)
(setq projectDesc
(strcat " Project Name : [" ProjectName "]")
)
)
)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun ARCH:DATE2 (/ DATST MON DAY YEAR HRS)
(setq DATST (rtos (getvar "CDATE") 2 16)
MON (substr DATST 5 2)
DAY (substr DATST 7 2)
YEAR (substr DATST 1 4)
HRS (atoi (substr DATST 10 2))
)
(cond ((= MON "01") (setq MON2 "January"))
((= MON "02") (setq MON2 "Feburary"))
((= MON "03") (setq MON2 "March"))
((= MON "04") (setq MON2 "April"))
((= MON "05") (setq MON2 "May"))
((= MON "06") (setq MON2 "June"))
((= MON "07") (setq MON2 "July"))
((= MON "08") (setq MON2 "August"))
((= MON "09") (setq MON2 "September"))
((= MON "10") (setq MON2 "October"))
((= MON "11") (setq MON2 "November"))
((= MON "12") (setq MON2 "December"))
)
(cond ((= HRS 00) (setq NHRS (itoa (+ HRS 12))) (setq XTR "a.m."))
((< HRS 12) (setq NHRS (itoa HRS)) (setq XTR "a.m."))
((= HRS 12) (setq NHRS (itoa HRS)) (setq XTR "p.m."))
((> HRS 12) (setq NHRS (itoa (- HRS 12))) (setq XTR "p.m."))
)
(setq datestring
(strcat MON2
" "
DAY
", "
YEAR
" "
NHRS
":"
(substr DATST 12 2)
" "
XTR
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq mainfilter
(getstring
T
"\n* Input prefix filter for Main Xrefs: [BL*] "
)
)
(if (= mainfilter "")
(setq mainfilter "BL*")
)
(setq filter
(getstring T
"\n* Input prefix filter for Nested Xrefs: [UT*]"
)
)
(if (= filter "")
(setq filter "UT*")
)
(prompt "* Please Wait while the Program is Running...")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun nestedxrefcount (mainname nestedname / bl item)
(setq bl (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
)
)
(vlax-for item bl
(if (= (vla-get-name item) mainname)
(progn
(setq n 0)
(vlax-for xr item
(if
(= (vl-catch-all-apply 'vla-get-EffectiveName (list xr))
nestedname
)
(setq n (1+ n))
)
)
)
)
)
n
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun FilterNestedXrefs
(lst mainfilter filter / ifillst inewlst newlst)
(foreach i lst
(if (and (atom (car i))
(wcmatch (strcase (cdr (assoc 2 (entget (car i)))))
(strcase mainfilter)
)
)
(progn
(if (listp (cdr i))
(progn
(setq ifillst (filternested (cdr i) filter))
(setq inewlst (cons (car i) ifillst))
(setq newlst (cons inewlst newlst))
)
(setq newlst (cons i newlst))
)
)
)
)
(reverse newlst)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun filternested (lst filter / newlst ii)
(foreach i lst
(setq ii i)
(if (and (atom (car i))
(wcmatch (strcase (cdr (assoc 2 (entget (car i)))))
(strcase filter)
)
)
()
(setq ii nil)
)
(cond ((listp (cdr i)) (filternested (cdr i) filter))
((and (atom (cdr i))
(wcmatch (strcase (cdr (assoc 2 (entget (cdr i)))))
(strcase filter)
)
)
()
(setq ii nil)
)
((eq (cdr i) nil) nil)
)
(setq newlst (cons ii newlst))
)
(reverse newlst)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun GetXrefNesting (/ tempData
tempEnt XrefList
NonNestedXrefList
NestedXrefList
)
(defun GetXrefInfo (ent / NestList)
(foreach i (member '(102 . "{BLKREFS") (entget ent))
(if (equal (car i) 332)
(progn
(setq NestedList (cons (cdr i) NestedList))
(setq NestList
(cons
(cons
(cdr i)
(GetXrefInfo (cdr i))
)
NestList
)
)
)
)
)
NestList
)
(while (setq tempData (tblnext "block" (not tempData)))
(if (equal (logand (cdr (assoc 70 tempData)) 4) 4)
(progn
(setq tempEnt (tblobjname "block" (cdr (assoc 2 tempData))))
(setq tempEnt (cdr (assoc 330 (entget tempEnt))))
(setq XrefList
(cons
(cons
tempEnt
(GetXrefInfo tempEnt)
)
XrefList
)
)
)
)
)
(foreach i XrefList
(if (not (member (car i) NestedList))
(setq NonNestedXrefList (cons i NonNestedXrefList))
)
)
NonNestedXrefList
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(ARCH:DATE2)
(ARCH:ProjectName)
(setq FileName (substr (getvar "dwgname")
1
(- (strlen (getvar "dwgname")) 4)
)
)
(setq Opened (open (strcat (getvar "dwgprefix")
FileName
" PrintXrefNesting.txt"
)
"w"
)
)
(write-line
"----------------------------------------------------------------------"
opened
)
(write-line projectDesc opened)
(write-line
(strcat " Directory is: ["
(getvar "dwgprefix")
FileName
"]"
)
opened
)
(write-line (strcat " " datestring) opened)
(write-line
"----------------------------------------------------------------------"
opened
)
(defun PrintNestedList (lst spc mainname)
(foreach
i
(vl-sort
lst
(function
(lambda (a b)
(<
(strcase (cdr (assoc 2 (entget (car a)))))
(strcase (cdr (assoc 2 (entget (car b)))))
)
)
)
)
(if (and (not (listp (car i))) (car i))
(write-line
(strcat ""
spc
" Nested xref: "
(cdr (assoc 2 (entget (car i))))
" - "
(itoa (nestedxrefcount
mainname
(cdr (assoc 2 (entget (car i))))
)
)
)
opened
)
(prompt (strcat "\n" spc " Nested xref: nil"))
)
(PrintNestedList
(if (cdr i)
(cdr i)
nil
)
(strcat "" spc)
(cdr (assoc 2 (entget (car i))))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(foreach
i
(vl-sort
(FilterNestedXrefs (GetXrefNesting) mainfilter filter)
(function
(lambda (a b)
(<
(strcase (cdr (assoc 2 (entget (car a)))))
(strcase (cdr (assoc 2 (entget (car b)))))
)
)
)
)
(write-line
(strcat "\n\n [ ] Main xref: "
(cdr (assoc 2 (entget (car i))))
" - "
(itoa (sslength (ssget "_X"
(list '(0 . "INSERT")
(assoc 2 (entget (car i)))
(cons 410 (getvar 'ctab))
)
)
)
)
)
opened
)
(PrintNestedList
(if (cdr i)
(cdr i)
nil
)
" >"
(cdr (assoc 2 (entget (car i))))
)
)
;;(vl-filename-base (getvar "dwgname"))
;;(setq FileName (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
;;(startapp "notepad.exe" (strcat "\\Arch " ARCH#PROJ FileName " PrintXrefNesting.txt"))
;;(startapp "notepad.exe" (strcat (getvar "dwgprefix") FileName " PrintXrefNesting.txt"))
(if Opened
(close Opened)
)
(startapp "notepad.exe"
(strcat (getvar "dwgprefix")
FileName
" PrintXrefNesting.txt"
)
)
(princ)
)
(vl-load-com)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(princ)
Example of output file:
----------------------------------------------------------------------
Project Name : [Lakes @ University Park]
Directory is: [F:\Jobs\2008\080331\acad\building\BL-Profile1]
December 10, 2011 7:17 p.m.
----------------------------------------------------------------------
[ ] Main xref: BL-01 - 2
> Nested xref: UTB2-1119 - 6
> Nested xref: UTB5-1048 - 2
[ ] Main xref: BL-02 - 2
> Nested xref: UTA2-692 - 4
> Nested xref: UTA2-692-HC - 2
> Nested xref: UTA4-697 - 8
> Nested xref: UTA6-899 - 1
> Nested xref: UTA7-969 - 1
> Nested xref: UTA8-697 - 2
> Nested xref: UTA9-697 - 2
> Nested xref: UTB1-969 - 6
> Nested xref: UTB2a-1119 - 2
> Nested xref: UTB4-1258 - 4
[ ] Main xref: BL-03 - 1
> Nested xref: UTA1-599a - 8
> Nested xref: UTA1-599b - 8
> Nested xref: UTA3-893 - 8
[ ] Main xref: BL-04 - 1
> Nested xref: UTA5-899 - 8
> Nested xref: UTB3-936 - 12
[ ] Main xref: BL-05 - 1
> Nested xref: UTA1-599a - 8
> Nested xref: UTA1-599b - 8
> Nested xref: UTA3-893 - 8