jw_cad 外部変形 - (627) コマンドプロンプトで階段を割り付ける -

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

 

コマンドプロンプトで階段を割り付ける

/* コマンドプロンプトで階段を割り付ける
@cls & echo off
set n=%1
if defined n (
  echo ^%1> %~dpn0.txt
) else (
  if exist %~dpn0.txt (
    for /f "tokens=*" %%a in (%~dpn0.txt) do set n=%%a
  )
)
if not defined n set n=12
for /f "tokens=1*" %%i in (jwc_temp.txt) do (
  if %%i == hk   set hk=%%j
  if %%i == hp1- set p1=%%j
  if %%i == hp2  set p2=%%j
)
cscript /nologo //e:jscript %0 %hk% "%p1%" "%p2%" > jwc_temp.txt
goto:eof

REM #jww
REM #1-%d 始点を指示してください
REM #2%d 終点を指示してください
REM #c 段数 = 
REM #e
*/

function int(a){
  return a < 0 ? Math.ceil(a) : Math.floor(a)
}
function step(pt1, pt2, n, hk){
  co = Math.cos(hk * Math.PI / 180)
  si = Math.sin(hk * Math.PI / 180)
  x1 = pt1[0] * 1.0
  y1 = pt1[1] * 1.0
  x2 = pt2[0] * 1.0
  y2 = pt2[1] * 1.0
  dx = x2 - x1
  dy = y2 - y1
  ww = dx * co + dy * si
  hh =-dx * si + dy * co
  aa = hh / n
  if (n > 1) { bb = ww / (n - 1) } else { bb = ww }
  xx = bb * co - aa * si
  yy = bb * si + aa * co
  x2 = x1 - aa * si
  y2 = y1 + aa * co
  x3 = x1
  y3 = y1
  a = ""
  for (i = 1; i <= n; i++) {
    x3 += xx
    y3 += yy
    a += [x1, y1, x2, y2].join(" ") + "\n"
    a += [x2, y2, x3, y3].join(" ") + "\n"
    x1 = x3
    y1 = y3
    x2 += xx
    y2 += yy
  }
  return a
}
ENVIRON = new ActiveXObject("WScript.Shell").Environment("PROCESS")
with (WScript) {
  hk = arguments(0) * 1.0
  p1 = arguments(1).split(/\s/)
  p2 = arguments(2).split(/\s/)
  n = int(ENVIRON("n") * 1.0)
  if (n <= 0) n = 12;
  echo( step(p1, p2, n, hk) )
}

 

 

 

外部変形のバッチファイルの構成は以下のとおりです。
/* タイトル
@cls & echo off
コマンドによるスクリプト
goto:eof
*/
jscriptによるスクリプト
=>コマンドによるスクリプトjscript のコメント文に記述しています。