« 文字属性変更 | トップページ | 反転移動/複写 »

2011年3月 1日 (火)

レイヤグループ移動/複写

Jw_cad 相談室の質問からですが、
移動先レイヤグループにレイヤグループ名/レイヤ名も移動/複写する外部変形です。
各レイヤは、移動先レイヤグループの同一レイヤに移動します。

今回は、jwc_temp.txtに書出されたデータのレイヤグループ名を書換え、
他のデータは、{print $0}でそのまま出力する例です。
AWKスプリクトの各行の解説は、スプリクト内の記述を参考にしてください。

選択項目に"レイヤ名移動"、"レイヤ名複写"を追加しました。 3/5
書込レイヤグループのレイヤ名だけを移動/複写します。


--------------------
@REM レイヤグループ移動/複写2
@echo off
goto %1
REM #jww
REM #cd
REM #hm|移動|複写|レイヤ名移動|レイヤ名複写|
REM #:1
REM #:2
REM #h1 範囲内のデータのみを選択
REM #hc 範囲選択してください
REM #c 移動先レイヤグループ名を指定してください(0~9、a~f)
REM #ht10 ブロック図形除外
REM #gn レイヤグループ/レイヤ状態書出し
REM #hr
REM #e
REM #:3
REM #:4
REM #c 移動先レイヤグループ名を指定してください(0~9、a~f)
REM #gn レイヤグループ/レイヤ状態書出し
REM #hr
REM #e

:1
:2
:3
:4

jgawk -vT=%1 -vN=%2 -f ch_lgroup.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
echo h# 移動(複写)を実行しました ! >>jwc_temp.txt
del temp.txt
goto end
#####
範囲選択から左AM0時「確定 基点(free)」
移動先レイヤグループ名を入力
:end
--------------------

<ch_lgroup.awk>
--------------------
#####
BEGIN{
## エラー処理
if(N==""){print "heレイヤグループ名を入力してください";he=1;exit}else{gn=N}
## 移動/複写先レイヤグループ名取得
chlgn="lg" gn
## 移動/複写選択
if(T==1){print "hd"}
    }
##### 行処理
## 未実行解除
/^hq/{next}
## レイヤグループ処理
/^lg/{
    ## 移動元レイヤグループ名取得/移動先レイヤグループ名出力
    if(NR==9){cugn=substr($1,3);print chlgn;next}
    ## 移動元レイヤグループ情報⇒移動先レイヤグループ情報に書換え
    if(substr($1,3)==cugn){$1=chlgn;print $0;next}
    ## 移動元レイヤグループ名書出し
    if($1=="lgn"){print $0;next}
    }
## レイヤ情報出力
/^ly/{
    ## 移動元レイヤ名取得
    if(NR==10){culn=$1}
    ## レイヤ情報出力
    print $0;next
    }
## その他データ書出し
{if(T==3 || T==4){next}else{print $0}}
#####
END{
    ## エラー処理
    if(he==1){exit}
    ## 移動元レイヤグループ名/レイヤ名消去(移動時)
    if(T==1 || T==3){
        culgn="lg" cugn;print "#";print culgn;print "lgn"
        for(i=0;i<=9;i++){ly[i]="ly" i;print ly[i];print "lyn"}
        print "lya";print "lyn"
        print "lyb";print "lyn"
        print "lyc";print "lyn"
        print "lyd";print "lyn"
        print "lye";print "lyn"
        print "lyf";print "lyn"
        ## 移動元レイヤグループ/書込みレイヤ指定
        print "ly0"
        }
    ## 移動先レイヤグループ/書込みレイヤ指定
    print "#";print chlgn;print culn
    }
#####

|

« 文字属性変更 | トップページ | 反転移動/複写 »

コメント

somemさん、こんにちは。

外変、着々と進んでますね。

このレイヤグループ移動/複写で、オプションとして、
レイヤ名のみの移動/複写は、どうでしょうか?
需要は、多々ありますが・・・。

投稿: 住職 | 2011年3月 5日 (土) 09時23分

住職さん、こんばんは。

>外変、着々と進んでますね。

この連載を始めたら、AWKの使い方が少し進歩したような気がしています。(^^)v

>レイヤ名のみの移動/複写は、どうでしょうか?

項目を追加してみました。
実行しても、画面上は何も変化しませんが・・・・・。
お試しください。

投稿: somem | 2011年3月 5日 (土) 17時58分

somemさん、こんばんは。

早速のオプション追加、ありがとうございます。
->goodです!

>実行しても、画面上は何も変化しませんが・・・・・。

そこで、
echo h# 実行しました。> jwc_temp.txt
などと、記述されたら、結果が"左上"に出ますが、
いかがでしょう。

投稿: 住職 | 2011年3月 5日 (土) 19時44分

>結果が"左上"に出ますが、

住職さん、アドバイスありがとうございます。
そういう手があったんですね。(^^ゞ
バッチファイルに追記しました。

投稿: somem | 2011年3月 5日 (土) 21時26分

somemさん、たびたびです。

最新bat、確認しました。
->ありがとうございます。

外変のback(返答)があると、使用者は、安心しますので。

投稿: 住職 | 2011年3月 5日 (土) 22時26分

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

>安心しますので。

そうですね、今後もご教示よろしくです。

投稿: somem | 2011年3月 6日 (日) 08時05分

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/94529/51007104

この記事へのトラックバック一覧です: レイヤグループ移動/複写:

« 文字属性変更 | トップページ | 反転移動/複写 »