我这里也有别人的代码分享下,是用两个函数完成的
-
- (defun test ( block )
- (ssget
- (list
- (cons 0 "INSERT")
- (cons 2
- (
- (lambda ( s )
- (foreach anon (LM:AnonymousInstancesof block)
- (setq s (strcat s ",`" anon))
- )
- s
- )
- block
- )
- )
- )
- )
- )
- (defun LM:AnonymousInstancesof ( block / def rec nme ref lst )
- (while (setq def (tblnext "BLOCK" (null def)))
- (if (= 1 (logand 1 (cdr (assoc 70 def))))
- (progn
- (setq rec
- (entget
- (cdr
- (assoc 330
- (entget
- (tblobjname "BLOCK" (setq nme (cdr (assoc 2 def))))
- )
- )
- )
- )
- )
- (while (setq ref (assoc 331 rec))
- (if
- (and
- (eq block (vla-get-effectivename (vlax-ename->vla-object (cdr ref))))
- (not (member nme lst))
- )
- (setq lst (cons nme lst))
- )
- (setq rec (cdr (member (assoc 331 rec) rec)))
- )
- )
- )
- )
- (reverse lst)
- )
最后调用(test "动态块块名"),返回选择集 这是leemac的,但是在图中有表格的时候会没有反应,我自己又重写了一个。 |