Indexへ
(19597)//【19600】→(19621)
------------------------
【タイトル】文字移動の外部変形
【記事番号】 19600 (*)
【 日時 】07/03/07 20:14
【 発言者 】sun

文字の移動の外部変形さがしています。
QuickZを使用させて頂いておりますが、DXF形式で頂いたファイルが、
点と文字(高さ)位置が微妙にずれています。同一のズレであれば移動で対処出来ますが、各々違うために「円の中心に文字を移動」のような点に文字の左下を一括移動する外部変形をどなたかご存じありませんか。
宜しくお願い致します。


Indexへ
(19600)←【19621】→(19643)
------------------------
【タイトル】Re(1):文字移動の外部変形
【記事番号】 19621 (19600)
【 日時 】07/03/08 18:20
【 発言者 】kisa

▼sunさん:
私は円の中心に一括で文字整列する場合、下記の外部変形を使っています。

無精者の道具箱 『文字位置修正』
http://www.page.sannet.ne.jp/kiyoaki-oikawa/

他CADデータを取り込む場合など重宝しています。
円だけでなく、表題欄(リスト表)などの中央文字整列もできます。


Indexへ
(19621)←【19643】→(19648)
------------------------
【タイトル】Re(2):文字移動の外部変形
【記事番号】 19643 (19621)
【 日時 】07/03/09 19:10
【 発言者 】sun

>私は円の中心に一括で文字整列する場合、下記の外部変形を使っています。
>
>無精者の道具箱 『文字位置修正』
>http://www.page.sannet.ne.jp/kiyoaki-oikawa/
>
>他CADデータを取り込む場合など重宝しています。
>円だけでなく、表題欄(リスト表)などの中央文字整列もできます。

kisaさん
ご返答ありがとう御座いました。

ご指摘の外部変形は、使用させて頂いております。
やはり「点に文字の左下を移動」の外部変形は無いようですね。
今後とも宜しくお願いいたします。<(_ _)>


Indexへ
(19643)←【19648】→(19651)
------------------------
【タイトル】Re(3):文字移動の外部変形
【記事番号】 19648 (19643)
【 日時 】07/03/10 14:39
【 発言者 】kisa

▼sunさん:
いやはや、失礼しました。
私が紹介した外部変形と同じような処理をしてくれる、
『実点版』を探していたのですね。
残念ですが、そちらの外部変形は知りません。

joker さんのJWW検索リンクで探した限りでは見つかりませんでした。
http://www.atsmile.com/jw/link/cgis/search.cgi?STNO=1&JYOK=0&TYP4=1&KEYW=文字 点

情報交換室や外部変形作者の掲示板などで、お願いして見る方法も有りますね。
「『範囲指定した○レイヤの、○種実点から○mm範囲に存在する文字種○を、
文字基点左にして実点上に位置修正する。』外部変形を作ってくれませんか?」
などでは、いかがでしょう? ○印は任意の数字。
(実点が狭い範囲に多数あると、判別できないのかな?)


Indexへ
(19648)←【19651】→(19654)
------------------------
【タイトル】Re(4):文字移動の外部変形
【記事番号】 19651 (19648)
【 日時 】07/03/10 19:39
【 発言者 】コジマ

▼kisaさん:
>▼sunさん:
>いやはや、失礼しました。
>私が紹介した外部変形と同じような処理をしてくれる、
>『実点版』を探していたのですね。
>残念ですが、そちらの外部変形は知りません。


◎バッチファイル(ファイル名 文字点.bat)
rubyスクリプト埋め込み(バッチファイルのみで動作、但し、rubyの動作環境が必要です)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。


@REM 点と文字基点を合わせる
@echo off
REM #jww
REM #cd
REM #ht10
REM #ht20
REM #ht40
REM #zz
REM #zw
REM #zc
REM #c移動対象とする文字基点と実点の距離(図寸) 無指定:3mm以内 /_/a
REM #c移動後の文字基点と実点の縦横ずれ(図寸) 無指定:1mm /_/b
REM #h1
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
exit
#!ruby -Ks
include Math
kyori=3.0;zure=1.0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            kyori=argument[2..-1].to_f
        when /\/b/
            zure=argument[2..-1].to_f
    end
end
ten=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^pt/
        ten<<[xy[1].to_f,xy[2].to_f]
    end
