//工具交換のない加工に支障のないファイルのみを編集できます。 // 編集した時には、タイトルバーに(変更)と表示されます。 // 編集後のファイルは保存していません。 // 牧野の使用で編集します(Mコードは1行ひとつ)。 // 小数点付きコードには対応していません。 // G・M・Dコードは2桁までです。 // 同じコード等が複数あっても最初のコードのみを編集します。 // 改行・空白のみの行等があると正しく編集できません。 // コメント(カッコ)には対応していません。コメント内も編集します。 // M3の正回転コードはM03に変更します。 // M2・M02の終了コードはM30に変更します。 //先頭・末尾に%を追加をチェックすると%を追加します。 // 先頭・末尾に%があれば表示しません。 //終了コードの追加をチェックするとM30を追加します。 // M30・M02があれば表示しません。 // M30はファイルに一つです。 // M30だけの行でないと不良なコードと見なします。 // M30以降に%以外の文字が有ると不良なコードと見なします。 //プログラム番号追加に数字を入れると追加します。 // ゼロ〜8000未満を入れて下さい。 // 追加しない場合はゼロを入れて下さい。 // 数字以外を入れると追加しません。 // プログラム番号があれば表示しません。 //工具長補正コードの編集で追加を選択すると追加します。 //工具長補正コードの編集で削除を選択すると削除します。 // 追加時はすべての工具長補正コードを削除してから追加します。 // M98P8100は最初のM03の前行に追加します。 // M98P8100の行に他のコードが含まれると不良なコードと見なします。 // M03が無い時はプログラム番号の次行に追加します。(優先) // G49はM30の前行に追加します。(最優先) // G49の行に他のコードが含まれると不良なコードと見なします。 // G49のすぐ下にM30だけの行がないと不良なコードと見なします。 // G49はファイルに一つです。 //スーパーGIコードの編集で追加を選択すると追加します。 //スーパーGIコードの編集で削除を選択すると削除します。 // 追加時はすべてのスーパーGIコードを削除してから追加します。 // G05P10000は最初のM03の前行に追加します。(優先) // M03が無い時はプログラム番号の次行に追加します。 // G05P0はM30の前行に追加します。(優先) // G05の行に他のコードが含まれると不良なコードと見なします。 // P00とかP000等はP0と同じとならず、不良なコードと見なします。 //Dコードの編集の変更に数字を入れるとすべて変更します。(ゼロ以上) //D00も変更をチェックするとD00も入力した値に変更します。 // Dコードを変更しない場合はゼロを入れて下さい。 // Dコード変更に数字以外を入れると変更しません。 // Dコードがなければ表示しません。 //径補正量コードの編集で追加を選択すると追加します。(Dコード有り時) //径補正量コードの編集で削除を選択すると削除します。(Dコード有り時) //径補正量コード削除を選択すると削除します。(Dコード無し時) // 径補正量コード・Dコードがなければ表示しません。 // 径補正量コードはG90G10P50R0.03で判断します。 // 径補正量コードの追加時はプログラム番号の次行に追加します。(最優先) // 追加時はすべての径補正量コードを削除してから追加します。 // 径補正量コードの行に他のコードが含まれると不良なコードと見なします。 //クーラント追加・変更に数字を入れると追加・変更します。 // クーラントとはM07・M08・M26・M77です。 // 追加・変更しない場合はゼロを入れて下さい。 // 数字以外を入れると追加・変更しません。 // クーラントがあれば変更を、なければ追加を表示します。 // 7・8・26・77を入れて下さい。 // 26を入れるとM08も追加します。 // 77を入れるとM07も追加します。 // 変更時はすべてのクーラントを削除してから追加します。 // M26・M77は追加・変更時に最初のM03の前行に追加します。(最優先) // M07・M08は追加・変更時に最初のM03の次行に追加します。 // 追加・変更時にすべてのM09を削除して、M09をM30の前行に追加します。 //回転数の編集の追加・変更に数字を入れると追加・変更します。(ゼロ以上) //M03・Sコード削除をチェックするとすべて削除します。(優先) // 追加・変更しない場合はゼロを入れて下さい。 // 数字以外を入れると追加・変更しません。 // Sコードがあれば変更を、なければ追加を表示します。 // M03がなければ追加・変更時に追加します。 // プログラム番号の次行に追加します。 // 変更時はM03と同じ行のSコード以外のSコードを削除します。 //送り速度変更に数字を入れると変更します。(10以内) // 変更しない場合はゼロを入れて下さい。 // 数字以外を入れると変更しません。 // 送り速度がなければ表示しません。 // 10種類まで変更できます。 // それ以上の時は変更後の値の種類を減らして再実行して下さい。 #include "dialog.h" int par_i[2]; BOOL par_b[2]; int end_i; BOOL end_b; int pro_i[2]; int sgi_i[3]; int spn_i[2]; BOOL spn_b; txstr spn_t; int crt_i[9]; txstr crt_t; int dcd_i[4]; BOOL dcd_b[2]; txstr dcd_t00; txstr dcd_t01; int hcd_i[3]; BOOL hcd_b; txstr hcd_t00; txstr hcd_t01; int fcd_i[11]; txstr fcd_t00; txstr fcd_t01; txstr fcd_t02; txstr fcd_t03; txstr fcd_t04; txstr fcd_t05; txstr fcd_t06; txstr fcd_t07; txstr fcd_t08; txstr fcd_t09; txstr fcd_t10; int i; txstr str_t; txstr mag_t00; txstr mag_t01; txstr mag_t02; HDIALOG hd_a; main{ dcd_i[1]=50; //Dコード(整数 0⇒変更なし) dcd_t00="G90G10P50R0.03"; //径補正量 不要時 "" 設定 hcd_t00="M98P8100"; //工具長補正開始文字 不要時 "" 設定 hcd_t01="G49"; //工具長補正終了文字(G49) 不要時 "" 設定 par_b[0]=TRUE; //先頭に%を追加(on⇒TRUE off⇒FALSE) par_b[1]=TRUE; //末尾に%を追加(on⇒TRUE off⇒FALSE) end_b=TRUE; //終了コードの追加(on⇒TRUE off⇒FALSE) pro_i[1]=0; //プログラム番号(整数 0⇒追加なし) hcd_i[2]=0; //工具長補正コードの編集(0⇒追加 1⇒削除) sgi_i[2]=0; //スーパーGIコードの編集(0⇒追加 1⇒削除) dcd_b[0]=FALSE; //D00も変更(on⇒TRUE off⇒FALSE) dcd_i[3]=0; //径補正コードの編集(0⇒追加 1⇒削除) dcd_b[1]=TRUE; //径補正コードの削除(on⇒TRUE off⇒FALSE) crt_i[1]=0; //クーラント(整数 0⇒変更なし) spn_i[1]=0; //回転数(整数 0⇒変更なし) spn_b=FALSE; //M03・Sコード削除(on⇒TRUE off⇒FALSE) strcpy( mag_t00,text->szfilename); //ファイル名取得 mag_t02="\nNCデータの編集を中断します。"; txSetUndisp(text); //画面非表示 txJumpFileTop(text); //先頭ヘ //先頭%チェック par_i[0]=2; //先頭%不明 while(!txIsCurEof(text)){ //ファイル末尾まで繰返し if(txCmpCur(text,"%")){ //%時 par_i[0]=1;txRight(text);break;} //先頭%有;1文字右へ;繰返し終了 else if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurReturn(text)){txRight(text);} //改行時1文字右へ else{par_i[0]=0;break;}} //先頭%無;繰返し終了 if(par_i[0]>1){ //先頭%不明時(ファイル末尾) txSetDisp(text); //画面再表示 mag_t01="\nファイルの中にデータがありません。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 //プログラム番号チェック pro_i[0]=2; //プロ番号不明 while(!txIsCurEof(text)){ //ファイル末尾まで繰返し if(txCmpCur(text,"O")) //O時 {pro_i[0]=1;txRight(text);break;} //プロ番号有;1文字右へ;繰返し終了 else if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurReturn(text)){txRight(text);} //改行時1文字右へ else{pro_i[0]=0;break;}} //プロ番号無;繰返し終了 if(pro_i[0]>1){ //プロ番号不明時(ファイル末尾) txSetDisp(text); //画面再表示 mag_t01="\nファイルの中にデータがありません。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 if(txSearchEx(text,"O",SEARCH_CUR)){ //O時(二個目) txSetDisp(text); //画面再表示 mag_t01="\nファイルの途中にプログラム番号があります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 //末尾%チェック if(!txSearchEx(text,"%",SEARCH_CUR)){par_i[1]=0;} //末尾%無時末尾%無 else{ //末尾%有時 txSearchEx(text,"%",SEARCH_CUR);txRight(text); //末尾%へ;1文字右へ while(1){ //無限繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurEof(text)){ //ファイル末尾時 par_i[1]=1;break;} //末尾%有;繰返し終了 else if(txIsCurReturn(text)){txRight(text);} //改行時1文字右へ else{txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //文字有時前%へ txSetDisp(text); //画面再表示 mag_t01="\nファイルの途中に%があります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}}} //終了 //終了コードチェック end_i=0; //終了コード無 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M2",SEARCH_CUR)){ //M2時繰返し txRightBytes(text,2); //2文字右へ if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(i!=2){txSetDisp(text); //文字数終了コード文字数以外時画面再表示 mag_t01="\n不正な終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else{ //終了コード時 while(!txIsCurEof(text)){ //ファイル末尾まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurReturn(text)){ //改行時 txRight(text);} //1文字右へ else if(txCmpCur(text,"%")){break;} //%時繰返し終了 else{txSetDisp(text); //文字有時画面再表示 mag_t01="\nファイルの途中に終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); return;}} //終了 end_i=1;break;}}} //終了コード有;繰返し終了 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M30",SEARCH_CUR)){ //M30有時 if(end_i>0){txSetDisp(text); //終了コード有時画面再表示 mag_t01="\nファイルの途中に終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else{ //終了コード無時 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(i!=3){txSetDisp(text); //文字数終了コード文字数以外時画面再表示 mag_t01="\n不正な終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else{ //終了コード時 while(!txIsCurEof(text)){ //ファイル末尾まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurReturn(text)){txRight(text);} //改行時1文字右へ else if(txCmpCur(text,"%")){break;} //%時繰返し終了 else{txSetDisp(text); //文字有時画面再表示 mag_t01="\nファイルの途中に終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); return;}} //終了 end_i=1;}}} //終了コード有 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M02",SEARCH_CUR)){ //M02有時 if(end_i>0){txSetDisp(text); //終了コード有時画面再表示 mag_t01="\nファイルの途中に終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else{ //終了コード無時 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(i!=3){txSetDisp(text); //文字数終了コード文字数以外時画面再表示 mag_t01="\n不正な終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else{ //終了コード時 while(!txIsCurEof(text)){ //ファイル末尾まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurReturn(text)){txRight(text);} //改行時1文字右へ else if(txCmpCur(text,"%")){break;} //%時繰返し終了 else{txSetDisp(text); //文字有時画面再表示 mag_t01="\nファイルの途中に終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); return;}} //終了 end_i=1;}}} //終了コード有 //GI文字チェック sgi_i[0]=0;sgi_i[1]=0; //GI開始無;GI終了無 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"G05",SEARCH_CUR)){ //G05有時繰返し txGetPara(text,str_t); //1行文字取得 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(strstr(str_t,"P10000")){ //行にP10000有時 if(i==9){sgi_i[0]=1;} //文字数9時GI開始有 else{txSetDisp(text); //行文字数9以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 else if(strstr(str_t,"P0")){ //行にP0有時 if(i==5){sgi_i[1]=1;} //文字数5時GI終了有 else{txSetDisp(text); //行文字数5以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 else{txSetDisp(text); //GI文字以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"G5",SEARCH_CUR)){ //G5有時繰返し txRightBytes(text,2); //2文字右へ if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txGetPara(text,str_t); //1行文字取得 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(strstr(str_t,"P10000")){ //行にP10000有時 if(i==8){sgi_i[0]=1;} //文字数8時GI開始有 else{txSetDisp(text); //文字数8以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 else if(strstr(str_t,"P0")){ //行にP0有時 if(i==4){sgi_i[1]=1;} //文字数4時GI終了有 else{txSetDisp(text); //文字数4以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 else{txSetDisp(text); //GI文字以外時画面再表示 mag_t01="\n不正なスーパーGIコードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}}} //終了 //長補正開始チェック hcd_i[0]=0; //長補正開始無 if(hcd_t00!=""){txJumpFileTop(text); //長補正開始設定時先頭ヘ while(txSearchEx(text,hcd_t00,SEARCH_CUR)){ //長補正開始有時繰返し txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(i==strlen(hcd_t00)){ //文字数長補正文字数時 hcd_i[0]=1;} //長補正開始有 else{txSetDisp(text); //文字数長補正文字数以外時画面再表示 mag_t01="\n不正な工具長補正コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}}} //終了 //長補正終了チェック hcd_i[1]=0; //長補正終了無 if(hcd_t01!=""){txJumpFileTop(text); //長補正終了設定時先頭ヘ if(txSearchEx(text,hcd_t01,SEARCH_CUR)){ //長補正終了有時 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(txSearchEx(text,hcd_t01,SEARCH_CUR)){ //長補正終了有 txLeft(text); //1文字左へ txSearchEx(text,hcd_t01,SEARCH_CUR|SEARCH_PREV); txSetDisp(text); //画面再表示 mag_t01="\nファイルの途中にG49があります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(i!=3){ //文字数3以外時 txSetDisp(text); //画面再表示 mag_t01="\n不正な工具長終了コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(txNextPara(text)){ //次行先頭へ while(1){ //無限繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txIsCurEof(text)){ //ファイル末尾時 hcd_i[1]=1;break;} //長補正終了有;繰返し終了 else if(txIsCurReturn(text)){ //改行時 txRight(text);} //1文字右へ else{break;}} //文字有時繰返し終了 txGetPara(text,str_t); //1行文字取得 if(txIsCurEof(text)){hcd_i[1]=1;} //ファイル末尾時長補正終了有 else{txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(strstr(str_t,"%") && i==1){ //行に%有で文字数1時 hcd_i[1]=1;} //長補正終了有 else if(strstr(str_t,"M02") && i==3){ hcd_i[1]=1;} //長補正終了有 else if(strstr(str_t,"M30") && i==3){ hcd_i[1]=1;} //長補正終了有 else if(strstr(str_t,"M2") && i==2){ hcd_i[1]=1;} //長補正終了有 else{txSetDisp(text); //終了コード以外時画面再表示 mag_t01="\nファイルの途中にG49があります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); return;}}} //終了 else{hcd_i[1]=1;}}} //次行移動不可時長補正終了有 //回転数チェック spn_t="";spn_i[0]=0; //回転数文字無;S無時回転数無 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"S",SEARCH_CUR)){ //S有時 txRight(text); //1文字右へ spn_i[0]=1; //回転数有 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text,"0")){ //ゼロ時 spn_t=spn_t+"0";} //回転数文字 else if(txCmpCur(text,"1")){ //1時 spn_t=spn_t+"1";} //回転数文字 else if(txCmpCur(text,"2")){ //2時 spn_t=spn_t+"2";} //回転数文字 else if(txCmpCur(text,"3")){ //3時 spn_t=spn_t+"3";} //回転数文字 else if(txCmpCur(text,"4")){ //4時 spn_t=spn_t+"4";} //回転数文字 else if(txCmpCur(text,"5")){ //5時 spn_t=spn_t+"5";} //回転数文字 else if(txCmpCur(text,"6")){ //6時 spn_t=spn_t+"6";} //回転数文字 else if(txCmpCur(text,"7")){ //7時 spn_t=spn_t+"7";} //回転数文字 else if(txCmpCur(text,"8")){ //8時 spn_t=spn_t+"8";} //回転数文字 else if(txCmpCur(text,"9")){ //9時 spn_t=spn_t+"9";} //回転数文字 else if(txCmpCur(text,".")){ //9時 spn_t=spn_t+".";} //回転数文字 else if(txCmpCur(text,"-")){ //9時 spn_t=spn_t+"-";} //回転数文字 else if(txCmpCur(text,"+")){ //9時 spn_t=spn_t+"+";} //回転数文字 else{break;} //数字以外時繰返し終了 txRight(text);}} //1文字右へ //クーラントチェック crt_i[0]=0;for(i=3;i<=8;i++){crt_i[i]=0;} //クーラント無 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M07",SEARCH_CUR)){ //M07有時 crt_i[0]=1; //クーラント有 crt_i[3]=txGetNlineModal(text);} //M07行 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M08",SEARCH_CUR)){ //M08有時 crt_i[0]=1; //クーラント有 crt_i[4]=txGetNlineModal(text);} //M08行 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M26",SEARCH_CUR)){ //M26有時 crt_i[0]=1; //クーラント有 crt_i[5]=txGetNlineModal(text);} //M26行 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M77",SEARCH_CUR)){ //M77有時 crt_i[0]=1; //クーラント有 crt_i[6]=txGetNlineModal(text);} //M77行 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M7",SEARCH_CUR)){ //M7有時 txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){ //改行時 crt_i[0]=1; //クーラント有 crt_i[7]=txGetNlineModal(text);} //M7行 else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 crt_i[0]=1; //クーラント有 crt_i[7]=txGetNlineModal(text);}} //M7行 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M8",SEARCH_CUR)){ //M8有時 txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){ //改行時 crt_i[0]=1; //クーラント有 crt_i[8]=txGetNlineModal(text);} //M8行 else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 crt_i[0]=1; //クーラント有 crt_i[8]=txGetNlineModal(text);}} //M8行 if(crt_i[3]>0){ //M07行有時 if(crt_i[4]>0){ //M08行有時 if(crt_i[3]0){ //M07行無でM08行有時 crt_i[2]=4;crt_t="M08";} //クーラント行(M08);クーラント文字 else{crt_i[2]=0;crt_t="";} //M07行無でM08行無時 if(crt_i[2]>0){ //クーラント行有時 if(crt_i[5]>0){ //M26行有時 if(crt_i[crt_i[2]]>crt_i[5]){ //クーラント行がM26行より大時 crt_i[2]=5;crt_t="M26";}}} //クーラント行(M26);クーラント文字 else if(crt_i[5]>0){ //クーラント行無でM26行有時 crt_i[2]=5;crt_t="M26";} //クーラント行(M26);クーラント文字 if(crt_i[2]>0){ //クーラント行有時 if(crt_i[6]>0){ //M77行有時 if(crt_i[crt_i[2]]>crt_i[6]){ //クーラント行がM77行より大時 crt_i[2]=6;crt_t="M77";}}} //クーラント行(M77);クーラント文字 else if(crt_i[6]>0){ //クーラント行無でM77行有時 crt_i[2]=6;crt_t="M77";} //クーラント行(M77);クーラント文字 if(crt_i[2]>0){ //クーラント行有時 if(crt_i[7]>0){ //M7行行有時 if(crt_i[crt_i[2]]>crt_i[7]){ //クーラント行がM7行より大時 crt_i[2]=7;crt_t="M7";}}} //クーラント行(M7);クーラント文字 else if(crt_i[7]>0){ //クーラント行無でM7行有時 crt_i[2]=7;crt_t="M7";} //クーラント行(M7);クーラント文字 if(crt_i[2]>0){ //クーラント行有時 if(crt_i[8]>0){ //M8行有時 if(crt_i[crt_i[2]]>crt_i[8]){ //クーラント行がM8行より大時 crt_i[2]=8;crt_t="M8";}}} //クーラント行(M8);クーラント文字 else if(crt_i[8]>0){ //クーラント行無でM8行有時 crt_i[2]=8;crt_t="M8";} //クーラント行(M8);クーラント文字 //Dコードチェック dcd_t01="D"; //Dコード文字 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"D",SEARCH_CUR)){ //D有時 txRight(text); //1文字右へ while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text,"0")){ //ゼロ時 dcd_t01=dcd_t01+"0";} //Dコード文字 else if(txCmpCur(text,"1")){ //1時 dcd_t01=dcd_t01+"1";} //Dコード文字 else if(txCmpCur(text,"2")){ //2時 dcd_t01=dcd_t01+"2";} //Dコード文字 else if(txCmpCur(text,"3")){ //3時 dcd_t01=dcd_t01+"3";} //Dコード文字 else if(txCmpCur(text,"4")){ //4時 dcd_t01=dcd_t01+"4";} //Dコード文字 else if(txCmpCur(text,"5")){ //5時 dcd_t01=dcd_t01+"5";} //Dコード文字 else if(txCmpCur(text,"6")){ //6時 dcd_t01=dcd_t01+"6";} //Dコード文字 else if(txCmpCur(text,"7")){ //7時 dcd_t01=dcd_t01+"7";} //Dコード文字 else if(txCmpCur(text,"8")){ //8時 dcd_t01=dcd_t01+"8";} //Dコード文字 else if(txCmpCur(text,"9")){ //9時 dcd_t01=dcd_t01+"9";} //Dコード文字 else if(txCmpCur(text,".")){ //9時 dcd_t01=dcd_t01+".";} //Dコード文字 else if(txCmpCur(text,"-")){ //9時 dcd_t01=dcd_t01+"-";} //Dコード文字 else if(txCmpCur(text,"+")){ //9時 dcd_t01=dcd_t01+"+";} //Dコード文字 else{break;} //数字以外時繰返し終了 txRight(text);} //1文字右へ dcd_i[0]=1;} //Dコード有 else{dcd_i[0]=0;} //Dコード無 //径補正量チェック dcd_i[2]=0; //径補正量無 if(dcd_t00!=""){ //径補正量設定時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,dcd_t00,SEARCH_CUR)){ //径補正量有時 txJumpParaTop(text);i=0; //行先頭へ;文字数初期化 while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{i=i+1;txRight(text);}} //文字数加算;1文字右へ if(i==strlen(dcd_t00)){ //文字数径補正量文字数時 dcd_i[2]=1;} //径補正量有 else{txSetDisp(text); //文字数径補正量文字数以外時画面再表示 mag_t01="\n不正な径補正量コードがあります。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}}} //終了 //送り速度チェック for(i=0;i<=10;i++){fcd_i[i]=0;} //送り速度無 fcd_t01="";fcd_t02="";fcd_t03="";fcd_t04="";fcd_t05=""; //送り速度文字無 fcd_t06="";fcd_t07="";fcd_t08="";fcd_t09="";fcd_t10=""; //送り速度文字無 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"F",SEARCH_CUR)){ //F無まで繰返し fcd_t00=""; //送り速度文字初期値設定 txRight(text); //1文字右へ while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text,".")){ //点時 fcd_t00=fcd_t00+".";} //送り速度文字 else if(txCmpCur(text,"0")){ //ゼロ時 fcd_t00=fcd_t00+"0";} //送り速度文字 else if(txCmpCur(text,"1")){ //1時 fcd_t00=fcd_t00+"1";} //送り速度文字 else if(txCmpCur(text,"2")){ //2時 fcd_t00=fcd_t00+"2";} //送り速度文字 else if(txCmpCur(text,"3")){ //3時 fcd_t00=fcd_t00+"3";} //送り速度文字 else if(txCmpCur(text,"4")){ //4時 fcd_t00=fcd_t00+"4";} //送り速度文字 else if(txCmpCur(text,"5")){ //5時 fcd_t00=fcd_t00+"5";} //送り速度文字 else if(txCmpCur(text,"6")){ //6時 fcd_t00=fcd_t00+"6";} //送り速度文字 else if(txCmpCur(text,"7")){ //7時 fcd_t00=fcd_t00+"7";} //送り速度文字 else if(txCmpCur(text,"8")){ //8時 fcd_t00=fcd_t00+"8";} //送り速度文字 else if(txCmpCur(text,"9")){ //9時 fcd_t00=fcd_t00+"9";} //送り速度文字 else if(txCmpCur(text,"-")){ //マイナス時 fcd_t00=fcd_t00+"-";} //送り速度文字 else if(txCmpCur(text,"+")){ //プラス時 fcd_t00=fcd_t00+"+";} //送り速度文字 else{break;} //数字以外時繰返し終了 txRight(text);} //1文字右へ i=0; //重複無 if(fcd_i[0]>0){ //送り速度数有時 if(fcd_t01!=""){ //送り速度文字有時 if(fcd_t00==fcd_t01){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t02!=""){ //送り速度文字有時 if(fcd_t00==fcd_t02){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t03!=""){ //送り速度文字有時 if(fcd_t00==fcd_t03){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t04!=""){ //送り速度文字有時 if(fcd_t00==fcd_t04){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t05!=""){ //送り速度文字有時 if(fcd_t00==fcd_t05){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t06!=""){ //送り速度文字有時 if(fcd_t00==fcd_t06){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t07!=""){ //送り速度文字有時 if(fcd_t00==fcd_t07){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t08!=""){ //送り速度文字有時 if(fcd_t00==fcd_t08){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t09!=""){ //送り速度文字有時 if(fcd_t00==fcd_t09){i=1;}} //送り速度文字が同じ時重複有 if(fcd_t10!=""){ //送り速度文字有時 if(fcd_t00==fcd_t10){i=1;}}} //送り速度文字が同じ時重複有 if(i<1){ //重複無時 if(fcd_i[0]>10){ //送り速度数10超過時 information("送り速度の種類が10以上あります。"); break;} //繰返し終了 else{fcd_i[0]=fcd_i[0]+1; //送り速度数10以下時送り速度数 if(fcd_t01==""){ //送り速度文字無時 fcd_t01=fcd_t00;} //送り速度文字 else if(fcd_t02==""){ //送り速度文字無時 fcd_t02=fcd_t00;} //送り速度文字 else if(fcd_t03==""){ //送り速度文字無時 fcd_t03=fcd_t00;} //送り速度文字 else if(fcd_t04==""){ //送り速度文字無時 fcd_t04=fcd_t00;} //送り速度文字 else if(fcd_t05==""){ //送り速度文字無時 fcd_t05=fcd_t00;} //送り速度文字 else if(fcd_t06==""){ //送り速度文字無時 fcd_t06=fcd_t00;} //送り速度文字 else if(fcd_t07==""){ //送り速度文字無時 fcd_t07=fcd_t00;} //送り速度文字 else if(fcd_t08==""){ //送り速度文字無時 fcd_t08=fcd_t00;} //送り速度文字 else if(fcd_t09==""){ //送り速度文字無時 fcd_t09=fcd_t00;} //送り速度文字 else if(fcd_t10==""){ //送り速度文字無時 fcd_t10=fcd_t00;}}}} //送り速度文字 txJumpFileTop(text); //先頭ヘ txSetDisp(text); //画面再表示 //ダイアログ表示 hd_a=dialog("NCデータの編集");{ if(par_i[0]<1){dialogCheck(hd_a,"先頭に%を追加",&par_b[0]);} if(par_i[1]<1){dialogCheck(hd_a,"末尾に%を追加",&par_b[1]);} if(end_i<1){dialogCheck(hd_a,"終了コードの追加",&end_b);} if(pro_i[0]<1){dialogInt(hd_a,"プログラム番号追加",&pro_i[1],18,8);} if(hcd_t00!="" || hcd_t01!=""){ //長補正開始設定か長補正終了設定時 dialogGroup(hd_a,"工具長補正コードの編集"); dialogRadioID(hd_a,&hcd_i[2],"追加","削除"); dialogGroupEnd(hd_a);} dialogGroup(hd_a,"スーパGIコードの編集"); dialogRadioID(hd_a,&sgi_i[2],"追加","削除"); dialogGroupEnd(hd_a); if(dcd_i[0]>0){ //Dコード有時 dialogGroup(hd_a,"Dコードの編集"); dialogInt(hd_a,"変更 ("+dcd_t01+")",&dcd_i[1],12,8); dialogCheck(hd_a,"D00も変更",&dcd_b[0]); dialogGroupEnd(hd_a); if(dcd_t00!=""){ //径補正量設定時 dialogGroup(hd_a,"径補正量コードの編集"); dialogRadioID(hd_a,&dcd_i[3],"追加","削除"); dialogGroupEnd(hd_a);}} else{if(dcd_t00!=""){ //Dコード無で径補正量設定時 if(dcd_i[2]>0){ //径補正量有時 dialogCheck(hd_a,"径補正量コードの削除",&dcd_b[1]);}}} if(crt_i[0]<1){ //クーラント無時 dialogInt(hd_a,"クーラント追加",&crt_i[1],18,8);} else{ //クーラント有時 dialogInt(hd_a,"クーラント変更 ("+crt_t+")",&crt_i[1],22,8);} dialogGroup(hd_a,"回転数の編集"); if(spn_i[0]<1){ //回転数無時 dialogInt(hd_a,"追加",&spn_i[1],5,8);} else{ //回転数有時 dialogInt(hd_a,"変更 ("+spn_t+")",&spn_i[1],12,8);} dialogCheck(hd_a,"M03・Sコード削除",&spn_b); dialogGroupEnd(hd_a); if(fcd_i[0]>0){ //送り速度数有時 dialogGroup(hd_a,"送り速度の変更"); if(fcd_t01!=""){dialogInt(hd_a,"F"+fcd_t01,&fcd_i[1],10,8);} if(fcd_t02!=""){dialogInt(hd_a,"F"+fcd_t02,&fcd_i[2],10,8);} if(fcd_t03!=""){dialogInt(hd_a,"F"+fcd_t03,&fcd_i[3],10,8);} if(fcd_t04!=""){dialogInt(hd_a,"F"+fcd_t04,&fcd_i[4],10,8);} if(fcd_t05!=""){dialogInt(hd_a,"F"+fcd_t05,&fcd_i[5],10,8);} if(fcd_t06!=""){dialogInt(hd_a,"F"+fcd_t06,&fcd_i[6],10,8);} if(fcd_t07!=""){dialogInt(hd_a,"F"+fcd_t07,&fcd_i[7],10,8);} if(fcd_t08!=""){dialogInt(hd_a,"F"+fcd_t08,&fcd_i[8],10,8);} if(fcd_t09!=""){dialogInt(hd_a,"F"+fcd_t09,&fcd_i[9],10,8);} if(fcd_t10!=""){dialogInt(hd_a,"F"+fcd_t10,&fcd_i[10],10,8);} dialogGroupEnd(hd_a);} dialogLFV(hd_a); //ダイアログ縦改行 dialogOK(hd_a,10); //ダイアログOKボタン dialogCancel(hd_a,10);} //ダイアログキャンセルボタン if(!dialogOpen(hd_a)){ //ダイアログ表示でキャンセル時 information("%s%s", mag_t00, mag_t02); return;} //終了 if(pro_i[1]<0 || pro_i[1]>7999){ //プロ番号ゼロ未満か7999超過時 mag_t01="\nプログラム番号にはゼロ〜8000未満を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(dcd_i[1]<0){ //Dコードゼロ未満時 mag_t01="\nDコードにはゼロ以上の値を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(spn_i[1]<0){ //回転数ゼロ未満時 mag_t01="\n回転数にはゼロ以上の値を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(!(crt_i[1]==0 || crt_i[1]==7 || crt_i[1]==8)){ if(!(crt_i[1]==26 || crt_i[1]==77)){ mag_t01="\nクーラントにはゼロ・7・8・26・77を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 for(i=1;i<=fcd_i[0];i++){ //送り速度数分繰返し if(fcd_i[i]<0){ //送り速度ゼロ未満時 mag_t01="\n送り速度にはゼロ以上の値を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;} //終了 else if(fcd_i[i]>0 && fcd_i[i]<10){ //送り速度ゼロ超過で10未満時 mag_t01="\n送り速度はゼロか10以上の値を入れて下さい。"; attention("%s%s%s", mag_t00, mag_t01, mag_t02); //メッセージ表示 return;}} //終了 txSetUndisp(text); //画面非表示 //先頭に%を追加 if(par_i[0]<1 && par_b[0]){ //先頭%無で先頭%チェック時 txJumpFileTop(text); //先頭ヘ txInsert(text,"%");par_i[0]=1;} //先頭%書込み;先頭%有 //先頭%行の編集 if(par_i[0]>0){ //先頭%有時 txJumpFileTop(text); //先頭ヘ txSearchEx(text,"%",SEARCH_CUR);txRight(text); //先頭%へ;1文字右へ while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else{ //スペース以外時 txInsertReturn(text);break;}}} //改行書込み;繰返し終了 //プロ番号の追加 if(pro_i[0]<1 && pro_i[1]>0){ //プロ番号無でプロ番号入力時 txJumpFileTop(text); //先頭ヘ if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ txInsert(text,"O"+inttostr(pro_i[1])); //プロ番号書込み pro_i[0]=1;} //プロ番号有 //プロ番号行の編集 if(pro_i[0]>0){ //プロ番号有時 txJumpFileTop(text); //先頭ヘ txSearchEx(text,"O",SEARCH_CUR);txRight(text); //プロ番号へ;1文字右へ while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txRight(text);} //スペース時1文字右へ else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txInsertReturn(text);break;} //改行書込み;繰返し終了 else{txRight(text);}}} //数字時1文字右へ //末尾に%を追加 if(par_i[1]<1 && par_b[1]){ //末尾%無で末尾%チェック時 txJumpFileEnd(text); //末尾へ while(1){ //無限繰返し if(txCmpCur(text," ")){txLeft(text);} //スペース時1文字左へ else if(txIsCurReturn(text)){txLeft(text);} //改行時1文字左へ else{txRight(text);break;}} //文字有時1文字左へ;繰返し終了 txInsert(text,"%");par_i[1]=1;} //末尾%書込み;末尾%有 //末尾%行の編集 if(par_i[1]>0){txJumpFileEnd(text); //末尾%有時末尾へ txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //前%へ txLeft(text); //1文字左へ while(!txIsCurReturn(text)){ //改行まで繰返し if(txCmpCur(text," ")){txLeft(text);} //スペース時1文字左へ else{txRight(text); //スペース以外時1文字右へ txInsertReturn(text);break;}}} //改行書込み;繰返し終了 //終了コードの追加 if(end_i<1 && end_b){ //終了コード無で終了コードチェック時 txJumpFileEnd(text); //末尾へ if(par_i[1]>0){ //末尾%有時 txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //前%へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ else{while(1){ //無限繰返し if(txCmpCur(text," ")){txLeft(text);} //スペース時1文字左へ else if(txIsCurReturn(text)){txLeft(text);} //改行時1文字左へ else{break;}}} //文字有時1文字左へ;繰返し終了 if(!txIsCurReturn(text)){txRight(text); //改行以外時1文字右へ txInsert(text,"\nM30\n"); //改行と終了コードと改行書込み end_i=1;} //終了コード有 else{txRight(text); //改行時1文字右へ txInsert(text,"M30\n"); //終了コードと改行書込み end_i=1;}} //終了コード有 //終了コードの変更 if(end_i>0){ //終了コード有時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M2",SEARCH_CUR)){ //M2時繰返し txGetPara(text,str_t); //1行文字取得 txRightBytes(text,2); //2文字右へ if(strlen(str_t)==2){ //行文字数終了コード文字数時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"M2","M30",REPLACE_ONCE); //M2をM30置換え break;}} //繰返し終了 txJumpFileTop(text); //先頭ヘ txReplaceEx(text,"M02","M30",REPLACE_ONCE);} //M02をM30置換え //正回転の変更 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M3",SEARCH_CUR)){ //M3有時繰返し txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){txLeftBytes(text,2); //改行時2文字左へ txReplaceEx(text,"M3","M03",REPLACE_ONCE);} //M3をM03置換え else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"M3","M03",REPLACE_ONCE);}} //回転数編集 if(spn_b || spn_i[1]>0){ //M03削除か回転数入力時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"S",SEARCH_CUR)){ //S有時繰返し txDeleteChar(text); //1文字削除 while(!txIsCurReturn(text)){ //改行以外時繰返し if(txGetChar(text)>47 && txGetChar(text)<58){ //数字時 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"-") || txCmpCur(text,"+")){ txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,".")){ //点時 txDeleteChar(text);} //1文字削除 else{break;}} //数字以外時繰返し終了 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);}}} //1行削除 if(!spn_b && spn_i[1]>0){ //M03削除以外で回転数入力時 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時 txInsert(text,"S"+inttostr(spn_i[1]));} //回転数書込み else{if(txSearchEx(text,"O",SEARCH_CUR)){ //M03無でプロ番号有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //M03無で先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,"M03S"+inttostr(spn_i[1]));} //回転数書込み else{ //改行以外時 txInsert(text,"M03S"+inttostr(spn_i[1])+"\n");}}} if(spn_b){ //M03削除時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時繰返し txReplaceEx(text,"M03","",REPLACE_ONCE); //M03削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);}}} //1行削除 //GI文字の削除 if(sgi_i[0]>0 || sgi_i[1]>0){ //GI開始有かGI終了有時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"G5",SEARCH_CUR)){ //G5有時繰返し txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){txLeftBytes(text,2); //改行時2文字左へ txReplaceEx(text,"G5","G05",REPLACE_ONCE);} //G5をG05置換え else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"G5","G05",REPLACE_ONCE);}} txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"G05",SEARCH_CUR)){ //G05有時繰返し txDeletePara(text);txPrevPara(text);} //1行削除;前行先頭へ sgi_i[0]=0;sgi_i[1]=0;} //GI開始無;GI終了無 //長補正開始の削除 if(hcd_t00!="" && hcd_i[0]>0){ //長補正開始設定で長補正開始有時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,hcd_t00,SEARCH_CUR)){ //長補正開始有時繰返し txDeletePara(text);txPrevPara(text);} //1行削除;前行先頭へ hcd_i[0]=0;} //長補正開始無 //長補正終了の削除 if(hcd_t01!="" && hcd_i[1]>0){ //長補正終了設定で長補正終了有時 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,hcd_t01,SEARCH_CUR)){ //長補正終了有時 txDeletePara(text); //1行削除 hcd_i[1]=0;}} //長補正終了無 //長補正開始の追加 if(hcd_t00!="" && hcd_i[2]<1){ //長補正開始設定で長補正追加時 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時 txJumpParaTop(text);} //行先頭へ else if(txSearchEx(text,"O",SEARCH_CUR)){ //O有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,hcd_t00);hcd_i[0]=1;} //長補正開始書込み;長補正開始有 else{txInsert(text,hcd_t00+"\n"); //改行以外時長補正開始書込み hcd_i[0]=1;}} //長補正開始有 //GI開始の追加 if(sgi_i[2]<1){ //GI文字追加時 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時 txJumpParaTop(text);} //行先頭へ else if(hcd_t00!="" && hcd_i[0]>0){ //長補正開始設定で長補正開始有時 txSearchEx(text,hcd_t00,SEARCH_CUR); //長補正開始へ txNextPara(text);} //次行先頭へ else if(txSearchEx(text,"O",SEARCH_CUR)){ //O有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,"G05P10000");sgi_i[0]=1;} //GI開始書込み;GI開始有 else{txInsert(text,"G05P10000\n"); //改行以外時GI開始書込み sgi_i[0]=1;}} //GI開始有 //GI終了の追加 if(sgi_i[2]<1){ //GI文字追加時 txJumpFileEnd(text);txLeft(text); //末尾へ;1文字左へ if(txSearchEx(text,"M30",SEARCH_CUR|SEARCH_PREV)){ //前M30へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ else if(par_i[1]>0){ //末尾%有時 txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //前%へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ if(!txIsCurReturn(text)){txRight(text); //改行以外時1文字右へ txInsert(text,"\nG05P0\n"); //改行とGI終了と改行書込み sgi_i[1]=1;} //GI終了有 else{txRight(text); //改行時1文字右へ txInsert(text,"G05P0\n"); //GI終了と改行書込み sgi_i[1]=1;}} //GI終了有 //長補正終了の追加 if(hcd_t01!="" && hcd_i[2]<1){ //長補正終了設定で長補正追加時 txJumpFileEnd(text);txLeft(text); //末尾へ;1文字左へ if(txSearchEx(text,"M30",SEARCH_CUR|SEARCH_PREV)){ //前M30へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ else if(par_i[1]>0){ //末尾%有時 txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //前%へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ if(!txIsCurReturn(text)){txRight(text); //改行以外時1文字右へ txInsert(text,"\n"+hcd_t01+"\n"); //改行と長補正終了と改行書込み hcd_i[1]=1;} //長補正終了有 else{txRight(text); //改行時1文字右へ txInsert(text,hcd_t01+"\n"); //長補正終了と改行書込み hcd_i[1]=1;}} //長補正終了有 //クーラントの削除 if(crt_i[0]>0 && crt_i[1]>0){ //クーラント有でクーラント入力時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M7",SEARCH_CUR)){ //M7有時繰返し txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){txLeftBytes(text,2); //改行時2文字左へ txReplaceEx(text,"M7","M07",REPLACE_ONCE);} //M7をM07置換え else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"M7","M07",REPLACE_ONCE);}} txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M8",SEARCH_CUR)){ //M8有時繰返し txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){txLeftBytes(text,2); //改行時2文字左へ txReplaceEx(text,"M8","M08",REPLACE_ONCE);} //M8をM08置換え else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"M8","M08",REPLACE_ONCE);}} txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M9",SEARCH_CUR)){ //M9有時繰返し txRightBytes(text,2); //2文字右へ if(txIsCurReturn(text)){txLeftBytes(text,2); //改行時2文字左へ txReplaceEx(text,"M9","M09",REPLACE_ONCE);} //M9をM09置換え else if(txGetChar(text)<48 || txGetChar(text)>57){ //数字以外時 txLeftBytes(text,2); //2文字左へ txReplaceEx(text,"M9","M09",REPLACE_ONCE);}} txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M07",SEARCH_CUR)){ //M07有時繰返し txReplaceEx(text,"M07","",REPLACE_ONCE); //M07削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);txPrevPara(text);}} //1行削除;前行先頭へ txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M08",SEARCH_CUR)){ //M08有時繰返し txReplaceEx(text,"M08","",REPLACE_ONCE); //M08削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);txPrevPara(text);}} //1行削除;前行先頭へ txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M26",SEARCH_CUR)){ //M26有時繰返し txReplaceEx(text,"M26","",REPLACE_ONCE); //M26削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);txPrevPara(text);}} //1行削除;前行先頭へ txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M77",SEARCH_CUR)){ //M77有時繰返し txReplaceEx(text,"M77","",REPLACE_ONCE); //M77削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);txPrevPara(text);}} //1行削除;前行先頭へ txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"M09",SEARCH_CUR)){ //M09有時繰返し txReplaceEx(text,"M09","",REPLACE_ONCE); //M09削除 txGetPara(text,str_t); //1行文字取得 if(!strlen(str_t)){ //行に文字無時 txDeletePara(text);txPrevPara(text);}}} //1行削除;前行先頭へ //クーラントの追加 if(crt_i[1]>0){ //クーラント入力時 txJumpFileEnd(text);txLeft(text); //末尾へ;1文字左へ if(sgi_i[1]>0){ //GI終了有時 txSearchEx(text,"G05P0",SEARCH_CUR|SEARCH_PREV); //前GI終了へ txLeft(text);} //1文字左へ else if(hcd_t01!="" && hcd_i[1]>0){ //長補正終了設定で長補正終了有時 txSearchEx(text,hcd_t01,SEARCH_CUR|SEARCH_PREV); //前長補正終了へ txLeft(text);} //1文字左へ else if(txSearchEx(text,"M30",SEARCH_CUR|SEARCH_PREV)){ //前M30へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ else if(par_i[1]>0){ //末尾%有時 txSearchEx(text,"%",SEARCH_CUR|SEARCH_PREV); //前%へ txPrevPara(text);txJumpParaEnd(text);} //前行先頭へ;行末尾へ if(!txIsCurReturn(text)){txRight(text); //改行以外時1文字右へ txInsert(text,"\nM09\n");} //改行とクーラントOFFと改行書込み else{txRight(text); //改行時1文字右へ txInsert(text,"M09\n");} //クーラントOFFと改行書込み if(crt_i[1]==26){ //クーラントに26を入力時 str_t="M08";} //クーラント文字 else if(crt_i[1]==77){ //クーラントに77を入力時 str_t="M07";} //クーラント文字 else{str_t="M0"+inttostr(crt_i[1]);} //クーラント文字(26と77以外) txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時 txNextPara(text);} //次行先頭へ else if(sgi_i[0]>0){ //GI開始有時 txSearchEx(text,"G05P10000",SEARCH_CUR); //GI開始へ txNextPara(text);} //次行先頭へ else if(hcd_t00!="" && hcd_i[0]>0){ //長補正開始設定で長補正開始有時 txSearchEx(text,hcd_t00,SEARCH_CUR); //長補正開始へ txNextPara(text);} //次行先頭へ else if(txSearchEx(text,"O",SEARCH_CUR)){ //O有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,str_t);} //クーラント文字書込み else{txInsert(text,str_t+"\n");} if(crt_i[1]==26 || crt_i[1]==77){ //クーラントに26か77を入力時 str_t="M"+inttostr(crt_i[1]); //クーラント文字 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"M03",SEARCH_CUR)){ //M03有時 txJumpParaTop(text);} //行先頭へ else if(sgi_i[0]>0){ //GI開始有時 txSearchEx(text,"G05P10000",SEARCH_CUR); //GI開始へ txNextPara(text);} //次行先頭へ else if(hcd_t00!="" && hcd_i[0]>0){ txSearchEx(text,hcd_t00,SEARCH_CUR); //長補正開始へ txNextPara(text);} //次行先頭へ else if(txSearchEx(text,"O",SEARCH_CUR)){ //O有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,str_t);} //クーラント文字書込み else{txInsert(text,str_t+"\n");}}} //Dコード編集 if(dcd_i[0]>0 && dcd_i[1]>0){ //Dコード有でDコード入力時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"D",SEARCH_CUR)){ //D有時繰返し txRight(text);str_t=""; //1文字右へ;削除文字無 while(!txIsCurReturn(text)){ //改行以外時繰返し if(txCmpCur(text,".")){ //点時 str_t=str_t+"."; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"0")){ //ゼロ時 str_t=str_t+"0"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"1")){ //1時 str_t=str_t+"1"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"2")){ //2時 str_t=str_t+"2"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"3")){ //3時 str_t=str_t+"3"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"4")){ //4時 str_t=str_t+"4"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"5")){ //5時 str_t=str_t+"5"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"6")){ //6時 str_t=str_t+"6"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"7")){ //7時 str_t=str_t+"7"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"8")){ //8時 str_t=str_t+"8"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"9")){ //9時 str_t=str_t+"9"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"-")){ //マイナス時 str_t=str_t+"-"; //削除文字 txDeleteChar(text);} //1文字削除 else if(txCmpCur(text,"+")){ //プラス時 str_t=str_t+"+"; //削除文字 txDeleteChar(text);} //1文字削除 else{break;}} //数字以外時繰返し終了 if(str_t=="0" || str_t=="00"){ //削除文字がゼロ時 if(dcd_b[0]){ //D00変更有時 txInsert(text,inttostr(dcd_i[1]));} //Dコード書込み else{ //D00変更無時 txInsert(text,str_t);}} //削除文字書込み else{ //削除文字がゼロ以外時 txInsert(text,inttostr(dcd_i[1]));}}} //Dコード書込み //径補正量の削除 if(dcd_t00!="" && dcd_i[2]>0){ //径補正量設定で径補正量有時 if(dcd_i[0]<1 && dcd_b[1]){ //Dコード無で径補正量削除チェック時 dcd_i[3]=1;} //径補正量削除 else if(dcd_i[0]<1 && !dcd_b[1]){ //Dコード無で径補正量削除未チェック時 dcd_i[3]=2;} //径補正量編集無 if(dcd_i[3]<2){ //径補正量追加か削除時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,dcd_t00,SEARCH_CUR)){ //径補正量有時繰返し txDeletePara(text);txPrevPara(text);}}} //1行削除;前行先頭へ //径補正量の追加 if(dcd_t00!="" && dcd_i[0]>0){ //径補正量設定でDコード有時 if(dcd_i[3]<1){ //径補正量追加時 txJumpFileTop(text); //先頭ヘ if(txSearchEx(text,"O",SEARCH_CUR)){ //O有時 txNextPara(text);} //次行先頭へ else if(par_i[0]>0){ //先頭%有時 txSearchEx(text,"%",SEARCH_CUR); //先頭%へ txNextPara(text);} //次行先頭へ if(txIsCurReturn(text)){ //改行時 txInsert(text,dcd_t00);} //径補正量書込み else{txInsert(text,dcd_t00+"\n");}}} //改行以外時径補正量書込み //送り速度変更 if(fcd_i[0]>0){ //送り速度数有時 txJumpFileTop(text); //先頭ヘ while(txSearchEx(text,"F",SEARCH_CUR)){ //F有時繰返し fcd_t00="";txRight(text); //送り速度文字無;1文字右へ while(!txIsCurReturn(text)){ //改行以外時繰返し if(txCmpCur(text,".")){ //点時 fcd_t00=fcd_t00+".";} //送り速度文字 else if(txCmpCur(text,"0")){ //ゼロ時 fcd_t00=fcd_t00+"0";} //送り速度文字 else if(txCmpCur(text,"1")){ //1時 fcd_t00=fcd_t00+"1";} //送り速度文字 else if(txCmpCur(text,"2")){ //2時 fcd_t00=fcd_t00+"2";} //送り速度文字 else if(txCmpCur(text,"3")){ //3時 fcd_t00=fcd_t00+"3";} //送り速度文字 else if(txCmpCur(text,"4")){ //4時 fcd_t00=fcd_t00+"4";} //送り速度文字 else if(txCmpCur(text,"5")){ //5時 fcd_t00=fcd_t00+"5";} //送り速度文字 else if(txCmpCur(text,"6")){ //6時 fcd_t00=fcd_t00+"6";} //送り速度文字 else if(txCmpCur(text,"7")){ //7時 fcd_t00=fcd_t00+"7";} //送り速度文字 else if(txCmpCur(text,"8")){ //8時 fcd_t00=fcd_t00+"8";} //送り速度文字 else if(txCmpCur(text,"9")){ //9時 fcd_t00=fcd_t00+"9";} //送り速度文字 else if(txCmpCur(text,"-")){ //マイナス時 fcd_t00=fcd_t00+"-";} //送り速度文字 else if(txCmpCur(text,"+")){ //プラス時 fcd_t00=fcd_t00+"+";} //送り速度文字 else{break;} //数字以外時繰返し終了 txRight(text);} //1文字右へ if(fcd_i[1]>0){ //送り速度入力時 if(fcd_t00==fcd_t01){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[1]));}} //送り速度書込み if(fcd_i[2]>0){ //送り速度入力時 if(fcd_t00==fcd_t02){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[2]));}} //送り速度書込み if(fcd_i[3]>0){ //送り速度入力時 if(fcd_t00==fcd_t03){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[3]));}} //送り速度書込み if(fcd_i[4]>0){ //送り速度入力時 if(fcd_t00==fcd_t04){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[4]));}} //送り速度書込み if(fcd_i[5]>0){ //送り速度入力時 if(fcd_t00==fcd_t05){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[5]));}} //送り速度書込み if(fcd_i[6]>0){ //送り速度入力時 if(fcd_t00==fcd_t06){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[6]));}} //送り速度書込み if(fcd_i[7]>0){ //送り速度入力時 if(fcd_t00==fcd_t07){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[7]));}} //送り速度書込み if(fcd_i[8]>0){ //送り速度入力時 if(fcd_t00==fcd_t08){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[8]));}} //送り速度書込み if(fcd_i[9]>0){ //送り速度入力時 if(fcd_t00==fcd_t09){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[9]));}} //送り速度書込み if(fcd_i[10]>0){ //送り速度入力時 if(fcd_t00==fcd_t10){ //送り速度文字が同じ時 txLeftBytes(text,strlen(fcd_t00)); //文字数分左へ txDeleteBytes(text,strlen(fcd_t00)); //文字削除 txInsert(text,inttostr(fcd_i[10]));}}}} //送り速度書込み txJumpFileTop(text); //先頭ヘ txSetDisp(text); //画面再表示 information("%s\n編集を終了しました。", mag_t00);}