下面是一个快速示例:
- (defun c:foo (/ e msg out s tm)
- (cond
- ((setq s (ssget "_A" '((0 . "MTEXT,TEXT"))))
- (setq s (mapcar '(lambda (x) (cons x (strcase (cdr (assoc 1 (entget x))))))
- (mapcar 'cadr (ssnamex s))
- )
- )
- (setq out (ssadd))
- (while (setq e (car s))
- (setq s (cdr s))
- (if (setq tm (vl-remove-if-not '(lambda (x) (wcmatch (cdr e) (cdr x))) s))
- (progn
- (setq msg (cons (cons (cdr e) (1+ (length tm))) msg))
- (foreach x (append (list e) tm) (setq out (ssadd (car x) out)) (setq s (vl-remove x s)))
- )
- )
- )
- (sssetfirst nil out)
- (mapcar 'print (vl-sort msg '(lambda (a b) (< (car a) (car b)))))
- )
- )
- (princ)
- )
|