> 線上に平行で一括で線上側には勾配(1:n,%)、線下側には線長(m)
というのには対応できてませんが
取り敢えず勾配の入力だけはできるようになりました
線長入力はひとまず宿題ということで
REM 一括記入.bat
REM 勾配を‰表示の一括記入
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c線と文字の離れ(図寸) 無指定:1.0 /_/a
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #1ln線を指示してください free(L)
REM #99#
REM #e
copy jwc_temp.txt temp.txt
ruby -Ks -x %~f0 %1 %2
GOTO END
REM #~
◎コメント
◎スクリプトファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペース2個に一括置換してください
#! ruby
# encoding: SJIS
$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")
include Math
by,zusun=[],1.0
koubai_moji=""
hanare=(ARGV[0] ? ARGV[0].gsub("/a","").to_f : 1.0)
keta=(ARGV[1] ? ARGV[1].gsub("/b","").to_i : 2)
puts "cc1"
def ika(x,keta)
begin
a=((x.to_f*10**keta).round).to_f/(10**keta)
a=a.to_i if a.to_s =~/^0\.0$/
return a
rescue
return "垂直"
end
end
open("temp.txt").readlines.each{|e|
xy=e.split(" ")
if /^hs/=~xy[0]
xy[1..-1].each{|item|by << item}
puts e
elsif /^lg/=~xy[0]
lg=xy[0][2,1]
zusun=by[lg.hex].to_f
puts e
elsif /^\d|^-/=~xy[0]
xy.collect!{|item|item.to_f}
if xy[0]>xy[2]
xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
elsif xy[0]==xy[2]
xy[3],xy[1]=xy[1],xy[3] if xy[3]
end
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(y**2+x**2)
kakudo=atan2(y,x)
koubai=y/x*1000
a=ika(koubai,keta)
if a=="垂直"
koubai_moji= "i=垂直"
elsif koubai<0
koubai_moji= "i=#{a.abs}‰→"
elsif koubai==0
koubai_moji= "i=#{a.abs}‰"
else
koubai_moji= "←i=#{a.abs}‰"
end
printf("ch %.10f %.10f %.10f %.10f \"%s\n",
xy[0]+l/2*cos(kakudo)-hanare*zusun*sin(kakudo),
xy[1]+l/2*sin(kakudo)+hanare*zusun*cos(kakudo),
l*cos(kakudo),l*sin(kakudo),koubai_moji)
elsif /^hq/!~e
puts e unless /^hq/=~e
end
}
__END__
:END