取直线上任意一点画垂线
大家好,工作中经常会画直线上某个点的垂线,一般我是先把垂线画好,然后再移到那个点上,现求个程序,就是先点那个点(也就是垂足),然后直接画出垂线来,谢谢大家!表达不清楚,附个图(defun c:tt(/ e p d)
(setq d(getreal"垂线长度"))
(setq d(if d d 10.0))
(while(setq e(car(entsel"\n拾取基准线")))
(while(setq p(getpoint"\n垂足位置"))
(entmakex(list'(0 . "line")(cons 10(setq p(vlax-curve-getclosestpointto e p)))
(cons 11(polar p(+(angle p(mapcar'+(vlax-curve-getfirstDeriv e(vlax-curve-getParamAtPoint e p))p))(* pi 0.5))d))))
))
(princ)) llsheng_73 发表于 2015-10-14 11:48
这个好用,点赞收藏。谢谢大佬的代码 xyp1964 发表于 2015-10-13 20:32
院长的好用,既能画垂线也能画切线哦 以该点为原点,以已有直线为X轴做坐标系,经过原点画Y轴方向直线 Linhay 发表于 2015-10-13 16:10 static/image/common/back.gif
以该点为原点,以已有直线为X轴做坐标系,经过原点画Y轴方向直线
嗯,是的,这种方法要转换一下UCS,想一步到位 cj52000 发表于 2015-10-13 16:23 static/image/common/back.gif
嗯,是的,这种方法要转换一下UCS,想一步到位
那等大神出手吧,看看大神是怎么算的 请大家帮帮忙啊 ;; tt(垂直线)
(defun c:tt (/ s1 e pt rad)
(defun AngleAtPoint (e pt / pa p1)
(setq pa (vlax-curve-getparamatpoint e pt)
p1 (vlax-curve-getfirstderiv e pa)
)
(angle pt (mapcar '+ pt p1))
)
(setvar "osmode" 0)
(setq s1(entsel "\n选择曲线点: ")
e (car s1)
pt(osnap (cadr s1) "near")
rad (AngleAtPoint e pt)
)
(setvar "snapang" rad)
(setvar "ORTHOMODE" 1)
(command "line" pt pause "")
(setvar "snapang" 0)
(princ)
) 选择一直线-》确定一点p-》原地复制该直线-》将复制后的直线绕P点旋转90度 院长是我敬重人之一。如果是放出源码,一定可以学到东西。 xyp1964 发表于 2015-10-13 20:32 static/image/common/back.gif
能得到版主的帮助,有点受宠若惊,非常感谢!!!但是我试用了一下出现如下提示,烦请帮忙看看
命令: (LOAD "C:/Users/Administrator/Desktop/任意点垂线.lsp") C:TT
命令: tt
选择曲线点: ; 错误: 函数错误: 959
命令: 院长的程序要多学习,谢谢