Indexへ
(3342)//【3336】→(3337)
------------------------
【タイトル】文字の配置換え
【記事番号】 3336 (*)
【 日時 】05/07/20 10:48
【 発言者 】ららら

文字を書くときにExcel to Jw_winで書いてからJWに貼り付けていますが、貼り付けた後に文字の位置を編集したいです。
縦(列)の変更は範囲選択→文字位置・集計で調整できるのですが、横(行)の位置調整ができないで困っています。横の調整をしたくても、数値を打つと全部重なってしまったり、縦ならびになってしまったりします。
どうしたらいいのでしょうか。
ちなみに使用しているのは、4.05バージョンaでPCはXPです。


Indexへ
(3336)←【3337】//(3344)
------------------------
【タイトル】Re(1):文字の配置換え
【記事番号】 3337 (3336)
【 日時 】05/07/20 11:10
【 発言者 】コジマ

エクセルの感覚で、文字位置を調整する外変です。

mswin32 版 Rubyのインストールが必要。

◎テキストファイル(ファイル名 文字位置設定.txt)

1.0
1.0
4


◎バッチファイル(ファイル名 表枠文字位置整理.bat)

@REM 表枠内の文字位置を一括整理
@echo off
REM #jww
REM #cd
REM #zz
REM #h2
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 表枠文字位置整理.rb temp.txt > jwc_temp.txt

◎スクリプトファイル(ファイル名 表枠文字位置整理.rb)

require 'vr/vruby'
require 'vr/vrcontrol'

module Frm_form1

 def _form1_init
  $_form1_fonts=[
   @screen.factory.newfont('MS ゴシック',-16,0,4,0,0,0,49,128),
   @screen.factory.newfont('MS ゴシック',-19,0,4,0,0,0,49,128)
  ]
  self.caption = '文字位置設定'
  self.move(166,124,366,334)
  addControl(VRStatic,'static1',"文字基点横ズレ(図寸)mm",16,24,192,24,1342177280)
  @static1.setFont($_form1_fonts[0])
  addControl(VREdit,'edit1',"",256,24,88,24,1342177408)
  @edit1.setFont($_form1_fonts[0])
  addControl(VRButton,'button1',"設定完了",120,240,224,48,1342177280)
  @button1.setFont($_form1_fonts[1])
  addControl(VRStatic,'static2',"文字基点縦ズレ(図寸)mm",16,56,192,24,1342177280)
  @static2.setFont($_form1_fonts[0])
  addControl(VREdit,'edit2',"",256,56,88,24,1342177408)
  @edit2.setFont($_form1_fonts[0])
  addControl(VRStatic,'static3',"文字基点(以下リストより選択)",16,88,240,24,1342177280)
  @static3.setFont($_form1_fonts[0])
  addControl(VRListbox,'listBox1',"listBox1",16,120,88,168,1350565889)
  addControl(VREdit,'edit3',"",256,88,88,24,1342177408)
  @edit3.setFont($_form1_fonts[0])

  @static1.setFont($_form1_fonts[0])
    str_array=["左下","中下","右下","左中","中中","右中","左上","中上","右上"]
    @listBox1.setListStrings(str_array)

    $hash={"左下"=>"0","中下"=>"1","右下"=>"2","左中"=>"3","中中"=>"4","右中"=>"5","左上"=>"6","中上"=>"7","右上"=>"8"}

    $hash2=$hash.invert
    settei=[]
    open("文字位置設定.txt","r"){|f|
        while line=f.gets
            settei<        end                }
    @edit1.text=settei[0]
    @edit2.text=settei[1]
    @edit3.text=$hash2[settei[2]]
 end

 def construct
  _form1_init
 end
 def listBox1_selchanged
    @edit3.text=@listBox1.getTextOf(@listBox1.selectedString)
 end
 def button1_clicked

    $x_hanare=@edit1.text.to_f
    $y_hanare=@edit2.text.to_f
    $kiten=$hash[@edit3.text]

    a=[$x_hanare,$y_hanare,$kiten]

    open("文字位置設定.txt","w"){|f|
        a.each{|item|f.puts item}
                }

    close
 end
end
VRLocalScreen.start Frm_form1

