滚珠螺母内螺纹滚道在加工时,砂轮接杆偏摆角度为滚道螺旋升角,砂轮截形为滚道法向截形。当螺母导程较大时,比如说1616、2020等规格,螺旋升角较大,若按螺旋升角的大小调整砂轮接杆角度,则砂轮接杆会和螺母内孔产生干涉,此时就需要采用其它加工方法,比如说“以车代磨”、“软轴磨”、“干涉磨”等等。
所谓的干涉磨,指的是以小于螺旋升角的角度调整砂轮接杆角度,来对滚道进行磨削,此时,砂轮的截形就不能以滚道的法向截形来修整,需要通过计算来确定。螺纹滚道的螺旋铣也是这个道理(相当于砂轮角度为0°的干涉磨)。
常规磨削时,砂轮角度与滚道螺旋升角相同,砂轮与螺母滚道的接触线为滚道法向截面,该接触线在绕机床主轴旋转的同时Z向进给,从而形成了螺旋滚道面。对于干涉磨来讲,由于砂轮偏摆的角度与螺旋升角不同,所以砂轮与滚道的接触线不是滚道法向截面,但可以确定的是,螺旋滚道面也是由该接触线在绕机床主轴旋转的同时Z向进给形成的,所以,我们只要求出了接触线(或者说接触线上的多个点)就能求出砂轮截形。
内螺纹滚道面和砂轮回转面在接触线处相切,切点的公法线必然通过砂轮的回转轴线,所以,螺旋滚道曲面上法线通过刀具轴线的点就是接触线上的点,只要找到这些点可以了。
import NXOpen import NXOpen_UF theSession: NXOpen.Session = NXOpen.Session.GetSession() theUFSession: NXOpen_UF.UFSession = NXOpen_UF.UFSession.GetUFSession() modling: NXOpen_UF.Modeling = theUFSession.Modeling v3: NXOpen_UF.Vec3 = theUFSession.Vec3 workPart: NXOpen.Part = theSession.Parts.Work lw: NXOpen.ListingWindow = theSession.ListingWindow lw.Open() # 计算空间两直线的距离,用于判定公法线是否在砂轮轴线上 def getDis(p1, v1, p2, v2): mn = [p1[0] - p2[0], p1[1] - p2[1], p1[2] - p2[2]] return abs(v3.Dot(v3.Cross(v1, v2), mn) / v3.Mag(v3.Cross(v1, v2))) # 砂轮轴线位置 t = 11 for body in workPart.Bodies: for face in body.GetFaces(): # 遍历螺旋曲面u参数 for i in range(50): u = 0.02 * i # 遍历v参数,正常情况这里用迭代法,为了简单起见,这里直接暴力循环 for j in range(100000): v = 0.00001 * j # 获取[u,v]下的点和法向量 result = modling.EvaluateFace(face.Tag, 10, [u, v]) # 求法向量和砂轮轴线的距离 dis_1 = getDis(result.SrfPos, result.SrfUnormal, [t, 0.0, 0.0], [0.0, 0.0, 1.0]) # 设置距离精度,如果<此精度,则认为法向量穿过砂轮轴线 if dis_1 < 0.0001: lw.WriteLine(str([result.SrfPos[0] - t, result.SrfPos[1], result.SrfPos[2]])) lw.WriteLine( f"u={u};v={v}:{result.SrfPos},{result.SrfUnormal},{dis_1}") point = workPart.Points.CreatePoint( NXOpen.Point3d(result.SrfPos[0], result.SrfPos[1], result.SrfPos[2])) point.SetVisibility( NXOpen.SmartObjectVisibilityOption.Visible) workPart.Datums.CreateFixedDatumAxis( NXOpen.Point3d(*result.SrfPos), NXOpen.Point3d(result.SrfPos[0] + result.SrfUnormal[0], result.SrfPos[1] + result.SrfUnormal[1], result.SrfPos[2] + result.SrfUnormal[2])) break
如上图,可以求出各个接触点的坐标和该点的法向量,测量法向量和砂轮轴线的距离,可以看到<0.0001,也就是可以认为该法向量通过砂轮轴线。然后在砂轮坐标系中对接触点进行处理,就可以求的砂轮截形,在此不再赘述。
标签:内螺纹,螺旋,Python,砂轮,NXOpen,result,二次开发,截形,SrfPos From: https://www.cnblogs.com/hustmse0510/p/17476928.html