本稿は 煙の出ない玉手箱 の コマンドリファレンスです。
→ JW_CAD の 作図、編集機能を いくつか カバーしています。
→ エラー処理をはじめコマンドのチェックは不十分です。
文字のコードは 暗黙の了解で Shift-Jis としています。きちんと表示されないとき
は 起動時に -Ks オプション を指定してください。
→ ruby-1.9 では $KCODE と jcode.rb が使えなくなっています。
ruby-1.9 では line [hp 1, 2] が エラーとなります。
line [hp(1, 2)] や line [(hp 1, 2)] あるいは line hp 1, 2 は大丈夫です。
→ "1\n2\n3\n".each{|i| p i} が ruby-1.9 では エラーとなります。
"1\n2\n3\n".each_line{|i| p i} とすれば ruby-1.8 でも ruby-1.9 でも 通ります。
→ [1,2,3].each{|$_| p $_} が ruby-1.9 では エラーとなります。ブロック引数にグローバル変数が使えなくなっています。
→ 数学関数 Math.atan2(0, 0) は ruby-1.8 では 0 を返しますが ruby-1.9 では エラーとなります。
→ 10**(-3) は ruby-1.8 では 0.001 となりますが ruby-1.9 では 1/1000 となります。10.0**(-3)
とすれば、どちらも 0.001 を返します。
→ ruby-1.9 は "123".reverse が できるようになっています。(String#reverse が 全角に対応)
■class Fonts
文字フォントのクラス設定 ( V.1.01.84 より 仕様を変更 )
Font.msmincho → 'MS 明朝'
Fonts.new(1).msgothic → 'MS ゴシック'
CnFont.msmincho → 'cn"$<MS 明朝>'
Fonts.new(0).msgothic → 'cn"$<MS ゴシック>'
◆msmincho
・MS 明朝
◆msgothic
・MS ゴシック
◆hgpop
・HG創英角ポップ体
■class Colors
ソリッド図形の塗りつぶし色のクラス設定
Color.red → '10 255'
Color.lc1 → '1'
Colors.new(1).red → 'lc10 255'
Colors.new(1).lc1 → 'lc1'
LcColor.red → 'lc10 255'
◆black ◆gray ◆silver ◇white ◆red ◆yellow ◆lime ◆aqua
◆blue ◆fuchsia ◆maroon ◆olive ◆green ◆teal ◆navy ◆purple
◆gold ◆chocolate
◆lightgray ◆darkgray ◆orange ◆magenta ◆cyan
◆deeppink ◆brown ◆lightgreen ◆lightblue ◆lavender ◆panel
■class Jwc_temp
外部変形書き込みデータのクラス設定(txt:jwc_temp.txt)
◆$select_data
・jwc_temp.txt で # 以降の指示・選択データを返す
$select_data[] に 1行づつ String で セットされます。
◆$err
・エラー番号を返す 未調整
◆$hf, $file
・ファイル名を返す
「REM #hf」の指定があるとき、現在編集中のファイル名(フルパス)が書き
込まれています。
◆$bz
・図面寸法でデータを書出す指定 bz があれば 1 を なければ 0 を 返す
「bz」よりあとにくるデータは図面寸法で書き込まれています。
→ バッチファイルで REM #bz を指定したときに書き込まれます。
→ 図面寸法とは、縮尺どおり印刷された図面に1/1のメジャーをあてた寸法です。
縮尺1/100で1mなら、図面寸法は1cmです。
◆$hq
・外部プログラム実行チェック文字
jwc_temp.txt に hq があると $hq は 1 を返し、そうでなければ 0 を返す。
◆$hk
・軸角( ゚ )
◆$hs
・レイヤグループの縮尺(縮尺の逆数)
レイヤグループの縮尺の逆数がレイヤグループ(0〜F)毎に書き込まれています。
$hs = { "0" => %g, "1" => %g, "2" => %g, "3" => %g,
"4" => %g, "5" => %g, "6" => %g, "7" => %g,
"8" => %g, "9" => %g, "a" => %g, "b" => %g,
"c" => %g, "d" => %g, "e" => %g, "f" => %g }
◆$hcw
・文字幅 mm (文字種類 No1〜10 )
$hcw = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]
◆$hch
・文字高 mm (文字種類 No1〜10 )
$hch = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]
◆$hcd
・文字間隔 mm (文字種類 No1〜10 )
$hcd = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]
◆$hcc
・文字色 文字色(ペンNo) (文字種類 No1〜10 )
$hcc = [%d, %d, %d, %d, %d, %d, %d, %d, %d, %d]
◆$hn
・選択範囲
選択範囲の始点と終点の座標の書き込みです。
座標値は表示画面の縮尺となります。
$hn = [%g, %g, %g, %g]
◆$hzk
・日影図計算の条件
日影図計算の条件の書き込みです。
緯度(度)、日赤緯(度)、測定高(m)、測定時間(0:8時〜16時 、 1:9時〜15時)
$hzk = [%g, %g, %g, %d]
◆$hzs
・用紙の横と縦の寸法(mm)
$hzs = [%g, %g]
◆$hp
・指示点 ( 1-99 ) [座標 x, y]
バッチファイルで指定した指示点が書き込まれます。指示点(0)は原点なの
でとくに書き込みはありません。
$hp = [[0, 0], [%g, %g], [%g, %g], ・・・]
◆$hpn
・指示線、円、文字データの指示点数
◆$lg
・表示画面のレイヤグループ
$lg = %s ← %x ではないことに注意してください。
◆$lgx
・表示画面のレイヤグループ状態
$lgx[$lg]
→ バッチファイルで REM #gn を指定したときに書き込まれます。
◆$lgn
・表示画面のレイヤグループ名
$lgn[$lg]
→ バッチファイルで REM #gn を指定したときに書き込まれます。
◆$ly
・表示画面のレイヤ
$ly = %s ← %x ではないことに注意してください。
◆$lyx
・レイヤ状態
→ バッチファイルで REM #gn を指定したときに書き込まれます。
◆$lyn
・レイヤ名
→ バッチファイルで REM #gn を指定したときに書き込まれます。
[ 使用例 ]
:表示画面のレイヤグループのレイヤ名を確認する
@echo off
REM #jww
REM #gn
REM #e
set RUBYLIB=\jww\Lite\pro\ruby\lib
ruby -x %~f0
pause
goto:eof
#!ruby -Ks -rjw
$lyn[$lg].each_with_index do |layer, i|
puts "#{i.to_s(16)}: #{layer}"
end
__END__
◆$lc
・設定されている線色
$lc = %s ← %d ではないことに注意してください。
◆$lt
・設定されている線種
$lt = %s ← %d ではないことに注意してください。
◆$lw
・設定されている線幅
バッチファイルに「REM #zw」の指定があるときに有効になります。
線幅は数値の1/100mmとなります。
$lw = %s ← %d ではないことに注意してください。
◆$cn
・設定されている文字種 ( 0-10 )( 0 → 任意サイズの文字 )
$cn = 0 のとき $chx[i][6] に 文字幅 mm
$chx[i][7] に 文字高 mm
$chx[i][8] に 文字間隔 mm
$chx[i][9] に 文字色
が保存されます。
◆$font
・設定されている文字フォント
$font = 'cn"$<MS ゴシック>'
◆$pn
・設定されている点種
◆$ln
・線データ
$ln = [0, [%g, %g, %g, %g], [%g, %g, %g, %g], ・・・]
◆$lnn
・線データの選択数 あるいは 総数
$lnn = $ln.size - 1
◆$lnx
・線データの属性
$lnx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]
◆$lnz
・線データの図形属性
◆$lnzon
・線データの図形属性(2)
→ 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。
◆$lnno
・線データ番号
◆$ci
・円、円弧、楕円データ
◆$cin
・円、円弧、楕円データの選択数 あるいは 総数
◆$cix
・円、円弧、楕円データの属性
◆$ciz
・円、円弧、楕円データの図形属性
◆$cizon
・円、円弧、楕円データの図形属性(2)
→ 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。
◆$cino
・円データ番号
◆$ch
・文字データ(".c[hvsroptkz2]"を".ch"に統一)
◆$chn
・文字データの選択数 あるいは 総数
◆$chx
・文字データの属性
◆$chz
・文字データの図形属性
◆$chzon
・文字データの図形属性(2)
→ 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。
◆$chno
・文字データ番号
◆$pt
・点データ
◆$ptn
・点データの選択数 あるいは 総数
◆$ptx
・点データの属性
◆$ptzon
・点データの図形属性(2)
→ 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。
◆$ptz
・点データの図形属性
◆$pl
・曲線データ
◆$pln
・曲線データの線の総数
◆$plx
・曲線データの属性
◆$plz
・曲線データの図形属性
◆$plzon
・曲線データの図形属性(2)
→ 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。
◆$plno
・曲線データ番号(データ毎の最後の番号)
◆$ml
・寸法図形 線データ
$ml = [0, [%g, %g, %g, %g], [%g, %g, %g, %g], ・・・]
◆$mln
・寸法図形 線データの選択数 あるいは 総数
$mln = $sl.size - 1
◆$mlx
・寸法図形 線データの属性
$mlx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]
◆$slz
・寸法図形 線データの図形属性
◆$mlno
・寸法図形 線データ番号
◆$mc
・寸法図形 文字データ
◆$mcn
・寸法図形 文字データの選択数 あるいは 総数
◆$mcx
・寸法図形 文字データの属性
◆$mcz
・寸法図形 文字データの図形属性
◆$mcno
・寸法図形 文字データ番号
◆$sl
・ソリッドデータ
◆$sln
・ソリッドデータの選択数 あるいは 総数
$sln = $sl.size - 1
◆$slx
・ソリッドデータの属性
$slx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]
◆$slz
・ソリッドデータの図形属性
◆$slno
・ソリッドデータ番号
◆$bl
・ブロックデータ
◆$bln
・ブロックデータの選択数 あるいは 総数
$bln = $bl.size - 1
◆$blx
・ブロックデータの属性
$blx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]
◆$plsl
・曲線ソリッドデータ
◆$plsln
・曲線ソリッドデータの選択数 あるいは 総数
$plsln = $plsl.size - 1
◆$plslx
・曲線ソリッドデータの属性
$plslx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]
◆$plslz
・曲線ソリッドデータの図形属性
◆$plslno
・曲線ソリッドデータ番号
■class Numeric へ 追加したメソッド
■class Range へ 追加したメソッド
■class String へ 追加したメソッド
標準クラス String に 追加する
◆zen_han
・数字を全角文字から半角文字へ変換する
x.zen_han → self.tr("[{()}]0-9A-Za-z&¥.+−ー*×/÷^
:;=$%@ _,!”#?・〜|‘’<>、"," 〜 ")
x は文字列
◆han_zen
・数字を半角文字から全角文字へ変換する
x.han_zen → self.tr("[{()}]0-9A-Za-z&\\\\.+\\-*/^:;=$%@ _,!\"#?・~|`'<>"," 〜 ")
x は文字列
●class Hash へ 追加したメソッド
■class Array へ 追加したメソッド
標準クラス Array に 追加する
◆x, x1
・線[x1, y1, x2, y2]の始点、円[x, y, r]の中心点 x 座標 を返す
ln(1).x1 → [x1, y1, x2, y2].x1 → x1
ci(1).x → [x, y, r].x → x
・ln指標, ci指標 で 利用する
1.ln.x1 → x1
1.ci.x → x
・x のように 図形データの特定要素を返すコマンドを「スナップ(読取点)コマンド」と呼ぶ。
・a = [1, 2, 3, 4]
a.x = 5
p a → [5, 2, 3, 4]
・図形データは文字列も可とした
"1 2 3 4".x → 1.0
・図形データ.x(y) で 引数に y 座標を与えることができるようにした
"1 2 3 4".x 5.0 → [1.0, 5.0]
"1 2 3 4".pt.x 5.0 → [[1.0, 5.0], [3.0, 5.0]]
◆y, y1
・線の始点、円の中心点 y 座標 を返す
ln(1).y1
ci(1).y
・図形データは文字列も可とした
"1 2 3 4".y → 2.0
・図形データ.y(x) で 引数に x 座標を与えることができるようにした
"1 2 3 4".y 5.0 → [5.0, 2.0]
"1 2 3 4".pt.y 5.0 → [[5.0, 2.0], [5.0, 4.0]]
◆x2
・線の終点 x 座標 を返す
ln(1).x2
◆y2
・線の終点 y 座標 を返す
ln(1).y2
◆r
・点[x, y] や 線[0, 0, x, y] の長さ を返す
・線[x1, y1, x2, y2] の長さ を返す
ln(1).r → L = hypot(x2 - x1, y2 - y1)
1.ln.r
・円[x,y,r] の半径 を返す
ci(1).r → [x, y, r].r → r
1.ci.r
・文字列[x, y, lx, ly, str] の長さ を返す
ch(1).r
1.ch.r
◆p1
・線[x1, y1, x2, y2] の 始点[x1,y1] を返す
ln(1).p1 → [x1, y1, x2, y2].p1 → [x1, y1]
1.ln.p1
・円[x, y, r, p1, p2, w, d] の 始角 p1 を返す
ci(1).p1 → [x, y, r, p1, p2, w, d].p1 → p1
1.ci.p1
・文字列[x, y, lx, ly, str] の 左下の点[x, y] を返す
ch(1).p1
◆p2
・線[x1, y1, x2, y2] の 終点[x2, y2] を返す
ln(1).p2
・円[x, y, r, p1, p2, w, d] の 終角 p2 を返す
ci(1).p2
・文字列[x, y, lx, ly, str] の 右下の点[x, y] を返す
ch(1).p2
◆pt, c, d, v, w, m
pt : 両端(読取点)
・線[x1, y1, x2, y2] の 両端[x1, y1], [x2, y2] を返す
ln(1).pt
1.ln.pt(-1) → 始点[x1, y1]
1.ln.pt(1) → 終点[x2, y2]
・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 中心点[x, y] を返す
ci(1).pt
1.ci.pt(0) → 中心点[x, y]
・円弧[x, y, r, p1, p2, w, d] の
ci(1).pt(-1) → 始角 p1 端[x1, y1] を返す
ci(1).pt(1) → 終角 p2 端[x2, y2] を返す
ci(1).pt(2) → 両端[x1, y1], [x2, y2] を返す
ci(1).pt(3) → 両端と中心点[x1, y1], [x, y], [x2, y2] を返す
・文字列[x, y, lx, ly, str] の 左下・右下の点[x1, y1], [x2, y2] を返す
ch(1).pt
1.ch.pt(-1) → 左下の点[x1, y1]
1.ch.pt(1) → 右下の点[x2, y2]
c : 中点
・線[x1, y1, x2, y2] の 中点[(x1 + x2) / 2, (y1 + y2) / 2] を返す
ln(1).c
1.ln.c 0.25 → 線長を 1.0 としたとき 始点からの距離比 0.25 の点[x, y] を返す
・円[x, y, r] の 中心点[x, y] を返す
ci(1).c
・円弧[x, y, r, p1, p2, w, d] の 中点[x3, y3] を返す
ci(1).c → 中点[x3, y3] を返す
1.ci.c 0.25 → 弧長を 1.0 としたとき 始角 p1 端からの距離比 0.25 の点[x3, y3] を返す
・文字列[x, y, lx, ly, str] の 下線の中点[x, y] を返す
ch(1).c
c r1, r2, … : 距離比 r1, r2, … の 点 pc
pc = ln(1).c r1, r2, …
r1, r2, … : 始点からの距離比
d : 角度
・点[x, y] は 線[0, 0, x, y] の 傾角(rad) を返す
・線[x1, y1, x2, y2] の 傾角(rad) を返す
ln(1).d
・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 傾角 d(゚) を返す
ci(1).d
・円弧[x, y, r, p1, p2, w, d]
ci(1).d(-1) → 始角 p1 を返す
ci(1).d(1) → 終角 p2 を返す
ci(1).d(2) → [p1, p2] を返す
ci(1).d(-2) → 交角 p2 - p1 を返す( 正値に補正した値 )
・文字列[x, y, lx, ly, str] の 下線の傾角(rad) を返す
ch(1).d
v : 鉛直
・線[x1, y1, x2, y2] の 鉛直角(rad) を返す
ln(1).v
・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 傾角 d + 90(゚) を返す
ci(1).v
・円弧[x, y, r, p1, p2, w, d]
ci(1).v(-1) → 始角 p1 + 90 を返す
ci(1).v(1) → 終角 p2 + 90 を返す
ci(1).v(2) → [p1 + 90, p2 + 90] を返す
・文字列[x, y, lx, ly, str] の 下線の鉛直角(rad) を返す
ch(1).v
w : 幅
・線[x1, y1, x2, y2] の スパン長[x2 - x1, y2 - y1] を返す
ln(1).w
ln(1).w $hk → 軸角(゚)を考慮してスパン長を返す
ln(1).w $hk, w=0.5 → 軸角(゚)と扁平比 w を考慮してスパン長を返す
軸角=0 なら [x2 - x1, (y2 - y1)/w] を返す
・円[x, y, r, p1, p2, w, d] の 扁平比 を返す
ci(1).w
・文字列[x, y, lx, ly, str] の XY方向の長さ[lx, ly] を返す → 下線のスパン長に相当する
ch(1).w
m : 線の勾配
・線[x1, y1, x2, y2] の 勾配 (x2 - x1) / (y2 - y1) を返す
ln(1).m → 軸角に対応する
◆SA::tn, per
ci.tn(pt)
・円[x, y, r]、楕円・円弧 [x, y, r, p1, p2, w, d] の 円周上点 pt の接線の角度rad を返す
1.ci.tn
1.ci.tn(2)
(ci 1).tn(2)
ci.per(pt)
・円[x, y, r]、楕円・円弧 [x, y, r, p1, p2, w, d] の 円周上点 pt の法線の角度rad を返す
1.ci.per
1.ci.per(2)
(ci 1).per(2)
◆f(pm=0), f1, f2
・楕円の焦点の座標 を返す
pf1, pf2 = ci(1).f
pf1 = ci(1).f(1)
pf2 = ci(1).f(2)
pf1 = ci(1).f1
pf2 = ci(1).f2
◆str
・文字データの文字列 を返す
s = ch(1).str → s = "文字列"
s = ch(1..-1).str → s = ["文字列1", "文字列2", … ]
◆SA::to_layer(slg=$lg,sly=$ly)
・作図するレイヤグループとレイヤを設定する
◆to_f(a=1.0)
・配列の値を実数に変換する
a : 変換倍率
◆to_i
・配列の値を整数に変換する
◆FNSA::to_n(j=nil,k=nil,l=nil)
・連続線データの後に「"文字」で連続線端部に文字と点が作図され、
「"数字"+増分」で「数字+増分」の値と点が次の端部に作図される
(増分を省略すると増分は「1」になる)
i.to_n(j) あるいは to_n(i, j) → "i"+j 、j == nil なら "i
i : 文字、数字
j : 増分、ただし j が 文字列なら i = j + i.to_s となる
j != nil のとき k, l を 与えると k == l のときだけ 値を返す
[ 使用例 ]
:連続線に指示点番号と点を作図
@echo off
REM #jww
REM #1-%d
REM #99#
REM #e
set RUBYLIB=\jww\Lite\pro\ruby\lib
ruby -x %~f0
goto:eof
#!ruby -Ks -rjw
jww
lc sxflc :orange
(hp 1..-1).each_with_index do |x, i|
echo x, (to_n i + 1, "#")
echo x, (to_n "#1", 1 if i == 0)
echo x, (to_n "#1", 1, i, 0)
end
__END__
◆sum
・配列の合計値を返す
[ 使用例 ] Array のほか Range も 可
(1..10).sum → 55
ln.r.sum → 指示線の線長の合計
◆ave
・配列の平均値を返す
[ 使用例 ] Array のほか Range も 可
(1..10).ave → 5.5
ln.r.ave → 指示線の線長の平均
▼関数
▼jww
・標準出力を jwc_temp.txt とする
jww → $stdout = open("jwc_temp.txt", "w")
$stdout = STDOUT で リセットできる
▼jww_close あるいは jww_data
・jww を リセット して 配列 $jww_data に 出力データをセットする
▼run(file = $0, mode = 0)
・標準出力を jwc_temp.txt とする
・バッチファイルで
1) mode = 0 のとき つぎの 〜 部分 を 評価する
:: 〜 (先頭行)
REM #: 〜
REM #jww; 〜
mode = 1 のとき
REM #e の あとにある
::command のつぎから (::〜 の 〜 は なんでもよい)
::end のまえまで (::〜 の 〜 は なんでもよい) を 評価する
2) REM #c ***** /_$[1-9a-z]" $p =
で $p に 数値 を 取得する
3) REM #c ***** /_$[A-Z]" $p =
で $p に 文字 を 取得する
→ 2), 3) で $p = を 省略したとき
$1 〜 $9 は $_1 〜 $_9 に 数値 を 取得する
$a 〜 $z は $a 〜 $z に 数値 を 取得する
$A 〜 $Z は $A 〜 $Z に 文字 を 取得する
・REM #hm による 項目選択メニュー があるとき
$hm に 項目の選択番号がセットされる(コマンドライン引数 %1 経由)
・バッチファイルを run で 評価するバッチ
[ run.bat ] 例題のバッチファイルと同じフォルダに置いておく
@echo off & cls
set RUBYLIB=\jww\Lite\pro\ruby\lib
ruby -Ks -rjw -e "run '%1'" %* -
→ RUBYLIB は jw.rb の置いてあるフォルダ。パスが通っている場
所なら RUBYLIB の設定は不要。
[ 使用例 ]
@rem 線を引く
@echo off
REM #jww
REM #1-%d : 始点を指示してください
REM #2%d : 終点を指示してください
REM # : line
REM #e
%~dp0run %0
[ 使用例−2 ]
@rem 線を引く、円を描く
@echo off
REM #jww
REM #hc メニュー
REM #hm |1) / |2) ○ |
REM #:1
REM #:2
REM #1-%d 点を指示してください
REM #2%d 点を指示してください
REM #e
%~dp0run %0 %1 -mode1
::command
case hm
when 1 then line
when 2 then circle
end
::end
・バッチファイルを run で 評価するバッチ(2)
[ let.bat ] 例題のバッチファイルと同じフォルダに置いておく
@echo off
set run=run
if /i %1==norun (set run=#&shift /1)
if /i %1==nojww (set nojww=%1&shift /1)
if not exist %1 (
echo バッチファイルが見当たりません
echo @let %0 %* で 起動してください
pause
exit
)
set RUBYLIB=\jww\Lite\pro\ruby\lib
( echo %run% '%~1'
findstr /iv "^[@:%%] ^REM" %1
) | ruby -Ks -rjw - %*
→ RUBYLIB は jw.rb の置いてあるフォルダ。パスが通っている場
所なら RUBYLIB の設定は不要。
[ 使用例−3 ]
@rem 線を引く
@let %0
REM #jww
REM #cd
REM #1-%d 始点を指示してください
REM #2%d 終点を指示してください
REM #e
line
[ 使用例−4 ]
@rem 線を引く、円を描く
@let %0 %1
REM #jww
REM #cd
REM #hc メニュー
REM #hm |1) / |2) ○ |
REM #:1
REM #:2
REM #1-%d 点を指示してください
REM #2%d 点を指示してください
REM #e
case hm
when 1 then line
when 2 then circle
end
▼F::hm
・関数 run を実行したとき バッチファイルの選択項目(メニュー)の番号を返す
hm → $hm に 保存されている値を返す
関数 run を実行しないとき や メニューがないときは 0 を返す
▼FNRSHA::comment
・数値をコメント表示する
comment(x,s="",t="") → print"h#"+x.to_s+s.to_s+t.to_s+"\n"
x は数値、文字列、配列、ハッシュのいずれでも構わない。
・x が Numeric のとき
x.comment(s="",t="") → print"h#"+s+self.to_s+t+"\n"
printf "h#L = %s m\n",x なら s = "L = ", t = " m" となる。
・x が Array のとき
x.comment(s="",t="") → print"h#"+s+"["+self.join(",")+"]"+t+"\n"
printf"h#L = [%s] m\n",x.join(",") なら s = "L = ", t = " m" となる。
▼F::echo(*x)
・puts x.flatten.join(" ") となる
▼F::erase(reg=//, x=nil)
・図形データ x から reg マッチするデータを削除して返す
reg は 正規表現 か 文字列
x は 図形データ で デフォルト値 = $select_data
▼F::change(reg="", str="", x=nil)
・図形データ x で reg にマッチするデータを str に変換して返す
x が $select_data なら 同時に出力する
reg は 正規表現 か 文字列
str は 文字列
x は 図形データ で デフォルト値 = $select_data
▼---S-Aexcept(reg)
・図形データ self で reg にマッチするデータを削除して出力する
reg は 正規表現
曲線 reg = /^pl/、寸法図形 reg = /^ms[gz]/ に対応
[[1,2,3,4],"ci 1 2 3","pt 4 5",["ch",0,0,1,0,"ようこそ!"]].except(/^pt/)
1 2 3 4
ci 1 2 3
ch 0 0 1 0 "ようこそ!
健康第一!! またお会いいたしましょう。