斜直线与圆弧坐标点的确定
本帖最后由 流_星 于 2014-8-13 20:25 编辑见附图斜直线与圆弧坐标点的确定
请高手指点指点
cad是2013版的 ;;code by qjchen
(defun q:geo:2line:ang2(p1 p2 p3 p4)
((lambda(x) (atan (sqrt (abs (- 1.0 (* x x)))) x))
(/ (apply '+ (mapcar '* (mapcar '- p2 p1) (mapcar '- p4 p3))) (distance p1 p2) (distance p3 p4))
)
)
(defun c:tt(/ ng0 ang1 ang3 ang4 cen ds1 ds2 ipt mpt p0 p1 p1a p2 p3 p4 p5 p5a r)
(setq p1 '(-16.25 0)
p0 '(0 0)
p5 '(0 7)
ang0 (* 5.71059314 (/pi 180.0) );角度值转弧度值
r 3.5
)
(setq p5a(polar p5 ang0 1.0) ;求p5->p4斜线上一点p5a
p1a(polar p1 (* pi 0.5) 1.0) ;求p1->p2直线上一点p1a
ipt(inters p1 p1a p5 p5a nil);求p5->p5a p1->p1a直线交点ipt
ang1 (* (q:geo:2line:ang2 ipt p1 ipt p5) 0.5);求p5->p5a p1->p1a直线夹角值ang1
ds1 (/ (* r (cos ang1)) (sin ang1));求ipt->p4长度(圆弧与斜线是垂直的,已知角度\对边,求邻边长)
ds2 (/ r (sin ang1));求ipt->cen长度(圆弧与斜线是垂直的,已知角度\对边,求斜边边长)
)
(setq p2(polar ipt (angle ipt p1) ds1) ;求得p2点
p4(polar ipt (angle ipt p5) ds1) ;求得p4点
)
(setq mpt(mapcar '(lambda(x y)(* 0.5 (+ x y))) p2 p4) ;求得p2->p4的中点
ang3(angle ipt mpt);求ipt->mpt角度
ang4(angle mpt ipt);求mpt->ipt角度
cen(polar iptang3 ds2);求圆心cen点
p3(polar cen ang4 r);求p3点
)
;(command "line" "non" p2 "non" p1 "non" p0 "non" p5 "non" p4 "")
;(command "arc" "non" p2 "non" p3 "non" p4 "")
(command "pline" "non" p0 "non" p1 "non" p2 "a" "non" p4 "l" "non" p5 "c")
) 谢谢
看看学习一下
页:
[1]