« 曲線属性 | トップページ | 曲線属性(拡張版) »

2007年7月 1日 (日)

配列複写

2次元配列を使用して、水平/垂直方向に配列複写するスプリクトを検証してみました。

外変用バッチファイルに必要なREM文/AWK実行文は、

REM #h1 範囲選択
REM #1 X方向/Y方向移動量(点を指定)
REM #c X方向/列数を入力
REM #c Y方向/行数を入力 

jgawk -vNX=%1 -vNY=%2 -f array.awk jwc_temp.txt>temp.txt

<array.awk>
--------------------
#配列複写
BEGIN{m=NX;n=NY}
#X方向/Y方向移動量
/^hp1/{dx=$2;dy=$3;for(i=1;i<=m;i++)for(j=1;j<=n;j++){x[i,j]=(i-1)*dx;y[i,j]=(j-1)*dy}}
/^#/,/NF==0/{
if($1=="#"){next}
if(NF==1){print}
if($1=="cn0"){print}
#線の複写
if(NF==4 && $1!="ci"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%.15g %.15g %.15g %.15g\n",$1+x[i,j],$2+y[i,j],$3+x[i,j],$4+y[i,j]}}}
#円の複写
if(NF==4 && $1=="ci"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%s %.15g %.15g %.15g\n","ci",$2+x[i,j],$3+y[i,j],$4}}}
#円弧・楕円・楕円弧の複写
if(NF==8 && $1=="ci"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%s %.15g %.15g %.15g %.15g %.15g %.15g %.15g\n","ci",$2+x[i,j],$3+y[i,j],$4,$5,$6,$7,$8}}}
#横文字の複写
if(NF==6 && $1=="ch"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%s %.15g %.15g %.15g %.15g %s\n","ch",$2+x[i,j],$3+y[i,j],$4,$5,$6}}}
#縦文字の複写
if(NF==6 && $1=="cv"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%s %.15g %.15g %.15g %.15g %s\n","cv",$2+x[i,j],$3+y[i,j],$4,$5,$6}}}
#点の複写
if(NF==3 && $1=="pt"){for(i=1;i<=m;i++)for(j=1;j<=n;j++)
{if(i==1 && j==1){print " "}
else{printf "%s %.15g %.15g\n","pt",$2+x[i,j],$3+y[i,j]}}}
}    

|

« 曲線属性 | トップページ | 曲線属性(拡張版) »

コメント

somemさん、こんにちは。

遅くなりましたが、AutoCADの「配列複写」(矩形状、円形状)のような外変は、確かに少ないですね。
本体機能で、シコシコできるからでしょうか?

投稿: 住職 | 2007年7月16日 (月) 13時42分

住職さん、こんばんは。

「配列複写」、便利な機能なんですが・・・・・。
行と列の数がすぐに思い浮かばないと使えないですね。
Jwwの場合は、複写コマンドの「連続」の方が使い易いかも。m(__)m

投稿: somem | 2007年7月16日 (月) 18時15分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 配列複写:

« 曲線属性 | トップページ | 曲線属性(拡張版) »