Lisp lọc đối tượng block động:
(defun c:test(/ rn ssblk blkName)(vl-load-com)
(prompt "\nChon Block mau :")
(setq rn (lambda(x)(vla-get-EffectiveName (vlax-ename->vla-object x)))
blkName (rn (ssname (ssget ":S" (list (cons 0 "INSERT"))) 0)))
(prompt "\nChon khu vuc chua Block :")
(setq ssBlk (ssget (list (cons 0 "INSERT")(cons 2 (strcat "`*U*," blkName)))))
(mapcar '(lambda(x)(if (not (eq (rn x) blkName))(ssdel x ssblk)))
(mapcar 'cadr (vl-remove-if '(lambda(x)(listp (cadr x))) (ssnamex ssBlk)))) ;hoac thay bang acet neu thich nhe ^^
(sssetfirst nil ssBlk)
)
Nguồn bài viết :
https://www.cadviet.com/forum/topic/61169-y%C3%AAu-c%E1%BA%A7u-lisp-l%E1%BB%8Dc-c%C3%A1c-block-c%C3%B9ng-t%C3%AAn/Lisp lọc đối tượng block không động :
(defun C:locb1 ( / ten)
(setq ten (assoc 2 (entget (car (entsel "\nChon Block mau: ")))))
(princ "\nChon cac Block...")
(setq ss (ssget (list (cons 0 "INSERT") ten))))
(defun c:locb (/ rn ssblk blkName)(vl-load-com)
(prompt "\nChon Block mau :")
(setq rn (lambda(x)(vla-get-EffectiveName (vlax-ename->vla-object x)))
blkName (rn (ssname (ssget ":S" (list (cons 0 "INSERT"))) 0)))
(prompt "\nChon khu vuc chua Block :")
(setq ssBlk (ssget (list (cons 0 "INSERT")(cons 2 (strcat "`*U*," blkName)))))
(mapcar '(lambda(x)(if (not (eq (rn x) blkName))(ssdel x ssblk)))
(mapcar 'cadr (vl-remove-if '(lambda(x)(listp (cadr x))) (ssnamex ssBlk)))) ;hoac thay bang acet neu thich nhe ^^
(sssetfirst nil ssBlk)
)