end
puts "hd","bz"
open("temp.txt","r"){|f|
    while line=f.gets
        xy=split
        if xy[0]=~/^hq/
        elsif xy[0]=~/^ch/
            moji=$&+$' if line =~ /\"/
            a=ten.find{|item|
                x=xy[1].to_f-item[0]
                y=xy[2].to_f-item[1]
                l=sqrt(x**2+y**2)
                l            }
            if a
                moji_arg=atan2(xy[4].to_f,xy[3].to_f)
                xy[1]=a[0]-zure*sin(moji_arg)+zure*cos(moji_arg)
                xy[2]=a[1]+zure*cos(moji_arg)+zure*sin(moji_arg)
                puts [xy[0,5],moji.chomp].flatten.join("\s")
            else
                print line
            end
        else
            print line
        end
    end
}


Indexへ
(19651)←【19654】→(19655)
------------------------
【タイトル】Re(5):文字移動の外部変形
【記事番号】 19654 (19651)
【 日時 】07/03/11 11:01
【 発言者 】sun

▼kisaさんコジマさん この度お世話になります。

>>いやはや、失礼しました。
>>私が紹介した外部変形と同じような処理をしてくれる、
>>『実点版』を探していたのですね。
>>残念ですが、そちらの外部変形は知りません。
>
>
>◎バッチファイル(ファイル名 文字点.bat)
>rubyスクリプト埋め込み(バッチファイルのみで動作、但し、rubyの動作環境が必要です)
>以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。
>
>
>@REM 点と文字基点を合わせる
>@echo off
>REM #jww
>REM #cd
>REM #ht10
>REM #ht20
>REM #ht40
>REM #zz
>REM #zw
>REM #zc
>REM #c移動対象とする文字基点と実点の距離(図寸) 無指定:3mm以内 /_/a
>REM #c移動後の文字基点と実点の縦横ずれ(図寸) 無指定:1mm /_/b
>REM #h1
>REM #bz
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
>exit
>#!ruby -Ks
>include Math
>kyori=3.0;zure=1.0
>while ARGV.size>1
>    case argument=ARGV.pop
>        when /\/a/
>            kyori=argument[2..-1].to_f
>        when /\/b/
>            zure=argument[2..-1].to_f
>    end
>end
>ten=[]
>while ARGF.gets
>    xy=split
>    if xy[0]=~/^pt/
>        ten<<[xy[1].to_f,xy[2].to_f]
>    end
>end
>puts "hd","bz"
>open("temp.txt","r"){|f|
>    while line=f.gets
>        xy=split
>        if xy[0]=~/^hq/
>        elsif xy[0]=~/^ch/
>            moji=$&+$' if line =~ /\"/
>            a=ten.find{|item|
>                x=xy[1].to_f-item[0]
>                y=xy[2].to_f-item[1]
>                l=sqrt(x**2+y**2)
>                l>            }
>            if a
>                moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>                xy[1]=a[0]-zure*sin(moji_arg)+zure*cos(moji_arg)
>                xy[2]=a[1]+zure*cos(moji_arg)+zure*sin(moji_arg)
>                puts [xy[0,5],moji.chomp].flatten.join("\s")
>            else
>                print line
>            end
>        else
>            print line
>        end
>    end
>}

早速の外部変形の作成ありがとうございます。
使用させてい頂きましたが、バッチリでした。
毎回苦労して文字を一つずつ移動しておりました苦労から開放されました。
感謝・感謝です。
今後とも宜しくお願い致します。


Indexへ
(19654)←【19655】→(19656)
------------------------
【タイトル】Re(5):文字移動の外部変形
【記事番号】 19655 (19651)
【 日時 】07/03/11 11:21
【 発言者 】kisa

▼コジマさん:
おお!整列できました。
ありがとうございます。

ランダムに実点と文字(3mm)を縮尺1/1で作図、
『移動対象とする文字基点と実点の距離(図寸) 』=10
『移動後の文字基点と実点の縦横ずれ(図寸)』=0
で実行し、【戻る】【進む】して移動を確認しました。
文字基点は作図した時の基点で整列するようです。

sunさんは実際のDXFデータで使用してみて、いかがでしょう?


Indexへ
(19655)←【19656】→(19659)
------------------------
【タイトル】Re(6):文字移動の外部変形
【記事番号】 19656 (19655)
【 日時 】07/03/11 12:28
【 発言者 】sun

▼kisaさんコジマさん

