乐筑天下

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

[编程交流] 查找最近3个的列表

[复制链接]

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 11:19:06 | 显示全部楼层 |阅读模式
你好
这对我和其他人都很好
为了创建一个lisp,可以找到距可选点最近的三个点的列表,我的目标是计算图形中任何点的级别,包括一组三维点的级别,每3个点形成一个三角形(曲面),因此如果我想在三角形内的空间点中找到级别,我必须获得这3个点的列表
然后我有一个routin,可以计算水平,如果我知道三个点
我一到上面就会提交
谢谢大家
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 11:28:20 | 显示全部楼层
如果有人在模拟地面,他们应该使用软件生成DTM(数字地形模型),通常使用TINs(三角形不规则网络)。最好使用三角网来确定任何点的高程,而不是最近的3个点(可能不是正确的点/高程)。但由于缺乏DTM,使用3个最近点可以提供足够的精度。通常
 
这些是标准的AutoCAD点对象吗?
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 11:37:12 | 显示全部楼层
谢谢你的回复
有许多程序可以计算类似锡的土地开发的任何点的水平
但挑战是在autocad2002中计算到2008年
我认为他们使用了我写的想法,如果autocad中有一个三角网,你只能在点之间连接的线上知道标高,但如果三角形内的所需点,我认为你必须知道最接近的3点,然后从它们形成的偶数中检索标高
我认为任何这样做的路线都必须遵循这一步骤
1-检索图纸中所有点的列表,并将其保存在文件(x、y、z)中
2-比较所需点与所有点之间的距离
3-形成最近3点的列表
4-检索这些点的级别
5-到这一步,我得到了一个由三个点定义的偶数,然后我可以知道任何内部点的(z),使其属于这个偶数
谢谢
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 11:41:59 | 显示全部楼层
我认为:
 
  1. (defun c:npts(/ ptSet tPt ptLst outLst)
  2. (if
  3.    (and
  4.      (setq ptSet(ssget "_X" '((0 . "POINT"))))
  5.      (<= 3(sslength ptSet))
  6.      (setq tPt(getpoint "\nSpecify testing point: "))
  7.      ); end and
  8.    (progn
  9.      (setq ptLst(vl-sort
  10.            (mapcar '(lambda(x)(cons(distance x tPt)x))
  11.             (mapcar 'cdr
  12.              (mapcar '(lambda(x)(assoc 10 x))
  13.                      (mapcar 'entget(vl-remove-if 'listp
  14.                       (mapcar 'cadr(ssnamex ptSet)))))))
  15.                 '(lambda(a b)(<(car a)(car b)))))
  16.      (setq outLst(mapcar 'cdr
  17.                   (list(car ptLst)(cadr ptLst)(nth 2 ptLst))))
  18.      ); end progn
  19.    ); end if
  20. ); end of c:npts

 
并在功能中使用它:
 
[code](defun Get\u Nearest\u Points(ptSet/ptSet-tPt-ptst-outLst)(princ“\n>”)(if(和ptSet(
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 11:51:20 | 显示全部楼层
 
如果在LDD中形成三角网,则可以启用高程跟踪
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 11:52:58 | 显示全部楼层
这是经过一些修改后的路由
需要注意的是,autolisp中的函数距离意味着三维距离,因此,如果高程较高,则会产生误差
因此,我修改以获得2d距离,并显示用圆包围的最近的3点
修改后我不理解您的路由,请将其添加到我的修改中
;鳕鱼
(defun c:evenv(/)
(如果(null txth)
(setq txth 1.25)
(setq txthnew(getreal(strcat)“\n输入文本高度
 
 
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:00:33 | 显示全部楼层
等待你的意见阿斯米先生
我在许多图纸中尝试了lisp,它给出了正确的值,除非测试点位于outlst点之外,否则会得到任何支持或建议
121906ogru4agra9naa6rr.jpg
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 12:06:29 | 显示全部楼层
嗨,阿斯米。。
以同样的方式。是否可以在Visual Basic中找到距离点最近的点
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 12:16:13 | 显示全部楼层
回复

使用道具 举报

3

主题

25

帖子

22

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:23:54 | 显示全部楼层
Hi Asmi..
In the same way.is it can be done in Visual Basic for Finding nearest points from an point
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 05:45 , Processed in 0.798495 second(s), 74 queries .

© 2020-2025 乐筑天下

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