jw_cad 外部変形 - (1581) jw.rbで線データを平行移動する(lnmove) -

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

 

lnmove(ln, ly, pmy = 1.0)
  は 線 ln を直交距離 ly だけ pmy の方向に平行移動する。
  ln : 線データ
  ly : Y方向距離
  pmy : Y方向距離の正負補正

 

使用例

:jw.rbで線データを平行移動する(lnmove)
@echo off
ruby -x %0 %*
goto:eof

REM #jww
REM #1ln 線を指示して下さい
REM #c 直交距離 /_$1" $ly =
REM #e

#!ruby -Ks -rjw
ly = $ly ? $ly : 0
jww
plot ci 1.hp, 10
plot lnmove(1.ln, ly)
plot "h#ly = %s" % ly
__END__

 

 

線データは始点と終点を入れ換えても表示画面では同じです。ところが、始点と終点が変われば正負領域も変わるので

  lnmove([x1, y1, x2, y2], 500)

  lnmove([x2, y2, x1, y1], 500)

は結果が異なります。このとき 線の角度で始点と終点をリセットすれば

  lnmove(ln_reset([x1, y1, x2, y2]), 500)

  lnmove(ln_reset([x1, y1, x1, y1]), 500)

は同じ結果となります。さらに 距離 500 の方向を 指示点 2.hp で示せば

  lnmove(1.ln, 500, ln_hpmens(1.ln, 2.hp))

あるいは

  lnmove(1.ln, 500 * ln_hpmens(1.ln, 2.hp))

とでき、イメージ通りとなります。

 

始点と終点の関係を無視すれば、線を直交距離だけ移動することは簡単です。ところが、それを考えた途端にややこしくなります。CAD なら ボタンと数値を入力するだけで 深く考えなくても線は平行移動できるのですが、スクリプトは考えると深いので頭の体操になります。

追伸、lnmove(1.ln, ln_hpdist(1.ln, 2.hp)) は 線を指示点まで平行移動します。