jw_cad 外部変形 - (927) jscriptで階段を割り付ける -

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

 

jscriptで階段を割り付ける

/* jscriptで階段を割り付ける
@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
  )
)
copy jwc_temp.txt myfiles > nul
cscript //nologo //e:jscript %0 < myfiles > 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 ptspan(x, y, d, n) {
  si = Math.sin(d)
  co = Math.cos(d)
  dx =   (y[0] - x[0]) * co + (y[1] - x[1]) * si
  dy = - (y[0] - x[0]) * si + (y[1] - x[1]) * co
  c = 1
  b = n == 1 ? dx : dx / (n - c)
  return [b, dy / n]
}

ENV = new ActiveXObject("WScript.Shell").Environment("Process")

f = WScript.StdIn
while (! f.AtEndOfStream) {
  F = ($_ = f.ReadLine()).split(/\s+/)
  if (/^hk/i .test($_)) { hk = F[1] }
  if (/^hp1-/i .test($_)) { p1 = F.slice(1, 3) }
  if (/^hp2 /i .test($_)) { p2 = F.slice(1, 3) }
}

n = (ENV("n") * 1 < 1.1) ? 12 : ENV("n") * 1
x1 = p1[0] * 1.0; y1 = p1[1] * 1.0
x2 = p2[0] * 1.0; y2 = p2[1] * 1.0
p = ptspan([x1, y1], [x2, y2], hk * Math.PI / 180, n)
a = p[1]; b = p[0]
r = Math.sqrt(x1 * x1 + y1 * y1)
d = Math.atan2(y1, x1) * 180 / Math.PI

g = WScript.StdOut
g.WriteLine(["K1", "\n", d, r].join(" "))
for (i = 1; i <= n; i++) {
  g.WriteLine([90.0 + hk * 1.0, a].join(" "))
  g.WriteLine([hk, b].join(" "))
}