▼kojimaさん:
>hzs は、書き出し専用のデータです。
>読み込んでも何の変化もありません。
>
>外部変形で用紙サイズを変更をすることは出来ません。
>
>用紙サイズは、ステータスバーの用紙サイズをクリックして簡単に変更
>できますので、時間をかけて、外部変形でというのは実用的ではないでしょう。
>
>
>プログラミングの興味としてなら
>JWWのデータ形式を理解していれば、保存されているデータに
>直接アクセスして用紙サイズを変更できます。
>(バイナリデータを書き換える専用アプリケーション)
>
>以下は、それを外部変形から利用できるようにしたものです。
>図面そのものは書き換えていません。
>temp.jwwにデータをコピーして用紙サイズの変更をします。
>
>
>@REM 用紙サイズを変更した図面を開く
>@echo off
>REM #jww
>REM #cd
>REM #hf
>REM #h0
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -x %~f0 temp.txt
>
>goto end
>#!ruby -Ks
>while ARGF.gets
>if $_=~/^file\=/
>file=$'.chomp
>end
>end
>if file==""
>STDERR.puts "保存されていません。 保存してから再実行してください"
>STDERR.puts "続行するには何かキーを押してください"
>STDIN.gets
>exit
>end
>STDERR.puts "事前に上書き保存しましたか? YES:1 NO:2"
>hozon=STDIN.gets.to_i
>unless hozon==1
>STDERR.puts "上書き保存してから再実行してください"
>STDERR.puts "続行するには何かキーを押してください"
>STDIN.gets
>exit
>end
>STDERR.puts "どの用紙サイズに変更しますか? 数値を入力してください"
>STDERR.puts "0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m"
>paper_size=STDIN.gets.to_i
>dir,fi=File.split(file)
>begin
>i=0
>data=""
>open(file,"rb"){|f|data=f.read}
>#◎jwwデータの宣言
>i += 8
>#◎図面のバージョン
>b_n=data[i,4].unpack("L")[0];
>if b_n<420
>STDERR.puts "バージョンNO#{b_n}には未対応です。処理を中止します"
>exit
>end
>i += 4
>
>#◎メモ欄の記載文
>memo_byte=data[i,1].unpack("C")[0];
>i += 1+memo_byte
>#◎図面サイズ
>#0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m
>data[i,4]=[paper_size].pack("L")
>
>open("#{dir}/temp.jww","wb"){|f|f.write(data)}
>
>system("start c:/jww/jw_win #{dir}/temp.jww")
>rescue
>STDERR.puts $!
>end
>__END__
>:end
ご指導ありがとうございます。
私はRubyはわかりませんので
環境ファイルでA2の用紙設定してそれを
jw_win.jwfに書き換えようかと思っています。