jw_cad 外部変形 - (1030) tclshで2重線を引く(2sen) -

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

 

tclshで2重線を引く(2sen)

:tclshで2重線を引く(2sen)
@echo off
set w=%1
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
  copy jwc_temp.txt myfiles > nul
  more +%%n %0 | tclsh - > jwc_temp.txt
)
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

#!この次の行からプログラムを書いてください
set tcl_precision 16; #文字列を数値演算するとき有効桁数 16 (デフォルト 12)
set PI [expr acos(-1)]

set f [open myfiles]
foreach 0 [split [read $f] \n] {
  lassign $0 1 2 3
  switch -regexp -- $0 {
    ^hp1 { set p1 "$2 $3" }
    ^hp2 { set p2 "$2 $3"
      lassign "$p1 $p2" x1 y1 x2 y2
      set d [expr atan2($y2 - $y1, $x2 - $x1)]
      set w [lindex "200 200 400 120 150 180 220 250 300 350" $env(w)]
      set yw [expr  $w / 2 * cos($d)]
      set xw [expr -$w / 2 * sin($d)]
      puts "[expr $x1 + $xw] [expr $y1 + $yw]\
            [expr $x2 + $xw] [expr $y2 + $yw]"
      if {$w > 0} {
        puts "[expr $x1 - $xw] [expr $y1 - $yw]\
              [expr $x2 - $xw] [expr $y2 - $yw]"
      }
      set mode 長穴
      if {$mode == "長穴" && $w > 0} {
        set p [expr $d * 180 / $PI + 90]
        set r [expr $w / 2]
        puts "ci $x1 $y1 $r $p [expr $p + 180] 1 0"
        puts "ci $x2 $y2 $r [expr $p - 180] $p 1 0"
      }
    }
  }
}

 

 

tclsh を wish に置き換えることもできます。wish をつかうと以下の画面が表示されるので、スクリプトの末尾に exit を入れて、画面を終了してください。(tcl/tk は Activ Tcl)