取个长点勒名字 发表于 2015-9-16 07:22:59

求 autolisp 圆外一点画两条切线 并且修剪切线间的一段圆弧~

求 autolisp 圆外一点画两条切线 并且修剪切线间的一段圆弧~

Andyhon 发表于 2015-9-16 08:13:46

若发帖者的目的仅仅是为求编写程序,则请到论坛“编程申请”板块发帖
Ref:
http://bbs.mjtd.com/thread-100603-1-1.html

取个长点勒名字 发表于 2015-9-16 08:35:02

Andyhon 发表于 2015-9-16 08:13 static/image/common/back.gif
若发帖者的目的仅仅是为求编写程序,则请到论坛“编程申请”板块发帖
Ref:
http://bbs.mjtd.com/thread-1 ...

我是需求解决办法·通过几何计算的点得到的线不准确·

lijiao 发表于 2015-9-16 08:54:11

已知条件:已知圆、园外一已知点
算法:1、以已知圆的圆心和已知点的连线为直径生成圆
         2、求已知圆和生成圆的交点(即切点)
         3、连接交点和已知点

Andyhon 发表于 2015-9-16 08:56:48

...通过几何计算的点得到的线不准确...

请上图 指明准确点该是如何方合需求

xyp1964 发表于 2015-9-16 13:07:55

;; tt(圆外点画两条切线且修剪切线间圆弧)
(defun c:tt ()
(setvar "osmode" 0)
(setq s1 (car (entsel "\n选择圆: "))
        p1 (getpoint "\n基点<退出>: ")
        p0 (cdr (assoc 10 (entget s1)))
        rr (cdr (assoc 40 (entget s1)))
        r1 (angle p1 p0)
        p2 (polar p0 (+ r1 (* pi 0.5)) rr)
        p3 (polar p0 (- r1 (* pi 0.5)) rr)
        p4 (polar p0 (+ r1 pi) rr)
)
(command "line" p1 "tan" p2 "")
(setq s2 (entlast))
(command "line" p1 "tan" p3 "")
(setq s3 (entlast))
(command "trim""" (list s1 p4) "")
(princ)
)

xyp1964 发表于 2015-9-16 14:15:51

;; tt(圆外点画两条切线且修剪切线间圆弧)
(defun c:tt ()
(setq en (entsel "\n选择圆: "))
(setq p1 (getpoint "\n基点<退出>: "))
(command "line" "non" p1 "tan" (cadr en) "")
(command "mirror" (setq s1 (entlast)) "" "non" p1 "cen" (cadr en) "")
(command "trim" s1 (entlast) "" (list (car en) p1) "")
)

取个长点勒名字 发表于 2015-9-16 14:47:40

感谢大家!!半径与圆外点到圆心的连线 公式列错了··多算了一次。




(defun c:qq ()
        (setq o (getpoint "\n点取圆心点"))
        (setq r (getdist "\n输入圆半径"))
        ;(command "circle" o r "")
        (setq m (getpoint "\n点取圆外一点"))
                       
        (setq om (distance o m));获得底边右侧点与圆心距离
        (setq ang1 (angle o m));获得om角度
        (setq cosa (/ r om));获得余切值
        (setq jd1(atan (/ (sqrt (- 1 (* cosa cosa))) cosa)));获得半径与om的弧度
        (setq ang (+ ang1jd1 ))
        (setq qd1 (polar o ang r));获得切点1坐标
        ;切点2获得
        (setq ang2 (- ang1 jd1))
        (setq qd2 (polar o ang2 r))
        (command "line" m qd1 "")
(command "line" m qd2 "")
        (command "arc" qd1 "c" o qd2 "")
       
(princ)       
)

start4444 发表于 2018-12-18 13:43:41

页: [1]
查看完整版本: 求 autolisp 圆外一点画两条切线 并且修剪切线间的一段圆弧~