Indexへ
(17458)//【17464】→(17472)
------------------------
【タイトル】文字の周りを白く
【記事番号】 17464 (*)
【 日時 】06/12/05 11:25
【 発言者 】たっちん

地形図に重なった文字の周りだけを白くしたいのですが、
文字列範囲を背景色で描画にチェックを掛けると全ての文字がそうなってしまいます。
特定の文字の周りだけを白くするということは出来ないでしょうか?
お教えください。


Indexへ
(17464)←【17472】→(17475)
------------------------
【タイトル】Re(1):文字の周りを白く
【記事番号】 17472 (17464)
【 日時 】06/12/05 17:04
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼たっちんさん:
>地形図に重なった文字の周りだけを白くしたいのですが、
>文字列範囲を背景色で描画にチェックを掛けると全ての文字がそうなってしまいます。
>特定の文字の周りだけを白くするということは出来ないでしょうか?

外部変形アプリケーションで、文字周辺の線を消すという機能をもつソフトが
ありますので、そういうソフトを利用させてもらう、という手法と、
JWW検索リンクでの検索一覧

ソリッド図形を作図して 文字の下に貼り付けるというやりかたも
あるかもしれません。この場合は、
http://www.atsmile.com/jw/faq02_02.html
の設定は 行わないで下さい。
また、隠す図形、ソリッド図形、上に書く文字、のレイヤを別々にして、
印刷時にレイヤ順にして コントロールするとか。多少面倒かもしれませんが。

ブロック図形にしてしまうという手法をされている方も 居たと思います。


Indexへ
(17472)←【17475】→(17485)
------------------------
【タイトル】Re(1):文字の周りを白く
【記事番号】 17475 (17464)
【 日時 】06/12/05 17:22
【 発言者 】コジマ

▼たっちんさん:
>地形図に重なった文字の周りだけを白くしたいのですが、
>文字列範囲を背景色で描画にチェックを掛けると全ての文字がそうなってしまいます。
>特定の文字の周りだけを白くするということは出来ないでしょうか?
>お教えください。

標準機能では、以下の方法しかない思います。

基本設定→一般(1)タブの □画像・ソリッドを最初に描画 のチェックを外す。
基本設定→文字タブの □文字を最後に描画 にチェックを入れて
地形図に重なった文字の背景を 任意色の白で塗り潰す。

以下の外変で、範囲選択した文字の背景をソリッドで塗り潰せます。
mswin32 版 Ruby のインストールが必要。以下でDLできます。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html


◎バッチファイル(ファイル名 文字マーカー.bat)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。

@REM 文字枠の背景をソリッドで着色
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #bz
REM #h3文字のみ範囲選択
REM #hc文字を範囲選択してください
REM #cソリッドと文字のクリアランス(図寸) 無指定:0mm/_/a
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 文字マーカー.rb temp.txt %1 > jwc_temp.txt


◎スクリプトファイル(ファイル名 文字マーカー.rb)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。

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

frm=VRLocalScreen.newform
def frm.construct
    move 350,200,300,300
    $a=chooseColorDialog.to_s
end

frm.create.show

include Math
def moji_zazyo_true(x,y,moji_x,moji_y,moji_h,moji_kiten)
    kakudo=atan2(moji_y,moji_x)
    dx=cos(kakudo);dy=sin(kakudo)
    mojil=sqrt(moji_x**2+moji_y**2)

    if moji_kiten=="cc1"
        x=x-(mojil/2)*dx
        y=y-(mojil/2)*dy
    elsif moji_kiten=="cc2"
        x=x-mojil*dx
        y=y-mojil*dy
    elsif moji_kiten=="cc3"
        x=x+(moji_h/2)*dy
        y=y-(moji_h/2)*dx
    elsif moji_kiten=="cc4"
        x=x+(moji_h/2)*dy-(mojil/2)*dx
        y=y-(moji_h/2)*dx-(mojil/2)*dy
    elsif moji_kiten=="cc5"
        x=x+(moji_h/2)*dy-(mojil)*dx
        y=y-(moji_h/2)*dx-(mojil)*dy
    elsif moji_kiten=="cc6"
        x=x+(moji_h)*dy
        y=y-(moji_h)*dx
    elsif moji_kiten=="cc7"
        x=x+(moji_h)*dy-(mojil/2)*dx
        y=y-(moji_h)*dx-(mojil/2)*dy
    elsif moji_kiten=="cc8"
        x=x+(moji_h)*dy-(mojil)*dx
        y=y-(moji_h)*dx-(mojil)*dy
    end
        return [x,y]
