如何获取图块名列表?
如何获取图块名列表?一个dwg文件中可能存在有多个图块,但这些图块不一定已插入在图档中,如何得到所有的图块名列表,而不是仅仅得到已插入图档的图块名列表?
已插入的图块名列表,可以通过全选 ,再通过组码来遍历得到,但是未插入的图块名列表如何得到?
(tblsearch table-name symbol )
Andyhon 发表于 2015-1-14 22:29 static/image/common/back.gif
(tblsearch table-name symbol )
长老 晓之以情 动之以理. 给方法.
支持~~~ (defun c:lstlay ()
(while (setq laylst (tblnext "LAYER" (not laylst)))
(write-line (cdr(assoc 2 laylst))
)
(princ)
) ;;获取所有的图块名
(defun getblklist (/ TblList BlkList)
(setq TblList (tblnext "block" 't))
(while TblList
(setq BlkList (cons (cdr (assoc 2 TblList)) BlkList)) ;if
(setq TblList (tblnext "block"))
) ;while
BlkList
)
以上程序由LTools 提供,非常好用,同时也谢谢各位朋友的回答。 另版本参考
;;; 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)
)
页:
[1]