/*#TITLE# 軸対象形の体積計算マクロ */ /* TAISEKI.MAC 2009.2.21 kita */ clear(); MENU/OFF LIST/OFF dx = 0.01; tmp_y = pce(0,1); echo "図形1をピック"; p = getpnt(1); id1 = pick(p); VER [idptr(id1)] p1s = pce(#VERXS,#VERYS); p1e = pce(#VERXE,#VERYE); echo "図形2をピック"; p = getpnt(1); id2 = pick(p); VER [idptr(id2)] p2s = pce(#VERXS,#VERYS); p2e = pce(#VERXE,#VERYE); tmp = p2s[1]-p1s[1]; tmp_y = tmp * tmp_y; h_x = p1e[0] - p1s[0]; /* x方向の幅 */ dx = h_x/(+h_x) * dx; /* dx に正負 */ tmp_x = pce(dx,0); n_x = +(int(h_x/dx)); /* 分割数 */ p = pce(0,0); vol_ttl = 0; for(i=0;i<=n_x;i+=1){ CLS 255 p = p1s + i*tmp_x; LBP [p] [p+tmp_y] id_tmp = #CURMAXID; PIN [idptr(id1)] [idptr(id_tmp)] VER [idptr(#CURMAXID)] line_s = pce(#VERXS,#VERYS); PIN [idptr(id2)] [idptr(id_tmp)] VER [idptr(#CURMAXID)] line_e = pce(#VERXS,#VERYS); CLS 2 LBP [line_s] [line_e] r = p[0]; /* 半径 */ l = +(line_e - line_s); vol = 2*pi*r*l*dx; vol_ttl = vol_ttl + vol; } CLS/SEL 255 DEL CURPIC MSKONN /* CLS 255 の要素を削除 */ CLS/SEL ALL CLS 1 MENU/ONN LIST/ONN ss = sprint("体積 = %5.1f mm^3",+vol_ttl); GNT [ss] exit;