注意:在ssget已经使用过滤条件后,后面就不需要再进行判断。
然后就是需要排序的。

- ;; 2006.06.30
- ;; by netbee [url]www.xdcad.net[/url]
- (defun c:wz (/ ss i ssn ssdata tlist)
- (setvar "cmdecho" 0)
- (princ "\n 选择文字")
- (setq ss (ssget '((0 . "text"))))
- (print)
- (princ "打印文字:")
- (print)
- (setq i 0)
- (repeat (sslength ss)
- (setq ssn (ssname ss i)
- ssdata (entget ssn)
- tlist (cons (cons (cdr (assoc 10 ssdata)) (cdr (assoc 1 ssdata)))
- tlist
- ) ;_ 结束cons
- i (1+ i)
- ) ;_ 结束setq
- ) ;_ end of repeat
- (setq tlist(vl-sort tlist
- (function (lambda (e1 e2)
- (cond
- ((=(cadar e1) (cadar e2));_先Y后X
- (< (caar e1);_在Y相等的条件下X从小到大
- (caar e2)
- )
- )
- (
- T
- (> ;_Y从大到小
- (cadar e1)
- (cadar e2)
- ) ;_ 结束twoof
- )
- ) ;_ 结束cond
- ) ;_ 结束lambda
- ) ;_ 结束function
- ) ;_ 结束vl-sort
- )
- (setq i 0)
- (repeat (length tlist)
- (princ "\n")
- (princ(cdr(nth i tlist)))
- (setq i(1+ i)))
- (princ "\n图元数量:")
- (princ i)
- (textscr)
- (princ)
- ) ;_ end of defun
|