郑州模具培训为大家讲讲 齿背曲线(铲背曲线)的生成及算法 弧线求交算法 齿背曲线是刀齿后刀面在铲齿成形刀具端剖面中的截线,理论上该曲线是对数螺旋线。由于对数螺旋线制造困难,因此生产中采用阿基米德螺线代替。而在绘制刀具工作图中的端面齿形时,为简化制图,又采用近似圆弧代替阿基米德螺线。 应用典型复杂刀具CAD绘制齿背曲线时,根据手工绘图时的近似方法,由已知参数d0、zk、H、h、θ、r、K、K1、af和圆心点pt分别求出刀具工作图中端面齿形的各个特征点坐标,再通过COMMAND函数调用AutoCAD 的绘图命令绘制出端面齿形。 绘制铣刀、滚刀等刀具工作图中的端面齿形时,其难点是确定双重铲齿的齿背曲线中两次铲背曲线的交点和铲背曲线与容屑槽左侧棱廓直线的交点。但是在Visual Lisp中没有集成求解弧线交点和弧弧交点的函数。为解决这一问题,笔者开发出一套简单实用的弧线求交和弧弧求交算法。 弧线求交算法已知直线两端点P1、P2、圆心O和圆弧半径R,求直线P1P2与该圆弧的交点坐标(点I为弧线交点,点M为直线P1P2的中点) 根据已知各点坐标,利用中点迭代逼近法可简单快速求出弧线交点,其算法流程。根据算法流程,利用Visal Lisp的图形处理函数功能,设计如下弧线求交子程序INTERAL: :::函数INTERAL 为求圆弧与直线的交点 (defun interal(r o i h / xo yo x1 x2 y1 y2 x3 y3 loop rr d delt) (setq xo(car o ) yo(cadr o) x1(car i) y1(cadr i) x2(carh) y2(cadr h)) (setq loop t) (setq ee 1e-6) (WHILE loop (SETQ x3( /( + x1 X2)2.0)y3( /( + y1 y2)2.0)) (SETQ d(distance o(list x3 y3)))(setq delt(-d r))(cond(( < =(abs delt)ee)(setq loop nil)) (( < delt 0.0)(setq x2 x3 y2 y3)) ( t(setq x1 x3 y1 y3)) ):cond ):while (list x3 y3)2.2 弧弧求交算法 已知圆心坐标O1、圆弧半径R1和圆心坐标O2、圆弧半径R2,求交点I的坐标。由两个圆心O11、O2与交点I 构成的三角形ΔIO1O2,可建立以下算法: IO1=R1 IO2=R2 D=O1O2=Ditance(O1,O2) Ang2= Angle(O1,O2) Ang1=arccos( R12+D2-R22 ) 2R1*D IX=O1X+R1*COS(Ang1-Ang2) IY=O1X+R1*SIN(Ang1-Ang2) 根据以上算法,利用Visal Lisp图形处理函数功能,设计如下弧弧求交子程序INTERAA。 :::函数INTERAA 为求两圆弧的交点 (defun interaa(r1 o1 r2 o2 / d a-o1o2 cosa sina a-r1o1o2 x y) (setq d(abs (distance o1 o2)))::o1o2 线段的离 (setq a-o1o2(angle o1 o2))::o1o2 度 (setq cosa((/ +(* r1 r1)(* d d)(-(* r2 r2)))(* 2.0 r1 d))) (setq sina(sqrt(- 1.0(* cosa cosa)))) (setq a-r1o1o2(atan sina cosa)) (setq x( +(car o1)(* r1(cos( + a-o1o2 a-r1o1o2 ))))) (setq y( +(cadr o1)(* r1(sin( + a-o1o2 a-r1o1o2))))) (list x y) |