主程序: 子程序请自己写一下!
NUMBER/RESP,R,RB,RA,RF,B,I,HA,HF,MAT(12),COL,CEN(3),P,FD,ZMIN
ENTITY/RFC,SPLN1,SLL1,SL1,SPLN2,SLL2,SL2,LN1,ARCC,SOLIDZ,SOLID(200),CSYS0
STRING/DIR(50),FNAME(50),TEMP(100),COLO(10),JTYPES(10)
$$ ---------------------------------------------------------------------------
$$ 取文件目录和文件名---------------------------------------------------------
DIR=&PSPEC $$ 取出文件目录
ANS=LENF(DIR)
FNAME=SUBSTR(DIR,1,ANS-4,)+'.txt' $$ 取出文件名
$$ ---------------------------------------------------------------------------
$$ 默认值---------------------------------------------------------------------
M=2.5 $$ 模数
Z=20 $$ 齿数
A=20 $$ 压力角
TB=15 $$ 齿宽
HAC=1 $$ 齿顶高系数
CC=0.25 $$ 顶隙系数
XX=0 $$ 变位系数
$$ ---------------------------------------------------------------------------
$$ 定义界面-------------------------------------------------------------------
L10:
PARAM/'请输入渐开线直齿圆柱齿轮的各项基本参数:','模数',M,'齿数',INT,Z,$
'压力角',A,'齿宽',TB,'齿顶高系数',HAC,'齿侧间隙系数',CC,'变位系数',$
XX,RESP
JUMP/L10:,TERM:,,,RESP
L20:
CHOOSE/'请选择齿轮键的形式:','平键','花键','无',RESP
JUMP/L10:,TERM:,,,L30:,L40:,L50:,RESP
L30:
JTYPE=1
JUMP/L60:
L40:
JTYPE=2
JUMP/L60:
L50:
JTYPE=0
L60:
$$ ---------------------------------------------------------------------------
$$ 基本几何参数计算-----------------------------------------------------------
PI=3.1415926 $$ 圆周率
R=M*Z/2 $$ 分度圆半径
RB=R*COSF(A) $$ 基圆半径
HA=M*(HAC+XX) $$ 齿顶高
HF=M*(HAC+CC-XX) $$ 齿根高
RA=R+HA $$ 齿顶圆半径
RF=R-HF $$ 齿根圆半径
P=PI*M $$ 周节
PB=PI*M*COSF(A) $$ 基节
SS=PI*M/2+2*XX*M*SINF(A)/COSF(A) $$ 分度圆弧齿厚
FD=HA+HF $$ 全齿高
ZMIN=INTF(2*HAC/(SINF(A)*SINF(A)))+1 $$ 最小齿数
XMIN=HAC-Z*SINF(A)*SINF(A)/2 $$ 最小变位系数
$$ ---------------------------------------------------------------------------
$$ 画出齿轮-------------------------------------------------------------------
CALL/'SUB1',A,XX,M,R,RB,HA,HF,RA,RF,Z,RFC,SPLN1,SLL1,SL1,ARCC,SPLN2,SLL2,$
SL2,LN1 $$ 调用渐开线子程序
SOLIDZ=SOLEXT/RFC,HEIGHT,TB,AXIS,0,0,1 $$ 拉伸齿根圆柱
SOLID(1)=SOLEXT/SPLN1,ARCC,SPLN2,SLL2,SL2,LN1,SL1,SLL1,HEIGHT,TB,AXIS,$
0,0,1 $$ 拉伸轮齿
MAT=MATRIX/XYROT,360/Z
I=1
LLL:
IFTHEN/I<Z
SOLID(I+1)=TRANSF/MAT,SOLID(I) $$ 旋转拷贝轮齿
I=I+1
JUMP/LLL:
ENDIF
$$ ---------------------------------------------------------------------------
$$ 画出键---------------------------------------------------------------------
IFTHEN/JTYPE==1
CALL/'SUB5',TB,SOLIDZ $$ 调用平键子程序
ELSEIF/JTYPE==2
CALL/'SUB11',TB,SOLIDZ $$ 调用花键子程序
ELSE
ENDIF
$$ ---------------------------------------------------------------------------
$$ 建立齿轮信息文件-----------------------------------------------------------
COL=&COLOR(SOLIDZ) $$ 取出实体颜色
CSYS0=&WCS
&WCS=&ABS
CEN=&CENTER(RFC) $$ 取出齿轮位置中心
&WCS=CSYS0
IFTHEN/JTYPE==0
JTYPES='无'
ELSEIF/JTYPE==1
JTYPES='平键'
ELSE
JTYPES='花键'
ENDIF
IFTHEN/COL==1
COLO='BLUE'
ELSEIF/COL==2
COLO='GREEN'
ELSEIF/COL==3
COLO='CYAN'
ELSEIF/COL==4
COLO='RED'
ELSEIF/COL==5
COLO='MAGENT'
ELSEIF/COL==6
COLO='YELLOW'
ELSEIF/COL==7
COLO='WHITE'
ELSEIF/COL==8
COLO='OLIVE'
ELSEIF/COL==9
COLO='PINK'
ELSEIF/COL==10
COLO='BROWN'
ELSEIF/COL==11
COLO='ORANGE'
ELSEIF/COL==12
COLO='PURPLE'
ELSEIF/COL==13
COLO='DKRED'
ELSEIF/COL==14
COLO='AQUAMR'
ELSE
COLO='GRAY'
ENDIF
FETCH/TXT,1,FNAME,IFERR,FL10:
RESET/1
NUM1=1
FL40:
READ/1,IFEND,FL20:,TEMP
IFTHEN/TEMP=='#END#'
NUM1=NUM1+1
ENDIF
JUMP/FL40:
FL10:
CREATE/TXT,1,FNAME
NUM1=1
FL20:
WRITE/1,'----------------------------------------------------------------- '
WRITE/1,'有问题,请到https://ugapi.com 论坛上提问! '
WRITE/1,' '
WRITE/1,'齿轮编号: ('+ISTR(NUM1)+') :'
WRITE/1,' '
WRITE/1,' 齿轮形式 : '+'渐开线直齿圆柱齿轮'
WRITE/1,' 齿轮信息文件 : '+FNAME
WRITE/1,' 齿轮颜色 : '+COLO
WRITE/1,' 齿轮键的形式 : '+JTYPES
WRITE/1,' 齿轮中心坐标 ( X,Y,Z) : '
WRITE/1,' '+FSTR(CEN(1))+' ,'+FSTR(CEN(2))+$
' ,'+FSTR(CEN(3))
WRITE/1,' '
WRITE/1,' 齿轮几何参数 :'
WRITE/1,' 模数 : '+FSTR(M)
WRITE/1,' 齿数 : '+ISTR(Z)
WRITE/1,' 压力角 : '+FSTR(A)
WRITE/1,' 齿宽 : '+FSTR(TB)
WRITE/1,' 齿顶高系数 : '+FSTR(HAC)
WRITE/1,' 齿侧间隙系数 : '+FSTR(CC)
WRITE/1,' 变位系数 : '+FSTR(XX)
WRITE/1,' '
WRITE/1,' 分度圆直径 : '+FSTR(2*R)
WRITE/1,' 基圆直径 : '+FSTR(2*RB)
WRITE/1,' 齿顶高 : '+FSTR(HA)
WRITE/1,' 齿根高 : '+FSTR(HF)
WRITE/1,' 齿顶圆直径 : '+FSTR(2*RA)
WRITE/1,' 齿根圆直径 : '+FSTR(2*RF)
WRITE/1,' 周节 : '+FSTR(P)
WRITE/1,' 基节 : '+FSTR(PB)
WRITE/1,' 分度圆弧齿厚 : '+FSTR(SS)
WRITE/1,' 全齿高 : '+FSTR(FD)
WRITE/1,' 最小齿数 : '+ISTR(ZMIN)
WRITE/1,' 最小变位系数 : '+FSTR(XMIN)
WRITE/1,' '
WRITE/1,'#END#'
FILE/TXT,1
RESET/1
FPRINT/1 $$ 将齿轮信息显示在窗口上
FTERM/TXT,1
$$ ---------------------------------------------------------------------------
&WCS=CSYS0
TERM:
HALT |