求个端点合并的东东
一堆直线,如果有端点距离小于设定值,比如3mm时,端点就合到最近的一个点 高飞鸟有个神作,模糊归整,不知对你有没有用 自已整了一个,笨办法,一个个的找,我不熟悉算法,希望有大侠能优化(defun c:mint(/ CurDoc ient n if_txt);取得最近点
(vl-load-com)
(setq ss (ssget '((0 . "line"))))
(setq n 0 i (sslength ss) pt_lst '())
(repeat i
(setq ss_ent (entget (ssname ss n)))
(setq pt_start (cdr (assoc 10 ss_ent)) pt_end (cdr (assoc 11 ss_ent)))
(setq pt_lst (append pt_lst (list pt_start pt_end)))
(setq n (1+ n)))
(setq pt_lst (MJ:delsame pt_lst ))
;(princ "--------")
(setq n 0j 0ss_n 0)
(repeat (length pt_lst)
(setq pt01 (nth n pt_lst))
(setq j 0)
(repeat (sslength ss)
(setq ss_ent (entget (ssname ss j)))
(setq pt_start (cdr (assoc 10 ss_ent)) pt_end (cdr (assoc 11 ss_ent)))
(if(< (distance pt_startpt01) 5)
(progn
(setq ss_ent (subst (cons 10 pt01)(assoc 10ss_ent) ss_ent))
(entmod(setq ss_ent (subst (cons 62 4)(assoc 62ss_ent) ss_ent)))
(setqss_n (1+ss_n))
))
(if(< (distance pt_endpt01) 5)
(progn
(setq ss_ent (subst (cons 11 pt01)(assoc 11ss_ent) ss_ent))
(entmod(setq ss_ent (subst (cons 62 4)(assoc 62ss_ent) ss_ent)))
(setqss_n (1+ss_n))
))
(setq j (1+ j)))
(setq n (1+ n)))
(princ (strcat "\n共有 " (itoa ss_n) " 个对象微调..."))
(princ)
) 比哪两根线,共用一个点,但实际上这个点有一个小误差,得把这个点合并成一个点; myjping 发表于 2014-9-9 10:44 static/image/common/back.gif
自已整了一个,笨办法,一个个的找,我不熟悉算法,希望有大侠能优化
(defun c:mint(/ CurDoc ient n if ...
大侠,少函数啊。求提供 本帖最后由 dingtiedt 于 2016-5-24 21:05 编辑
删除(setq pt_lst (MJ:delsame pt_lst )) ,也能执行,有重复的线也能执行 解决了吗 谢谢解答
页:
[1]