另版本参考
- ;;; http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/scan-blocks-and-nested-blocks/td-p/3014594/page/2
- (defun c:ScanBlocks (/ foo efName name def)
- (vl-load-com)
- (defun foo (pref blk)
- (vlax-for o blk
- (if
- (and
- (= (vla-get-ObjectName o) "AcDbBlockReference")
- (setq name (vla-get-Name o)
- efName (vlax-get
- o
- (if (vlax-property-available-p o 'EffectiveName)
- 'EffectiveName
- 'Name
- )
- )
- )
- (setq def (vla-item *blocks* efName))
- (= (vla-get-IsXref def) :vlax-false)
- )
- (progn
- (princ
- (strcat
- "\n"
- pref
- """
- name
- """
- (if (/= name efName)
- (strcat "(" efName ")")
- ""
- )
- )
- )
- (foo (strcat " " pref) def)
- )
- ""
- )
- )
- )
- (or *acad* (setq *acad* (vlax-get-acad-object)))
- (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
- (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*)))
- (vlax-for b *blocks*
- (if (and (= (vla-get-IsXref b) :vlax-false)
- (= (vla-get-IsLayout b) :vlax-false)
- )
- (progn
- (princ (strcat "\n\n_"" (vla-get-Name b) """))
- (foo " |_" b)
- )
- )
- )
- (textscr)
- (princ)
- )
|