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

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

 

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

/* jscriptで2重線を引く(2sen)
@cls & echo off
set w=%1
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 #k 線の幅| 200(L) | 400(R) | 120 | 150 | 180 | 220 | 250 | 300 | 350 |
REM #e
*/

ENV = new ActiveXObject("WScript.Shell").Environment("Process")
tome = 0 //50
mode = 1 //0

f = WScript.StdIn
while (! f.AtEndOfStream) {
  F = ($_ = f.ReadLine()).split(/\s+/)
  if (/^hp1-/i .test($_)) { p1 = F.slice(1, 3) }
  if (/^hp2 /i .test($_)) { p2 = F.slice(1, 3) }
}
g = WScript.StdOut
with (Math) {
  x1 = p1[0] * 1.0; y1 = p1[1] * 1.0
  x2 = p2[0] * 1.0; y2 = p2[1] * 1.0
  w = "200 200 400 100 125 150 175 250 300 350".split(/\s+/)[ENV('w')] * 1.0
  d = atan2(y2 - y1, x2 - x1)
  yw = w / 2 * cos(d)
  xw =-w / 2 * sin(d)
  xt = tome * cos(d)
  yt = tome * sin(d)
  x1 = x1 + xt; y1 = y1 + yt
  x2 = x2 - xt; y2 = y2 - yt
  g.WriteLine( [x1 + xw, y1 + yw, x2 + xw, y2 + yw].join(" ") )
  if (w > 0) { g.WriteLine( [x1 - xw, y1 - yw, x2 - xw, y2 - yw].join(" ") ) }
  if (mode == 0 && w > 0) {
    g.WriteLine( [x1 + xw, y1 + yw, x1 - xw, y1 - yw].join(" ") )
    g.WriteLine( [x2 + xw, y2 + yw, x2 - xw, y2 - yw].join(" ") )
  }
  if (mode == 1 && w > 0) {
    p = d * 180 / PI + 90
    r = w / 2
    g.WriteLine( ["ci", x1, y1, r, p, p + 180, 1, 0].join(" ") )
    g.WriteLine( ["ci", x2, y2, r, p - 180, p, 1, 0].join(" ") )
  }
}