![]() |
在多段线上增加一端点(自己diy)点是否在线上的判断(已更新,请nonsmall指导,感谢!)
在多段线上增加一端点(自己diy)点是否在线上的判断(已更新,请nonsmall指导,感谢!)
www.dimcax.com 在多段线上增加一端点(自己diy)点是否在线上的判断(已更新,请nonsmall指导,感谢!) (defun c:cfg (/ ent pt ents i n npt item item1 item2 item3 item4 x y x1 y1 x2 y2 lstnew) (setq ent (entsel "\n选择一条多段线:")) (while (setq point (getpoint "\n在线上选择添加端点的位置:")) (setq ents (entget (car ent))) (setq i 0 npt 0 n (length ents) lstnew '() ) (while (< i n) (setq item (nth i ents)) (setq lstnew (append lstnew (list item))) (if (= (car item) 10) (if (setq item4 (nth (+ i 4) ents)) (progn (setq x (car point) y (cadr point) x1 (cadr item) y1 (caddr item) x2 (cadr item4) y2 (caddr item4) ) (if (and (and (or (and (> x x1) (< x x2)) (and (< x x1) (> x x2))) (or (and (> y y1) (< y y2)) (and (< y y1) (> y y2))) ) ;点的x,y是否在线段两端点间 (equal (* (- x x1) (- y2 y1)) (* (- y y1) (- x2 x1));点是否在线上(两点式直线方程) 0.0001 ) ) (setq item1 (nth (+ i 1) ents) item2 (nth (+ i 2) ents) item3 (nth (+ i 3) ents) lstnew (append lstnew (list item1)) lstnew (append lstnew (list item2)) lstnew (append lstnew (list item3)) lstnew (append lstnew (list (list 10 (car point) (cadr point))) ) );增加点的坐标 ) ) ) ) (setq i (1+ i)) ) (entmod lstnew);重生成多段线 ) (princ) ) d 请高手指点:点是否在直线上是否有更好的方法?是否可以通过inters实现? d 返回曲线上离指定点最近的点(在 wcs 上) (vlax-curve-getclosestpointto curve-obj givenpnt [extend])若返回点和你给定的点重合说明该点在多线上 原创加密lisp真正的破解.原创lisp操作cad内置对话框.原创lisp直接调用win32 api.原创lisp开发小助手(代码自动生成器).原创vba语句->lisp语句解释器.原创lisp音乐播放器.原创lisp直接使用vba对话框. 高手!你好。这是visual lisp吧,在语句怎么visual lisp编辑器里怎么不识别呢?求高手指点! d (vl-load-com)才能加载visual lisp!太菜了!!!!!!!!!!!!!!!!!1 d (vlax-curve-getclosestpointto curve-obj givenpnt [extend])是可以判断是否在线上,但是在多段线哪两个点间无法确定。好像不好解决! |
所有的时间均为北京时间。 现在的时间是 10:37 AM. |