本帖最后由 作者 于 2009-3-24 17:53:41 编辑
实际上楼主稍微用一下递归,就可以得到答案了(为什么不去尝试呢?)。再说我前面的帖子已经给出了相似的例子。 - (defun c:test2 (/ i ent sel obj lst)
- (setq *App (vlax-get-acad-object))
- (setq *Doc (vla-get-ActiveDocument *APP))
- (setq *BLK (vla-get-blocks *DoC))
- (setq i 0)
- (setq lst nil)
- (if (setq sel (ssget '((0 . "INSERT"))))
- (repeat (sslength sel)
- (setq ent (ssname sel i))
- (setq obj (vlax-ename->vla-object ent))
- (getname obj)
- (setq i (1+ i))
- )
- (princ "\n你没有选择物体!")
- )
- (princ lst)
- (princ)
- )
- (defun getname (obj / name blks)
- (setq name (vla-get-name obj))
- (if (not (member name lst))
- (setq lst (cons name lst))
- )
- (setq blks (vla-item *blk name))
- (vlax-for n blks
- (if (or
- (= (vla-get-objectname n) "AcDbBlockReference")
- (= (vla-get-objectname n) "AcDbMInsertBlock")
- )
- (getname n)
- )
- )
- )
|