■24471 / inTopicNo.4) |
Re[1]: オリジナル
|
□投稿者/ コジマ 19回-(2005/02/11(Fri) 17:51:19)
| 記事内容:[|]
指定した長さ未満の直線を消すだけならば、以下の簡単なスクリプトで実行できま す。
この外部変形の実行には、mswin32 版 Rubyのインストールが必要です。 以下で入手できます。 http://www61.tok2.com/home2/gravelroad/tips/install.html
コピペ後、全角スペースを半角スペースに一括置換してください。
◎バッチファイル(ファイル名 線消.bat)
@REM 指定長さ未満の直線を消去する @echo off REM #jww REM #cd REM #zz REM #c消去する直線の最大長さを入力してください(図寸)無指定:1mm/_/a REM #h1 REM #e copy jwc_temp.txt temp.txt > nul ruby -Ks 線消.rb temp.txt %1 > jwc_temp.txt
◎スクリプトファイル(ファイル名 線消.rb)
BEGIN{ puts "hd" $l=1 while ARGV.length > 1 case argument=ARGV.pop when/^\/a/ $l=argument[2..-1].to_f end end } def main by=[] while ARGF.gets xy =split if xy[0] =~ /^hq/ elsif xy[0] =~ /^hs/ xy.shift;xy.each{|item| by << (item.to_i)} elsif xy[0] =~ /^lg/ lg=xy[0][2,1];zusun=by[lg.hex] print $_
elsif xy[0] =~ /^[0-9]/ or xy[0] =~ /^-/ xy.collect!{|item|item.to_f} x=xy[2]-xy[0] y=xy[3]-xy[1] xyl=Math.sqrt(x**2+y**2) if xyl>$l*zusun print $_ end else print $_ end end end main()
|
|