排列也不难,只是你想按照什么逻辑排序? 排序后得到的结果只怕你仍然不能够直观的根据对象的位置来看出他们的顺序!!... 思路如下: ;;--------------------------------------------------------------- (defun c:test (/ ss enlst xlst) (if (setq ss (ssget)) (progn (setq enlst (vl-remove-if-not '(lambda (x) (= (type x) 'ename)) (mapcar 'cadr (ssnamex ss)) ) lelst (mapcar 'vlax-curve-getStartPoint enlst) ;;这里以起点为例 xlst (mapcar 'car lelst) ;;这里以 X 轴为例 ) (mapcar '(lambda (x / en) (list (setq en (nth n enlst)) (vlax-curve-getdistatparam en (vlax-curve-getendparam en)) ) ) (vl-sort-i xlst '<) ;;这里根据x轴值从小到大的顺序 ) ) ) ) ;;---------------------------------------------------------------------- 返回表根据曲线起点x轴值从小到大的顺序 ((曲线1 长度1) (曲线2 长度2) (曲线3 长度3) ... (曲线n 长度n)) |