jw_cad 外部変形 - (457) パワーシェルで矩形を描く -

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

 

パワーシェルは Windowsを操作あるいは設定するシェルとスクリプト言語です。

 

パワーシェルで矩形を描く

jw_cad 外部変形は バッチファイル(.bat)で処理する設計となっているため コマンドプロンプトからパワーシェルを起動する必要があります。

:パワーシェルで矩形を描く
@echo off
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
  more +%%n %0 | powershell -command -
)
goto:eof

REM #jww
REM #1-%d 矩形の始点を指示してください (L)free (R)Read
REM #2%d 対頂点を指示してください (L)free (R)Read
REM #e

#!ここから more +n %0 の n 行目:最初の行は 0 行
(gc jwc_temp.txt) | foreach {
  switch -regex -case ($_)
  {
    '^hk (.+)' { $hk=[double] $matches[1] }
    '^hp1-\s+(\S+)\s+(\S+)' { $p1=$matches[1,2] }
    '^hp2 \s+(\S+)\s+(\S+)' { $p2=$matches[1,2]
      $1,$2,$3,$4 = ($p1+$p2 | foreach { [double] $_ })
      $co = [math]::cos($hk*[math]::PI/180)
      $si = [math]::sin($hk*[math]::PI/180)
      $ww = ($3-$1)*$co+($4-$2)*$si
      $hh =-($3-$1)*$si+($4-$2)*$co
      $p3 = ($1-$hh*$si),($2+$hh*$co)
      $p4 = ($1+$ww*$co),($2+$ww*$si)
      "$p1`n$p3`n$p2`n$p4`n$p1"
    }
  }
} | sc jwc_temp.txt

#ここまで powershell は 文末に必ず空白行を置いてください

 

 

軸角に対応しています。

 

処理速度は遅いですがスクリプトは楽です。