jw_cad 外部変形 - (1331) mshtaで点マーカを描く -

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

 

mshtaで点マーカを描く

:mshtaで点マーカを描く
@echo off
set c=%*
if defined c call:set %c%
if exist %~dpn0.txt (
  for /f "tokens=*" %%a in (%~dpn0.txt) do call:set %%a
)
if not defined code set code=0
if not defined size set size=1
if defined c (
  echo %code% %size%> %~dpn0.txt
)

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 #c マーカコード番号, 倍率
REM #e

:set
if not defined code set code=%1
if not defined size set size=%2
if "%1" == "/" set code=
if "%2" == "/" set size=
goto:eof

<script>
ENV = new ActiveXObject("WScript.Shell").Environment("Process")
code = ENV("code")
size = ENV("size") ? ENV("size") * 1.0 : 1
hp = []
with (new ActiveXObject("Scripting.FileSystemObject")) {
  f = GetStandardStream(0) //stdin
  g = GetStandardStream(1) //stdout
  while (! f.AtEndOfStream) {
    F = ($_ = f.ReadLine()).split(/\s+/)
    if (/^hk/i .test($_)) { hk = F[1] } //hk 軸角
    if (/^hp\d+/i .test($_)) { hp[F[0].match(/\d+/)] = F.slice(1, 3) }
  }
  f.close()
  for (i = 1; i < hp.length; i++) {
    g.WriteLine(["pt", hp[i][0], hp[i][1], size, hk, code].join(" "))
  }
}
close()
</script>

 

 

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