#!ruby -Ks include Math puts "レイヤ変更は0 レイヤグループ変更は1 を入力してください" begin $z_no=gets $z_no.chomp! if $z_no !~ /^[0-1]$/ puts "入力が不適当です、再入力してください" end end while($z_no !~ /^[0-1]$/) puts "変更後のレイヤ番号を入力してください" begin z=gets z.chomp! if z !~ /^[0-9a-f]$/ puts "入力が不適当です、再入力してください" end end while(z !~ /^[0-9a-f]$/) $z = z.hex #data_mojiとdata_noをarray2(二重配列)に収集する。 def data_no_collect(data,i,array2,data_moji,no,hash,j) data_no=no+j array2<<[data_moji,data_no] i=data_next(data,i,data_moji,hash) return i end #data_mojiのバイト数の分だけiを次へ進める。 def data_next(data,i,data_moji,hash) if $z_no.to_i==1 z_i=11 else z_i=9 end data[i+z_i,2]=[$z].pack("S") if data_moji=="CDataMoji" f_i=data[i+83,1].unpack("C")[0] m_i=data[i+84+f_i,1].unpack("C")[0] m_byte=83+f_i+m_i+2 hash[data_moji]=m_byte i += hash[data_moji] elsif data_moji=="CDataSunpou" data[i+$z+47,2]=[z_i].pack("S") f_i=data[i+145,1].unpack("C")[0] m_i=data[i+146+f_i,1].unpack("C")[0] m_byte=147+f_i+m_i+236 hash[data_moji]=m_byte i += hash[data_moji] elsif data_moji=="CDataSolid" if data[i+5,2].unpack("S")[0] == 10 i += hash[data_moji]+4 else i += hash[data_moji] end elsif data_moji=="CDataTen" if data[i+4,1].unpack("C")[0] == 100 i += hash[data_moji]+20 else i += hash[data_moji] end elsif data_moji=="CDataSen" i += hash[data_moji] elsif data_moji=="CDataEnko" i += hash[data_moji] elsif data_moji=="CDataBlock" i += hash[data_moji] end return i end path=Dir.pwd file_a=(Dir.entries(path)).select{|item|item=~/\.jws$/} if file_a.size==0 STDOUT.puts "図形ファイルはありません" open(path+"/jwc_temp.txt","w"){|f|f.puts "h#"} exit end file_a.each{|file| data="" open(file,"rb"){|f|data=f.read} index=data.index("CData") i=index-8 #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)の総数 int=data[i,2].unpack("S")[0] if int==255*256+255 i += 2 n2=data[i,4].unpack("L")[0] i += 4 else n2=data[i,2].unpack("S")[0] i += 2 end #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)のデータNOの検出 hash={"CDataSen"=>47,"CDataTen"=>35,"CDataEnko"=>75,"CDataSolid"=>79,"CDataBlock"=>59} data_moji="";array2=[];no=0;j=0;bl=0 while no