@REM 補助線丸枠記号のサイズ変更
@echo off
REM #jww
REM #cd
REM #zz
REM #zw
REM #ht10
REM #h1
REM #cサイズ変更の倍率 無指定:1/_/a
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 丸枠3.rb temp.txt %1 > jwc_temp.txt
◎バッチファイル(ファイル名 丸枠3.rb)
BEGIN{
$by=1
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
$by=argument[2..-1].to_f
end
end
}
def main
by=[];$en=[];hcw=[];hch=[];hcd=[];hcc=[];ten=[]
while ARGF.gets
xy =split
if xy[0]=~/^lt/
lt=xy[0]
end
if xy[0]=~/^ci/
xy.collect!{|item|item.to_f}
if xy.size==4 or xy[4]==xy[5]
$en< end
end
end
puts"hd"
open("temp.txt","r"){|f|
while line=f.gets
xyt =split
if xyt[0]=~/^hq/
elsif xyt[0]=~/^hs/
xyt[1..-1].each{|item|by< elsif xyt[0]=~/^lg/
lg=xyt[0][2,1]
zusun=by[lg.hex]
print line
elsif xyt[0]=~/^hcw/
xyt[1..-1].each{|item|hcw< elsif xyt[0]=~/^hch/
xyt[1..-1].each{|item|hch< elsif xyt[0]=~/^hcd/
xyt[1..-1].each{|item|hcd< elsif xyt[0]=~/^hcc/
xyt[1..-1].each{|item|hcc< elsif xyt[0]=~/^cn/ && xyt[0]=~/\d$/
cn=line.chop
print line
elsif xyt[0]=~/^lt/
print line
lt=xyt[0]
elsif xyt[0]=~/^[0-9]/ or xyt[0]=~/^-/
xyt.collect!{|item|item.to_f}
if xyt[0]>xyt[2]
xyt[0],xyt[2],xyt[1],xyt[3]=xyt[2],
xyt[0],xyt[3],xyt[1]
elsif xyt[0]==xyt[2]
if xyt[1]>xyt[3]
xyt[1],xyt[3]=xyt[3],xyt[1]
end
end
c=$en.select{|b|
(xyt[0]+(xyt[2]-xyt[0])/2) >
(b[1]-b[3]) &&
(xyt[0]+(xyt[2]-xyt[0])/2) <
(b[1]+b[3]) &&
(xyt[1]+(xyt[3]-xyt[1])/2) >
(b[2]-b[3]) &&
(xyt[1]+(xyt[3]-xyt[1])/2) <
(b[2]+b[3])}
if c.size==0
print line
else
x1=c[0][1]-(c[0][1]-xyt[0])*$by
x2=c[0][1]+(xyt[2]-c[0][1])*$by
y1=c[0][2]+(xyt[1]-c[0][2])*$by
y2=c[0][2]+(xyt[3]-c[0][2])*$by
sen(x1,y1,x2,y2)
end
elsif xyt[0]=~/^ci/
if lt=="lt9"
xyt[3]=xyt[3].to_f*$by
puts xyt.join("\s")
else
x=xyt[1].to_f
y=xyt[2].to_f
r=xyt[3].to_f
hen=xyt[6].to_f
c=$en.select{|b|
x-r> (b[1]-b[3])-1 &&
x+r < (b[1]+b[3])+1 &&
y-r > (b[2]-b[3])-1 &&
y+r<(b[2]+b[3])+1}
if c.size==0
print line
else
xci=c[0][1]-(c[0][1]-
x)*$by
yci=c[0][2]-(c[0][2]-
y)*$by
rci=r*$by
xyt[1,3]=[xci,yci,rci]
puts xyt.join("\s")
end
end
elsif xyt[0]=~/^ch/
moji=line.split("\"")
word=moji[1].chop
xyt.collect!{|item|item.to_f}
mojih=cn.split
if mojih[0]=="cn0"
$mojiw=mojih[1].to_f
$mojih=mojih[2].to_f
$mojid=mojih[3].to_f
$mojic=mojih[4]
else
$mojiw=hcw[mojih[0][2,1].to_i-1]
$mojih=hch[mojih[0][2,1].to_i-1]
$mojid=hcd[mojih[0][2,1].to_i-1]
$mojic=hcc[mojih[0][2,1].to_i-1]
end
c=$en.select{|b|
xyt[1]+xyt[3]/2 > (b[1]-b[3]) &&
xyt[1]+xyt[3]/2 < (b[1]+b[3]) &&
xyt[2] > (b[2]-b[3]) &&
xyt[2]<(b[2]+b[3])}
if c.size==0
puts"cc0"
print line
else
xw=c[0][1].to_f+((xyt[1]+xyt[3]/2)-
c[0][1].to_f)*$by
yw=c[0][2].to_f+((xyt[2]+
$mojih*zusun/2)-c[0][2].to_f)*$by
puts"cc4"
printf("ch %f %f %s %s \"%s\n",
xw,yw,xyt[3],xyt[4],word)
end
elsif xyt[0]=~/^pt/
x=xyt[1].to_f
y=xyt[2].to_f
c=$en.select{|b|
x > (b[1]-b[3]) &&
x < (b[1]+b[3]) &&
y > (b[2]-b[3]) &&
y <(b[2]+b[3])}
if c.size==0
print line
else
xpt=c[0][1]-(c[0][1]-x)*$by
ypt=c[0][2]-(c[0][2]-y)*$by
xyt[1,2]=[xpt,ypt]
puts xyt.join("\s")
end
else
print line
end
end
}
end
def daen(x1,y1,r,hen)
printf("ci %.10f %.10f %.10f %s %s %s %s\n",x1,y1,r,0,360,hen,0)
end
def en(x1,y1,r)
printf("ci %.10f %.10f %.10f \n",x1,y1,r)
end
def sen(x1,y1,x2,y2)
printf("%.10f %.10f %.10f %.10f \n",x1,y1,x2,y2)
end
main()
@REM 補助線丸枠記号のサイズ変更
@echo off
REM #jww
REM #cd
REM #zz
REM #zw
REM #ht10
REM #h1
REM #cサイズ変更の横倍率 無指定:1/_/a
REM #cサイズ変更の縦倍率 無指定:横倍率に同じ/_/b
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 丸枠3.rb temp.txt %1 %2> jwc_temp.txt
◎スクリプトファイル(丸枠3.rb)
$byx=1
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
$byx=argument[2..-1].to_f
when /\/b/
$byy=argument[2..-1].to_f
end
end
unless $byy
$byy=$byx
end
def main
by=[];$en=[];hcw=[];hch=[];hcd=[];hcc=[];ten=[]
while ARGF.gets
xy =split
if xy[0]=~/^lt/
lt=xy[0]
end
if xy[0]=~/^ci/
xy.collect!{|item|item.to_f}
if xy.size==4 or xy[4]==xy[5]
$en< end
end
end
puts"hd"
open("temp.txt","r"){|f|
while line=f.gets
xyt =split
if xyt[0]=~/^hq/
elsif xyt[0]=~/^hs/
xyt[1..-1].each{|item|by< elsif xyt[0]=~/^lg/
lg=xyt[0][2,1]
zusun=by[lg.hex]
print line
elsif xyt[0]=~/^hcw/
xyt[1..-1].each{|item|hcw< elsif xyt[0]=~/^hch/
xyt[1..-1].each{|item|hch< elsif xyt[0]=~/^hcd/
xyt[1..-1].each{|item|hcd< elsif xyt[0]=~/^hcc/
xyt[1..-1].each{|item|hcc< elsif xyt[0]=~/^cn/ && xyt[0]=~/\d$/
cn=line.chop
print line
elsif xyt[0]=~/^lt/
print line
lt=xyt[0]
elsif xyt[0]=~/^[0-9]/ or xyt[0]=~/^-/
xyt.collect!{|item|item.to_f}
if xyt[0]>xyt[2]
xyt[0],xyt[2],xyt[1],xyt[3]=xyt[2],
xyt[0],xyt[3],xyt[1]
elsif xyt[0]==xyt[2]
if xyt[1]>xyt[3]
xyt[1],xyt[3]=xyt[3],xyt[1]
end
end
c=$en.select{|b|
(xyt[0]+(xyt[2]-xyt[0])/2) >
(b[1]-b[3]) &&
(xyt[0]+(xyt[2]-xyt[0])/2) <
(b[1]+b[3]) &&
(xyt[1]+(xyt[3]-xyt[1])/2) >
(b[2]-b[3]) &&
(xyt[1]+(xyt[3]-xyt[1])/2) <
(b[2]+b[3])}
if c.size==0
print line
else
x1=c[0][1]-(c[0][1]-xyt[0])*$byx
x2=c[0][1]+(xyt[2]-c[0][1])*$byx
y1=c[0][2]+(xyt[1]-c[0][2])*$byy
y2=c[0][2]+(xyt[3]-c[0][2])*$byy
sen(x1,y1,x2,y2)
end
elsif xyt[0]=~/^ci/
if lt=="lt9"
xyt[3]=xyt[3].to_f*$byx
xyt[4]=0
xyt[5]=360
xyt[6]=1*$byy/$byx
xyt[7]=0
puts xyt.join("\s")
else
x=xyt[1].to_f
y=xyt[2].to_f
r=xyt[3].to_f
if xyt.size==4
xyt[4]=0
xyt[5]=360
xyt[6]=1
xyt[7]=0
end
c=$en.select{|b|
x-r> (b[1]-b[3])-1 &&
x+r < (b[1]+b[3])+1 &&
y-r > (b[2]-b[3])-1 &&
y+r<(b[2]+b[3])+1}
if c.size==0
print line
else
xci=c[0][1]-(c[0][1]-
x)*$byx
yci=c[0][2]-(c[0][2]-
y)*$byy
rci=r*$byx
xyt[1,3]=[xci,yci,rci]
xyt[6]=xyt[6]*$byy/$byx
puts xyt.join("\s")
end
end
elsif xyt[0]=~/^ch/
moji=line.split("\"")
word=moji[1].chop
xyt.collect!{|item|item.to_f}
mojih=cn.split
if mojih[0]=="cn0"
$mojiw=mojih[1].to_f
$mojih=mojih[2].to_f
$mojid=mojih[3].to_f
$mojic=mojih[4]
else
$mojiw=hcw[mojih[0][2,1].to_i-1]
$mojih=hch[mojih[0][2,1].to_i-1]
$mojid=hcd[mojih[0][2,1].to_i-1]
$mojic=hcc[mojih[0][2,1].to_i-1]
end
c=$en.select{|b|
xyt[1]+xyt[3]/2 > (b[1]-b[3]) &&
xyt[1]+xyt[3]/2 < (b[1]+b[3]) &&
xyt[2] > (b[2]-b[3]) &&
xyt[2]<(b[2]+b[3])}
if c.size==0
puts"cc0"
print line
else
xw=c[0][1].to_f+((xyt[1]+xyt[3]/2)-
c[0][1].to_f)*$by
yw=c[0][2].to_f+((xyt[2]+
$mojih*zusun/2)-c[0][2].to_f)*$by
puts"cc4"
printf("ch %f %f %s %s \"%s\n",
xw,yw,xyt[3],xyt[4],word)
end
elsif xyt[0]=~/^pt/
x=xyt[1].to_f
y=xyt[2].to_f
c=$en.select{|b|
x > (b[1]-b[3]) &&
x < (b[1]+b[3]) &&
y > (b[2]-b[3]) &&
y <(b[2]+b[3])}
if c.size==0
print line
else
xpt=c[0][1]-(c[0][1]-x)*$byx
ypt=c[0][2]-(c[0][2]-y)*$byy
xyt[1,2]=[xpt,ypt]
puts xyt.join("\s")
end
else
print line
end
end
}
if $en.size==0
printf("h#補助円がありません\n")
end
end
def sen(x1,y1,x2,y2)
printf("%.10f %.10f %.10f %.10f \n",x1,y1,x2,y2)
end
main()