お世話になります。
矢印の塗り潰しについての質問です。
Snap_Kinさんの”矢印の塗潰し version 1”という外部変形を使用させて頂いております。(Snap_Kinさんお世話になっております)ところが、大きな矢印(長さが5mm以上)を塗りつぶす事になりました。ある範囲の矢印(5mm以上の大きな矢印)を一括で塗りつぶすような外部変形は無いでしょうか。よろしくお願い致します。
@REM 矢印の塗り潰し
@echo off
REM #jww
REM #cd
REM #h1
REM #c矢印の長さの最大値(図寸)無指定:3/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 矢印塗潰.rb temp.txt %1 > jwc_temp.txt
◎スクリプトファイル(ファイル名 矢印塗潰.rb)
ya_l=3
sen=[]
include Math
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
ya_l=argument[2..-1].to_f
end
end
def ika3(x)
a=(((x.to_f)*1000).round/1000.to_f)
return a
end
while ARGF.gets
xy=split
if xy[0]=~/^ly/
ly=xy[0]
end
if xy[0]=~/^lc/
lc=xy[0]
end
if xy[0]=~/^\d|^-/
xy.collect!{|item|item.to_f}
l=sqrt((xy[2]-xy[0])**2+(xy[3]-xy[1])**2)
if ika3(l)<=ya_l
sen<<[xy[0],xy[1],xy[2],xy[3],ly,lc]
end
end
end
puts "bz"
while a=sen.shift
b=sen.find{|item|a[0]==item[0] && a[1]==item[1] or a[2]==item[0] && a[3]==item[1] or a[2]==item[2] && a[3]==item[3] or a[0]==item[2] && a[1]==item[3]}
if b
puts(a[4],a[5])
if a[0]==b[0] && a[1]==b[1]
printf("sl %.11f %.11f %.11f %.11f %.11f %.11f\n",
a[2],a[3],a[0],a[1],b[2],b[3])
elsif a[2]==b[0] && a[3]==b[1]
printf("sl %.11f %.11f %.11f %.11f %.11f %.11f\n",
a[0],a[1],a[2],a[3],b[2],b[3])
elsif a[2]==b[2] && a[3]==b[3]
printf("sl %.11f %.11f %.11f %.11f %.11f %.11f\n",
a[0],a[1],a[2],a[3],b[0],b[1])
elsif a[0]==b[2] && a[1]==b[3]
printf("sl %.11f %.11f %.11f %.11f %.11f %.11f\n",
a[2],a[3],a[0],a[1],b[0],b[1])
end
sen.delete_if{|item|item==b}
end
end