« 実点作図 | トップページ | 文字基点変更(拡張版) »

2010年8月25日 (水)

文字基点変更

Jw_cad 相談室からですが、
文字基点を指定した位置に変更する外部変形です。

文字コマンドから、文字移動で変更した基点を有効にするには、
環境設定ファイルで "MOFSET" の8番目を "1" に設定します。

MOFST =   0  -1.0   0.0   0.0  -1.0   0.0   1.0   1

操作方法は、範囲選択から左AM 0 時「確定 基点(free)」です。
画面上は何も変化しませんので、文字コマンドで基点を確認してください。

注)1.水平文字にしか対応していません。
2.文字選択で寸法値は除外してください。

8/31 拡張版 を公開しました。 

--------------------
@REM 文字基点変更
@echo off
goto %1
REM #jww
REM #cd
REM #hm|右下|左上|左下|
REM #:1
REM #:2
REM #:3
REM #h3
REM #hc 文字を範囲選択してください
REM #hr
REM #e
:1
jgawk 'BEGIN{print "hd";print "cc2"}/^^#/,/NF==0/{if($1=="#"){next}if($1=="ch"){$2=$2+$4;print $0}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:2
jgawk 'BEGIN{print "hd";print "cc6"}/^^hq/,/^^#/{if($1=="hch"){for(i=0;i^<=9;i++)ht[i+1]=$(i+2)}if(substr($1,1,2)=="cn" ^&^& length($1)==3 ^|^| length($1)==4){h=substr($1,3,2);cht=ht[h]}}/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="cn" ^&^& length($1)==3 ^|^| length($1)==4){h=substr($1,3,2);cht=ht[h]}if($1=="cn0"){cht=$3}if($1=="ch"){$3=$3+cht;print $0}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:3
jgawk 'BEGIN{print "hd";print "cc0"}/^^#/,/NF==0/{if($1=="#"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:end

|

« 実点作図 | トップページ | 文字基点変更(拡張版) »

コメント

somemさん、おはようございます。

いつも頂いております。
ありがとうございます。

今回の「文字基点変更」なのですが、選択ボタンによって文字がずれます(移動します)。
変更前の基点の水平方向が、変更後の基点の水平方向になって、ずれてるように思えます。

中下(1)・右下(2)・左下 (9) は、文字はずれないのですが、
左中 (3)・中中 (4)・右中 (5)・左上 (6)・中上 (7)・右上 (8) は、ずれます。

文字位置をそのままで基点の変更は出来ないでしょうか?

xp sp3 、JWW ver7.03 で確認しました。
私の勘違いでしたらごめんなさい。

投稿: toshi | 2010年8月27日 (金) 08時18分

toshiさん、おはようございます。

記事に追記しましたが、縮尺に対応できていませんでしたので、
修正版を作ります。
少しお時間ください。

投稿: somem | 2010年8月27日 (金) 09時54分

こんにちは、Jw_cad 相談室で書き込みしたものです。
書き込んだことは無かった気がしますが、
引出線&バルーンをいただいたりこっそりお世話になってます、
ありがとうございます。

データためさせていただいたのですが、
私の動作環境でも文字ずれを起こしました。
また、2.5Dの文字種(C2)の挙動もおかしいようです。
勘違いでしたら申し訳ないです。

水平文字が対象ということで内容自体が違うかもしれないですが、
Jw_cadの掲示板の質問の書き方が悪かった気がするで
ちょっと書かせていただくと、Jw_cad掲示板の質問自体は
中中・右下・右上・左上・左下
など基点が入り混じった状態の文字を反転したさいに、
それぞれの起点を反転したいという意味でした。

例)
中中・右下・右上・左上・左下
の文字種を上下反転しても起点が変わらないので
中中・右上・右下・左下・左上
にそれぞれ変更したい。

角度付き・水平・垂直無差別で同じ基点にするなら掲示板に書いたように
Jwの標準機能の文字を範囲選択→文字コマンド→基点ボタン→起点選択→OK
で行ってます。

投稿: O.M | 2010年8月27日 (金) 09時56分

O.Mさん、こんにちは、はじめましてですね。

記事の書き出しは、外変をつくるきっかけを書いているだけなので
あまり気にしないでください。

相談室の記事を読み直して、O.Mさんの要望と違うのは理解しております。
ご存知かもしれませんが、文字データはjwc_temp.txtへ左下基点でしか
書き出ししてくれませんので、私のスキルでできる外変に方針変更しました。

文字の位置ズレは、スプリクトを書き直した上で検証してみます。

コメントありがとうございました。
今後ともよろしくお願いいたします。

投稿: somem | 2010年8月27日 (金) 12時20分

>記事の書き出しは、外変をつくるきっかけを書いているだけなので
>あまり気にしないでください。

失礼致しました、了解です。

>文字データはjwc_temp.txtへ左下基点でしか書き出ししてくれませんので

batファイルに「REM #zc」を書き込むとcc数値で
起点書き出してくれるのでは?


JWW_SMPL.BATに

  ◎文字基準点の書込を指定
REM #zc

