本帖最后由 kucha007 于 2023-4-13 09:31 编辑
这个函数可以去除列表中的重复元素
- ;删除列表中重复的元素
- (defun K:DelSame (Lst)
- (if Lst (cons (car Lst) (K:DelSame (vl-remove (car Lst) (cdr Lst)))))
- )
但这样用,输出的结果却没有任何变化,有大佬知道是为什么吗?
- (setq ss (ssget "F" (list (setq StaPt (getpoint)) (setq EndPt (getpoint)))));获取栏选选择集
- (setq IniLst
- (vl-remove-if-not
- '(lambda (x) (<= (distance x StaPt) (+ 10.0 (distance StaPt EndPt))))
- (vl-sort
- (apply 'append (mapcar '(lambda (x) (mapcar 'cadr (cdddr x))) (ssnamex ss)));获取栏选交点
- '(lambda (x y) (< (distance StaPt x) (distance StaPt y)));离起点越近越靠前
- );交点排序
- );过滤点:排除大于最大距离的点
- )
- (setq NewLst (K:DelSame IniLst));输出的结果没有删除重复项
|