/*#TITLE# 自動保存、自動出力 用マクロ F版(手動保存追加) */ /* AUTO_SAVE_F.MAC 2005.08.06 */ /* 計画図 : 保存しない */ /* 組 図 : X:\\FIL3K\\ */ /* 部品図 : X:\\FIL3B\\頭3桁\\ */ /* 2006.02.22 主務者覽がスペースだけでも空と判断する */ /* 2007.02.15 保存先指定に「手動」を追加 */ clear(); s = menu(1); print_out=0; /*print out する:1 しない:0 (debug mode)*/ /* os = "windows"; */ os = "linux"; if(os == "linux"){ load_fn = "/home/acad/zip/"; save_fn = "/home/acad/tmp1/"; save_fn_0 = "/home/acad/FIL3B/"; save_fn_1 = "/home/acad/FIL3K/"; cmd = "!cd " + load_fn + " && ls *MDL > " + load_fn + "tmp0.dat" + "#"; } else if(os == "windows"){ load_fn = "C:\\tmp\\"; save_fn = "C:\\tmp1\\"; save_fn_0 = "X:\\FIL3B\\"; save_fn_1 = "X:\\FIL3K\\"; cmd = "!dir /B " + load_fn + "*MDL" + " > " + load_fn + "tmp0.dat" + "#"; } [cmd] b_or_k = 0; /* 部品図:1 組図:0 */ fn_dat = load_fn + "tmp0.dat"; fp = fopen(fn_dat,"r"); /* MDL Data Count */ flg = 0; load_no = 0; all_no =0; do{ ss = fgets(20,fp); if(vtype(ss) == 4){ all_no +=1; if( strstr(ss,"LCK") == -1 && strstr(ss,"MDL") > 0){ load_no += 1; } } else{flg = 1;} }while(flg == 0); if(load_no == 0){ echo "tmp フォルダーが空です"; exit; } fclose(fp); mdl_name = array(load_no); save_mn = array(load_no); nsave_mn = array(load_no); /* MDL 名読み込み */ fp = fopen(fn_dat,"r"); k = 0; flg = 0; do{ ss = fgets(20,fp); if(vtype(ss) == 4){ if(strstr(ss,"LCK") == -1 && strstr(ss,"MDL") > 0){ ss = sscan(ss,"%s"); mdl_name[k] = ss; k += 1; } } else{flg = 1;} }while(flg == 0); fclose(fp); /* プリンター,保存先の指定 */ label_p: echo "プリンターを指定して下さい"; prt = gettxt(1); echo "保存先指定方法 1;X:/FIL3*(CR) 2:手動"; tmp = getany(1); if (vtype(tmp) == 5) { /* Entr キーのみ */ menu_no = 1; } else if (vtype(tmp) == 3) { /* 数値 */ menu_no = tmp; } else { goto label_p;} label_hozon: if(menu_no == 2){ echo "保存先を指定して下さい"; save_fn = gettxt(1); len = length(save_fn); /* 最後に / があるかどうか確認 */ if(save_fn[len-1] != "/"){ save_fn = save_fn + "/"; /* なければ追加 */ } if(os == "windows"){ n = subs(save_fn,"/","\\"); } /* Folder check */ dummy_fn = save_fn + "dummy"; if(os == "linux"){ cmd = "!touch " + dummy_fn + " &"; [cmd] } else if(os == "windows"){ cmd = "!dir > " + dummy_fn + " &"; [cmd] } tmp=0; echo "保存先確認中"; for(i=0;i<100000;i+=1){ tmp = tmp + 1; } if(fstat(dummy_fn,"exist")){ echo save_fn " に保存します Y(CR)/N"; menu_yn = getany(1); type_tmp = vtype(menu_yn); if (type_tmp == 5) { /* Entr キーのみ */ menu_yn = "Y"; } if (menu_yn == "N"){ goto label_hozon; } if (os == "linux"){ cmd = "!rm " + dummy_fn + " &"; [cmd] } else if(os == "windows"){ cmd = "!DEL " + dummy_fn + " &"; [cmd] } } else{ echo "保存 Folder がありません(CRで再入力)"; getany(1); goto label_hozon; } } /* echo save_fn; getany(1); */ label_ow: echo "同名File 1:上書しない(CR) 2:y/n確認 3:上書"; tmp = getany(1); if (vtype(tmp) == 5) { /* Entr キーのみ */ menu_ow = 1; } else if (vtype(tmp) == 3) { /* 数値 */ menu_ow = tmp; } else { goto label_ow;} echo "主務者名を入力してください"; shumu = gettxt(1); if(menu_no == 1){ /* 自動保存 */ echo "prt: " prt "//保存先:自動//主務者:" shumu " Y(CR)/N"; } else if(menu_no == 2){ /* 手動保存 */ echo "prt: " prt "//保存先:" save_fn " //主務者:" shumu " Y(CR)/N"; } tmp = getany(1); if (vtype(tmp) == 5) { /* Entr キーのみ */ yn = "Y"; } else if (vtype(tmp) == 4) { /* 文字 */ yn = tmp; } if(yn != "Y") { goto label_p;} /* データー読み込み、保存 */ save_no = 0; nsave_no = 0; flg = 0; for(i=0; i 0){ /* 部品図 */ b_or_k = 1; save_fn = save_fn_00; } } } else if(menu_no == 2){ /* 手動指定 */ ss = sscan(mdl_name[i],"%6s %1s"); dd = sscan(ss[1],"%d"); if(vtype(dd) == 5){ /* 計画図 */ b_or_k = 0; } else{ if(dd == 0){ /* 組図 */ b_or_k = 0; } else if(dd > 0){ /* 部品図 */ b_or_k = 1; } } } save_mdl_name = save_fn + mdl_name[i]; MODEL/READ [load_mdl_name] DRAW 1 if(fstat(save_fn + mdl_name[i],"exist")) { /* 同一名 File 存在! */ if(menu_ow == 3){ /* 上書き */ flg_ow = 1; } else if(menu_ow == 2){ /* y/n */ echo "\a"; echo "上書きしますか? Y(CR)/N"; tmp = getany(1); if (vtype(tmp) == 5) { /* Entr キーのみ */ yn = "Y"; } else if (vtype(tmp) == 4) { /* 文字 */ yn = tmp; } if(yn == "Y"){ flg_ow = 1;} /* 上書き */ else { flg_ow = 0;} /* 上書きしない */ } else { flg_ow = 0;} /* 上書きしない */ } else { flg_ow = 1;} /* 同一名 File 存在しない*/ if(flg_ow == 0){ /* ss1 = sscan(ss1,"%s"); */ nsave_mn[nsave_no] = mdl_name[i]; nsave_no += 1; continue; } else if(flg_ow == 1){ /* 上書き保存、印刷 */ if(b_or_k == 1){ /* 部品図 */ if(vtype(#DRWTTL013) == 5 ){ /* 主務者覧が空 or space */ DRAW/TITLE PAGE 1 13 [shumu] } else if(vtype(#DRWTTL013) == 4){ if(#DRWTTL013 == " " || #DRWTTL013 == " " || #DRWTTL013 == " "){ DRAW/TITLE PAGE 1 13 [shumu] } } } else if(b_or_k == 0){ /* 組図 */ if(vtype(#DRWTTL006) == 5 ){ /*主務者覧が空 or space */ DRAW/TITLE PAGE 1 6 [shumu] } } else if(vtype(#DRWTTL006) == 4){ if(#DRWTTL006 == " " || #DRWTTL006 == " " || #DRWTTL006 == " "){ DRAW/TITLE PAGE 1 6 [shumu] } } } save_mn[save_no] = save_mdl_name; save_no += 1; /* echo save_mdl_name; getany(1); */ MODEL/WRITE [save_mdl_name] if(print_out==1){ /* print out ON */ if(os == "linux"){ cmd = "!rm " + load_mdl_name + "#"; } else if(os == "windows"){ cmd = "!del " + load_mdl_name + "#"; } [cmd] } if(print_out == 1){ /* print out ON */ if(os == "windows"){ PLOT/ONN 1 [prt] } else if(prt == "A4"){ PLOT/ONN 1 [prt] } } } echo load_no " ヶ中 " save_no " ヶのファイルを保存しました"; save_txt = load_fn + "save.txt"; fp = fopen(save_txt,"w"); fputs("保存した File 名\n",fp); for(i=0;i s = menu(3); exit;