@REM 指定範囲指定長さ以下の線を消す
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #zw
REM #ht10
REM #ht30
REM #ht40
REM #c消去する線の最長寸法 無指定:50mm /_/a
REM #c消去する線の最短寸法 無指定:0 /_/b
REM #h4
REM #hp
REM #1-消去範囲を点指示。全選択=AM0:00ドラッグ free(L) Read(R)
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 線消.rb temp.txt %1 %2> jwc_temp.txt
include Math;$max_l=50;$min_l=0
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
$max_l=argument[2..-1].to_f
when /\/b/
$min_l=argument[2..-1].to_f
end
end
def main
hp=[];zukei=[]
while ARGF.gets
xy=split
if xy[0]=~/^hp/
hp<<[xy[1].to_f,xy[2].to_f]
end
end
hp<0 && hp[0] != hp[-1]
0.upto(hp.size-2){|i|zukei<<[hp[i][0],hp[i][1],hp[i+1][0],hp[i+1][1]]}
puts "hd"
open("temp.txt","r"){|f|
while line=f.gets
xy=split
if xy[0]=~/^hq/
elsif xy[0]=~/^\d/
xy.collect!{|item|item.to_f}
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(x**2+y**2)
if zukei.size>0
if area(zukei,[xy[0],xy[1]]) && area(zukei,[xy[2],xy[3]])
if $min_l==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
else
print $_
end
else
if $min_l ==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
end
else
print $_
end
end
}
end
#線と線の交点を返す(延長線上は含まない)
def sen_sen_kouten(sen1,sen2)
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]
@REM 指定範囲指定長さ以下の線を消す
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #zw
REM #ht10
REM #ht30
REM #ht40
REM #c消去する線の最長寸法 無指定:50mm /_/a
REM #c消去する線の最短寸法 無指定:0 /_/b
REM #h4
REM #hp
REM #1-消去範囲を点指示。全選択=AM0:00ドラッグ free(L) Read(R)
REM #2-
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 線消.rb temp.txt %1 %2> jwc_temp.txt
◎スクリプトファイル
include Math;$max_l=50;$min_l=0
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
$max_l=argument[2..-1].to_f
when /\/b/
$min_l=argument[2..-1].to_f
end
end
def main
hp=[];zukei=[]
while ARGF.gets
xy=split
if xy[0]=~/^hp/
hp<<[xy[1].to_f,xy[2].to_f]
end
end
hp<0 && hp[0] != hp[-1]
0.upto(hp.size-2){|i|zukei<<[hp[i][0],hp[i][1],hp[i+1][0],hp[i+1][1]]}
puts "hd"
open("temp.txt","r"){|f|
while line=f.gets
xy=split
if xy[0]=~/^hq/
elsif xy[0]=~/^\d/
xy.collect!{|item|item.to_f}
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(x**2+y**2)
if zukei.size>0
if area(zukei,[xy[0],xy[1]]) && area(zukei,[xy[2],xy[3]])
if $min_l==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
else
print $_
end
else
if $min_l ==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
end
else
print $_
end
end
}
end
#線と線の交点を返す(延長線上は含まない)
def sen_sen_kouten(sen1,sen2)
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]
◎バッチファイル(ファイル名 線消.bat)
@REM 指定範囲指定長さ以下の線を消す
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #zw
REM #ht10
REM #ht30
REM #ht40
REM #c消去する線の最長寸法 無指定:50mm /_/a
REM #c消去する線の最短寸法 無指定:0 /_/b
REM #h4
REM #hp
REM #1-消去範囲を点指示。全選択=AM0:00ドラッグ free(L) Read(R)
REM #2-
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 線消.rb temp.txt %1 %2> jwc_temp.txt
◎スクリプトファイル(ファイル名 線消.rb)
include Math;$max_l=50;$min_l=0
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
$max_l=argument[2..-1].to_f
when /\/b/
$min_l=argument[2..-1].to_f
end
end
def main
hp=[];zukei=[]
while ARGF.gets
xy=split
if xy[0]=~/^hp/
hp<<[xy[1].to_f,xy[2].to_f]
end
end
hp<0 && hp[0] != hp[-1]
0.upto(hp.size-2){|i|zukei<<[hp[i][0],hp[i][1],hp[i+1][0],hp[i+1][1]]}
puts "hd"
open("temp.txt","r"){|f|
while line=f.gets
xy=split
if xy[0]=~/^hq/
elsif xy[0]=~/^\d/
xy.collect!{|item|item.to_f}
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(x**2+y**2)
if zukei.size>0
if area(zukei,[xy[0],xy[1]]) && area(zukei,[xy[2],xy[3]])
if $min_l==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
else
print $_
end
else
if $min_l ==0
if l<$max_l
else
print $_
end
else
if l<$max_l && l>$min_l
else
print $_
end
end
end
else
print $_
end
end
}
end
#線と線の交点を返す(延長線上は含まない)
def sen_sen_kouten(sen1,sen2)
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]