>おお!整列できました。
>ありがとうございます。
>
>ランダムに実点と文字(3mm)を縮尺1/1で作図、
>『移動対象とする文字基点と実点の距離(図寸) 』=10
>『移動後の文字基点と実点の縦横ずれ(図寸)』=0
>で実行し、【戻る】【進む】して移動を確認しました。
>文字基点は作図した時の基点で整列するようです。
>
>sunさんは実際のDXFデータで使用してみて、いかがでしょう?

私のデータは文字起点が左下でしたため解りませんでしたが、
右下で文字を作図し
コジマ様の外部変形を検証した結果は、文字移動位置は、右下になります。
お時間の取れる時で結構ですので修正の程宜しくお願い致します。


Indexへ
(19656)←【19659】→(19660)
------------------------
【タイトル】Re(7):文字移動の外部変形
【記事番号】 19659 (19656)
【 日時 】07/03/11 15:24
【 発言者 】住職
【 リンク 】http://homepage2.nifty.com/siegel/



▼sunさん:

コジマさん、御苦労様です。(当方でも動作確認しました。)

>私のデータは文字起点が左下でしたため解りませんでしたが、
>右下で文字を作図し
>コジマ様の外部変形を検証した結果は、文字移動位置は、右下になります。

この外変は、「実点と文字基点を合わせる」ようになっていますので、
外変実行前に。「文字基点一括変更」をすれば良いのでは・・・。

文字コマンド−>範囲選択−>選択確定−>基点(**)−>基点変更(左下)
にて、一括で全ての文字基点変更ができます。

ご参考まで。


Indexへ
(19659)←【19660】→(19661)
------------------------
【タイトル】Re(8):文字基点一括変更うまくできない...
【記事番号】 19660 (19659)
【 日時 】07/03/11 16:37
【 発言者 】春子

▼住職さん:
いつもお世話になっております。

>「文字基点一括変更」をすれば良いのでは・・・。
>文字コマンド−>範囲選択−>選択確定−>基点(**)−>基点変更(左下)
>にて、一括で全ての文字基点変更ができます。

と、ありましたのでそれを実行後、実点と文字基点が一致いたしません。
「文字基点一括変更」の方法を今一度詳しくご説明いただけないでしょうか。


Indexへ
(19660)←【19661】→(19698)
------------------------
【タイトル】Re(9):文字基点一括変更うまくできない...
【記事番号】 19661 (19660)
【 日時 】07/03/11 17:28
【 発言者 】住職
【 リンク 】http://homepage2.nifty.com/siegel/



▼春子さん:

>「文字基点一括変更」の方法を今一度詳しくご説明いただけないでしょうか。

どこが判らないのか判断できませんので、もう一度言葉を多めに。

文字コマンド−>文字群を範囲選択−>選択確定−>コントロールバーの
基点(**)ボタンクリック−>文字基点設定ダイアログ−>基点(左下)選択
これで、選択された文字の基点が変更になっているはずです。

上記をクロックだけの操作でもできます。
ご参考まで。


Indexへ
(19661)←【19698】→(19701)
------------------------
【タイトル】Re(10):文字基点一括変更うまくできない...
【記事番号】 19698 (19661)
【 日時 】07/03/13 15:19
【 発言者 】春子

▼住職さん:
いつもお世話になっております。
「文字基点一括変更」を行った後、「文字点.bat」を実行した場合、その文字が全てそれぞれの点に同じ位置(右下等)に移動されると言うことではないのでしょうか。
それが実行されないもので...。
または、「文字基点一括変更」が正しく行われていないからなのかな...。


Indexへ
(19698)←【19701】→(19703)
------------------------
【タイトル】Re(11):rubyのインストール?
【記事番号】 19701 (19698)
【 日時 】07/03/13 17:13
【 発言者 】コジマ

▼春子さん:
>▼住職さん:
>いつもお世話になっております。
>「文字基点一括変更」を行った後、「文字点.bat」を実行した場合、その文字が全てそれぞれの点に同じ位置(右下等)に移動されると言うことではないのでしょうか。
>それが実行されないもので...。
>または、「文字基点一括変更」が正しく行われていないからなのかな...。

「外部変形が実行されない」ということであれば、
rubyがインストールされていないのでは?
牛渡様のサイトで入手できます。
http://gravelroad.yh.land.to/category/2/subcatid/6


「文字基点一括変更」は、
「文字」コマンド→コントロールバーの「範囲選択」をクリック→選択確定後、コントロールバーの「基点」ボタンをクリック→変更したい基点を選択


Indexへ
(19701)←【19703】→(19663)
------------------------
【タイトル】Re(12):rubyのインストール?
【記事番号】 19703 (19701)
【 日時 】07/03/13 18:43
【 発言者 】春子

