如何找到一条多段线上与给定点jdpt(在多段线上)距离最近的顶点坐标
请教个问题,我想找到一条多段线上与给定点jdpt(在多段线上)距离最近的顶点坐标,怎么处理?用lisp。大概有个程序段(while(setqsub_list(carent...
请教个问题,我想找到一条多段线上与给定点jdpt(在多段线上)距离最近的顶点坐标,怎么处理?用lisp。大概有个程序段(while (setq sub_list (car ent_list))(if (= (setq p_code (car sub_list)) 10)(progn(setq p_list (cdr sub_list))( if (> (cadr p_list) (cadr jdpt))(setq delta1 (- (cadr p_list) (cadr jdpt)))( if (< delta1 delta2 ) (setq delta2 (min delta1 delta2 )) (setq mypt p_list) ))))(setq ent_list (cdr ent_list)) )
展开
1个回答
推荐于2016-08-28 · 知道合伙人软件行家
关注
展开全部
(defun c:007 ( / pt sl pd ds )
(if (null vlax-dump-object) (vl-load-com) ) ;;加载vlax扩展函数
(setq pt (getpoint "\n选择点:"))
(if (/= pt nil) (setq sl (entsel "\n选择对象")));如果有点
(if (/= sl nil)
(progn
(setq sl (car sl))
(setq sl (vlax-ename->vla-object sl)) ;;转换为vla对象
(setq pd (vlax-curve-getclosestpointto sl pt)) ;;求出对象距选择点最近的点
(command "_.line" pt pd "") ;绘制出最短的距离线
(setq ds (distance pt pd)) ;求出两点距离
(princ (strcat "\n点到该直线的最短距离是: < " (rtos ds) " >"));输出最短距离
)
)
(princ) ;;静默退出
);;复制到记事本,以(007.lsp)命名,加载到AutoCAD,就可以绘制点到对象最短的直线
这个程序选择的对象可以是直线,圆,多段线及其它曲线,如果要修改你的程序,每句话给出说明。pd点就是你要的坐标
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询