« 気球2 | トップページ | ドーム »

2008年12月20日 (土)

線種変更

直線上の2点で、線を分割し線種を変更する外部変形です。
画像のような板金図面の線種変更にどうぞ。

Lchange

Select

◇2点間
直線を選択し、線上の2つの交点(順不問)を右クリックすると、
交点間 ⇒ 実線(lt1) 両側 ⇒ 点線(lt3)に線種変更します。

◇実線/点線/一点鎖線
直線をクリックすると、指定した線種に変更します。

注)線種を変更したい場合は、バッチファイルを修正してください。
設定は、実線(lt1)/点線(lt3)/一点鎖線(lt6)になっています。

--------------------
@REM 線種変更
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|2点間(L)|点線(R)|実線(3)|一点鎖線(4)|
REM
REM #:1
REM #1ln 直線を指定してください
REM #2 交点を指定してください
REM #3 交点を指定してください
REM #hr
REM #e
REM
REM #:2
REM #:3
REM #:4
REM #1ln 直線を指定してください
REM #hr
REM #e
REM
REM 部分変更
:1
jgawk -f lchange.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
REM 点線変更
:2
:3
:4
jgawk -vN=%1 'BEGIN{print "hd"}/^^#/,/NF==0/{if(substr($1,1,2)=="lg"){lg=$1}if(substr($1,1,2)=="ly"){ly=$1}if(substr($1,1,2)=="lc"){lc=$1}if(NF==4){x1=$1;y1=$2;x2=$3;y2=$4}}END{print lg;print ly;;print lc;if(N==2){print "lt3"}if(N==3){print "lt1"}if(N==4){print "lt6"};printf "%%.15g %%.15g %%.15g %%.15g\n",x1,y1,x2,y2}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:end
--------------------

<lchange.awk>   ダウンロード
--------------------
### 線種変更 ###
#交点座標
/^hp2/{xa=$2;ya=$3}
/^hp3/{xb=$2;yb=$3;
if(xb<xa || xa==xb && yb>ya){x2=xb;y2=yb;x3=xa;y3=ya}else{x2=xa;y2=ya;x3=xb;y3=yb}}
#線属性取得
/^#/,/NF==0/{
#レイヤグループ取得
if(substr($1,1,2)=="lg"){lg=$1}
#レイヤ取得
if(substr($1,1,2)=="ly"){ly=$1}
#線色取得
if(substr($1,1,2)=="lc"){lc=$1}
#線座標
if(NF==4){
if($3<$1 || $1==$3 && $4>$2){x1=$3;y1=$4;x4=$1;y4=$2}else{x1=$1;y1=$2;x4=$3;y4=$4}}}
###
END{
#選択データ消去
print "hd";
#レイヤグループ/レイヤ指定
print lg;
print ly;
#線色指定
print lc;
#再作図
#2点間
if(x1==x2 && x3==x4 && y1==y2 && y3==y4){print " "}
#水平(片側変更)
if(x1==x2 && x3!=x4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
if(x1!=x2 && x3==x4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2}
#垂直(片側変更)
if(x1==x4 && y1==y2 && y3!=y4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
if(x1==x4 && y3==y4 && y1!=y2){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2}
#両側変更
if(x1!=x2 && x3!=x4 || x1==x4 && y1!=y2 && y3!=y4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2;
printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
#実線作図
print "lt1";
printf "%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3}
### END ###
--------------------

|

« 気球2 | トップページ | ドーム »

コメント

こんばんわ。
2点間の線種変更だけが動きません。
点線、実線、一点鎖線は普通に動くのですが、記述コピー
して貼り付けたのですが。

投稿: tosi | 2022年3月20日 (日) 19時51分

tosiさん、こんばんは。

>2点間の線種変更だけが動きません。

「2点間」は、バッチファイルの他に、awkファイルが必要なのですが、
ファイル名は、lchange.awk になっていますか?

投稿: somem | 2022年3月20日 (日) 22時59分

早速ありがとうございます。
ファイル名lchange.awkになっております。

投稿: tosi | 2022年3月21日 (月) 11時55分

バッチファイル25行目の次に、pauseを追記してください。

gawk -f lchange.awk jwc_temp.txt>temp.txt
pause
copy temp.txt jwc_temp.txt

外変を実行すると、awkスプリクトを実行後、一時停止した状態で、コマンドプロンプトが開きます。
何らかのエラーメッセージが出ているはずなので、教えてください。

投稿: somem | 2022年3月21日 (月) 17時31分

jgawk:fatal:can't open source file"lchange.awk" for reading
このようなメッセージがでました。
お手数おかけします。すみません

投稿: | 2022年3月21日 (月) 18時37分

tosiさん、

>jgawk:fatal:can't open source file"lchange.awk" for reading

"lchange.awkが開けません"というメッセージです。
awkファイルをダウンロードできるようにしましたので、
バッチファイルと同じフォルダに保存して試してください。

投稿: somem | 2022年3月21日 (月) 19時30分

somenさん
ありがとうございました。
出来ました。使いたかった外変でしたので、今まで我慢
しておりましたが、助かりました。
これからも、ご活躍ください。

投稿: tosi | 2022年3月21日 (月) 20時02分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 線種変更:

« 気球2 | トップページ | ドーム »