Indexへ
(116)//【112】→(117)
------------------------
【タイトル】座標ファイルの書き方
【記事番号】 112 (*)
【 日時 】04/11/27 10:46
【 発言者 】ポリけん

いつも、すばらしいJw_Cad 利用させてもらってます。
本日始めて、質問させてもらいます。
みなさんのお知恵を・・・よろしくお願いします。

徹底解説v4、リファレンス編 P334を参考に
座標ファイルデータをExcelで作り
作図したく、各セルに次のようなデータを作りました。
 テキスト変換して保存したものを座標ファイルとして
描いたところ何点か???状態です。。

ch    95     -300     0     0     "文字
    x座標  y座標 X方向  y方向  文字列

質問内容
1.-書き出し文字の前に ”マークが何個か出てしまいます。文字のみにするにはどのようにすればよいのでしょうか?

2.-文字の基点を中心にする方法があれば教えてください。現在「左下」のみ
3.-書き出し方向が今ひとつ定まりません・・ 上のように0 0 で3時方向です。

みなさんよろしくお願いします。


Indexへ
(112)←【117】→(118)
------------------------
【タイトル】RE: 座標ファイルの書き方
【記事番号】 117 (112)
【 日時 】04/11/27 15:55
【 発言者 】makuma makuma@desu.ne.jp_NOSPAM

>1.-書き出し文字の前に ”マークが何個か出てしまいます。文字のみにするにはどのようにすればよいのでしょうか?

試しましたが、出ませんよ?
区切り文字は何を使っていますか?半角スペースかTABで区切ってください。

>2.-文字の基点を中心にする方法があれば教えてください。現在「左下」のみ

「左下」以外は設定できなかったと思います。

>3.-書き出し方向が今ひとつ定まりません・・ 上のように0 0 で3時方向です。

前の座標を基点とした座標値となります。
300 0
0 300
300 300
で試してみると分かりますよ。
順に0°、45°、90°となります。

これは相談室向きかな?


Indexへ
(117)←【118】→(124)
------------------------
【タイトル】Re(1):RE: 座標ファイルの書き方
【記事番号】 118 (117)
【 日時 】04/11/27 16:06
【 発言者 】ポリけん

makumaさんアドバイスありがとうございます

データは Excel のセルにそれぞれ作成しました。
テキストデータとしての保存方法に問題があるのでしょうか?
保存形式は テキスト(TAB区切り)としてます。

方向の設定分かりました・・ありがとうございます。

お知恵拝借 <(_ _)>


Indexへ
(118)←【124】→(119)
------------------------
【タイトル】RE: Re(1):RE: 座標ファイルの書き方
【記事番号】 124 (118)
【 日時 】04/11/28 00:25
【 発言者 】makuma makuma@desu.ne.jp_NOSPAM

タールさんがコメントされていますが、Excelは「"」の付いている文字列には勝手に区切り文字として「"」を前後に付けてしまいます。
書き出された文字は、

