明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: `中微子

[提问] 又遇到一个表处理难题,请高手解决。顺带学习学习。

[复制链接]
发表于 2023-8-15 17:18:01 | 显示全部楼层
`中微子 发表于 2023-8-15 16:16
请看9楼,也有同样的容差问题。求解决。辛苦了!!

(and (equal (+ (car e) (cadr e)) (car (nth (+ d i 1) waco))0.01)
               (= (caddr e) (caddr (nth (+ d i 1) waco)))
          )
 楼主| 发表于 2023-8-15 20:50:51 | 显示全部楼层
gaics 发表于 2023-8-15 17:18
(and (equal (+ (car e) (cadr e)) (car (nth (+ d i 1) waco))0.01)
               (= (caddr e) (caddr (nth ...

谢谢!成了,又多学习一个函数。
发表于 2023-8-16 06:53:52 | 显示全部楼层
本帖最后由 vitalgg 于 2023-8-16 06:57 编辑

  1. (setq waco1
  2. '((0 468.548 1) (468.548 1332.85 1) (3041.5 675.413 4) (5396.91 547.939 3) (5944.85 360.787 3) (7145.64 278.132 3) (7423.77 991.957 3) (8415.73 468.926 4)))
  3. (princ "原表:")(princ waco1)
  4. ;; 按色号排序并分组
  5. (setq waco1 (vl-sort
  6.               waco1
  7.               '(lambda (x y)
  8.                  (<
  9.                    (last x)
  10.                    (last y)))))
  11. (setq waco1 (list:group-by
  12.               waco1
  13.               '(lambda (x y)
  14.                  (=
  15.                    (last x)
  16.                    (last y)))))
  17. ;; 组内起点从小到大排序
  18. (setq waco1 (mapcar
  19.               '(lambda (x)
  20.                  (vl-sort
  21.                    x
  22.                    '(lambda (m n)
  23.                       (< (car m) (car n)))))
  24.               waco1))
  25. ;; (princ "\n排序表:")(princ waco1)

  26. ;; 合并同色且连续的,即前一个的起点+长度 >= 紧临表的起点
  27. (defun join-line (lst / res fuzz)
  28.   (setq fuzz 0.01)
  29.   (setq res (cons (car lst) nil))
  30.   (while (setq lst (cdr lst))
  31.     (if
  32.       (and
  33.         (setq f (car res))
  34.         (>= (+ (+ (car f) (cadr f)) fuzz) (caar lst)))
  35.       (setq res (cons
  36.                   (list
  37.                     (caar res)
  38.                     (max
  39.                       (+ (cadar lst) (- (caar lst) (caar res)))
  40.                       (cadar res))
  41.                     (last (car res)))
  42.                   (cdr res)))
  43.       (setq res (cons (car lst) res))))
  44.   (reverse res)
  45. )
  46. (princ "\n结果:")(princ (apply 'append (mapcar 'join-line waco1)))
  47. (princ)


非得有现成的函数才会用容差吗?
(>= (+ (+ (car f) (cadr f)) fuzz) (caar lst)))








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2023-8-17 00:24:03 | 显示全部楼层
vitalgg 发表于 2023-8-16 06:53
非得有现成的函数才会用容差吗?
(>= (+ (+ (car f) (cadr f)) fuzz) (caar lst)))

谢谢!高手的代码改起来一下子糊涂了
发表于 2023-8-18 22:32:53 来自手机 | 显示全部楼层
overkill命令用一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 02:44 , Processed in 0.147436 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表