class Array
    def under_over(x,y)
        a=[];b=[]
        self.each{|item|
        a<y}
        self.each{|item|
        b<x && item[1]y}

        if a.size>0 && b.size>0
            return [a.max,b.min]
        else
            return nil
        end
    end
end

tateiti=[];yokoiti=[];by=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hs/
        xy[1..-1].each{|item|by<    end
    if xy[0]=~/^lg/
        lg=xy[0][2,1]
        zusun=by[lg.hex]
    end
    if xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[0],xy[2],xy[1],xy[3]=xy[2],xy[0],xy[3],xy[1]
        elsif xy[0]==xy[2]
            if xy[1]>xy[3]
                xy[1],xy[3]=xy[3],xy[1]
            end
            yokoiti<<[xy[0],xy[1],xy[3]]
        end
        if xy[1]==xy[3]
            tateiti<<[xy[1],xy[0],xy[2]]
        end
    end
end
yokoiti.sort!
tateiti.sort!

puts "hd"
hch=[]
open("temp.txt","r"){|f|
    while line=f.gets
        xy=line.split
        if xy[0]=~/^hq/
        elsif xy[0]=~/^hch/
            print line
            xy.each{|item|hch<        elsif xy[0]=~/^cn\d+$/
            print line
            if xy[0]=="cn0"
                moji_h=xy[2].to_f
            else
                moji_h=hch[xy[0][2,1].to_i]
            end
        elsif xy[0]=~/^ch/
            x=xy[1].to_f+xy[3].to_f/2
            y=xy[2].to_f+moji_h*zusun/2
            if line=~/\"/
                moji=$'
            end

            unless yokoiti.under_over(x,y) or
                            tateiti.under_over(y,x)
                puts "cc0"
                print line
            else
                if $kiten=="0"
                    cc="cc0"
                    moji_x=yokoiti.under_over(x,y)[0]+$x_hanare*zusun
                    moji_y=tateiti.under_over(y,x)[0]+$y_hanare*zusun
                elsif $kiten=="1"
                    cc="cc1"
                    moji_x=(yokoiti.under_over(x,y)[0]+yokoiti.under_over(x,y)[1])/2
                    moji_y=tateiti.under_over(y,x)[0]+$y_hanare*zusun
                elsif $kiten=="2"
                    cc="cc2"
                    moji_x=yokoiti.under_over(x,y)[1]-$x_hanare*zusun
                    moji_y=tateiti.under_over(y,x)[0]+$y_hanare*zusun
                elsif $kiten=="3"
                    cc="cc3"
                    moji_x=yokoiti.under_over(x,y)[0]+$x_hanare*zusun
                    moji_y=(tateiti.under_over(y,x)[0]+tateiti.under_over(y,x)[1])/2
                elsif $kiten=="4"
                    cc="cc4"
                    moji_x=(yokoiti.under_over(x,y)[0]+yokoiti.under_over(x,y)[1])/2
                    moji_y=(tateiti.under_over(y,x)[0]+tateiti.under_over(y,x)[1])/2
                elsif $kiten=="5"
                    cc="cc5"
                    moji_x=yokoiti.under_over(x,y)[1]-$x_hanare*zusun
                    moji_y=(tateiti.under_over(y,x)[0]+tateiti.under_over(y,x)[1])/2
                elsif $kiten=="6"
                    cc="cc6"
                    moji_x=yokoiti.under_over(x,y)[0]+$x_hanare*zusun
                    moji_y=tateiti.under_over(y,x)[1]-$y_hanare*zusun
                elsif $kiten=="7"
                    cc="cc7"
                    moji_x=(yokoiti.under_over(x,y)[0]+yokoiti.under_over(x)[1])/2
                    moji_y=tateiti.under_over(y.x)[1]-$y_hanare*zusun
                elsif $kiten=="8"
                    cc="cc8"
                    moji_x=yokoiti.under_over(x,y)[1]-$x_hanare*zusun
                    moji_y=tateiti.under_over(y,x)[1]-$y_hanare*zusun
                end
                puts cc
                printf("ch %e %e %e %e \"%s\n",moji_x,moji_y,xy[3],xy[4],moji)

            end

        else
            print line
        end
    end
}