摘要:在Visual Lisp二次开发环境中,利用Visual Lisp的图形处理函数,针对铣刀、滚刀等典型复杂刀具工作图中端面齿形的绘制特点,提出了一套简单实用的弧线求交和弧弧求交特殊算法,实现了铣刀、滚刀等端面齿形图中铲磨齿背曲线的自动生成。 |
1 引言
在设计典型复杂刀具(如铲齿成形铣刀、盘形齿轮铣刀、齿轮滚刀和蜗轮滚刀等)时,为方便刀具刃磨,取零度前角(γf=0°)。当刀具用钝后重磨前刀面时,为保证每次重磨后的刀齿刃形(刀具任意轴剖面内的刃形)基本不变且有适当的后角,要求刀具各轴剖面中形状相同的刀刃应沿刀具半径方向均匀地逼近刀具轴线,因此这些刀具的后刀面也是成形表面。这种成形表面可用铲齿的方法获得,但对于精度要求较高的铲齿成形刀具,其齿背除铲齿外尚需进行铲磨方能达到要求。需要铲齿后再铲磨的刀齿齿背必须采用双重铲齿:即在铲齿时,齿背曲线的AB 段用铲削量为K 的凸轮进行铲削,而齿背曲线的BC 段用较大的铲削量K1(K1>K)铲削。采用双重铲齿的目的是避免铲磨时砂轮磨削完AB段后在BC段形成凸台。刀齿齿背的双重铲齿亦可选择方式。2 齿背曲线(铲背曲线)的生成及算法
齿背曲线是刀齿后刀面在铲齿成形刀具端剖面中的截线,理论上该曲线是对数螺旋线。由于对数螺旋线制造困难,因此生产中采用阿基米德螺线代替。而在绘制刀具工作图中的端面齿形时,为简化制图,又采用近似圆弧代替阿基米德螺线。应用典型复杂刀具CAD绘制齿背曲线时,根据手工绘图时的近似方法,由已知参数d0、zk、H、h、θ、r、K、K1、af和圆心点pt分别求出刀具工作图中端面齿形的各个特征点坐标,再通过COMMAND函数调用AutoCAD 的绘图命令绘制出端面齿形。绘制铣刀、滚刀等刀具工作图中的端面齿形时,其难点是确定双重铲齿的齿背曲线中两次铲背曲线的交点和铲背曲线与容屑槽左侧棱廓直线的交点。但是在Visual Lisp中没有集成求解弧线交点和弧弧交点的函数。为解决这一问题,笔者开发出一套简单实用的弧线求交和弧弧求交算法。2.1 弧线求交算法
已知直线两端点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=R1IO2=R2D=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))3 应用实例
利用重庆工商大学开发的“典型复杂刀具CAD”软件设计绘制的带孔式内键滚刀的端面齿形图:以下所给程序清单是绘制该端面齿形图的部分Visual Lisp程序。函数sidtee 绘制端面齿形图的Visual Lisp 程序:(defun sidtee(ra0 zk hk rk thi k k1 h0 rh p0 / angcxj b1 j0 j1 b0 e a0 a1 g0 g1 o-r h i i0 a1b1o a-a1b1o1 o1 o1-1 r-ka1 r-kg1)(setq angcxj( /(* pi 2.0)zk))::齿形角(setq j1(polar p0( / pi 2.0)ra0))::j1 点::以下程序用POLAR 函数求B1、J0、B0、E、A0、A1、G0、G1、H、I、I0点……(setq i0(polar i( + TH(I / pi 2.0))( /(- k1 k)5.0)))::I0 点::A1B1 线段的中垂点(setq A1b1O(LIST( /( + (CAR A1)(CAR B1))2.0)( /( +(CADR A1)(CADR B1))2.0)))::B1A1 线的中垂线角度(setq a-a1b1o1( +(angle b1 a1)( / pi 2.0)))(setq O1(polar A1B1O a-a1b1o1( /(* 3 ra0)2.0)))::O1参考圆心点::A0B0 线段的中垂点(setq A0b0O(LIST(/( + (CAR A0)(CAR B0))2.0)( /( +(CADR A0)(CADR B0))2.0)))(setq O0(polar A0B0O a-a0b0o0( /(* 3 ra0)2.0)))::O0参考圆心点(setq o0(inters a0b0o o0 a0 o0-1 nil))::O0 参考圆心点(setq f0(interaa r-k1a0 o0 r-ka1 o1 ))::求A0B0 弧与A1B1 弧的交点(setq f1(interaa r-k1g0 o0 r-kg1 o1))::求G0C0 弧与G1C1弧的交点(setq D0(interaL r-k1a0 o0 i h))::求A0B0 弧与直线HI的交点(setq D1(interal r-k1g0 o0 I h1))::求G0C0 弧与直线HI的交点:::以下程序根据以上程序求出的各点绘制工作图中的端面齿形(command ”pline”a1 ”w”0.4 ””g1 ””)(command ”arc””ce”p0 j1 a1))以往采用复杂刀具CAD 软件绘图时,要靠用户用对象捕捉的方法获得生成齿背曲线的弧线交点和弧弧交点。而在重庆工商大学开发的“典型复杂刀具CAD”软件中,在设计铲齿成形铣刀、齿轮滚刀、蜗轮滚刀时,利用本文提出的弧线求交算法和弧弧求交算法,成功地自动绘制出刀具端面齿形图,由此提高了整个CAD系统的自动化程度。