📄 wanqupilao.cpp
字号:
j=1;
UpdateData(true);
double zhuanju,Ft,t,shiyong;
m_preDlg1->UpdateData(TRUE);
zhuanju=m_preDlg1->m_zhuanju;
Ft=2*zhuanju/m_fenduzhijing;
shiyong=m_preDlg1->m_shiyong;
t=shiyong*Ft/m_chikuan;
if(t<100)
{
AfxMessageBox(_T("验算合格!"));
}
else
AfxMessageBox(_T("验算不合格,请重新进行校核!"));
}
void wanqupilao::Onhuitu()
{
if(j==1)
{
UpdateData(true);
double gonglu,zhuansu;
m_preDlg1->UpdateData(TRUE);
gonglu=m_preDlg1->m_gonglu;
zhuansu=m_preDlg1->m_zhuansu;
if(m_TCXT==1)
{
OnCancel();
}
CString mushu;
double mushu1;
m_mushu.GetWindowText(mushu);
mushu1=strtodouble(mushu);
double Aglsum = 2*PI/m_chishu;
double x0,y0; //起始点
double Rf,xf,yf,xf1,yf1,aglf = 2*Aglsum/3,aglf1 = Aglsum; //齿底弧线
double Ra,xa,ya,xa1,ya1,agla = Aglsum/4 ,agla1 = 5*Aglsum/12; //齿顶弧线
double Rr,xr,yr,xr1,yr1,aglr = Aglsum/12 ,aglr1 = 7*Aglsum/12; //节圆上点
Ra =m_fenduzhijing/2+mushu1 ; //齿顶圆的半径!
Rr = m_fenduzhijing/2; //分度圆的半径
Rf = Rr - 1.25*mushu1; // 齿根圆的半径!
x0 = 0; y0 = Rf;
xr = Rr*sin(aglr); yr = Rr*cos(aglr);
xr1 = Rr*sin(aglr1); yr1 = Rr*cos(aglr1);
xa = Ra*sin(agla); ya = Ra*cos(agla);
xa1 = Ra*sin(agla1); ya1 = Ra*cos(agla1);
xf = Rf*sin(aglf); yf = Rf*cos(aglf);
xf1 = Rf*sin(aglf1); yf1 = Rf*cos(aglf1);
double Do,D1,t,Djs1;
Do=Ra*2-10*mushu1;
D1=1.6*m_chikongzhijing;
Djs1=0.125*pow((gonglu/zhuansu),0.3333333333333)*1000;
t=asin((m_jiankuan/2)/(Djs1/2));
double P1[3],P2[3],P3[3],P4[3];
P1[0]=(Djs1/2)*sin(t), P1[1]=(Djs1/2)*cos(t), P1[2]=0;
P2[0]=(Djs1/2)*sin(t), P2[1]=(Djs1/2)*cos(t)+m_jiankuan/2, P2[2]=0;
P3[0]=-(Djs1/2)*sin(t), P3[1]=(Djs1/2)*cos(t)+m_jiankuan/2, P3[2]=0;
P4[0]=-(Djs1/2)*sin(t), P4[1]=(Djs1/2)*cos(t), P4[2]=0;
int errorCode = UF_initialize();
if ( 0 == errorCode )
{
int create_flag1=1;
double second1_point[3]={x0,y0,0},arcsh_point[3]={xr,yr,0},arcxia_point[3]={xa,ya,0} ;
tag_t arc1;
UF_CURVE_create_arc_thru_3pts(create_flag1,second1_point,arcsh_point,arcxia_point,&arc1);
//第二条渐开线
tag_t arc2;
double q1[3]={xa1,ya1,0},q2[3]={xr1,yr1,0},q3[3]={xf,yf,0};
UF_CURVE_create_arc_thru_3pts(create_flag1,q1,q2,q3,&arc2);
tag_t line1,line2;
UF_CURVE_line_t sline1,sline2;
sline1.start_point[0]=xa;
sline1.start_point[1]=ya;
sline1.start_point[2]=0;
sline1.end_point[0]=xa1;
sline1.end_point[1]=ya1;
sline1.end_point[2]=0;
UF_CURVE_create_line(&sline1,&line1);
sline2.start_point[0]=x0;
sline2.start_point[1]=y0;
sline2.start_point[2]=0;
sline2.end_point[0]=xf;
sline2.end_point[1]=yf;
sline2.end_point[2]=0;
UF_CURVE_create_line(&sline2,&line2);
//下面绘制旋转轮廓
tag_t line3,line4,line5,line6,line7,line8,line9,line10,line11,line12,
line13,line14,line15,line16,line17;
UF_CURVE_line_t sline3,sline4,sline5,sline6,sline7,sline8,sline9,sline10,sline11,
sline12,sline13,sline14,sline15,sline16,sline17;
sline3.start_point[0]=0;
sline3.start_point[1]=0;
sline3.start_point[2]=0;
sline3.end_point[0]=0 ;
sline3.end_point[1]=0;
sline3.end_point[2]=m_chikuan;
UF_CURVE_create_line(&sline3,&line3);
UF_CURVE_ask_line_data(line3 ,&sline3);
sline4.start_point[0]=sline3.end_point[0];
sline4.start_point[1]=sline3.end_point[1];
sline4.start_point[2]=sline3.end_point[2];
sline4.end_point[0]=sline3.end_point[0]+D1/2;
sline4.end_point[1]=sline3.end_point[1];
sline4.end_point[2]=sline3.end_point[2];
UF_CURVE_create_line(&sline4,&line4);
UF_CURVE_ask_line_data(line4 ,&sline4);
sline5.start_point[0]=sline4.end_point[0];
sline5.start_point[1]=sline4.end_point[1];
sline5.start_point[2]=sline4.end_point[2];
sline5.end_point[0]=sline4.end_point[0];
sline5.end_point[1]=sline4.end_point[1];
sline5.end_point[2]=sline4.end_point[2]-0.4*m_chikuan;
UF_CURVE_create_line(&sline5,&line5);
UF_CURVE_ask_line_data(line5 ,&sline5);
sline6.start_point[0]=sline5.end_point[0];
sline6.start_point[1]=sline5.end_point[1];
sline6.start_point[2]=sline5.end_point[2];
sline6.end_point[0]=sline5.end_point[0]+(Do/2-D1/2);
sline6.end_point[1]=sline5.end_point[1];
sline6.end_point[2]=sline5.end_point[2];
UF_CURVE_create_line(&sline6,&line6);
UF_CURVE_ask_line_data(line6 ,&sline6);
sline7.start_point[0]=sline6.end_point[0];
sline7.start_point[1]=sline6.end_point[1];
sline7.start_point[2]=sline6.end_point[2];
sline7.end_point[0]=sline6.end_point[0];
sline7.end_point[1]=sline6.end_point[1];
sline7.end_point[2]=sline6.end_point[2]+0.4*m_chikuan;
UF_CURVE_create_line(&sline7,&line7);
UF_CURVE_ask_line_data(line7 ,&sline7);
sline8.start_point[0]=sline7.end_point[0];
sline8.start_point[1]=sline7.end_point[1];
sline8.start_point[2]=sline7.end_point[2];
sline8.end_point[0]=sline7.end_point[0]+(Rf-Do/2);
sline8.end_point[1]=sline7.end_point[1];
sline8.end_point[2]=sline7.end_point[2];
UF_CURVE_create_line(&sline8,&line8);
UF_CURVE_ask_line_data(line8 ,&sline8);
sline9.start_point[0]=sline8.end_point[0];
sline9.start_point[1]=sline8.end_point[1];
sline9.start_point[2]=sline8.end_point[2];
sline9.end_point[0]=sline8.end_point[0];
sline9.end_point[1]=sline8.end_point[1];
sline9.end_point[2]=sline8.end_point[2]-m_chikuan;
UF_CURVE_create_line(&sline9,&line9);
UF_CURVE_ask_line_data(line9 ,&sline9);
sline10.start_point[0]=sline9.end_point[0];
sline10.start_point[1]=sline9.end_point[1];
sline10.start_point[2]=sline9.end_point[2];
sline10.end_point[0]=sline9.end_point[0]-(Rf-Do/2);
sline10.end_point[1]=sline9.end_point[1];
sline10.end_point[2]=sline9.end_point[2];
UF_CURVE_create_line(&sline10,&line10);
UF_CURVE_ask_line_data(line10 ,&sline10);
sline11.start_point[0]=sline10.end_point[0];
sline11.start_point[1]=sline10.end_point[1];
sline11.start_point[2]=sline10.end_point[2];
sline11.end_point[0]=sline10.end_point[0];
sline11.end_point[1]=sline10.end_point[1];
sline11.end_point[2]=sline10.end_point[2]+0.4*m_chikuan;
UF_CURVE_create_line(&sline11,&line11);
UF_CURVE_ask_line_data(line11 ,&sline11);
sline12.start_point[0]=sline11.end_point[0];
sline12.start_point[1]=sline11.end_point[1];
sline12.start_point[2]=sline11.end_point[2];
sline12.end_point[0]=sline11.end_point[0]-(Do/2-D1/2);
sline12.end_point[1]=sline11.end_point[1];
sline12.end_point[2]=sline11.end_point[2];
UF_CURVE_create_line(&sline12,&line12);
UF_CURVE_ask_line_data(line12 ,&sline12);
sline13.start_point[0]=sline12.end_point[0];
sline13.start_point[1]=sline12.end_point[1];
sline13.start_point[2]=sline12.end_point[2];
sline13.end_point[0]=sline12.end_point[0];
sline13.end_point[1]=sline12.end_point[1];
sline13.end_point[2]=sline12.end_point[2]-0.4*m_chikuan;
UF_CURVE_create_line(&sline13,&line13);
UF_CURVE_ask_line_data(line13 ,&sline13);
sline14.start_point[0]=sline13.end_point[0];
sline14.start_point[1]=sline13.end_point[1];
sline14.start_point[2]=sline13.end_point[2];
sline14.end_point[0]=0;
sline14.end_point[1]=0;
sline14.end_point[2]=0;
UF_CURVE_create_line(&sline14,&line14);
int obj_count;
UF_FEATURE_SIGN mode_sign1=UF_NULLSIGN;
tag_t generators1[12],*objects1;
char *body_limit[2]={"0.0","360.0"};
char *offsets[2]={"0.0","0.0"};
double origin[3]={0.0,0.0,0.0};
double direction[3]={0.0,0.0,1.0};
UF_MODL_SWEEP_TRIM_object_p_t trim_data=NULL;
generators1[0]=line3;
generators1[1]=line4;
generators1[2]=line5;
generators1[3]=line6;
generators1[4]=line7;
generators1[5]=line8;
generators1[6]=line9;
generators1[7]=line10;
generators1[8]=line11;
generators1[9]=line12;
generators1[10]=line13;
generators1[11]=line14;
UF_CALL(UF_MODL_create_revolution(generators1,12,trim_data,body_limit,
offsets,origin,false,true,origin,direction,
mode_sign1,&objects1,&obj_count));
sline15.start_point[0]=P1[0];
sline15.start_point[1]=P1[1];
sline15.start_point[2]=P1[2];
sline15.end_point[0]=P2[0];
sline15.end_point[1]=P2[1];
sline15.end_point[2]=P2[2];
UF_CURVE_create_line(&sline15,&line15);
sline16.start_point[0]=P2[0];
sline16.start_point[1]=P2[1];
sline16.start_point[2]=P2[2];
sline16.end_point[0]=P3[0];
sline16.end_point[1]=P3[1];
sline16.end_point[2]=P3[2];
UF_CURVE_create_line(&sline16,&line16);
sline17.start_point[0]=P3[0];
sline17.start_point[1]=P3[1];
sline17.start_point[2]=P3[2];
sline17.end_point[0]=P4[0];
sline17.end_point[1]=P4[1];
sline17.end_point[2]=P4[2];
UF_CURVE_create_line(&sline17,&line17);
tag_t arc3;
double xia[3]={0,-Djs1/2,0};
UF_CURVE_create_arc_thru_3pts(create_flag1,P4,xia,P1,&arc3);
UF_FEATURE_SIGN mode_sign3=UF_NEGATIVE;
char len1[120],len2[120];
int sig=15;
gcvt(0,sig,len1);
gcvt(m_chikuan,sig,len2);
char *limits[2];
limits[0]=len1;
limits[1]=len2;
char *taper_angle="0.0";
double pt1[3],dir[3];
dir[0]=0.0; dir[1]=0.0; dir[2]=1.0;
tag_t generators2[4];
generators2[0]=line15;
generators2[1]=line16;
generators2[2]=line17;
generators2[3]=arc3;
uf_list_p_t loop_list1, features1;
UF_MODL_create_list(&loop_list1);
for(int j = 0; j < 4; j++)
{
UF_MODL_put_list_item(loop_list1, generators2[j]);
}
UF_MODL_create_extruded(loop_list1,taper_angle,limits,pt1,dir,mode_sign3,&features1) ;
double P5[3],P6[3],P7[3];
P5[0]=-0.2*(Do-D1)/2, P5[1]=(Do+D1)/4, P5[2]=0.4*m_chikuan;
P6[0]=0, P6[1]=(Do+D1)/4-0.2*(Do-D1)/2,P6[2]=0.4*m_chikuan;
P7[0]=0.2*(Do-D1)/2, P7[1]=(Do+D1)/4, P7[2]=0.4*m_chikuan;
int create_flag2=2;
tag_t arc4;
UF_CURVE_create_arc_thru_3pts(create_flag2,P5,P6,P7,&arc4);
uf_list_p_t loop_list2, features2;
UF_MODL_create_list(&loop_list2);
UF_MODL_put_list_item(loop_list2, arc4);
UF_MODL_create_extruded (loop_list2,taper_angle,limits,pt1,dir,mode_sign3,&features2) ;
tag_t feat_obj;
UF_CALL(UF_MODL_create_circular_iset(0,origin,direction,"6", "60",
features2,&feat_obj));
dir[0]=0.0; dir[1]=0.0; dir[2]=1.0;
tag_t generators3[4];
generators3[0]=arc1;
generators3[1]=line1;
generators3[2]=arc2;
generators3[3]=line2;
UF_FEATURE_SIGN mode_sign2 = UF_POSITIVE;
uf_list_p_t loop_list3, features3;
UF_MODL_create_list(&loop_list3);
for(int i = 0; i < 4; i++)
{
UF_MODL_put_list_item(loop_list3, generators3[i]);
}
UF_MODL_create_extruded(loop_list3,taper_angle,limits,pt1,dir,mode_sign2,&features3) ;
tag_t feat_obj1;
char num[120],angle[120] ;
gcvt(m_chishu,sig,num);
gcvt(360.0/m_chishu,sig,angle);
UF_CALL(UF_MODL_create_circular_iset(0,origin,direction,num, angle ,
features3,&feat_obj1));
UF_OBJ_set_blank_status(line1,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line2,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line3,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line4,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line5,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line6,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line7,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line8,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line9,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line10,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line11,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line12,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line13,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line14,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line15,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line16,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(line17,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(arc1,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(arc2,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(arc3,UF_OBJ_BLANKED);
UF_OBJ_set_blank_status(arc4,UF_OBJ_BLANKED);
errorCode = UF_terminate();
}
}
else
{
AfxMessageBox(_T("请先进行验算!"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -