機械屋には夜勤というものがあって
昼夜転倒の生活をしている人間もいるのです
桁表示の方は sprintf とか使えば直せると思うのですが
ちょっと待ってください
一括記入の方は調整は必要でしょうが大枠はできた気がする
REM 一括記入.bat
REM 勾配を‰表示の一括記入
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c線と文字の離れ(図寸) 無指定:1.0 /_/a
REM #c勾配有効桁数 無指定:2 /_/b
REM #c長さ有効桁数 無指定:3 /_/c
REM #1ln線を指示してください free(L)
REM #99#
REM #e
copy jwc_temp.txt temp.txt
ruby -Ks -x %~f0 %1 %2 %3
GOTO END
REM #~
◎コメント
◎スクリプトファイル(ファイル名は自由)
◎以下の文をコピペ後、全角スペースを半角スペース二個に一括置換
#! ruby
# encoding: SJIS
$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")
include Math
require "matrix"
hch,hs,by,zusun,takasa,l,mk,ml=[],[],[],0,0,0,"",""
hanare=(ARGV[0] ? ARGV[0].gsub("/a","").to_f : 1.0)
kketa=(ARGV[1] ? ARGV[1].gsub("/b","").to_i : 2)
nketa=(ARGV[2] ? ARGV[2].gsub("/c","").to_i : 3)
puts "cc4"
open("temp.txt").readlines.each{|e|
xy=e.split(" ")
puts e unless /^hq|^ [\d-]/=~e
if /^hs/=~e
xy[1..-1].each{|item|by << item}
elsif /^lg/=~e
lg=xy[0][2,1]
zusun=by[lg.hex].to_f
elsif /^hch/=~e
hch=xy
elsif /^cn0/=~e
takasa=xy[2].to_f*0.5*zusun
elsif /^cn\d/=~e
takasa=hch[e.gsub("cn","").to_i].to_f*0.5*zusun
elsif /^ [\d-]/=~e
xy=xy.map{|f|f.to_f}
vs=Vector[xy[0],xy[1]]
ve=Vector[xy[2],xy[3]]
v1=ve-vs
v2=Matrix[[0,-1.0],[1.0,0]]*v1*(1.0/v1.r)*(hanare+takasa)
p1=(vs+v1*0.5+v2)
p2=(vs+v1*0.5-v2)
begin
a=(v1[1]/v1[0]*1000).round(kketa)
rescue
a="垂直"
end
l=v1.r
if a=="垂直"
mk="i=垂直"
elsif a<0
mk=%Q|i=#{sprintf("%.#{kketa}f",a.abs)}‰→|
elsif a==0
mk=%Q|i=#{sprintf("%.#{kketa}f",a.abs)}‰|
else
mk=%Q|←i=#{sprintf("%.#{kketa}f",a.abs)}‰|
end
ml=sprintf("%.#{nketa}f",l.round(nketa))
puts %Q|ch #{p1[0]} #{p1[1]} #{v1[0]} #{v1[1]} "#{mk}|
puts %Q|ch #{p2[0]} #{p2[1]} #{v1[0]} #{v1[1]} "#{ml}|
end
}
__END__
:END