求 autolisp 圆外一点画两条切线 并且修剪切线间的一段圆弧~
求 autolisp 圆外一点画两条切线 并且修剪切线间的一段圆弧~若发帖者的目的仅仅是为求编写程序,则请到论坛“编程申请”板块发帖
Ref:
http://bbs.mjtd.com/thread-100603-1-1.html Andyhon 发表于 2015-9-16 08:13 static/image/common/back.gif
若发帖者的目的仅仅是为求编写程序,则请到论坛“编程申请”板块发帖
Ref:
http://bbs.mjtd.com/thread-1 ...
我是需求解决办法·通过几何计算的点得到的线不准确· 已知条件:已知圆、园外一已知点
算法:1、以已知圆的圆心和已知点的连线为直径生成圆
2、求已知圆和生成圆的交点(即切点)
3、连接交点和已知点 ...通过几何计算的点得到的线不准确...
请上图 指明准确点该是如何方合需求
;; 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)
) ;; 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) "")
) 感谢大家!!半径与圆外点到圆心的连线 公式列错了··多算了一次。
(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)
)
页:
[1]