请问版主及各位高手们: 目前我所编写的程序, 为何在执行排序种类"A~D"都会发生, 某些编号排列错误呢? 是否可帮忙看一下问题出在哪里呢? 谢谢~
附上发生问题的图片及DWG档案~

程序如下: ;;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;;排序种类副程式
(defun ar_sort_a () (setq y_sort_list (vl-sort lst '(lambda (1% 2%) (> (cadr (nth 0 1%)) (cadr (nth 0 2%))) )) ) (setq lst (vl-sort y_sort_list '(lambda (1% 2%) (< (car (nth 0 1%)) (car (nth 0 2%))) )) ) )
(defun ar_sort_b () (setq y_sort_list (vl-sort lst '(lambda (1% 2%) (< (cadr (nth 0 1%)) (cadr (nth 0 2%))) )) ) (setq lst (vl-sort y_sort_list '(lambda (1% 2%) (< (car (nth 0 1%)) (car (nth 0 2%))) )) ) )
(defun ar_sort_c () (setq y_sort_list (vl-sort lst '(lambda (1% 2%) (> (cadr (nth 0 1%)) (cadr (nth 0 2%))) )) ) (setq lst (vl-sort y_sort_list '(lambda (1% 2%) (> (car (nth 0 1%)) (car (nth 0 2%))) )) ) )
(defun ar_sort_d () (setq y_sort_list (vl-sort lst '(lambda (1% 2%) (< (cadr (nth 0 1%)) (cadr (nth 0 2%))) )) ) (setq lst (vl-sort y_sort_list '(lambda (1% 2%) (> (car (nth 0 1%)) (car (nth 0 2%))) )) ) )
(defun ar_sort_e () (setq x_sort_list (vl-sort lst '(lambda (1% 2%) (< (car (nth 0 1%)) (car (nth 0 2%)))))) (setq lst (vl-sort x_sort_list '(lambda (1% 2%) (> (cadr (nth 0 1%)) (cadr (nth 0 2%)))))) )
(defun ar_sort_f () (setq x_sort_list (vl-sort lst '(lambda (1% 2%) (< (car (nth 0 1%)) (car (nth 0 2%)))))) (setq lst (vl-sort x_sort_list '(lambda (1% 2%) (< (cadr (nth 0 1%)) (cadr (nth 0 2%)))))) )
(defun ar_sort_g () (setq x_sort_list (vl-sort lst '(lambda (1% 2%) (> (car (nth 0 1%)) (car (nth 0 2%)))))) (setq lst (vl-sort x_sort_list '(lambda (1% 2%) (> (cadr (nth 0 1%)) (cadr (nth 0 2%)))))) )
(defun ar_sort_h () (setq x_sort_list (vl-sort lst '(lambda (1% 2%) (> (car (nth 0 1%)) (car (nth 0 2%)))))) (setq lst (vl-sort x_sort_list '(lambda (1% 2%) (< (cadr (nth 0 1%)) (cadr (nth 0 2%)))))) ) ;;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (defun c:test () (vl-load-com) (setq ss (ssget '((0 . "insert") (66 . 1)))) (setq K (getint "\n 设定起始号码:")) (setq n -1) (setq lst '()) (setq x_sort_list '()) (setq y_sort_list '()) (repeat (sslength ss) (setq blkobj (vlax-ename->vla-object (ssname ss (setq n (1+ n))))) (foreach obj (vlax-invoke blkobj 'getattributes) (setq lst (append lst (if (= (vla-get-tagstring obj) "NU") (list (list(vlax-get obj 'insertionpoint)obj)) ) ) ;_ 结束append ) ;_ 结束setq ) ;_ 结束foreach ) ;_ 结束repeat
;;;+++++++++++++++++++++++++++++++ (princ "\n 排序方式") (princ "\n <Y方向>") (princ "\n (A)左->右&上->下_(B)左->右&下->上_(C)右->左&上->下_(D)右->左&下->上") (princ "\n <X方向>") (princ "\n (E)上->下&左->右_(F)下->上&左->右_(G)上->下&右->左_(H)下->上&右->左") (princ "<")(princ sf)(princ ">:")
(initget "a b c d e f g h ") (setq sf1 (getkword)) (if (null sf1) (setq sf1 sf) ) (cond ((= sf1 "a")(ar_sort_a)) ((= sf1 "b")(ar_sort_b)) ((= sf1 "c")(ar_sort_c)) ((= sf1 "d")(ar_sort_d)) ((= sf1 "e")(ar_sort_e)) ((= sf1 "f")(ar_sort_f)) ((= sf1 "g")(ar_sort_g)) ((= sf1 "h")(ar_sort_h)) )
;;;+++++++++++++++++++++++++++++++ ;;写入排序后的属性数值 (foreach ent lst (setq obj (cadr ent)) (vla-put-textstring obj k) (setq k (1+ k)) ) ;;;+++++++++++++++++++++++++++++++ (prin1)) |