超簡易3D editor 立体グリグリVersion 3.3で作成した図形を指定した場所に移動できるようなプログラムをCで作りました。
------------------------------------------------------
#include<stdio.h>
int main(){
FILE *fp,*fp2;
int intMax[3],intNumEdge,intPoint[2][3],intShiftMax;
int intShift[3]={0,0,0};
int intAxis='X';
int intI,intJ,intK;
char buf[256];
char chrFileName[256],chrOutFileName[256];
printf("立体グリグリで作成した立体の位置を移動します\n");
printf("立体グリグリのファイル名を入力してください--> ");
scanf("%s",chrFileName);
strcpy(chrOutFileName,chrFileName);
strcat(chrFileName,".gri");
fp=fopen(chrFileName,"r");
if(fp==NULL) //ファイルの読み込みが失敗
{
printf("%sファイルの読み込みに失敗しました",chrFileName);
return(1);
}
strcat(chrOutFileName,"-new.gri");
fp2=fopen("e:\\gri\\temp-new.gri","w");
//立体の立体データのxyzの最大値と辺の数を読み込みます
fgets(buf,sizeof(buf),fp);
sscanf(buf,"%d%d%d%d",&intMax[0],&intMax[1],&intMax[2],&intNumEdge);
//立体をシフトする幅を読み込みます
for(intI=0;intI<3;intI++){
intShiftMax=1000-intMax[intI]; //シフトできる最大値
while(1){
printf("立体を%c方向に移動する大きさを入力してください (0~%d)--> ",
intAxis+intI,intShiftMax);
scanf("%d",&intShift[intI]);
if(intShift[intI]>intShiftMax||intShift[intI]<0)
printf("正しい値を入力してください\n");
else
break;
}
//立体の立体データのxyzの最大値を出力します
fprintf(fp2,"%-14d",intMax[intI]+intShift[intI]);
}
//立体の立体データの辺の数を出力します
fprintf(fp2," %d \n",intNumEdge);
//立体データを移動します
for(intI=0;intI
fgets(buf,sizeof(buf),fp);
sscanf(buf,"%d%d%d%d%d%d",
&intPoint[0][0],&intPoint[0][1],&intPoint[0][2],
&intPoint[1][0],&intPoint[1][1],&intPoint[1][2]);
for(intJ=0;intJ<2;intJ++){
for(intK=0;intK<3;intK++){
fprintf(fp2,"%-14d",intPoint[intJ][intK]+intShift[intK]);
}
}
fprintf(fp2,"\n");
}
printf("%sに出力しました!",chrOutFileName);
//フッタ情報を出力します
fgets(buf,sizeof(buf),fp);
fputs(buf,fp2);
fclose(fp);
fclose(fp2);
return(0);
}