点、円弧、ソリッドデータに対応してみました。
#!ruby -Ks
#y_plus.rb
#範囲選択の y値がマイナスのときにプラスになるよう持ち上げる
#zahyo_emf.bat一行修正
#(旧)copy jwc_temp.txt temp2.txt > nul
#(新)ruby -Ks y_plus.rb > temp2.txt
$stderr=open("tmp_err.txt","w")
txt=open("jwc_temp.txt").readlines
y=txt.detect{|e| %r|^hn|=~e}.split[2].to_f
yy=(y>0 ? 0 : -y+1.0)
txt.each{|line|
if %r<^c[^cn]|^pt|^s[ceog]|^BL>=~line
s=line.chomp.split(" ")
s[2]=(s[2].to_f+yy).to_s
puts s.join(" ")
elsif %r|^ [0-9.-]+|=~line
s=line.chomp.split(" ").map{|e| e.to_f}
s[1]=s[1]+yy
s[3]=s[3]+yy
puts " "+s.map{|e| e.to_s}.join(" ")
elsif %r|^hn (.*)|=~line
s=$1.chomp.split(" ").map{|e| e.to_f}
s[1]=s[1]+yy
s[3]=s[3]+yy
puts "hn "+s.map{|e| e.to_s}.join(" ")
elsif %r|^sl (.*)|=~line
s=$1.chomp.split(" ").map{|e| e.to_f}
s.each_with_index{|e,i| s[i]=e+yy if i%2==1}
puts "sl "+s.map{|e| e.to_s}.join(" ")
else
puts line
end}