圆柱直齿轮相关(1)
悲剧的外企,不大好意思问人,简单东西要搞n久。。。
---------
1.proe绘制齿轮(注,根据两个月来的工作经验,这个没什么用,因为出的cad图都是靠写参数的,所以proe的齿子画的不标准也问题不大,不过,用参数化的方式可以免去以后记不住参数的麻烦)
a.画分度圆,齿顶圆,齿根圆
b.画渐开线,方程为:
r=db/2
theta=t*45
x=r*cos(theta)+r*sin(theta)*theta*pi/180
y=r*sin(theta)-r*cos(theta)*theta*pi/180
c.对称渐近线
很多教程上面这里有个错误,认为分度圆齿厚和齿槽宽是相等的,所以得出对称平面与原平面(通过齿轮中心直线和渐开线与分度圆交点的平面)夹角为360/(4*Z)。关键是他们还在齿顶圆之类的公式里面加上变位,显得自己的方法是通用的。。。
对于变位齿轮,这个夹角应该是360/(4*Z)+2*X*TAN(ALPHA)*180/pi/z
d.各种拉伸
2.渐开线函数inva,反渐开线函数ainva
因为我是自己在excel里面做公式,所以找的vb版
Public Function Inv(a As Double) As Double Inv = Tan(a) - a End Function Public Function aInv(num As Double) As Double Dim lowangle As Double Dim highangle As Double Dim midangle As Double lowangle = 0 highangle = Atn(1) * 2 Do While highangle - lowangle > 10 ^ -12 midangle = (lowangle + highangle) / 2 If Inv(midangle) > num Then highangle = midangle Else lowangle = midangle End If Loop aInv = (lowangle + highangle) / 2 / Atn(1) * 45 End Function据说C版如下,未验证:
#include<iostream.h> #include<math.h> #include<conio.h> double AInv(double y, double e); void main() { double x, y; cout<<"Input y (>0): "; cin>>y; x = AInv(y, 0.000001); if (x<0) cout<<"Failed after 100 iterations!"<<endl; else cout<<"ainv("<<y<<") = "<<x<<endl; getch(); } double AInv(double y, double e) { double x, maxX, minX; const double pi = 3.14159265358979; maxX = pi/2; minX = 0; for (int i=1;i<=100;i++) { x = (maxX + minX) / 2; if (maxX-x<e) return(x); if (y>tan(x) - x) minX = x; else maxX = x; cout<<minX<<", "<<maxX<<endl; } return(-1); }
3.cad画齿轮(注:这个也没什么用,画示意图的时候用吧,或许有线切割的齿轮…)
导入附件用gear命令就可以了
收到1条评论
李若蟾 2014-08-26 14:06
代码看不懂的飘过
回复