mj520plus 发表于 2012-2-27 23:18:28

直线上任意点取位置画线程序

请教各位大虾:

程序功能:要求在选取的点位置(必须在直线图元上)画线

;;;两直线之间画线
(defun c:tt()
(setvar "osmode" 0)
(princ "\请指定起始点:")
(setq en1(entsel))
(princ "\请指定终点:")
(setq en2(entsel))
(setq pt1(cadr en1))
(setq pt2(cadr en2))
(command "line" pt1 pt2 "")
)
运行结果:

所画直线跑了,起点和终点不在选取的两条直线上!
不知如何解决?期待高手解答!!!


yjr111 发表于 2012-2-28 00:23:31

需要用vlax-curve-getclosestpointto函数解决

byghbcx 发表于 2012-2-28 08:37:04

要捕捉一下,点才能落到直线上

if 发表于 2012-2-28 13:58:24

(defun c:TT (/ P1 P2)
(if (and (setq P1 (getpoint "\n指定起点: "))
         (setq P1 (nentselp P1))
         (setq P1 (apply 'vlax-curve-getclosestpointto P1))
         (setq P2 (getpoint "\n指定起点: "))
         (setq P2 (nentselp P2))
         (setq P2 (apply 'vlax-curve-getclosestpointto P2))
    )
(command "_.LINE" "_NON" P1 "_NON" P2 "")
)
)

mj520plus 发表于 2012-2-28 23:16:28

谢谢各位大虾指点,程序已修改成功!

;;;两直线之间画线
(defun c:tt ()
(setvar "osmode" 0)
(princ "\请指定起始点:")
(setq en1 (entsel))
(setq pt1 (osnap (cadr en1) "nea"))
(princ "\请指定终点:")
(setq en2 (entsel))
(setq pt2 (osnap (cadr en2) "nea"))
(command "line" pt1 pt2 "")
)

清风明月名字 发表于 2012-5-16 21:35:32

谢谢楼主,学习了
页: [1]
查看完整版本: 直线上任意点取位置画线程序