cj52000 发表于 2015-10-13 15:59:06

取直线上任意一点画垂线

大家好,工作中经常会画直线上某个点的垂线,一般我是先把垂线画好,然后再移到那个点上,现求个程序,就是先点那个点(也就是垂足),然后直接画出垂线来,谢谢大家!表达不清楚,附个图



llsheng_73 发表于 2015-10-14 11:48:35

(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))

lxl217114 发表于 2022-6-16 17:53:29

llsheng_73 发表于 2015-10-14 11:48


这个好用,点赞收藏。谢谢大佬的代码

loveu515 发表于 2023-7-7 14:19:45

xyp1964 发表于 2015-10-13 20:32


院长的好用,既能画垂线也能画切线哦

Linhay 发表于 2015-10-13 16:10:20

以该点为原点,以已有直线为X轴做坐标系,经过原点画Y轴方向直线

cj52000 发表于 2015-10-13 16:23:24

Linhay 发表于 2015-10-13 16:10 static/image/common/back.gif
以该点为原点,以已有直线为X轴做坐标系,经过原点画Y轴方向直线

嗯,是的,这种方法要转换一下UCS,想一步到位

Linhay 发表于 2015-10-13 17:19:52

cj52000 发表于 2015-10-13 16:23 static/image/common/back.gif
嗯,是的,这种方法要转换一下UCS,想一步到位

那等大神出手吧,看看大神是怎么算的

cj52000 发表于 2015-10-13 18:59:35

请大家帮帮忙啊

xyp1964 发表于 2015-10-13 20:32:46

;; 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)
)

lijiao 发表于 2015-10-14 08:55:29

选择一直线-》确定一点p-》原地复制该直线-》将复制后的直线绕P点旋转90度

USER2128 发表于 2015-10-14 10:17:06

院长是我敬重人之一。如果是放出源码,一定可以学到东西。

cj52000 发表于 2015-10-14 10:32:16

xyp1964 发表于 2015-10-13 20:32 static/image/common/back.gif


能得到版主的帮助,有点受宠若惊,非常感谢!!!但是我试用了一下出现如下提示,烦请帮忙看看


命令: (LOAD "C:/Users/Administrator/Desktop/任意点垂线.lsp") C:TT
命令: tt
选择曲线点: ; 错误: 函数错误: 959
命令:

ymcui 发表于 2015-10-14 11:01:55

院长的程序要多学习,谢谢
页: [1] 2 3
查看完整版本: 取直线上任意一点画垂线