/*#TITLE# 技術計算マクロ */ /* G_KEISAN.MAC 2011.10.21 kita */ clear(); g_s = 82; /* [GPa X10^9 N.m^2]せん断(横)弾性係数 */ g_s = g_s*10**9; label0: echo "1.ねじり角 2.危険速度 3.ねじの効率 4.Helzの応力"; tmp = getany(1); type_tmp = vtype(tmp); if (type_tmp == 5) { exit;} /* Entr キーのみ */ else if (type_tmp != 3) { /* 数字以外 */ echo "\a"; goto label0; } else if (tmp < 1 || tmp > 4){ echo "\a"; goto label0; } else{ menu_no = tmp; } switch(menu_no){ case 1: echo "軸外径[mm] = "; dia0 = getnum(1); /* 丸棒のねじり */ echo "軸内径[mm] = "; dia1 = getnum(1); echo "トルク[N.m] = "; trq = getnum(1); echo "長さ[mm] ="; l = getnum(1); /* i_p = pi/32*(((dia0/1000)**4)-((dia1/1000)**4));*/ i_p = pi/32*((dia0/1000)**4-(dia1/1000)**4); tau_max = trq/i_p*(dia0/2000); th_l = trq/g_s/i_p * l/1000; /* θl [rad] */ th_l_deg = th_l/pi*180; /*tmp = 32/pi/(dia/1000)**4 * trq/2/g_s*(l/1000);echo tmp;getany(1);*/ ss = sprint("丸棒のねじりの計算 \n\n 軸外径 = %4.1f mm\n 軸内径 = %4.1f mm\n トルク = %4.2f N.m\n 長さ = %5.1f mm\n\n τmax = %5.3f MPa\n θl = %3.3f deg", dia0, dia1, trq, l, tau_max/10**6, th_l_deg); echo "配置位置をクリック"; p0 = getpnt(1); GNT [ss] [p0] break; case 2: echo "軸径[mm] = "; dia = getnum(1); echo "支持長さ[mm] = "; l = getnum(1); echo "支持方法(1.ピ-ピ 2.剛-自由 3.剛-剛 4.剛-ピ)"; siji = getnum(1); switch(siji){ case 1: f = 9.7; ss_siji = "両端ピロー支持"; break; case 2: f = 3.4; ss_siji = "片持ち支持"; break; case 3: f = 21.9; ss_siji = "両端固定支持"; break; case 4: f = 15.1; ss_siji = "固定-ピロー支持"; break; } n_c = f*dia/(l**2)*(10**7); ss = sprint("危険速度の計算 \n\n 軸径 = %4.1f mm\n 支持長さ = %4.1f mm\n 支持方法 = %s\n\n 危険速度 = %5.1f rpm", dia, l, ss_siji, n_c); echo "配置位置をクリック"; p0 = getpnt(1); GNT [ss] [p0] break; case 3: echo "ねじ径[mm] = "; dia = getnum(1); echo "ねじリード[mm] = "; l = getnum(1); echo "ネジ山角度[deg](台形ネジ30) = "; beta = getnum(1); echo "摩擦係数(鉄-鉄潤滑 0.06 乾燥 0.2)"; tmp = getany(1); if (vtype(tmp) == 5) { /* Entr キー*/ myu = 0.2; } else { myu = tmp;} lou = atan2(myu,cos(beta/2)); alf = atan2(l,dia*pi); ita = tan(alf)/tan(alf+lou); ss = sprint("ねじの効率ηの計算 \n\n ねじ径 = %4.1f mm\n ねじリード = %2.1f mm\n ネジ山角度 = %3.1f deg\n 摩擦係数 = %1.2f\n 効率η = %1.3f", dia, l, beta, myu, ita); echo "配置位置をクリック"; p0 = getpnt(1); GNT [ss] [p0] break; case 4: echo "条件文字列をピック(でサンプル文字列)"; kai = pce(0,6/#CURPICSCF); tmp = gettxt(1); /*echo (vtype(tmp)); getany(1);*/ if (vtype(tmp) == 5) { /* Entr キーのみ */ echo "サンプル文字列を書き出す位置をクリック"; lc_txt = getpnt(1); GNT " 計算モード   半径 縦男性係数 ポアソン比 荷重" [lc_txt] GNT "円筒-円筒 r1 r2 E1 E1 myu1 myu2 P" [lc_txt-kai] GNT " [mm] [mm] [Gpa] [Gpa] [N]" [lc_txt-2*kai] GNT " 20 20 4.1 193 0.4 0.3 60" [lc_txt-3.5*kai] exit; } else if(vtype(tmp) == 4){ VER [idptr(pick(tmp))] str = #VERTXT; /*echo str ; getany(1);*/ p_str = pce(#VERXS,#VERYS); tmp = sscan(str,"%f %f %f %f %f %f %f"); r1 = tmp[0]; r2 = tmp[1]; e1 = tmp[2]; e2 = tmp[3]; myu1 = tmp[4]; myu2 = tmp[5]; p0=tmp[6]; r1 = r1/1000; r2 = r2/1000; /* mm -> m */ e1 = e1*1000000000; e2 = e2*1000000000; /* Gpa -> pa */ sgm_hertz = sqrt(1/pi*(r1+r2)/(r1*r2) * p0/((1-myu1**2)/e1+(1-myu2**2)/e2)); sgm_hertz = sgm_hertz/1000000; /* pa -> Mpa */ str = sprint("ヘルツの応力 σmax = %5.3f [MPa]",sgm_hertz); GNT [str] [p_str-1.5*kai] } break; } exit;