cabinsummer 发表于 2011-10-30 10:32
我不去编程,只是给你个思路。
1、用(ssget "X" (list '(0 . "TEXT")(cons 1 特征字符)))选择
2、针对不同 ...
非常感谢,看看下面的代码最后一段看怎么改改- ;; ! ***************************************************************************
- ;; ! TBC:Sort
- ;; ! ***************************************************************************
- ;; ! 功 能 : 按数字大小排序.
- ;; ! 参 数 : lst需排序的表,func排序方式。“'<”为升序,“'>”为降序。
- ;; ! 返回值 : 'Lst' - is a list of LL and UR
- ;; ! 说 明 : 适用 AutoCAD 2000+
- ;; ! from : tengte
- ;; ! Web : http://bbs.mjtd.com/thread-79299-1-1.html
- ;; ! ****************************************************************************
- (defun TBC:Sort (lst func / Split CompFunc tmp)
- (defun Split (str / tmp i n p x len lst1 lst)
- (setq tmp (vl-string->list str)
- lst1 (mapcar '(lambda (x) (and (<= 48 x) (<= x 57))) tmp)
- n (length lst1)
- i 0
- ) ;_ 结束setq
- (while (< i n)
- (setq x (nth i lst1)
- i (1+ i)
- ) ;_ 结束setq
- (if (= i 1)
- (setq p 1
- len 1
- ) ;else
- (if (= x (nth (- i 2) lst1))
- (setq len (1+ len)) ;else
- (setq tmp (substr str p len)
- tmp (if x
- tmp
- (atoi tmp)
- ) ;_ 结束if
- lst (append lst (list tmp))
- p i
- len 1
- ) ;_ 结束setq
- ) ;if
- ) ;if
- ) ;while
- (if (> n 0)
- (setq tmp (substr str p len)
- tmp (if x
- (atoi tmp)
- tmp
- ) ;_ 结束if
- lst (append lst (list tmp))
- ) ;_ 结束setq
- ) ;_ 结束if
- lst
- ) ;_ 结束defun
- (defun CompFunc (lst1 lst2 / tmp do flag i n el1 el2 typ1 typ2)
- (setq i 0
- n (min (length lst1) (length lst2))
- do T
- ) ;_ 结束setq
- (while (and do (<= i n))
- (setq el1 (nth i lst1)
- typ1 (type el1)
- el2 (nth i lst2)
- typ2 (type el2)
- i (1+ i)
- ) ;_ 结束setq
- (if (= typ1 typ2)
- (setq do (= el1 el2)
- flag (eval (list func el1 el2))
- ) ;else
- (setq do nil
- flag (or (= typ1 'nil) (= typ2 'STR))
- ) ;_ 结束setq
- ) ;if
- ) ;while
- flag
- ) ;_ 结束defun
- (setq tmp (mapcar 'Split lst)
- tmp (vl-sort-i tmp 'CompFunc)
- tmp (mapcar '(lambda (x) (nth x lst)) tmp)
- ) ;_ 结束setq
- tmp
- ) ;_ 结束defun
- (setq bb '(("G0.1" "G0.2" "G0.3") ("G0.4" "G0.5" "G0.6") ("G10" "G8" "G6")("G5" "G3" "G1")))
- (vl-string-right-trim
- "-"
- (apply 'strcat
- (mapcar '(lambda (x) (strcat x "-"))
- (mapcar '(lambda (x)
- (car x)
- ) ;_ 结束lambda
- (mapcar '(lambda (x) (TBC:Sort x '>))
- (apply 'mapcar (cons 'list bb))
- ;得到转置矩阵
- ) ;_ 结束mapcar;对转置矩阵进行排序
- ) ;_ 结束mapcar;提取排序后最大值表
- ) ;_ 结束mapcar
- ) ;_ 结束apply;连接字符串
- ) ;_ 结束vl-string-right-trim;删除最后的"-"
|