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

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

 

vbscriptで点マーカを描く

:vbscriptで点マーカを描く
@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 not exist %~dp0eval.vbs echo ExecuteGlobal WScript.StdIn.ReadAll > %~dp0eval.vbs
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
  copy jwc_temp.txt myfiles > nul
  (
:   echo Option Explicit
    echo On Error Resume Next
:   echo On Error GoTo 0
    more +%%n %0
  ) | cscript //nologo %~dp0eval.vbs > 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

#!この次の行からプログラムを書いてください
'1)正規表現
Dim re
Set re = New RegExp
re.IgnoreCase = True '大文字と小文字を区別しない
re.Global = True '文字列全体を検索する

function reSplit(str)
  re.Pattern = "[ ]+"
  reSplit = Split(Trim(re.Replace(str," ")))
end function

function reTest(pat, str)
  re.Pattern = pat
  reTest = re.Test(str)
end function

'3)環境変数
Dim Env
Set Env = CreateObject("WScript.Shell").Environment("Process")

Dim line, F
Dim hk
Dim i, hp(100), hpn
With CreateObject("Scripting.FileSystemObject")
  With .OpenTextFile("myfiles")
  Do While Not .AtEndOfStream
    line = .ReadLine: F = reSplit(line)
    if reTest("^hk",line) then hk = F(1)
    if reTest("^hp([1-9][0-9]?)-?",line) then
      i = re.Replace(F(0),"$1")
      hp(i) = Array(F(1), F(2))
      hpn = hpn +1
    end if
  Loop
  End With
End With

Dim mark, size
code = Env("code")
size = CInt(Env("size"))
if size = 0 then size = 1
for i = 1 to hpn
  WScript.Echo Join(Array("pt", hp(i)(0), hp(i)(1), size, hk, code))
next