📄 standard_hob.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 + -