jw_cad 外部変形 - (790) rubyで2重線を引く(2sen) -

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

 

rubyで2重線を引く(2sen)

:rubyで2重線を引く(2sen)
@echo off
set w=%1
ruby -x %0 jwc_temp.txt
goto:eof

REM #jww
REM #1-%d 始点を指示して下さい
REM #2%d 終点を指示して下さい
REM #k 線の幅| 200(L) | 400(R) | 120 | 150 | 180 | 220 | 250 | 300 | 350 |
REM #e

#!ruby -Ks -an -i.bak
BEGIN {
  include Math
  mode = 1
}
case $_
  when /^hp1/ then p1 = $F[1, 2].map{|x| x.to_f}
  when /^hp2/ then p2 = $F[1, 2].map{|x| x.to_f}
    x1, y1, x2, y2 = (p1 + p2)
    w = "200 200 400 120 150 180 220 250 300 350".split(/\s+/)[ENV['w'].to_i].to_f
    yw = w / 2.0 * cos(d = atan2(y2 - y1, x2 - x1))
    xw =-w / 2.0 * sin(d)
    puts "%s %s %s %s" % [x1 + xw, y1 + yw, x2 + xw, y2 + yw]
    puts "%s %s %s %s" % [x1 - xw, y1 - yw, x2 - xw, y2 - yw] if w > 0
    if mode == 1 && w > 0
      p = d * 180 / PI + 90
      r = w / 2
      puts "ci %s %s %s %s %s %s %s" % [x1, y1, r, p, p + 180, 1, 0]
      puts "ci %s %s %s %s %s %s %s" % [x2, y2, r, p - 180, p, 1, 0]
    end
end
__END__