使用distanc查找点对
您好lisp masters。我在这里搜索了很多,但找不到可以识别的lisp几乎是重复点,我发现的是重复查找器。假设我需要知道哪些点距离小于5米(或任何数字公差)。我们总是收到包含许多GPS XY坐标的图纸,其中包含大量的多个观测值/坐标,应将其视为一个。我们需要精确的计数。
谢谢你的帮助。 我把这个移到了AutoLISP、Visual LISP和DCL论坛。 你为什么不把你的画贴出来,你想要的结果是什么? ------->进一步的测试导致无法给出准确的计数
(defun c:test(/ seek fuzz cnt i plst)
(vl-load-com)
(defun seek(pt fz lst / sk lst)
(setq sk (ssget "_C"
(polar pt (* pi 0.25) (* fz (sqrt 2)))
(polar pt (* pi 1.25) (* fz (sqrt 2)))
'((0 . "POINT"))))
(repeat (sslength sk)
(setq lst (cons (ssname sk 0) lst))
(ssdel (ssname sk 0) sk))
lst
)
(if (and (setq fuzz (getdist "\nEmter Fuzz Value: "))
(setq plst nil
cnt0
ss (ssget "_X" (list '(0 . "POINT")(cons 410 (getvar 'Ctab))))))
(progn (vla-zoomextents (vlax-get-acad-object))
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i))))
(if (not (member en plst))
(setq plst (seek (cdr (assoc 10
(entget en)))
fuzz
plst)
cnt(1+ cnt))(entmod (subst (cons 8 "DuplicatePoints")
(assoc 8 (entget en)) (entget en))))
)
(princ (strcat "\n"
(itoa cnt)
" Points Found")))
)
(princ)
)
更新为包括在图层“DuplicatePoints”上放置重复项
:::::代码故障:::::: 我会尝试:
(defun c:findpt(/fuzz ss bp ps en pp);ts是全局(initget 7)(setq fuzz(getdist color=#2f4f4f]“\n公差距离:“)(和color=NAVY](。princ“\n选择基点:”[1(setq bp(cdr(assoc 10(entget(ssname ss 0)[蓝】(setq ps(ssget“_C”(list(-(car bp)fuzz b](-cadr bpfuzz)(list((car bp)fuzz(cadr bp)fuzz b]“[颜色=绿色]((0.“POINT”(setq ts(ssadd)[(而(setq en(ssname ps 0)(setq pp(cdr(assoc 10(entget en)b](和(不是(等于bp pp)( 你说得有道理,大卫。。。
我去看看。tnx公司 这里有一种“分而治之”的方法:
(定义c:ptcount(/a b d e f i s x y)(设定值f 5.0;;公差d’(8“$DUPLICATE-POINTS$”);;重复点层)(if(setq s(ssget“_X”'((0。“点”)(410。“模型”)))(progn(setq a(vl sort(repeat(setq i(sslength s))(setq e(entget(ssname s(setq i(1-i)))a(cons(cons(cdr(assoc 10 e))e)a)))'(lambda(a b) ( 更新了代码
与使用距离函数的Davids和LMs代码不同。我选择使用llist来控制选择,这样我就不需要考虑Z值。但仍然需要设置osmode,当前的缩放将是一个因素。 坦克好家伙pBe,大卫,李,我试试。
@这是我的问题。。
http://www.4shared.com/photo/tTI3tUks/AcadDup.html @LM。可以提示输入新图层的公差和颜色吗?
如果不是太多的要求。谢谢
你的工作很好。我只是将“setq f 5”更改为其他数字以获得容差
页:
[1]
2