end

hanare=0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            hanare=argument[2..-1].to_f

    end
end

puts "hd";puts "bz";hch=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^lc/
        lc=xy[0]
    elsif xy[0]=~/^hch/
        xy[1..-1].each{|item|hch<        print $_
    elsif xy[0]=~/^cn\d+$/
        if xy[0]=="cn0"
            moji_h=xy[2].to_f
        else
            cn=xy[0][2,1]
            moji_h=hch[cn.to_i-1]
        end
        print $_
    elsif xy[0]=~/^cc/
        cc=xy[0]
        print $_
    elsif $_=~/\"/ && xy[0]!~/^cn/
        xy.collect!{|item|item.to_f}
        x=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[0]
        y=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[1]
        moji_arg=atan2(xy[4],xy[3])

        puts ["lc10",$a].join("\s")
        x1=x-hanare*cos(moji_arg)+hanare*sin(moji_arg)
        y1=y-hanare*sin(moji_arg)-hanare*cos(moji_arg)
        x2=x+xy[3].to_f+hanare*
            cos(moji_arg)+hanare*sin(moji_arg)
        y2=y+xy[4].to_f+hanare*
            sin(moji_arg)-hanare*cos(moji_arg)
        x3=x2-(moji_h+hanare)*sin(moji_arg)
        y3=y2+(moji_h+hanare)*cos(moji_arg)
        x4=x1-(moji_h+hanare)*sin(moji_arg)
        y4=y1+(moji_h+hanare)*cos(moji_arg)
        puts "sl"+"\s"+[x1,y1,x2,y2,x3,y3,x4,y4].join("\s")

        print $_
    else
        print $_
    end
end


Indexへ
(17475)←【17485】→(17487)
------------------------
【タイトル】Re(2):文字の周りを白く
【記事番号】 17485 (17475)
【 日時 】06/12/05 20:21
【 発言者 】nnn

▼コジマさん:

>以下の外変で、範囲選択した文字の背景をソリッドで塗り潰せます。
ファイルDLさせていただきました、ありがとうございます
外変を実行させてみたところ、クリアランス0の場合はよいのですが、1mmにすると
左右及び下部はいいのですが上部がうまく描画できません私の環境だけでしょうか
jww510a
winxp
です、検証を宜しくお願いいたします。


Indexへ
(17485)←【17487】→(17492)
------------------------
【タイトル】Re(3):文字の周りを白く
【記事番号】 17487 (17485)
【 日時 】06/12/05 23:47
【 発言者 】コジマ

▼nnnさん:
>▼コジマさん:
>
>>以下の外変で、範囲選択した文字の背景をソリッドで塗り潰せます。
>ファイルDLさせていただきました、ありがとうございます
>外変を実行させてみたところ、クリアランス0の場合はよいのですが、1mmにすると
>左右及び下部はいいのですが上部がうまく描画できません私の環境だけでしょうか


上下方向の計算ミスです、以下修正しました。


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

frm=VRLocalScreen.newform
def frm.construct
  move 350,200,300,300
  $a=chooseColorDialog.to_s
end

frm.create.show

include Math
def moji_zazyo_true(x,y,moji_x,moji_y,moji_h,moji_kiten)
  kakudo=atan2(moji_y,moji_x)
  dx=cos(kakudo);dy=sin(kakudo)
  mojil=sqrt(moji_x**2+moji_y**2)

  if moji_kiten=="cc1"
    x=x-(mojil/2)*dx
    y=y-(mojil/2)*dy
  elsif moji_kiten=="cc2"
    x=x-mojil*dx
    y=y-mojil*dy
  elsif moji_kiten=="cc3"
    x=x+(moji_h/2)*dy
    y=y-(moji_h/2)*dx
  elsif moji_kiten=="cc4"
    x=x+(moji_h/2)*dy-(mojil/2)*dx
    y=y-(moji_h/2)*dx-(mojil/2)*dy
  elsif moji_kiten=="cc5"
    x=x+(moji_h/2)*dy-(mojil)*dx
    y=y-(moji_h/2)*dx-(mojil)*dy
  elsif moji_kiten=="cc6"
    x=x+(moji_h)*dy
    y=y-(moji_h)*dx
  elsif moji_kiten=="cc7"
    x=x+(moji_h)*dy-(mojil/2)*dx
    y=y-(moji_h)*dx-(mojil/2)*dy
  elsif moji_kiten=="cc8"
    x=x+(moji_h)*dy-(mojil)*dx
    y=y-(moji_h)*dx-(mojil)*dy
  end
    return [x,y]
end

hanare=0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      hanare=argument[2..-1].to_f

  end
end

puts "hd";puts "bz";hch=[]
while ARGF.gets
  xy=split
  if xy[0]=~/^hq/
  elsif xy[0]=~/^lc/
    lc=xy[0]
  elsif xy[0]=~/^hch/
    xy[1..-1].each{|item|hch<    print $_
  elsif xy[0]=~/^cn\d+$/
    if xy[0]=="cn0"
      moji_h=xy[2].to_f
    else
      cn=xy[0][2,1]
      moji_h=hch[cn.to_i-1]
    end
    print $_
  elsif xy[0]=~/^cc/
    cc=xy[0]
    print $_
  elsif $_=~/\"/ && xy[0]!~/^cn/
    xy.collect!{|item|item.to_f}
    x=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[0]
    y=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[1]
    moji_arg=atan2(xy[4],xy[3])

    puts ["lc10",$a].join("\s")
    x1=x-hanare*cos(moji_arg)+hanare*sin(moji_arg)
    y1=y-hanare*sin(moji_arg)-hanare*cos(moji_arg)
    x2=x+(xy[3].to_f+hanare)*cos(moji_arg)+hanare*sin(moji_arg)
    y2=y+xy[4].to_f+hanare*sin(moji_arg)-hanare*cos(moji_arg)
    x3=x2-(moji_h+hanare*2)*sin(moji_arg)
    y3=y2+(moji_h+hanare*2)*cos(moji_arg)
    x4=x1-(moji_h+hanare*2)*sin(moji_arg)
    y4=y1+(moji_h+hanare*2)*cos(moji_arg)
    puts "sl"+"\s"+[x1,y1,x2,y2,x3,y3,x4,y4].join("\s")

    print $_
  else
    print $_
  end
end


Indexへ
(17487)←【17492】→(17493)
------------------------
【タイトル】Re(4):文字の周りを白く
【記事番号】 17492 (17487)
【 日時 】06/12/06 10:43
【 発言者 】nnn

▼コジマさん:
修正版をいただきました、ありがとうございます。


Indexへ
(17492)←【17493】→(17494)
------------------------
【タイトル】Re(5):斜め文字対応
【記事番号】 17493 (17492)
【 日時 】06/12/06 11:24
【 発言者 】コジマ

水平・垂直文字以外(斜め文字)は不具合がでますね。
以下修正版です。


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

frm=VRLocalScreen.newform
def frm.construct
  move 350,200,300,300
  $a=chooseColorDialog.to_s
end

frm.create.show

include Math
def moji_zazyo_true(x,y,moji_x,moji_y,moji_h,moji_kiten)
  kakudo=atan2(moji_y,moji_x)
  dx=cos(kakudo);dy=sin(kakudo)
  mojil=sqrt(moji_x**2+moji_y**2)

  if moji_kiten=="cc1"
    x=x-(mojil/2)*dx
    y=y-(mojil/2)*dy
  elsif moji_kiten=="cc2"
    x=x-mojil*dx
    y=y-mojil*dy
  elsif moji_kiten=="cc3"
    x=x+(moji_h/2)*dy
    y=y-(moji_h/2)*dx
  elsif moji_kiten=="cc4"
    x=x+(moji_h/2)*dy-(mojil/2)*dx
    y=y-(moji_h/2)*dx-(mojil/2)*dy
  elsif moji_kiten=="cc5"
    x=x+(moji_h/2)*dy-(mojil)*dx
    y=y-(moji_h/2)*dx-(mojil)*dy
  elsif moji_kiten=="cc6"
    x=x+(moji_h)*dy
    y=y-(moji_h)*dx
  elsif moji_kiten=="cc7"
    x=x+(moji_h)*dy-(mojil/2)*dx
    y=y-(moji_h)*dx-(mojil/2)*dy
  elsif moji_kiten=="cc8"
    x=x+(moji_h)*dy-(mojil)*dx
    y=y-(moji_h)*dx-(mojil)*dy
  end
    return [x,y]
end

hanare=0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      hanare=argument[2..-1].to_f

  end
end

puts "hd";puts "bz";hch=[]
while ARGF.gets
  xy=split
  if xy[0]=~/^hq/
  elsif xy[0]=~/^lc/
    lc=xy[0]
  elsif xy[0]=~/^hch/
    xy[1..-1].each{|item|hch<    print $_
  elsif xy[0]=~/^cn\d+$/
    if xy[0]=="cn0"
      moji_h=xy[2].to_f
    else
      cn=xy[0][2,1]
      moji_h=hch[cn.to_i-1]
    end
    print $_
  elsif xy[0]=~/^cc/
    cc=xy[0]
    print $_
  elsif $_=~/\"/ && xy[0]!~/^cn/
    xy.collect!{|item|item.to_f}
    x=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[0]
    y=moji_zazyo_true(xy[1],xy[2],xy[3],xy[4],moji_h,cc)[1]
    moji_arg=atan2(xy[4],xy[3])

        j,k=1,2
        puts ["lc10",$a].join("\s")
        x1=x-hanare*j*cos(moji_arg)+hanare*j*sin(moji_arg)
        y1=y-hanare*j*sin(moji_arg)-hanare*j*cos(moji_arg)
        x2=x+xy[3].to_f+hanare*j*
            cos(moji_arg)+hanare*j*sin(moji_arg)
        y2=y+xy[4].to_f+hanare*j*
            sin(moji_arg)-hanare*j*cos(moji_arg)
        x3=x2-(moji_h+hanare*k)*sin(moji_arg)
        y3=y2+(moji_h+hanare*k)*cos(moji_arg)
        x4=x1-(moji_h+hanare*k)*sin(moji_arg)
        y4=y1+(moji_h+hanare*k)*cos(moji_arg)
        puts "sl"+"\s"+[x1,y1,x2,y2,x3,y3,x4,y4].join("\s")

        puts lc
        puts [x1,y1,x2,y2].join("\s")
        puts [x2,y2,x3,y3].join("\s")
        puts [x3,y3,x4,y4].join("\s")
        puts [x1,y1,x4,y4].join("\s")

    print $_
  else
    print $_
  end
end


Indexへ
(17493)←【17494】→(17495)
------------------------
【タイトル】Re(6):斜め文字対応
【記事番号】 17494 (17493)
【 日時 】06/12/06 11:38
【 発言者 】nnn tune1218@ms12.megaegg.ne.jp

▼コジマさん:
再度の修正お疲れ様です。
再修正版(斜め文字)DLさせていただきました、ありがとうございました。


Indexへ
(17494)←【17495】→(17496)
------------------------
【タイトル】Re(6):斜め文字対応
【記事番号】 17495 (17493)
【 日時 】06/12/06 12:29
【 発言者 】art

▼コジマさん:
いつもすばらしい外部変形を公開頂きありがとうございます。
いろいろなところで使えそうです。

そこで一つ質問ですが。
外枠を書かずに文字の背景のみソリッドにて塗りつぶす事は可能でしょうか。
よろしくお願い致します。


Indexへ
(17495)←【17496】→(17498)
------------------------
【タイトル】Re(7):斜め文字対応
【記事番号】 17496 (17495)
【 日時 】06/12/06 13:35
【 発言者 】コジマ

▼artさん:
>そこで一つ質問ですが。
>外枠を書かずに文字の背景のみソリッドにて塗りつぶす事は可能でしょうか。
>よろしくお願い致します。

文末から11行目〜7行目の以下の文を削除するか、行頭に#を付けてください。


    puts lc
    puts [x1,y1,x2,y2].join("\s")
    puts [x2,y2,x3,y3].join("\s")
    puts [x3,y3,x4,y4].join("\s")
    puts [x1,y1,x4,y4].join("\s")


Indexへ
(17496)←【17498】→(17605)
------------------------
【タイトル】Re(8):斜め文字対応
【記事番号】 17498 (17496)
【 日時 】06/12/06 17:08
【 発言者 】art

▼コジマさん:
お世話になります。
巧く動作致しました。ありがとうございました。


Indexへ
(17498)←【17605】//(17465)
------------------------
【タイトル】Re(2):文字の周りを白く
【記事番号】 17605 (17475)
【 日時 】06/12/12 09:09
【 発言者 】たっちん

▼コジマさん:
▼jokerさん:
返事が遅くなりました、ご教授ありがとうございました。
難しそうなのでゆっくりと試してみたいと思います。