⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 standard_hob.grs

📁 C# 教学示例程序
💻 GRS
字号:
$$变量定义
$$L齿条法向齿形的辅助封闭曲线
$$L1,Ld1齿形切削部分直线
$$L2,齿顶线段,L3齿根线段
$$R11,R12齿顶圆角
$$R21,R22齿根圆弧
$$rot旋转矩阵
$$trans移动矩阵
$$angle转角精度控制
ENTITY/L(5),L1(200),Ld,Ld1(200),L2(200),L3(200),R11(200),R12(200)
ENTITY/p1(2),pd(3),p2(2),p3(2),R21(200),R22(200)
ENTITY/hob(1000),Gear(1000),Gear2(1000)
ENTITY/d1(6),f1(2)
NUMBER/mat1(12),mat2(12),mat3(12),mat4(12)
NUMBER/rot(12),trans(12),angle
NUMBER/mn,zg,B,sn,Da,Bn,ga,heg,Hg,tn,sfng,R1,R2,xuan
NUMBER/D0,Xn,D,pi,i
UFARGS/mn,zg,B,sn,Da,Bn,ga,heg,hg,tn,sfng,R1,R2,xuan
   ifthen/heg>=hg
     messg/'刀具齿顶高应小于刀具齿全高!'
     jump/L100:
   endif
   ifthen/tn<=sfng
     messg/'刀具法向齿距应大于刀具法向齿厚!'
     jump/L100:
   endif

   D0=mn*zg/cosf(B)   $$D0被切齿轮分度圆直径
   Xn=(tn-sfng-sn)/2*cosf(ga)/sinf(ga)$$Xn刀具节线与被切齿轮分度圆的距离
   D=mn*zg/(2*cosf(B))-Xn  $$D刀具分度线与被切齿轮分度圆的距离
   
   pi=3.1415927
   
   z=intf(pi*Da/tn)+2


$$画出齿条法向齿形的辅助封闭曲线
   L(1)=line/0,-D-hg+heg,3,-D-hg+heg
   L(2)=line/0,-D-hg+heg,0,-D-hg+heg-3
   L(3)=line/0,-D-hg+heg-3,z*tn+6,-D-hg+heg-3
   L(4)=line/z*tn+6,-D-hg+heg-3,z*tn+6,-D-hg+heg
   L(5)=line/z*tn+6,-D-hg+heg,z*tn+3,-D-hg+heg
$$画出齿形切削部分直线
   p1(1)=point/endof,xlarge,L(1)
   p1(2)=point/p1(1),delta,sinf(ga)/cosf(ga)*hg,hg,0
   L1(1)=line/p1(1),p1(2)  $$齿形切削部分直线
   pd(1)=point/p1(1),delta,sinf(ga)/cosf(ga)*(hg-heg),hg-heg,0
   pd(2)=point/pd(1),delta,sfng/2,0,0
   pd(3)=point/pd(2),delta,0,10,0
   Ld=line/pd(2),pd(3) $$齿形对称线
   mat1=matrix/mirror,Ld
   Ld1(1)=transf/mat1,L1(1)  $$对称后的齿形切削部分直线
$$画齿顶线段
   p2(1)=point/endof,xlarge,L1(1)
   p2(2)=point/endof,ylarge,Ld1(1)
   L2(1)=line/p2(1),p2(2)
$$画出全齿
   do/lb10:,i,2,z,1
   mat2=matrix/transl,tn,0,0
   L1(i)=transf/mat2,L1(i-1)
   Ld1(i)=transf/mat2,Ld1(i-1)
   L2(i)=transf/mat2,L2(i-1)
 lb10:
$$画齿根线段
   p3(1)=point/endof,ysmall,Ld1(1)
   p3(2)=point/endof,ysmall,L1(2)
   L3(1)=line/p3(1),p3(2)
   do/lb20:,i,2,z,1
     mat2=matrix/transl,tn,0,0
     L3(i)=transf/mat2,L3(i-1)
 lb20:
$$删除多余的点和线
   delete/p1(1..2),p2(1..2),p3(1..2),pd(1..3),Ld
$$齿顶圆角
   do/lb30:,i,1,z,1
     R11(i)=fillet/xlarge,L1(i),ysmall,L2(i),radius,R1
     R12(i)=fillet/ysmall,L2(i),xsmall,Ld1(i),radius,R1
 lb30:
$$齿根圆弧
   R21(1)=fillet/ylarge,L(1),xsmall,L1(1),radius,R2
   do/lb40:,i,2,z,1
     R21(i)=fillet/ylarge,L3(i-1),xsmall,L1(i),radius,R2
 lb40:
   do/lb50:,i,1,z,1 
     R22(i)=fillet/xlarge,Ld1(i),ylarge,L3(i),radius,R2
 lb50:
   ifthen/B<>0
     hob(2)=solext/L(1..5),$
     L1(1..z),$
     L2(1..z),$ 
     L3(1..z),$
     Ld1(1..z),$
     R11(1..z),$
     R12(1..z),$
     R21(1..z),$
     R22(1..z),$
     height,Bn/cosf(B)+sinf(B)/cosf(B)*(z*tn+3),axis,0,0,1
$$左旋
   ifthen/xuan==0
     mat3=matrix/zxrot,-B
     mat4=matrix/transl,(z*tn+6)*cosf(B)/2,0,-(z*tn+3)*sinf(B)
     hob(1)=transf/mat3,hob(2)
     hob(1)=transf/mat4,hob(1),move
   endif
$$右旋
   ifthen/xuan==1
     mat3=matrix/zxrot,B
     hob(1)=transf/mat3,hob(2)
   endif
     delete/hob(2)
     d1(1)=point/0,0,Bn
     d1(2)=point/10,0,Bn
     d1(3)=point/0,10,Bn
     d1(4)=point/0,0,0
     d1(5)=point/10,0,0
     d1(6)=point/0,10,0
     f1(1)=plane/d1(1),d1(2),d1(3)
     f1(2)=plane/d1(4),d1(5),d1(6)
     hob(2..3)=solcut/hob(1),with,f1(1)
     delete/hob(2)
     hob(1..2)=solcut/hob(3),with,f1(2)
     delete/hob(2)
   else
     hob(1)=solext/L(1..5),$
     L1(1..z),$
     L2(1..z),$ 
     L3(1..z),$
     Ld1(1..z),$
     R11(1..z),$
     R12(1..z),$
     R21(1..z),$
     R22(1..z),$
     height,Bn,axis,0,0,1
   endif
$$删除轮廓线     
     delete/d1(1..6),f1(1..2),L(1..5),L1(1..z),$
     L2(1..z),$ 
     L3(1..z),$
     Ld1(1..z),$
     R11(1..z),$
     R12(1..z),$
     R21(1..z),$
     R22(1..z)
$$齿轮毛坯
     Gear(1)=solcyl/origin,0,0,0,height,Bn,diamtr,Da
$$运动仿真
    
    angle=2
    trans=matrix/transl,(-D0/2)*angle*pi/180,0,0
    rot=matrix/xyrot,-angle
    do/lb100:,j,2,360/angle+10,1
    hob(j)=transf/trans,hob(j-1)
    Gear2(j-1)=subtra/Gear(j-1),with,hob(j-1)
    Gear(j)=transf/rot,Gear2(j-1)
    delete/Gear(j-1)
    lb100:
    messg/'success!'
    delete/hob(360/angle+10)
    mask/omit,70
    delete/all

L100:HALT



 








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -