;;;result
;;;(
;;;(JB2X23X40X100X20X8 (a6 a17))
;;;(JB2X23X50X100X20X8 (a12 a5))
;;;(JB2X26X50X120X40X10 (a9 a15 a18))
;;;(JB1X30X60X150X40X16 (a19 a16 a11 a4))
;;;(JB2X30X60X150X40X16 (a7 a10 a14 a20))
;;;(JB1X26X50X120X40X10 (a13 a8 a2))
;;;(JB3X40X60X155X40X16 (a21))
;;;(JB1X22X40X100X20X8 (a3 a1))
;;
(defun c:test( / )
(setq aa
(list
(list "JB1X22X40X100X20X8" "a1")
(list"JB1X26X50X120X40X10" "a2")
(list"JB1X22X40X100X20X8" "a3")
(list"JB1X30X60X150X40X16" "a4")
(list"JB2X23X50X100X20X8" "a5")
(list"JB2X23X40X100X20X8" "a6")
(list"JB2X30X60X150X40X16" "a7")
(list"JB1X26X50X120X40X10" "a8")
(list"JB2X26X50X120X40X10" "a9")
(list"JB2X30X60X150X40X16" "a10")
(list"JB1X30X60X150X40X16" "a11")
(list"JB2X23X50X100X20X8" "a12")
(list"JB1X26X50X120X40X10" "a13")
(list"JB2X30X60X150X40X16" "a14")
(list"JB2X26X50X120X40X10" "a15")
(list"JB1X30X60X150X40X16" "a16")
(list"JB2X23X40X100X20X8" "a17")
(list"JB2X26X50X120X40X10" "a18")
(list"JB1X30X60X150X40X16" "a19")
(list"JB2X30X60X150X40X16" "a20")
(list"JB3X40X60X155X40X16" "a21")
)
)
(setq b (item_sort aa))
(princ b)
(princ)
)
(defun item_sort ( l / c l r x e aa ll)
(while l (setq x (caar l)
e (cons (cadar l) e)
l (cdr l)
)
(foreach y l
(if (= (car y) x)
(setq e (cons (cadr y) e))
(setq ll (cons y ll))
)
)
(setq aa (cons (list x e) aa) l ll e nil ll nil)
)
aa
)
Maybe I didn't express clearly.I hope this result.Can optimize a (item_sort)?