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

📄 unit1.cpp

📁 为数控机床的圆弧插补程序
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
   #include<math.h>
   #include<stdio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

//---------------------------------------------------------------------------


 float a=270;    /*起始角度*/
 float b=0;       /*终止角度*/
 float R=100;      /*圆半径*/
 int NR=0;          /*方向,1为逆向,0为顺向*/

float XE;  /*终点横坐标*/
float YE;/*终点纵坐标*/
float XS ;/*起点横坐标*/
float YS ;/*起点纵坐标*/
float STEP=1 ;/*步长*/



  int FM,XOY;
 int p_xe,p_ye,p_xs,p_ys;

 void initial(void)         /*始初化函数*/
 {FM=0;
 if(NR==1)
  {if(XS>0&&YS>=0)XOY=1;
   if(XS<=0&&YS>0)XOY=2;
   if(XS<0&&YS<=0)XOY=3;
   if(XS>=0&&YS<0)XOY=4;
   }
  if(NR==0)
  {if(XS>=0&&YS>0)XOY=5;
   if(XS<0&&YS>=0)XOY=6;
   if(XS<=0&&YS<0)XOY=7;
   if(XS>0&&YS<=0)XOY=8;
  }
 }

  void xoy1()                        /*插补函数*/
      {if(FM>=0){YS=YS+STEP ; FM=FM-2*YS+1;}
      else if(FM<0){XS=XS-STEP ;  FM=FM+2*XS+1;}
      }
    void xoy2()
      {if(FM>=0){XS=XS-STEP; FM=FM+2*XS+1;}
      else if(FM<0){ YS=YS-STEP; FM=FM+2*YS+1;}
      }
    void xoy3()
      {if(FM>=0){YS=YS-STEP; FM=FM+2*YS+1;}
      else if(FM<0){XS=XS+STEP; FM=FM-2*XS+1 ;}
      }
     void xoy4()
      {if(FM>=0){XS=XS+STEP; FM=FM-2*XS+1;}
      else if(FM<0){YS=YS+STEP; FM=FM-2*YS+1 ;}
      }

    void xoy5()
      {if(FM>=0){XS=XS+STEP ; FM=FM-2*XS+1;}
      else if(FM<0){YS=YS-STEP ;  FM=FM+2*YS+1 ;}
      }
    void xoy6()
      {if(FM>=0){YS=YS+STEP ; FM=FM-2*YS+1;}
      else if(FM<0){ XS=XS+STEP ;  FM=FM-2*XS+1;}
      }
    void xoy7()
      {if(FM>=0){XS=XS-STEP ; FM=FM+2*XS+1;}
      else if(FM<0){ YS=YS+STEP ;  FM=FM-2*YS+1;}
      }
    void xoy8()
      {if(FM>=0){YS=YS-STEP ; FM=FM+2*YS+1 ;}
      else if(FM<0){XS=XS-STEP ;  FM=FM+2*XS+1;}
      }




void __fastcall TForm1::Button2Click(TObject *Sender)
{  int g=0;  int k=0;
 FILE *fp;
 char p[]="pline";
fp=fopen("d:\\yuan.scr","w");
 fprintf(fp,"%s\n",p);


float pai=3.14159;
XE=R*cos(b*pai/180);
YE=R*sin(b*pai/180);
XS=R*cos(a*pai/180);
YS=R*sin(a*pai/180);
fprintf(fp,"%f,%f\n",XS,YS);
     if(a==b)k=1;

 p_xs=XS+250;
 p_ys=-YS+250;
 p_xe=XE+250;
 p_ye=-YE+250;
 Canvas->Pen->Color=clGreen;

 initial();

 Canvas->MoveTo(p_xs,p_ys);
 for(;;)
  {switch(XOY)
    {case 1:xoy1();break;
     case 2:xoy2();break;
     case 3:xoy3();break;
     case 4:xoy4();break;
     case 5:xoy5();break;
     case 6:xoy6();break;
     case 7:xoy7();break;
     case 8:xoy8();break;
     }
   fprintf(fp,"%f,%f\n",XS,YS);
 Canvas->LineTo(XS+250,-YS+250);
  if(k==0)
  {
  if((fabs(XS-XE)<=0.99999*STEP)&&(fabs(YS-YE)<=0.99999*STEP))break;
   }
   k=0;
    if(g>4)break;
    if(NR==1)
       {if(XOY==1)
          if((fabs(XS)<=0.9999*STEP)&&((YS-R)<=0.9999*STEP)) {XOY=2;g++;}
        if(XOY==2)
          if((fabs(YS)<=0.9999*STEP)&&((XS-R)<=0.9999*STEP)){XOY=3;g++;}
        if(XOY==3)
          if((fabs(XS)<=0.9999*STEP)&&((YS-R)<=0.9999*STEP)){XOY=4;g++;}
        if(XOY==4)
          if((fabs(YS)<=0.9999*STEP)&&((XS-R)<=0.9999*STEP)){XOY=1;g++;}
       }
    if(NR==0)
       {if(XOY==5)
          if((fabs(YS)<=0.9999*STEP)&&((XS-R)<=0.9999*STEP)){XOY=8;g++;}
        if(XOY==8)
          if((fabs(XS)<=0.9999*STEP)&&((YS-R)<=0.9999*STEP)){XOY=7;g++;}
        if(XOY==7)
          if((fabs(YS)<=0.9999*STEP)&&((XS-R)<=0.9999*STEP)){XOY=6;g++;}
        if(XOY==6)
          if((fabs(XS)<=0.9999*STEP)&&((YS-R)<=0.9999*STEP)){XOY=5;g++;}
       }
  }
 fprintf(fp,"\n\n");fclose(fp);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{Close();
        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
   Canvas->Pen->Color=clBlack;
 Canvas->MoveTo(100,250);Canvas->LineTo(400,250);
 Canvas->MoveTo(250,100);Canvas->LineTo(250,400);     
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -