明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 896|回复: 3

[源码] 点集分组可用于路径计算

[复制链接]
发表于 2024-5-5 16:35:13 | 显示全部楼层 |阅读模式
本帖最后由 dcl1214 于 2024-5-7 05:47 编辑

很多直线构成的图纸中,从一点找其他点,或者是快速将点分组找到哪些线的端点在一起,本示例可以参考一下,如果谁有速度更快的方法,发上来切磋
本示例还可以找出孤岛线条
  1. (DEFUN $dian-ji-fen-zu$        (pts rc lst / a b fzd i pt-fzd zj zj-t)
  2.                                         ;点集分组
  3.                                         ;pts 很多的坐标数据
  4.                                         ;rc 容差
  5.   (or rc (setq rc 10))
  6.   (setq        pts (vl-sort pts
  7.                      (function (lambda (x y)
  8.                                  (< (car X) (car Y))
  9.                                )
  10.                      )
  11.             )
  12.   )                                        ;排序
  13.   (setq pts (vl-remove nil pts))
  14.   (setq pt-fzd nil)
  15.   (setq i 1)
  16.   (while (setq a (car pts))
  17.     (SETQ ZJ-T NIL)
  18.     (SETQ fzd NIL)
  19.     (SETQ zj NIL)
  20.     (setq old nil)
  21.     (setq old-cdr nil)                        ;每个点给一个编号
  22.     (cond
  23.       (
  24.        (and (setq
  25.               old (vl-some (function (lambda (b)
  26.                                        (if (<= (distance (cadr b) a) rc)
  27.                                          b
  28.                                        )
  29.                                      )
  30.                            )
  31.                            pt-fzd
  32.                   )
  33.             )
  34.             (setq fzd (car old))
  35.             (setq old-cdr (cdr old))
  36.             (setq old-cdr (cons a old-cdr))
  37.             (setq pt-fzd (vl-remove old pt-fzd))
  38.        )
  39.        (setq pt-fzd (cons (cons fzd old-cdr) pt-fzd))
  40.       )
  41.       (t
  42.        (if (> i 9)
  43.          (setq fzd (strcat "J" (ITOA i)))
  44.          (setq fzd (strcat "J0" (ITOA i)))
  45.        )
  46.        (setq pt-fzd (cons (cons fzd (list a)) pt-fzd))
  47.        (setq i (1+ i))
  48.       )
  49.     )
  50.     (setq pts (cdr pts))
  51.   )
  52.   (setq pt-fzd (reverse pt-fzd))
  53.   pt-fzd
  54. )


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-5-6 08:20:20 | 显示全部楼层
感谢杜总的分享!
发表于 2024-5-8 12:51:25 | 显示全部楼层
guosheyang 发表于 2024-5-6 08:20
感谢杜总的分享!

感谢分享
发表于 2024-5-9 11:11:33 | 显示全部楼层
有个实例就好理解了
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 17:21 , Processed in 0.181706 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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