motee-z 发表于 2022-7-6 11:19:06

查找最近3个的列表

你好
这对我和其他人都很好
为了创建一个lisp,可以找到距可选点最近的三个点的列表,我的目标是计算图形中任何点的级别,包括一组三维点的级别,每3个点形成一个三角形(曲面),因此如果我想在三角形内的空间点中找到级别,我必须获得这3个点的列表
然后我有一个routin,可以计算水平,如果我知道三个点
我一到上面就会提交
谢谢大家

CarlB 发表于 2022-7-6 11:28:20

如果有人在模拟地面,他们应该使用软件生成DTM(数字地形模型),通常使用TINs(三角形不规则网络)。最好使用三角网来确定任何点的高程,而不是最近的3个点(可能不是正确的点/高程)。但由于缺乏DTM,使用3个最近点可以提供足够的精度。通常
 
这些是标准的AutoCAD点对象吗?

motee-z 发表于 2022-7-6 11:37:12

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

ASMI 发表于 2022-7-6 11:41:59

我认为:
 
(defun c:npts(/ ptSet tPt ptLst outLst)
(if
   (and
   (setq ptSet(ssget "_X" '((0 . "POINT"))))
   (<= 3(sslength ptSet))
   (setq tPt(getpoint "\nSpecify testing point: "))
   ); end and
   (progn
   (setq ptLst(vl-sort
           (mapcar '(lambda(x)(cons(distance x tPt)x))
          (mapcar 'cdr
             (mapcar '(lambda(x)(assoc 10 x))
                     (mapcar 'entget(vl-remove-if 'listp
                      (mapcar 'cadr(ssnamex ptSet)))))))
                '(lambda(a b)(<(car a)(car b)))))
   (setq outLst(mapcar 'cdr
                  (list(car ptLst)(cadr ptLst)(nth 2 ptLst))))
   ); end progn
   ); end if
); end of c:npts
 
并在功能中使用它:
 
(defun Get\u Nearest\u Points(ptSet/ptSet-tPt-ptst-outLst)(princ“\n>”)(if(和ptSet(

motee-z 发表于 2022-7-6 11:51:20

 
如果在LDD中形成三角网,则可以启用高程跟踪

ASMI 发表于 2022-7-6 11:52:58

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

eldon 发表于 2022-7-6 12:00:33

等待你的意见阿斯米先生
我在许多图纸中尝试了lisp,它给出了正确的值,除非测试点位于outlst点之外,否则会得到任何支持或建议

motee-z 发表于 2022-7-6 12:06:29

嗨,阿斯米。。
以同样的方式。是否可以在Visual Basic中找到距离点最近的点

motee-z 发表于 2022-7-6 12:16:13

bhargav1987 发表于 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
页: [1]
查看完整版本: 查找最近3个的列表