jw_cad 外部変形 - (1363) mshtaで指示点を確認する(hp) -

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

 

mshtaで指示点を確認する(hp)

:mshtaで指示点を確認する(hp)
@echo off
if exist jwc_temp.txt (
  copy jwc_temp.txt myfiles > nul
  mshta %~f0 < myfiles > jwc_temp.txt
)
goto:eof

REM #jww
REM #1-%d 点を指示してください
REM #99#
REM #zs
REM #e

<script>
function hex(x) { return x < 10 ? x : x.toString(16) }

hs =
hp =

lg = ""
with (new ActiveXObject("Scripting.FileSystemObject")) {
  f = GetStandardStream(0) //stdin
  g = GetStandardStream(1) //stdout
  while (! f.AtEndOfStream) {
    F = ($_ = f.ReadLine()).split(/\s+/)
    if (/^hs/i .test($_)) { //hs スケール
      for (i = 0; i <= 15; i++) hs[hex(i)] = F[i + 1] * 1.0;
    }
    if (/^lg[a-f0-9]/i .test($_)) { //lg レイヤグループ
      plg = $_.substr(2, 1).toLowerCase(); if (lg == "") lg = plg;
    }
    if (/^hzs/i .test($_)) { //hzs 用紙サイズ
      hzs = [ F[1] * 1.0, F[2] * 1.0 ]
    }
    if (/^hp[1-9][0-9]?/i .test($_)) { //hp 指示点
      hp[ F[0].match(/[0-9][0-9]?/) ] = [ F[1] * 1.0, F[2] * 1.0 ]
    }
  }
  f.close()
  sc = hs[lg]
  w = hzs[0]*sc
  h = hzs[1]*sc
  g.WriteLine([-w / 2.0, 0, w / 2.0, 0].join(" "))
  g.WriteLine([0, -h / 2.0, 0, h / 2.0].join(" "))
  g.WriteLine("ch 0 0 1 0 \"[0 ,0]")
  hpn = hp.length
  for (i = 1; i < hpn; i++) {
    g.WriteLine("pt " + hp[i].join(" "))
    g.WriteLine("ch " + hp[i].join(" ") + " 1 0 \"[" + hp[i][0] + "," + hp[i][1] + "]")
  }
}
close()
</script>

 

 

スクリプト言語は jscript を使用しています。