动态图块的出现,是在CAD2006以后的事情了,相信楼主也知道CAD2000以后的visualLISP 函数就一直没有增强。
ssget 函数也一样。
用遍历选择集后处理的办法,效率应该不会低到哪里去。
- (defun SSGET-DYNBLK->ENTS (SS NAME / E ENTS N)
- ;; By carrot1983 11/13/10
- (repeat (setq N (sslength SS))
- (and (setq E (ssname SS (setq N (1- N))))
- (setq O (vlax-ename->vla-object E))
- (= (vla-get-isdynamicblock O) :vlax-true)
- (= (vla-get-effectivename O) NAME)
- (setq ENTS (cons E ENTS))
- )
- )
- ENTS
- )
(defun C:TT ()
(setq SS (ssget '((0 . "INSERT"))))
(setq ENTS (SSGET-DYNBLK->ENTS SS "树 - 英制"))
(print ENTS)
(princ)
)
|