查找最近3个的列表
你好这对我和其他人都很好
为了创建一个lisp,可以找到距可选点最近的三个点的列表,我的目标是计算图形中任何点的级别,包括一组三维点的级别,每3个点形成一个三角形(曲面),因此如果我想在三角形内的空间点中找到级别,我必须获得这3个点的列表
然后我有一个routin,可以计算水平,如果我知道三个点
我一到上面就会提交
谢谢大家 如果有人在模拟地面,他们应该使用软件生成DTM(数字地形模型),通常使用TINs(三角形不规则网络)。最好使用三角网来确定任何点的高程,而不是最近的3个点(可能不是正确的点/高程)。但由于缺乏DTM,使用3个最近点可以提供足够的精度。通常
这些是标准的AutoCAD点对象吗? 谢谢你的回复
有许多程序可以计算类似锡的土地开发的任何点的水平
但挑战是在autocad2002中计算到2008年
我认为他们使用了我写的想法,如果autocad中有一个三角网,你只能在点之间连接的线上知道标高,但如果三角形内的所需点,我认为你必须知道最接近的3点,然后从它们形成的偶数中检索标高
我认为任何这样做的路线都必须遵循这一步骤
1-检索图纸中所有点的列表,并将其保存在文件(x、y、z)中
2-比较所需点与所有点之间的距离
3-形成最近3点的列表
4-检索这些点的级别
5-到这一步,我得到了一个由三个点定义的偶数,然后我可以知道任何内部点的(z),使其属于这个偶数
谢谢 我认为:
(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(
如果在LDD中形成三角网,则可以启用高程跟踪
这是经过一些修改后的路由
需要注意的是,autolisp中的函数距离意味着三维距离,因此,如果高程较高,则会产生误差
因此,我修改以获得2d距离,并显示用圆包围的最近的3点
修改后我不理解您的路由,请将其添加到我的修改中
;鳕鱼
(defun c:evenv(/)
(如果(null txth)
(setq txth 1.25)
(setq txthnew(getreal(strcat)“\n输入文本高度
等待你的意见阿斯米先生
我在许多图纸中尝试了lisp,它给出了正确的值,除非测试点位于outlst点之外,否则会得到任何支持或建议 嗨,阿斯米。。
以同样的方式。是否可以在Visual Basic中找到距离点最近的点 Hi Asmi..
In the same way.is it can be done in Visual Basic for Finding nearest points from an point
页:
[1]