▼コジマさん:
今晩は。
「文字点.bat」は、私のお気に入りに加えさせていただきました。
文字の基点を個々に変えた文字では、ちゃんと「文字点.bat」が実行されております。
そこで「文字基点一括変更」を行うとそれぞれ違う基点の文字を一括変換して「文字点.bat」を実行できるのではと思い何度も行ってみましたができませんでした。
でも、左下を基点にできる方法が分かりましたのでこの方法で使用したいと思います。
ご指導くださいましたみなさま方に感謝申し上げます。
ありがとうございました。


Indexへ
(19703)←【19663】→(19664)
------------------------
【タイトル】Re(8):文字移動の外部変形
【記事番号】 19663 (19659)
【 日時 】07/03/11 18:09
【 発言者 】コジマ

▼住職さん:
>この外変は、「実点と文字基点を合わせる」ようになっていますので、

文字基点対応としては不完全でした。
基点からのズレの方向は、基点によって + ー になりますね。
以下、修正版です。


@REM 点と文字基点を合わせる
@echo off
REM #jww
REM #cd
REM #ht10
REM #ht20
REM #ht40
REM #zz
REM #zw
REM #zc
REM #c移動対象とする文字基点と実点の距離(図寸) 無指定:3mm以内 /_/a
REM #c移動後の文字基点と実点の縦横ずれ(図寸) 無指定:1mm /_/b
REM #h1
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
exit
#!ruby -Ks
def keisu(cc)
    if cc=="cc0"
        keisu_x,keisu_y=1,1
    elsif cc=="cc1"
        keisu_x,keisu_y=0,1
    elsif cc=="cc2"
        keisu_x,keisu_y=-1,1
    elsif cc=="cc3"
        keisu_x,keisu_y=1,0
    elsif cc=="cc4"
        keisu_x,keisu_y=0,0
    elsif cc=="cc5"
        keisu_x,keisu_y=-1,0
    elsif cc=="cc6"
        keisu_x,keisu_y=1,-1
    elsif cc=="cc7"
        keisu_x,keisu_y=0,-1
    elsif cc=="cc8"
        keisu_x,keisu_y=-1,-1
    end
    return [keisu_x,keisu_y]
end
include Math
kyori=3.0;zure=1.0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      kyori=argument[2..-1].to_f
    when /\/b/
      zure=argument[2..-1].to_f
  end
end
ten=[]
while ARGF.gets
  xy=split
  if xy[0]=~/^pt/
    ten<<[xy[1].to_f,xy[2].to_f]
  end
end
puts "hd","bz"
open("temp.txt","r"){|f|
  while line=f.gets
    xy=split
    if xy[0]=~/^hq/
        elsif xy[0]=~/^cc/
            print line
            cc=xy[0]
    elsif xy[0]=~/^ch/
            keisu_x,keisu_y=keisu(cc)[0],keisu(cc)[1]
      moji=$&+$' if line =~ /\"/
      a=ten.find{|item|
        x=xy[1].to_f-item[0]
        y=xy[2].to_f-item[1]
        l=sqrt(x**2+y**2)
        l      }
      if a
                ten.delete_if{|item|item==a}
        moji_arg=atan2(xy[4].to_f,xy[3].to_f)
                x=zure*keisu_x
                y=zure*keisu_y
                l=sqrt(y**2+x**2)
                arg=atan2(y,x)
        xy[1]=a[0]+l*cos(arg+moji_arg)
        xy[2]=a[1]+l*sin(arg+moji_arg)
        puts [xy[0,5],moji.chomp].flatten.join("\s")
      else
        print line
      end
    else
      print line
    end
  end
}


Indexへ
(19663)←【19664】→(19665)
------------------------
【タイトル】Re(9):文字移動の外部変形
【記事番号】 19664 (19663)
【 日時 】07/03/11 18:34
【 発言者 】sun

