#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();
}

こんなプログラムを加工に応じて複数作って組み合わせています。 ただチェックして修正する時間がなかなか取れないので少々? おかしいですが・・・・。