感谢 xyp1964 分享学习!!!!
感谢分享,高手就是强!
谢谢分享,院长太
这么好的工具箱,需望可以用到啊
可惜学得太迟,院长出手果然不同凡响
;; xyp-Sort-PList 点集实体排序 (xyp-Sort-Plist lst mode) mode 1~10
(defun xyp-Sort-PList (lst mode / x y)
(defun aaa (lst fun1 fun2 / x y x1 x2 y1 y2)
(vl-sort lst
'(lambda (x y)
(setq x (trans (car x) 0 1)
y (trans (car y) 0 1)
x1 (car x)
x2 (car y)
y1 (cadr x)
y2 (cadr y)
)
(cond ((and (= x1 x2) (= y1 y2) (> (caddr x) (caddr y))) T)
((and (= y1 y2) (fun1 x1 x2)) T)
((fun2 y1 y2) T)
(T nil)
)
)
)
)
(defun bbb (lst fun1 fun2 / x y x1 x2 y1 y2)
(vl-sort lst
'(lambda (x y)
(setq x (trans (car x) 0 1)
y (trans (car y) 0 1)
x1 (car x)
x2 (car y)
y1 (cadr x)
y2 (cadr y)
)
(cond ((and (= x1 x2) (= y1 y2) (> (caddr x) (caddr y))) T)
((and (= x1 x2) (fun1 y1 y2)) T)
((fun2 x1 x2) T)
(T nil)
)
)
)
)
(cond ((= mode 1) (aaa lst < >)) ; 上→下,左→右
((= mode 2) (aaa lst > >)) ; 上→下,右→左
((= mode 3) (aaa lst < <)) ; 下→上,左→右
((= mode 4) (aaa lst > <)) ; 下→上,右→左
((= mode 5) (bbb lst > <)) ; 左→右,上→下
((= mode 6) (bbb lst < <)) ; 左→右,下→上
((= mode 7) (bbb lst > >)) ; 右→左,上→下
((= mode 8) (bbb lst < >)) ; 右→左,下→上
((= mode 9) (vl-sort lst '<)) ; 单一数值从小到大
((= mode 10) (vl-sort lst '>)) ; 单一数值从大到小
)
)
;; tt(圆孔排序8式)
(defun c:tt ()
(xyp-StartSc)
(setq ukw (Ukword 1
"1 2 3 4 5 6 7 8"
"1上下左右;2上下右左;3下上左右;4下上右左;5左右上下;6左右下上;7右左上下;8右左下上;"
ukw
)
)
(if (setq ss (ssget '((0 . "circle"))))
(progn
(setq lst (xyp-Ss2List ss)
ptn (mapcar '(lambda (x) (list (xyp-DXF 10 x) x)) lst)
)
(setq ptn (xyp-Sort-PList ptn (atoi ukw))
ptn (mapcar 'car ptn)
i 0
aa (mapcar '(lambda (x) (setq i (1+ i)) (xyp-Text 5 x (itoa i))) ptn)
)
)
)
(xyp-End)
)
从一楼一直走到底,院长辛苦了
感谢 xyp1964 分享学习!!!!