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

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

 

rubyで階段を割り付ける

:rubyで階段を割り付ける
@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
  )
)
ruby -x %0 jwc_temp.txt
goto:eof

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

#!ruby -Ks -an -i.bak
BEGIN {
  $hp = []
  include Math
}
case $_
  when /^hk/ then $hk = $F[1].to_f
  when /^hp/ then $hp[$F[0].scan(/\d+/)[0].to_i] = [$F[1].to_f, $F[2].to_f]
end
END {
  n = 12 if (n = ENV["n"].to_i) < 1
  co = cos($hk * PI / 180)
  si = sin($hk * PI / 180)
  x1, y1, x2, y2 = $hp[1] + $hp[2]
  w = (x2 - x1) * co + (y2 - y1) * si
  h =-(x2 - x1) * si + (y2 - y1) * co
  a, b = h / n, (n > 1 ? w / (n - c = 1) : w)
  r, d = hypot(x1, y1), atan2(y1, x1)
  puts "K1\n%s %s" % [d * 180 / PI, r]
  n.times { puts "%s %s\n %s %s" % [90 + $hk, a, $hk, b] }
}
__END__