g代码解释程序 java_解析g代码c语言程序

g代码如下

T1M6

G17

G0Z5.000

G0X0.000Y0.000S15000M3

G0X6.920Y10.816Z5.000

G1Z0.000F240.0

G1X6.461Y10.758F600.0

G3X6.009Y10.361I0.268J-0.763

G1X5.922Y9.917

Y9.008

G3X6.873Y8.456I0.675J0.067

G3X7.237Y8.775I-0.216J0.614

G3X7.291Y9.325I-1.167J0.392

G1X8.406

G3X8.606Y8.584I0.778J-0.187

G3X9.574I0.484J0.573

G3X9.775Y9.008I-0.363J0.431

G1Y10.071

G3X8.816Y10.816I-0.838J-0.089

G1Y16.796

X10.009

X10.034Y11.219

G3X11.329Y9.669I2.077J0.420

G1Y3.814

G3X10.251Y2.999I0.918J-2.336

G3X9.833Y1.768I1.632J-1.239

G1X14.947

G0Z5.000

G0X0.000Y0.000

G0Z5.000

G0X0.000Y0.000

M30

c语言程序:

struct coord

{

double x;

double y;

double z;

double i;

double j;

};//g代码参数结构体

struct coord cord[20];

void get012()//读取g代码中012

{

int h=1;

int m;

double centerx,centery,R,theta,theta0,deltatheta;

if(is2!=0)h=is2;

for(m=0;m0)theta=3/2.*PI;

else

if(cord[m+1].i==0&&cord[m+1].j<0)theta=1/2.*PI;

else if(cord[m+1].i>0)

theta=atan(cord[m+1].j/cord[m+1].i)+PI;

else if(cord[m+1].i<0&&cord[m+1].j>0)

theta=atan(cord[m+1].j/cord[m+1].i)+2*PI;

else if(cord[m+1].i<0&&(cord[m+1].j<0||cord[m+1].j==0))

theta=atan(cord[m+1].j/cord[m+1].i);

if(centerx==cord[m+1].x&&centery>cord[m+1].y)theta0=3/2.*PI;

else if(centerx==cord[m+1].x&&centerycord[m+1].x)

theta0=atan((cord[m+1].y-centery)/(cord[m+1].x-centerx))+PI;

else if(centerxcord[m+1].y||centery==cord[m+1].y))

theta0=atan((cord[m+1].y-centery)/(cord[m+1].x-centerx))+2*PI;

deltatheta=theta0-theta;

if(deltatheta>0)deltatheta=deltatheta-2*PI;

CircleRunin(R*200,theta,deltatheta);//圆弧插补函数

cord[0].x=cord[m+1].x;

cord[0].y=cord[m+1].y;

break;

case '3': printf(" ncircle:\n");

centerx=cord[0].x+cord[m+1].i;

centery=cord[0].y+cord[m+1].j;

R=sqrt(cord[m+1].i*cord[m+1].i+cord[m+1].j*cord[m+1].j);

if(cord[m+1].i==0&&cord[m+1].j>0)theta=3/2.*PI;

else if(cord[m+1].i==0&&cord[m+1].j<0)theta=1/2.*PI;

else if(cord[m+1].i>0)

theta=atan(cord[m+1].j/cord[m+1].i)+PI;

else if(cord[m+1].i<0&&cord[m+1].j>0)

theta=atan(cord[m+1].j/cord[m+1].i)+2*PI;

else if(cord[m+1].i<0&&(cord[m+1].j<0||cord[m+1].j==0))

theta=atan(cord[m+1].j/cord[m+1].i);

if(centerx==cord[m+1].x&&centery>cord[m+1].y)theta0=3/2.*PI;

else if(centerx==cord[m+1].x&&centerycord[m+1].x)

theta0=atan((cord[m+1].y-centery)/(cord[m+1].x-centerx))+PI;

else if(centerxcord[m+1].y||centery==cord[m+1].y))

theta0=atan((cord[m+1].y-centery)/(cord[m+1].x-centerx))+2*PI;

deltatheta=theta0-theta;

if(deltatheta<0)deltatheta=deltatheta+2*PI;

CircleRunin(R*200,theta,deltatheta);//圆弧插补函数

cord[0].x=cord[m+1].x;

cord[0].y=cord[m+1].y;

break;

default:break;

}

if(cord[m+1].z>cord[0].z)//z??????z???

{

raisez();//提刀函数

//printf("raise z:%f\n",cord[1].z);

cord[0].z=cord[m+1].z;

}

if(cord[m+1].z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值