ch    95    -300    0    0    """文字"

となってしまっていると思いますので、JWWでは「""文字"」と表示されてしまいます。

これはJWW側でなく、Excel側の機能的な問題ですね。


Indexへ
(124)←【119】→(120)
------------------------
【タイトル】Re(1):座標ファイルの書き方
【記事番号】 119 (112)
【 日時 】04/11/27 17:27
【 発言者 】スター

▼ポリけんさん:

>
>ch    95     -300     0     0     "文字
>    x座標  y座標 X方向  y方向  文字列
>
>質問内容
>1.-書き出し文字の前に ”マークが何個か出てしまいます。文字のみにするにはどのようにすればよいのでしょうか?
>
>2.-文字の基点を中心にする方法があれば教えてください。現在「左下」のみ
1,2の理由はよくわかりません。

>3.-書き出し方向が今ひとつ定まりません・・ 上のように0 0 で3時方向です。
>
ch    95     -300     0     0     "文字
                 ---    ---
で方向を決定します。
10 0 は水平
0 10 は90度
10 10 は45度です。


Indexへ
(119)←【120】→(125)
------------------------
【タイトル】Re(2):座標ファイルの書き方
【記事番号】 120 (119)
【 日時 】04/11/27 17:41
【 発言者 】スター

>▼ポリけんさん:
>>2.-文字の基点を中心にする方法があれば教えてください。現在「左下」のみ
私の場合は、文字数をカウントし座標値を変更しています。
例えば右下とした場合
元X座標+(文字数×文字幅+(文字数−1)×間隔)×スケール
全角、半角などで計算はちょっと難しくなりますが。
エクセルのLEN,LENB関数で文字数はカウントできます。


Indexへ
(120)←【125】→(121)
------------------------
【タイトル】Re(3):座標ファイルの書き方
【記事番号】 125 (120)
【 日時 】04/11/28 14:59
【 発言者 】コジマ

▼スターさん:
>>▼ポリけんさん:
>>>2.-文字の基点を中心にする方法があれば教えてください。現在「左下」のみ
>私の場合は、文字数をカウントし座標値を変更しています。
>例えば右下とした場合
>元X座標+(文字数×文字幅+(文字数−1)×間隔)×スケール
>全角、半角などで計算はちょっと難しくなりますが。
>エクセルのLEN,LENB関数で文字数はカウントできます。


外部変形もそうなのですよね。
よく数式を間違えました。

今では、moji_naka_naka というメソッド(関数)を作って使用しています。
間違いがなくなりました。

以下は、文字基点を文字の中心座標から自動計算して、指定の座標ファイルに追加記入するように moji_naka_naka メソッドを一部修正したものです。
(但し、全角と半角が入り混じった文字列は、座標値が狂います。)


この外部変形の実行には、mswin32 版 Ruby のインストールが必要です。
以下で入手できます。
http://www61.tok2.com/home2/gravelroad/tips/install.html

コピペ後、全角スペースを半角スペースに一括置換してください。

◎バッチファイル(ファイル名 文字中中.bat)

@REM 基点(中中)の文字を座標ファイル出力する。
@echo off
REM #jww
REM #cd
REM #h0
REM #c文字種を指定してください (1〜10) 無指定:3/_/a
REM #c文字の X 基点(中)座標値を入力してください。 無指定:0/_/b
REM #c文字の Y 基点(中)座標値を入力してください。 無指定:0/_/c
REM #c文字の X 方向数値を入力してください。 無指定:1/_/d
REM #c文字の Y 方向数値を入力してください。 無指定:0/_/e
REM #c記入文字を入力してください 無指定:文字/_/f
REM #0文字記入点を指示してください
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 文字中中.rb temp.txt %1 %2 %3 %4 %5 %6 > jwc_temp.txt


◎スクリプトファイル(ファイル名 文字中中.rb)

BEGIN{
    $path="c:/jww/ztemp.txt" #座標ファイル名(フルパス)環境に合わせて記載変更する

    $cn="cn3";$x=0;$y=0;$mojix=1;$mojiy=0;$moji="文字"
    while ARGV.length > 1
         case argument=ARGV.pop
        when/^\/a/
               $cn="cn"+argument[2..-1]
        when/^\/b/
               $x="cn"+argument[2..-1].to_f
        when/^\/c/
               $y="cn"+argument[2..-1].to_f
        when/^\/d/
               $mojix=argument[2..-1].to_f
         when/^\/e/
               $mojiy=argument[2..-1].to_f
        when/^\/f/
               $moji=argument[2..-1]
         end
    end
}
def moji_naka_naka(cn,x,y,x1,y1,ward)
    by=[];hcw=[];hch=[];hcd=[];zahyo2=[]
    puts cn;zahyo2 << cn
    open("temp.txt","r"){|f|
        while line=f.gets
            xy =line.split
            if xy[0] =~ /^hs/
                xy[1..-1].each{|item| by << item.to_i}
            end
            if xy[0] =~ /^lg/
                lg=xy[0].delete("lg");$zusun=by[lg.to_i]
            end
            if xy[0] =~ /^hcw/
                xy[1..-1].each{|item| hcw << item.to_f}
            end

            if xy[0] =~ /^hch/
                xy[1..-1].each{|item| hch << item.to_f}
            end
            if xy[0] =~ /^hcd/
                xy[1..-1].each{|item| hcd << item.to_f}
            end
        end
                }
    mojisyu=cn.split
    cnn=mojisyu[0].delete("cn")
        if cnn=="0"
            moji_w=mojisyu[1].to_f
            moji_h=mojisyu[2].to_f
            moji_d=mojisyu[3].to_f
        else
            moji_w=hcw[cnn.to_i-1]
            moji_h=hch[cnn.to_i-1]
            moji_d=hcd[cnn.to_i-1]
        end
    tango=ward.split('')
    mojin=tango.size
    if tango[0].size==1
        mojil=mojin*moji_w/2+moji_d/2*(mojin-1)
    else
        mojil=mojin*moji_w+moji_d*(mojin-1)
    end
    xy1=Math.sqrt(x1**2+y1**2)
    dy=y1/xy1
    dx=x1/xy1

    zahyo1=("ch #{x-mojil*$zusun/2*dx+moji_h*$zusun/2*dy} #{y-(moji_h*$zusun/2*dx+mojil*$zusun/2*dy)} #{dx} #{dy} \"#{ward}\n")
    zahyo2 << zahyo1
    print zahyo1

    text=zahyo2
    nlines = 0
    File.open($path,"a"){|file|
    text.each{|line|;file.puts line;nlines += 1;};}
end

moji_naka_naka($cn,$x,$y,$mojix,$mojiy,$moji)
$path.gsub!("\/","\\")
print "h##{$path}に文字データを追加記入しました\n"


Indexへ
(125)←【121】→(123)
------------------------
【タイトル】Re(1):座標ファイルの書き方
【記事番号】 121 (112)
【 日時 】04/11/27 18:47
【 発言者 】タール
【 リンク 】http://blog.livedoor.jp/tarl/



徹底解説v4リファレンス編を持ってないのですが、
Excelからテキストファイル(タブ区切り)
で保存してるのでしたら、

セル範囲をコピーしエディタに貼り付けて保存したら、

ch    95    -300    1    0    """gfdagfdfs"

こんな状態にはならないので、1の問題はクリアできるとおもいます。


Indexへ
(121)←【123】//(134)
------------------------
【タイトル】Re(2):座標ファイルの書き方
【記事番号】 123 (121)
【 日時 】04/11/27 23:10
【 発言者 】ポリけん

みなさん ありがとうございます。
タールさんも すごい力技ご存知ですね。
  参考になりました。
いろいろやってみて・・
テキスト形式の (スペース区切り)(*prn)で保存して
拡張子 prn を txt に変えてもよさそうですですが
 結局のところExcel側の問題てことのようで
 VBA でトライしてみます。
みなさん ありがとうございました。