流_星 发表于 2014-8-13 20:17:56

斜直线与圆弧坐标点的确定

本帖最后由 流_星 于 2014-8-13 20:25 编辑

见附图斜直线与圆弧坐标点的确定
请高手指点指点
cad是2013版的

edata 发表于 2014-8-14 15:24:46

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

流_星 发表于 2014-8-17 21:10:07

谢谢
看看学习一下
页: [1]
查看完整版本: 斜直线与圆弧坐标点的确定