乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 90|回复: 12

[编程交流] 使用distanc查找点对

[复制链接]

13

主题

39

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:09:27 | 显示全部楼层 |阅读模式
您好lisp masters。我在这里搜索了很多,但找不到可以识别的lisp
几乎是重复点,我发现的是重复查找器。假设我需要知道哪些点距离小于5米(或任何数字公差)。我们总是收到包含许多GPS XY坐标的图纸,其中包含大量的多个观测值/坐标,应将其视为一个。我们需要精确的计数。
谢谢你的帮助。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 08:18:59 | 显示全部楼层
我把这个移到了AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
243
发表于 2022-7-6 08:21:02 | 显示全部楼层
你为什么不把你的画贴出来,你想要的结果是什么?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:26:00 | 显示全部楼层
------->进一步的测试导致无法给出准确的计数
  1. (defun c:test  (/ seek fuzz cnt i plst)
  2. (vl-load-com)
  3. (defun seek  (pt fz lst / sk lst)
  4.            (setq sk   (ssget "_C"
  5.                              (polar pt (* pi 0.25) (* fz (sqrt 2)))
  6.                              (polar pt (* pi 1.25) (* fz (sqrt 2)))
  7.                              '((0 . "POINT"))))
  8.            (repeat (sslength sk)
  9.                  (setq lst (cons (ssname sk 0) lst))
  10.                  (ssdel (ssname sk 0) sk))
  11.            lst
  12.            )
  13.      (if (and (setq fuzz (getdist "\nEmter Fuzz Value: "))
  14.               (setq plst nil
  15.                     cnt  0
  16.                     ss   (ssget "_X" (list '(0 . "POINT")(cons 410 (getvar 'Ctab))))))
  17.            (progn (vla-zoomextents (vlax-get-acad-object))
  18.                  (repeat (setq i (sslength ss))
  19.                         (setq en (ssname ss (setq i (1- i))))
  20.                         (if (not (member en plst))
  21.                               (setq plst (seek (cdr (assoc 10
  22.                                                            (entget en)))
  23.                                                fuzz
  24.                                                plst)
  25.                                     cnt  (1+ cnt))(entmod (subst (cons 8 "DuplicatePoints")
  26.                                                                  (assoc 8 (entget en)) (entget en))))
  27.                         )
  28.                   (princ (strcat "\n"
  29.                                  (itoa cnt)
  30.                                  " Points Found")))
  31.            )
  32.      (princ)
  33.      )

 
更新为包括在图层“DuplicatePoints”上放置重复项
:::::代码故障::::::
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 08:29:33 | 显示全部楼层
我会尝试:
 
[code]defun c:findpt/fuzz ss bp ps en pp;ts是全局initget 7setq fuzzgetdist color=#2f4f4f]“\n公差距离:“color=NAVY](。princ“\n选择基点:”[0][color][c color=GREEN][c color=NAVY][c color=NAVY][1setq bpcdrassoc 10entgetssname ss 0[color=RED 4])[蓝】[color=gre颜色=栗色)[color=海军蓝]setq psssget“_C”list-car bpfuzz b]-[color=RED颜色cadr bpfuzzlistcar bpfuzzcadr bpfuzz b][颜色=绿色](0.“POINT”setq ts([/color b]ssadd[/color b][setq enssname ps 0setq ppcdrassoc 10entget en[color=BLUE b]b]不是等于bp pp
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:38:20 | 显示全部楼层
你说得有道理,大卫。。。
 
我去看看。tnx公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:40:30 | 显示全部楼层
这里有一种“分而治之”的方法:
 
[code](定义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) (
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:49:07 | 显示全部楼层
更新了代码
 
与使用距离函数的Davids和LMs代码不同。我选择使用llist来控制选择,这样我就不需要考虑Z值。但仍然需要设置osmode,当前的缩放将是一个因素。
回复

使用道具 举报

13

主题

39

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:53:57 | 显示全部楼层
坦克好家伙pBe,大卫,李,我试试。
@这是我的问题。。
http://www.4shared.com/photo/tTI3tUks/AcadDup.html
回复

使用道具 举报

13

主题

39

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:57:57 | 显示全部楼层
@LM。可以提示输入新图层的公差和颜色吗?
如果不是太多的要求。谢谢
你的工作很好。我只是将“setq f 5”更改为其他数字以获得容差
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:09 , Processed in 0.416143 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表