回复 tm20038175 的帖子
 - ;;;==================================================================
- ;;;Sort_pList 点表按照xyz升序排序,并删除重点,参数:点表 容差精度
- ;;;用法: (Sort_pList '((1.005 2.007 3.002)(1 2 3) (1.001 2.002 3.001) (1.005 2.005 3.002)(1.005 2.008 3.002) (1.005 2.006 3.002)) 0.001)
- ;;;==================================================================
- (defun Sort_pList (plist fuzz / result p)
- (setq plist
- (vl-sort plist
- '(lambda (p1 p2)
- (cond ((and
- (< (car p1) (car p2))
- (not (equal (car p1) (car p2) fuzz))
- ) ;_ and
- T
- )
- ((and (equal (car p1) (car p2) fuzz)
- (< (cadr p1) (cadr p2))
- (not (equal (cadr p1) (cadr p2) fuzz))
- ) ;_ and
- T
- )
- ((and (equal (car p1) (car p2) fuzz)
- (equal (cadr p1) (cadr p2) fuzz)
- (< (caddr p1) (caddr p2))
- (not (equal (caddr p1) (caddr p2) fuzz))
- ) ;_ and
- T
- )
- (T nil)
- ) ;_ cond
- ) ;_ lambda
- ) ;_ vl-sort
- ) ;_ setq
- (while plist
- (setq p (car plist)
- result (cons p result)
- plist (cdr plist)
- )
- (while (and plist (equal p (car plist) fuzz))
- (setq plist (cdr plist))
- )
- )
- (reverse result)
- ) ;_ defun
|