バッチファイル名は「line_cut.bat」としてください。
####下記より[メモ帳]にコピペして全角空白→半角空白の置換をしてください。
@REM 線分中心指定長さ削除
@echo off
goto do%1
rem ---------------------------------------------------------------
rem ※このファイルを編集した場合は上書き保存してください。
rem ※ファイルを閉じなくても編集は反映されます。
rem ---------------------------------------------------------------
rem ※注意点
rem 1.項目1.は範囲選択内の任意の線分が対象です。
rem 項目2.は指示した線分が対象です。
rem 2.全グループ対象ですが不必要なグループは非表示にしてください。
rem 3.図面軸角0で使用してください。
rem 4.この外部変形はデータを書換えており思わぬ瑕疵があるかもしれ
rem ません。必ずバックアップを取ってください。
rem 問題が発生した場合は使用を中止してください。
rem ---------------------------------------------------------------
REM #jww
REM #cd
REM #hm|範囲選択型 L|線分指示型 R|BAT 編集|
REM #:1
REM #c 線分中心からの削除距離入力[無指定:1000 ]※単位 実寸mm /_/a
REM #h1
REM #g1 全グループ対象(書込みグレープのみ場合は g0 )
REM #hc 範囲選択---左クリックで確定 ※ブロック図形、寸法図形、曲線対象外
REM #ht10
REM #ht20
REM #ht30
REM #ht40
REM #zz
REM #zw
REM #zc
REM #hr
REM #e
REM #:2
REM #c 線分中心からの削除距離入力[無指定:1000 ]※単位 実寸mm /_/a
REM #h0
REM #1ln 処理対象線をマウス指示(L)
REM #99#
REM #zz
REM #zw
REM #zc
REM #hr
REM #e
REM #:3
REM #h0
REM #hr
REM #e
:do1
:do2
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
del temp.txt
rem pause
exit
goto END
:do3
start notepad.exe line_cut.bat
ruby -e 'puts "h# ruby #{RUBY_VERSION} "' > jwc_temp.txt
goto END
#!ruby -Ks
$dl = 1000.0
while ARGV.size > 1
case argument = ARGV.pop
when /^\/a/
$dl = argument[2..-1].to_f
end
end
if $dl <= 0
puts "he 削除距離入力エラー。"; exit
end
lgs,lys,count = [],[],0
while ARGF.gets
ele = split
if ele[0] =~ /^hq/
puts "hd"
elsif ele[0] =~ /^lg/
print; lgs << ele[0]
elsif ele[0] =~ /^ly/
print; lys << ele[0]
elsif ele[0] =~ /^[0-9-]/ && ele.size == 4
ele.collect!{|item| item.to_f}
f1,g1 = ele[2]-ele[0],ele[3]-ele[1]
z1 = (f1**2+g1**2)**0.5
if (z1/2.0-$dl) >= 10**(-5)
x1,y1 = ele[0]+(0.5-$dl/z1)*f1,ele[1]+(0.5-$dl/z1)*g1
x2,y2 = ele[0]+(0.5+$dl/z1)*f1,ele[1]+(0.5+$dl/z1)*g1
puts [ele[0,2],x1,y1].join("\s"),[ele[2,2],x2,y2].join("\s")
count += 1
else
print
end
else
print
end
end
puts lgs[0],lys[0]
if count == 0
puts "h# 処理対象の線分はありません。"
else
puts "h# #{count}本の線分を中心から両側に #{$dl}mm 削除しました。"
end
:END
######以上です。