⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wanqupilao.cpp

📁 基于UG平台
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -