jw_cad 外部変形 - (628) コマンドプロンプトでH形鋼断面を描く -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

コマンドプロンプトで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 のコメント文に記述しています。