▼コジマさん:
>▼住職さん:
>>この外変は、「実点と文字基点を合わせる」ようになっていますので、
>
>文字基点対応としては不完全でした。
>基点からのズレの方向は、基点によって + ー になりますね。
>以下、修正版です。
>
>
>@REM 点と文字基点を合わせる
>@echo off
>REM #jww
>REM #cd
>REM #ht10
>REM #ht20
>REM #ht40
>REM #zz
>REM #zw
>REM #zc
>REM #c移動対象とする文字基点と実点の距離(図寸) 無指定:3mm以内 /_/a
>REM #c移動後の文字基点と実点の縦横ずれ(図寸) 無指定:1mm /_/b
>REM #h1
>REM #bz
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
>exit
>#!ruby -Ks
>def keisu(cc)
>    if cc=="cc0"
>        keisu_x,keisu_y=1,1
>    elsif cc=="cc1"
>        keisu_x,keisu_y=0,1
>    elsif cc=="cc2"
>        keisu_x,keisu_y=-1,1
>    elsif cc=="cc3"
>        keisu_x,keisu_y=1,0
>    elsif cc=="cc4"
>        keisu_x,keisu_y=0,0
>    elsif cc=="cc5"
>        keisu_x,keisu_y=-1,0
>    elsif cc=="cc6"
>        keisu_x,keisu_y=1,-1
>    elsif cc=="cc7"
>        keisu_x,keisu_y=0,-1
>    elsif cc=="cc8"
>        keisu_x,keisu_y=-1,-1
>    end
>    return [keisu_x,keisu_y]
>end
>include Math
>kyori=3.0;zure=1.0
>while ARGV.size>1
>  case argument=ARGV.pop
>    when /\/a/
>      kyori=argument[2..-1].to_f
>    when /\/b/
>      zure=argument[2..-1].to_f
>  end
>end
>ten=[]
>while ARGF.gets
>  xy=split
>  if xy[0]=~/^pt/
>    ten<<[xy[1].to_f,xy[2].to_f]
>  end
>end
>puts "hd","bz"
>open("temp.txt","r"){|f|
>  while line=f.gets
>    xy=split
>    if xy[0]=~/^hq/
>        elsif xy[0]=~/^cc/
>            print line
>            cc=xy[0]
>    elsif xy[0]=~/^ch/
>            keisu_x,keisu_y=keisu(cc)[0],keisu(cc)[1]
>      moji=$&+$' if line =~ /\"/
>      a=ten.find{|item|
>        x=xy[1].to_f-item[0]
>        y=xy[2].to_f-item[1]
>        l=sqrt(x**2+y**2)
>        l>      }
>      if a
>                ten.delete_if{|item|item==a}
>        moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>                x=zure*keisu_x
>                y=zure*keisu_y
>                l=sqrt(y**2+x**2)
>                arg=atan2(y,x)
>        xy[1]=a[0]+l*cos(arg+moji_arg)
>        xy[2]=a[1]+l*sin(arg+moji_arg)
>        puts [xy[0,5],moji.chomp].flatten.join("\s")
>      else
>        print line
>      end
>    else
>      print line
>    end
>  end
>}

早速の修正版ありがとう御座います。

>左下専用ならば、
>バッチファイルの10行目の
>REM #zc
>を削除してください。

修正版を削除したところ、文字が消えてしまいました。


Indexへ
(19664)←【19665】→(19686)
------------------------
【タイトル】Re(10):文字移動の外部変形
【記事番号】 19665 (19664)
【 日時 】07/03/11 19:22
【 発言者 】コジマ

>修正版を削除したところ、文字が消えてしまいました。


修正版は、文字基点対応版です。
(REM #zcを消去すると、不具合になります。)

左下専用の場合は、
修正前のバッチファイルの REM #zc を消去してください。


Indexへ
(19665)←【19686】→(19662)
------------------------
【タイトル】Re(11):文字移動の外部変形
【記事番号】 19686 (19665)
【 日時 】07/03/12 18:34
【 発言者 】sun

コジマ・kisa・住職さん

>>修正版を削除したところ、文字が消えてしまいました。
>
>
>修正版は、文字基点対応版です。
>(REM #zcを消去すると、不具合になります。)
>
>左下専用の場合は、
>修正前のバッチファイルの REM #zc を消去してください。

外部変形の作成ありがとう御座いました。
お礼のメール遅くなりまして申し訳有りませんでした。m(_ _)m
今後とも宜しくお願い致します。


Indexへ
(19686)←【19662】//(19602)
------------------------
【タイトル】Re(7):文字移動の外部変形
【記事番号】 19662 (19656)
【 日時 】07/03/11 17:31
【 発言者 】コジマ

▼sunさん:
>私のデータは文字起点が左下でしたため解りませんでしたが、
>右下で文字を作図し
>コジマ様の外部変形を検証した結果は、文字移動位置は、右下になります。

左下専用ならば、
バッチファイルの10行目の
REM #zc
を削除してください。

文字基点は、全て左下になります。