外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
コマンドプロンプトでH形鋼断面を描く
/* コマンドプロンプトでH形鋼断面を描く
@cls & echo off
set s=%*
if defined s (
echo ^%*> %~dpn0.txt
) else (
if exist %~dpn0.txt (
for /f "tokens=*" %%a in (%~dpn0.txt) do set s=%%a
)
)
if not defined s set s=400 200 8 13 16
for /f "tokens=1*" %%i in (jwc_temp.txt) do (
if %%i == hk set hk=%%j
)
cscript /nologo //e:jscript %0 %hk% > jwc_temp.txt
goto:eof
REM #jww
REM #0 位置を指示して下さい
REM #c H B T1 T2 R =
REM #e
*/
function int(a){
return a < 0 ? Math.ceil(a) : Math.floor(a)
}
function rot(x1, y1, d){
co = Math.cos(d)
si = Math.sin(d)
return [x1 * co - y1 * si, x1 * si + y1 * co]
}
function offset(w, h, pt){
opt = 5
i1 = int( (9 - pt) / 3)
i2 = int( (9 - opt) / 3)
i = i1 - i2
return [w * ( (9 - pt) % 3 - (9 - opt) % 3) / 2, h * i / 2]
}
function jish(a, b, tw, tf, r, pt, hk){
p0 = offset(b, a, pt)
d = hk * Math.PI / 180
p = [
[tw / 2 ,a / 2 - tf - r],
[tw / 2 + r ,a / 2 - tf - r],
[tw / 2 + r ,a / 2 - tf],
[b / 2 ,a / 2 - tf],
[b / 2 ,a / 2]
]
u = p.length
for (j = 0; j <= 3; j++) {
a = 90 * ( (1 - j) % 4) + hk
for (i = j == 0 ? 1 : 0; i < u; i++) {
k = j % 2 == 0 ? i : u - i - 1
x = j % 3 > 0 ? -p[k][0] : p[k][0]
y = j > 1 ? -p[k][1] : p[k][1]
pc = rot(x + p0[0], y + p0[1], d)
if (k == 1 && r > 0) {
pc = ["ci", pc[0], pc[1], r, 0, 90, 1, a]
}
WScript.echo(pc.join(" "))
}
}
WScript.echo(rot(p[0][0] + p0[0], p[0][1] + p0[1], d).join(" "))
}
ENVIRON = new ActiveXObject("WScript.Shell").Environment("PROCESS")
F = ENVIRON("s").split(/\s+/)
a = F[0] * 1
b = F[1] * 1
tw = F[2] * 1
tf = F[3] * 1
r = F[4] * 1
with (WScript) {
hk = arguments(0) * 1.0
jish(a, b, tw, tf, r, pt = 5, hk)
}
外部変形のバッチファイルの構成は以下のとおりです。
/* タイトル
@cls & echo off
コマンドによるスクリプト
goto:eof
*/
jscriptによるスクリプト
=>コマンドによるスクリプトは jscript のコメント文に記述しています。