sugiさんが2010頃に作成したスクリプトをUPします。
(多分、sugiさん作で間違い無いと思います)
ruby 1.8.6 で確認
文字枠と文字基点.bat
保存時、全角スペースになっていた場合は半角スペースに変換して下さい。
---------------------------------
@REM 文字枠と文字基点
@echo off
REM #jww
REM #cd
goto %1
REM #hm 【文字枠と文字基点】メニュー選択 |文字枠(L)|文字基点(R)|
REM #hc 【文字枠と文字基点】メニューを選択して下さい。
REM #:1
REM #bz
REM #ht10
REM #h3
REM #hc文字を選択
REM #i 色選択(無指定:カレント) |線色1|線色2|線色3|線色4|線色5|線色6|線色7|線色8|線色9|/_C
REM #e
REM #:2
REM #zc
REM #bz
REM #ht10
REM #h3
REM #hc文字を選択
REM #i 基点選択(無指定:デフォルト)|左下|中下|右下|左中|中中|右中|左上|中上|右上|/_K
REM #i 色選択(無指定:カレント) |線色1|線色2|線色3|線色4|線色5|線色6|線色7|線色8|線色9|/_C
REM #e
:1
:2
copy jwc_temp.txt temp.txt
ruby -Ks -x %~f0 %1 %2 %3
goto :EOF
#! ruby -Ks
$stderr=open("error.log","w")
$stdout=open("jwc_temp.txt","w")
require 'matrix'
op=ARGV[0].to_i #オプション
kj=ARGV.find{|e| /^K(\d)/=~e} ? $1.to_i : 0 #基点
cl=ARGV.find{|e| /^C(\d)/=~e} ? $1.to_i : 0 #線色+点色
# p op,kj,cl
open("temp.txt"){|f|
while f.gets
case $_
when /^hq/
when /^hch/
hch=$_.split.map{|e| e.to_f}
puts $_
when /^cn\d/
cn=$_.split
ch=cn[2].to_f if cn.size>1
ch=hch[cn[0][2..-1].to_i] if cn.size==1
#puts $_
when /^lc(\d+)$/
if cl==0
puts "lc"+$1
puts "pn"+$1
else
puts "lc#{cl}"
puts "pn#{cl}"
end
when /^cc([0-8])/
cc=$1.to_i
when /^c[hvsroptkz2]/
cs=$_.chomp.split[1..-1].map{|e| e.to_f}
v0=Vector[cs[0],cs[1]] #始点
va=Vector[cs[2],cs[3]] #方向
vb=Matrix[[0,-1],[1,0]]*va #高さ
vb=vb*(ch/vb.r)
if op==1 #文字枠
puts (v0.to_a+(v0+va).to_a).join(" ")
puts (v0.to_a+(v0+vb).to_a).join(" ")
puts ((v0+vb).to_a+(v0+va+vb).to_a).join(" ")
puts ((v0+va+vb).to_a+(v0+va).to_a).join(" ")
elsif op==2 #文字基点
vc=Vector[0,0] #左下
vc=va*0.5 if cc==1 #中下
vc=va if cc==2 #右下
vc=vb*0.5 if cc==3 #左中
vc=vb*0.5+va*0.5 if cc==4 #中中
vc=vb*0.5+va if cc==5 #右中
vc=vb if cc==6 #左上
vc=vb+va*0.5 if cc==7 #中上
vc=vb+va if cc==8 #右上
puts "pt "+v0.to_a.join(" ") if kj==0 #デフォルト
puts "pt "+(v0-vc).to_a.join(" ") if kj==1 #左下
puts "pt "+(v0+va*0.5-vc).to_a.join(" ") if kj==2 #中下
puts "pt "+(v0+va-vc).to_a.join(" ") if kj==3 #右下
puts "pt "+(v0+vb*0.5-vc).to_a.join(" ") if kj==4 #左中
puts "pt "+(v0+va*0.5+vb*0.5-vc).to_a.join(" ") if kj==5 #中中
puts "pt "+(v0+va+vb*0.5-vc).to_a.join(" ") if kj==6 #右中
puts "pt "+(v0+vb-vc).to_a.join(" ") if kj==7 #左上
puts "pt "+(v0+va*0.5+vb-vc).to_a.join(" ") if kj==8 #中上
puts "pt "+(v0+va+vb-vc).to_a.join(" ") if kj==9 #右上
end
else
print $_
end
end}
----------------------------------