jw_cad 外部変形 - (670) パワーシェルで2重線を引く(2sen) -

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

 

パワーシェルで2重線を引く(2sen)

:パワーシェルで2重線を引く(2sen)
@echo off
set w=%1
if not defined w (
  set w=200
  goto はい
)
if %1==1 set w=200
if %1==2 set w=400
if %1==3 set w=120
if %1==4 set w=150
if %1==5 set w=180
if %1==6 set w=220
if %1==7 set w=250
if %1==8 set w=300
if %1==9 set w=350

:はい
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
  more +%%n %0 | powershell -command -
)
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

#!ここから more +n %0 の n 行目:最初の行は 0 行
gc jwc_temp.txt | %{
  if ($_ -match "^hp1-") { $p1 = [regex]::split($_,' +')[1,2] }
  if ($_ -match "^hp2")  { $p2 = [regex]::split($_,' +')[1,2] }
}
$x1,$y1,$x2,$y2 = $($p1+$p2 | %{ [double] $_ })
$w = [double] $env:w
$d = [math]::atan2($y2-$y1,$x2-$x1)
$yw = $w/2*[math]::cos($d)
$xw =-$w/2*[math]::sin($d)
$mode = 1 #1=丸のキャップを付ける 0=付けない
&{
  "$($x1+$xw) $($y1+$yw) $($x2+$xw) $($y2+$yw)"
  if ($w -gt 0) { "$($x1-$xw) $($y1-$yw) $($x2-$xw) $($y2-$yw)"
    if ($mode -eq 1) {
      $p = $d * 180 / [math]::pi + 90
      $r = $w / 2
      "ci $x1 $y1 $r $p $($p + 180) 1 0"
      "ci $x2 $y2 $r $($p - 180) $p 1 0"
    }
  }
} | sc jwc_temp.txt

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