#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define PI (3.14159)
/********************************************/
/* hap3.c 2001 11/30 通常タイプ U軸あり */
/********************************************/
void ATC_1(){
FILE *fout;
int dhonsuu,kosuu,i,j,k=-1,T=1,xhantei=0,yk=0,yc=0,xk=0,yhantei=0,ykosuu=0,H=301,No=1,U=0,cc;
double xidou=0.0,yidou=0.0;
char *finame ,fin[20];
int m,count=0,kakousu,N=1000,ha=0,dcount=0,ddcount,amari,dkakousuu[16],dk=0;
double zahsa[10];
struct zahyou{
double x;
double y;
double a;
double sa;
double xz;
double yz;
double dir;
double r;
int h;};
struct xx{
struct zahyou a;
int b;};
struct xx xxx;
struct zahyou zah[10];
printf("1個に付き何周ありますか?=");
scanf("%d",&m);
printf("1個に付き電極を何本使用しますか?=");
scanf("%d",&dhonsuu);
for(i=0;i<m;i++)
{
printf("( %d 周目の質問です )\n",i+1);
printf("直径はいくらですか=");
scanf("%lf",&zah[i].dir);
printf("穴の個数はいくらですか=");
scanf("%d",&zah[i].h);
printf("スタート角度はいくらですか=");
scanf("%lf",&zah[i].sa);
zah[i].a=360.0/zah[i].h;
/* printf("zah.[%d].sa=%f\n",i,zah[i].sa); */
printf("\n");
zah[i].r=zah[i].dir/2.0;
zahsa[i]=zah[i].sa;
}
for(i=0;i<m;i++){
ha=ha+(zah[i].h);
}
printf("ha=%d\n",ha);
kakousu=ha/dhonsuu;
amari=ha%dhonsuu;
for(i=0;i<dhonsuu-1;i++)
{
dkakousuu[i]=kakousu;
}
dkakousuu[i]=kakousu+amari;
for(i=0;i<dhonsuu;i++)
{
printf("dkakousuu[%d]= %d \n",i, dkakousuu[i]);
}
/**************************************/
printf("Xの移動距離は=");
scanf("%lf",&xidou);
printf("Yの移動距離は=");
scanf("%lf",&yidou);
printf("Y方向にいくつ品物をセツトしますか=");
scanf("%d",&ykosuu);
printf("ファイルの名前は何にしますか=");
scanf("%s",fin);
finame=fin;
kosuu=15/dhonsuu;
if((fout=fopen(finame,"w"))==NULL)
{
printf("Not Open zahyoufile.txt\n");
}
fprintf(fout,"\"( ON OFF MA IP SV UP DN LN STEP PL V HP PP C S L);\"\n");
fprintf(fout,"\"C000 = 00 00 0 00 0 0 0 00 0000 - 0 00 00 0 0 0;\"\n");
fprintf(fout,"\"C001 = 00 00 0 00 0 0 0 00 0000 + 0 00 00 0 0 0;\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"( 研磨 );\"\n");
fprintf(fout,"\"H000 = -00000000 H001 = -00000000 H002 = -00000000;\"\n");
fprintf(fout,"\"( 逃し スタート );\"\n");
fprintf(fout,"\"H003 = +00000000 H004 = +00000000 H005 = -00000000;\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ );\"\n");
fprintf(fout,"\"( L長さ L= 機械番号 号 );\"\n");
fprintf(fout,"\"( 注文番号 H- 図面番号 );\"\n");
fprintf(fout,"\"( 客先 材料 );\"\n");
fprintf(fout,"\"( ホール数 H ATC );\"\n");
fprintf(fout,"\"( 原点 G WORK );\"\n");
fprintf(fout,"\"( コンデンサ 角- 日付 );\"\n");
fprintf(fout,"\"( プログラム );\"\n");
fprintf(fout,"\"( 辺巾,辺長 );\"\n");
fprintf(fout,"\"( コメント );\"\n");
fprintf(fout,"\"(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ );\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"T84;\"\n");
fprintf(fout,"\";\"\n");
for(i=0;i<kosuu;i++)
{
fprintf(fout,"\"( No.%d );\"\n",No);
for(j=0;j<dhonsuu;j++)
{
fprintf(fout,"\"T%d;\"\n",T);
fprintf(fout,"\"G54 G92 U0;\"\n");
fprintf(fout,"\"G90 G0 X%3.3f Y%3.3f;\"\n",xidou*-xk,yidou*yk);
fprintf(fout,"\" Z10.0 U+H%d;\"\n",H);
if((i==0)*(j==0))fprintf(fout,"\"M0;\"\n");
fprintf(fout,"\"M98 P%d;\"\n",N);
fprintf(fout,"\";\"\n");
N++;
T++;
H++;
}
No++;
N=1000;
yhantei++;
yk=yk+k;
yc++;
if(yhantei==ykosuu)
{
xk++;
yhantei=0;
yk++;
if(yc==ykosuu*2)yk=0;
k=k*-1;
}
}
fprintf(fout,"\" T85;\"\n");
fprintf(fout,"\"M2;\"\n");
fprintf(fout,"\";\"\n");
fclose(fout);
/*****************************************************/
N=1000;
k=0;
if((fout=fopen(finame,"a"))==NULL)
{
printf("Not'open zahyoufile.txt\n");
}
fprintf(fout,"\"N%d;\"\n",N);
fprintf(fout,"\"G55 G92 X Y Z10.0 U0;\"\n");
cc=1;
for(k=0;k<m;k++){
for(i=0;i<zah[k].h;i++)
{
U=-64800*(zah[k].sa+zah[k].a*i)/360;
zah[k].x=zah[k].r*sin((zah[k].sa+zah[k].a*i)/180.0*PI);
zah[k].y=zah[k].r*cos((zah[k].sa+zah[k].a*i)/180.0*PI);
fprintf(fout,"\"G90 G0 X%3.3f Y%3.3f U%d;\"\n",zah[k].x,zah[k].y,U);
if((count==0)+(k==0)*(i==0))fprintf(fout,"\" M98 P0010;\"\n");
else fprintf(fout,"\" M98 P0020;\"\n");
count++;
dcount++;
if((cc==zah[k].h)){
fprintf(fout,"\";\"\n");
fprintf(fout,"\"G90 G0 U-64800;\"\n");
fprintf(fout,"\"G92 U;\"\n");
fprintf(fout,"\";\"\n");
cc=1;
}
else cc++;
/* printf("ha=%d\n",ha); */
if((count==dkakousuu[dk]))
{
if(dcount==ha){}
else{
fprintf(fout,"\";\"\n");
fprintf(fout,"\"G90 G0 U-64800;\"\n");
fprintf(fout,"\"G92 U;\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"M99;\"\n");
N++;
fprintf(fout,"\";\"\n");
dk++;
fprintf(fout,"\"N%d;\"\n",N);
fprintf(fout,"\"G55 G92 X Y Z10.0 U0.;\"\n");
count=0;
}
}
}
}
fprintf(fout,"\"M99;\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"N0010;\"\n");
fprintf(fout,"\"G90 ;\"\n");
fprintf(fout,"\"G80 Z-;\"\n");
fprintf(fout,"\"G92 Z0;\"\n");
fprintf(fout,"\"G83 Z002;\"\n");
fprintf(fout,"\"G0 Z+H002+H003 M5;\"\n");
fprintf(fout,"\"G1 C000 Z+H005 ;\"\n");
fprintf(fout,"\"G83 Z000;\"\n");
fprintf(fout,"\"G0 Z200-H005+H000 M5;\"\n");
fprintf(fout,"\"M99;\"\n");
fprintf(fout,"\";\"\n");
fprintf(fout,"\"N0020;\"\n");
fprintf(fout,"\"G90;\"\n");
fprintf(fout,"\"G0 Z+H002+H003;\"\n");
fprintf(fout,"\"G1 C001 Z+H001+H002;\"\n");
fprintf(fout,"\"G83 Z002;\"\n");
fprintf(fout,"\"G0 Z+H002+H003 M5;\"\n");
fprintf(fout,"\"G1 C000 Z+H000+H001 ;\"\n");
fprintf(fout,"\"G83 Z000;\"\n");
fprintf(fout,"\"G0 Z200 M5;\"\n");
fprintf(fout,"\"M99;\"\n");
fprintf(fout,"\";\"\n");
fclose(fout);
}
main(){
ATC_1();
}
こんなプログラムを加工に応じて複数作って組み合わせています。 ただチェックして修正する時間がなかなか取れないので少々? おかしいですが・・・・。