- 积分
- 0
- 注册时间
- 2011-5-9
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 wanxlxg 于 2011-6-30 16:56 编辑
下面是我的程序,现在有个问题就是,我在运行程序的时候 如果把齿数 z 的值改为 小于15的数的话 齿轮导角就不能生成,错误提示说 A fillet cannot be created with the given radius between the two given entities.
我理解是 最后的画导角命令中 的nearpoint 的问题但是怎么修改确不知道了,那位大侠 帮我出出主意吧
(红色部分是错误行)
另外问个小问题,我想把 导角半径 定义在 0和1之间 应该怎么写程序呢?
from abaqus import*
from abaqusConstants import*
session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=324.555541992188,
height=204.226654052734)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].maximize()
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
Mdb()
fields=(('Winkel:','30'),('Zaehnezahl:','21'),('Modul:','2'),('Profilverschiebung:','0.4'),('Fussrundungsradius:','0.32'))
w,z,m,c,Pfp=getInputs(fields=fields,label='Enter Daten:')
i=1
Alpha=0
imt=0.05
x1=float(c)/float(m)
T=0-imt
pi=acos(-1)
alpha=float(w)*pi/180
r=(float(m)*float(z))/2
hfp=0.55*float(m)
s1=float(m)*pi/2+2*x1*float(m)*tan(alpha)
ra1=(float(m)*float(z)+2*x1*float(m)+0.9*float(m))/2
rb=(float(m)*float(z)*cos(alpha))/2
rf1=(float(m)*float(z)+2*x1*float(m)-2*hfp)/2
n=30
points=[]
A=[]
B=[]
while i<=n:
T=T+imt
temp=(ra1**2)/(rb**2)-1
Alpha=T*sqrt(temp)
y=rb*(cos(Alpha)+Alpha*sin(Alpha))
x=rb*(sin(Alpha)-Alpha*cos(Alpha))
points.append((x,y))
A.append((x))
B.append((y))
i=i+1
print points,rf1,rb,ra1,x,y
session.viewports['Viewport: 1'].setValues(displayedObject=None)
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
s.sketchOptions.setValues(decimalPlaces=3)
s.Spline(points=points)
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(rf1, 0.0))
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(rb, 0.0))
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(ra1, 0.0))
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(r, 0.0))
GAMMA=sqrt((r**2)-(rb**2))
THETA=(GAMMA/rb)-atan(GAMMA/rb)
RO=(s1/2)/r
START_ANGLE=(THETA+RO)*180/pi
s.rotate(centerPoint=(0.0, 0.0), angle=START_ANGLE, objectList=(g[2], ))
s.Line(point1=(0.0, 0.0), point2=(0.0, ra1))
s.VerticalConstraint(entity=g[7], addUndoState=False)
s.copyMirror(mirrorLine=g[7], objectList=(g[2], ))
s.breakCurve(curve1=g[2], point1=(-A[25], B[25]),
curve2=g[3], point2=(-rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180)))
s.breakCurve(curve1=g[3], point1=(-rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180)),
curve2=g[9], point2=(-A[25], B[25]))
s.breakCurve(curve1=g[10], point1=(-A[25], B[25]),
curve2=g[5], point2=(-ra1*sin((START_ANGLE*pi)/180), ra1*cos((START_ANGLE*pi)/180)))
s.breakCurve(curve1=g[5], point1=(-ra1*sin((START_ANGLE*pi)/180), ra1*cos((START_ANGLE*pi)/180)),
curve2=g[14], point2=(-A[25], B[25]))
s.breakCurve(curve1=g[8], point1=(A[25], B[25]),
curve2=g[11], point2=(rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180)))
s.breakCurve(curve1=g[11], point1=(rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180)),
curve2=g[17], point2=(A[25], B[25]))
s.breakCurve(curve1=g[18], point1=(A[25], B[25]),
curve2=g[15], point2=(ra1*sin((START_ANGLE*pi)/180), ra1*cos((START_ANGLE*pi)/180)))
s.breakCurve(curve1=g[15], point1=(ra1*sin((START_ANGLE*pi)/180), ra1*cos((START_ANGLE*pi)/180)),
curve2=g[22], point2=(A[25], B[25]))
s.delete(objectList=(g[7], ))
s.delete(objectList=(g[9], ))
s.delete(objectList=(g[14], ))
s.delete(objectList=(g[22], ))
s.delete(objectList=(g[17], ))
s.delete(objectList=(g[6], ))
s.delete(objectList=(g[16], ))
s.delete(objectList=(g[23], ))
s.delete(objectList=(g[20], ))
s.delete(objectList=(g[4], ))
s.FilletByRadius(radius=float(Pfp), curve1=g[13], nearPoint1=(-A[20],
B[20]), curve2=g[12], nearPoint2=(-rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180)))
s.FilletByRadius(radius=float(Pfp), curve1=g[21], nearPoint1=(A[20],
B[20]), curve2=g[19], nearPoint2=(rf1*sin((START_ANGLE*pi)/180), rf1*cos((START_ANGLE*pi)/180))) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|