点集分组可用于路径计算
本帖最后由 dcl1214 于 2024-5-7 05:47 编辑很多直线构成的图纸中,从一点找其他点,或者是快速将点分组找到哪些线的端点在一起,本示例可以参考一下,如果谁有速度更快的方法,发上来切磋
本示例还可以找出孤岛线条
(DEFUN $dian-ji-fen-zu$ (pts rc lst / a b fzd i pt-fzd zj zj-t)
;点集分组
;pts 很多的坐标数据
;rc 容差
(or rc (setq rc 10))
(setq pts (vl-sort pts
(function (lambda (x y)
(< (car X) (car Y))
)
)
)
) ;排序
(setq pts (vl-remove nil pts))
(setq pt-fzd nil)
(setq i 1)
(while (setq a (car pts))
(SETQ ZJ-T NIL)
(SETQ fzd NIL)
(SETQ zj NIL)
(setq old nil)
(setq old-cdr nil) ;每个点给一个编号
(cond
(
(and (setq
old (vl-some (function (lambda (b)
(if (<= (distance (cadr b) a) rc)
b
)
)
)
pt-fzd
)
)
(setq fzd (car old))
(setq old-cdr (cdr old))
(setq old-cdr (cons a old-cdr))
(setq pt-fzd (vl-remove old pt-fzd))
)
(setq pt-fzd (cons (cons fzd old-cdr) pt-fzd))
)
(t
(if (> i 9)
(setq fzd (strcat "J" (ITOA i)))
(setq fzd (strcat "J0" (ITOA i)))
)
(setq pt-fzd (cons (cons fzd (list a)) pt-fzd))
(setq i (1+ i))
)
)
(setq pts (cdr pts))
)
(setq pt-fzd (reverse pt-fzd))
pt-fzd
)
感谢杜总的分享! guosheyang 发表于 2024-5-6 08:20
感谢杜总的分享!
:D-感谢分享 有个实例就好理解了
谢谢
页:
[1]