というのと

  ◎文字基準点の書込
   「REM #zc」により文字基準点の書込の指定がある場合
   (0:左下 1:中下 2:右下 3:左中 4:中中 5:右中 6:左上 7:中上 8:右上)
   (読込のとき、「cc%d」は「REM #zc」に関係なく有効になる。)
   (文字の座標(x y)は文字基準点の座標値になる。)
cc%d


というのがあります、意味が違ったら申し訳ないです。

投稿: O.M | 2010年8月27日 (金) 12時37分

挙動不審と書いたC2データですが、
中中起点のテストデータという文字を中下変換で
左に文字ずれしました。

書き込んだ後に気が付いたのですが、試したデータはツールを利用して文字を
変更かけたデータなのでC2が問題ではなくて異常データのせいで
処理が上手くいかない可能性もあります、すみません。

原因がよく分からないかったので異常がでたC2データのJWC_TEMP.TEXT記載しておきます。

変換前

hq
hk 0
hs 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
hcw 2.5 3.5 5 7 10 14 20 2.5 3.5 5
hch 2.5 3.5 5 7 10 14 20 2.5 3.5 5
hcd 0 0 0 0 0 0 0 0 0 0
hcc 2 2 2 2 2 2 2 8 8 8
hn -8.25498372360795 1.05111735504437 -6.33969124111758 2.85374557385887
lgf
lyf
lc105
lt4
cn0 4.2 4.2 0 108
cn"$
#
cn0 4.2 4.2 0 108
c2 -12.6 0 25.2 0 "テストデータ

変換後

hd
cc1
cn0 4.2 4.2 0 108
c2 -12.6 0 25.2 0 "テストデータ

同じ座標にchデータを書き込んだ場合の変換結果

変換前

hq
hk 0
hs 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
hcw 2.5 3.5 5 7 10 14 20 2.5 3.5 5
hch 2.5 3.5 5 7 10 14 20 2.5 3.5 5
hcd 0 0 0 0 0 0 0 0 0 0
hcc 2 2 2 2 2 2 2 8 8 8
hn -13.7019879160499 0.555081638582351 -3.11154713051474 6.41362334972945
lgf
lyf
lc105
lt4
cn0 4.2 4.2 0 108
cn"$
#
cn0 4.2 4.2 0 108
ch -12.6 0 25.2 0 "テストデータ

変換後

hd
cc1
cn0 4.2 4.2 0 108
ch 0 0 25.2 0 "テストデータ


でした。

投稿: O.M | 2010年8月27日 (金) 13時00分

長々としたデータ貼り付けたのですが、勘違いでした、申し訳ありません。


文字ずれの原因ですが、おそらく文字種が


◎文字列
横文字 ( x y 方向x 方向y "文字列 )
ch %lg %lg %lg %lg "文字列
   縦文字
cv %lg %lg %lg %lg "文字列
寸法値
cs %lg %lg %lg %lg "文字列
半径 寸法値
cr %lg %lg %lg %lg "文字列
   直径 寸法値
co %lg %lg %lg %lg "文字列
   角度 寸法値
cp %lg %lg %lg %lg "文字列
   累寸 寸法値
ct %lg %lg %lg %lg "文字列
   日影 真北データ
ck %lg %lg %lg %lg "文字列
   日影 建物高さデータ
cz %lg %lg %lg %lg "文字列
   2.5D データ
c2 %lg %lg %lg %lg "文字列

とあるのですが、座標変換の処理指定されているのがchのみなので、
他の文字種だと基点座標が書き換えられない為文字ずれしてるんじゃないかと思います。

投稿: O.M | 2010年8月27日 (金) 17時39分

O.Mさん、こんにちは。

"REM #zc"  ガーン、私の勉強不足でした。
左下基点は、思い込みでしたね。(ーー;)

いろいろ検証、ありがとうございます。

cn"$ これは、想定外の出力データです。
フォントは何を使われていますか?
MSゴシックだと、cn"$フォント名 として出力されます。
スプリクトのlength($1)==4にマッチしてしまうので、
高さ方法の位置ズレ対策を考えないといけないです。

>他の文字種だと基点座標が書き換えられない為
>文字ずれしてるんじゃないかと思います。

確かにそうなりますね。
メカ屋は使わない文字種だから・・・・・と、言い訳をしておきます。

少し長くなりそうなので、MessageBoard の方に移動しましょう。
画像も使えますので。

http://hpcgi2.nifty.com/cad_dwg/bbs_somem/joyl_rev.cgi

投稿: somem | 2010年8月27日 (金) 18時05分

失礼しました。
私のコメントもフォント名が表示されませんでした。
フォント名前後の括弧が問題だったようです。

投稿: somem | 2010年8月27日 (金) 18時10分

移動了解しました、長々申し訳ないです。

投稿: O.M | 2010年8月27日 (金) 19時33分

縮尺対応のお試し版をMessage Boardで公開しました。

http://hpcgi2.nifty.com/cad_dwg/bbs_somem/joyl_rev.cgi

投稿: somem | 2010年8月28日 (土) 17時22分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 文字基点変更:

« 実点作図 | トップページ | 文字基点変更(拡張版) »