レイヤグループ移動/複写
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分