« 2010年10月 | トップページ | 2010年12月 »

2010年11月27日 (土)

要素のカウント

作図済の要素をカウントし、その数を作図するバッチファイルです。
AWKスプリクトは、行処理のアクション部に "n=n+1" を記述すると、
パターンマッチングする毎にカウントアップすることができます。
テキストの行処理が終了後の n の値をEND文で出力します。

バッチファイル用コマンドの説明は、コマンド右側に続けて記述しています。

@REM 要素数
@echo off
REM #jww
REM #cd
REM #ht20  曲線の消去と書出しをしない
REM #h4 データ選択をしない、読取可能データ全て書き出し
REM #0 文字の位置を指定してください (L)free (R)Read
REM #hr
REM #e
jgawk 'BEGIN{dq="\\"";nl=0;nc=0;nch=0}/^^ [-0-9\.]/{nl=nl+1;lnr=dq "線の数 " nl}/^^ci/{if(NF==4){nc=nc+1;cnr=dq "円の数 " nc}else{next}}/^^ch/{nch=nch+1;chnr=dq "文字数 " nch}END{print "ch",0,0,1,0,lnr;print "ch",0,-5,1,0,cnr;print "ch",0,-10,1,0,chnr}' "jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
#####
外変選択実行後、作図する位置を指定
線/円/文字の数を3行で作図
:end

◇/^^ [-0-9\.]/
先頭フィールドが数字の場合のパターンを記述
線データに対してアクションを実行

| | コメント (0) | トラックバック (0)

2010年11月23日 (火)

図形の回転

図形を回転する場合、図形の各座標が、中心点を通る水平線と成す角度α、
中心点からの距離r、回転角dθの時、回転後の座標 (x,y)は、
x=r*cos(α+dθ)
y=r*sin(α+dθ)

一行スプリクトで記述するのは難しいので、スプリクトファイルを使います。

線/円/文字を回転移動する外変の例です。

@REM 図形回転
@echo off
REM #jww
REM #cd
REM #h2 範囲内データ・範囲内外に跨る線データを選択
REM #hc 範囲選択から回転中心を指定 右AM0時「確定 基点<< Read >>」
REM #1 基準角を指示する点を指定してください (L)free (R)Read
REM #2 回転角を指示する点を指定してください (L)free (R)Read
REM #hr
REM #e
jgawk -f rotation.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
#####
線/円/文字以外は、対象外です。
:end

続きを読む "図形の回転"

| | コメント (0) | トラックバック (0)

東京の名湧水

数字や記号ばかりでは・・・・・。

家から歩いて30分ぐらいの場所にある"清水山憩いの森"で見つけました。
東京の名湧水57選の一つだそうです。
見栄えはイマイチですが。m(__)m

Ikoinomori_1

Ikoinomori_2


| | コメント (0) | トラックバック (0)

2010年11月20日 (土)

図形の移動

図形を移動する場合、図形データの座標値に、移動量(dx,dy)を加算します。

AWKでは、変数を定義する必要がなく、どこでも変数を使うことができます。
また、数式内で同一の変数を使用することができるので、
移動後の座標値(x,y)を求める式の例は、下記となります。
x=x+dx
y=y+dy
右辺のx,yには、直前のx,yの数値が代入され、新しいx,yを求めることができます。

$1や$2は、組込変数なので、直接代入することもできます。
$1=$1+dx
$2=$2+dy

線/円/円弧/楕円/文字を移動するバッチファイルの例です。

続きを読む "図形の移動"

| | コメント (0) | トラックバック (0)

2010年11月17日 (水)

線色・線種変更

作図済の直線を利用して、線色・線種を変更する外部変形です。
スプリクトは前回の応用ですが、2つのスプリクトを使用しています。
この外変は、実用的に使えると思います。

<操作手順> 
1.範囲選択から左AM0時「確定 基点(free)」
2.線色・線種を指定する線(曲線は除く)を(L)クリックで実行    Start

@REM 線色・線種変更
@echo off
REM #jww
REM #cd
REM #ht10 ブロック図形除外
REM #ht30 寸法図形除外
REM #ht40 ソリッド図形除外
REM #h2 範囲内データ・範囲内外に跨る線データを選択
REM #hc 図形を範囲選択してください
REM #1ln 線色・線種を指定する線(曲線は除く)を(L)クリック
REM #hr
REM #e
jgawk '{if(substr($1,1,2)=="lc"){lc=$1}if(substr($1,1,2)=="lt"){lt=$1}if($1=="hhp1ln"){print "attr",lc,lt}}' jwc_temp.txt>attr.txt
copy attr.txt+jwc_temp.txt
jgawk 'BEGIN{print "hd"}{if($1=="attr"){print $2;print $3}}/^^#/,NF==0{if(substr($1,1,2)=="lc"){next}if(substr($1,1,2)=="lt"){next}if($1=="hhp1ln"){next}else{print $0}}' attr.txt>temp.txt
copy temp.txt jwc_temp.txt
del attr.txt
del temp.txt
goto end
#####
範囲選択から左AM0時「確定 基点(free)」で図形選択
線色・線種を指定する線(曲線は除く)を(L)クリック
:end

続きを読む "線色・線種変更"

| | コメント (0) | トラックバック (0)

2010年11月15日 (月)

線色変更(書込み線色)

範囲選択した図形の線色を、書込み線色に変更する例です。
#h2は、範囲内データ・範囲内外に跨る線データの選択

@REM 線色変更(書込み線色)
@echo off
REM #jww
REM #cd
REM #h2 範囲内データ・範囲内外に跨る線データを選択
REM #hc 図形を範囲選択してください。
REM #hr
REM #e
jgawk 'BEGIN{print "hd"}/^^#/,/NF==0/{if(substr($1,1,2)=="lc"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

続きを読む "線色変更(書込み線色)"

| | コメント (0) | トラックバック (0)

2010年11月 9日 (火)

消去

選択した図形を消去するには、"hd" を書出します。
#h1 は、範囲内のデータを選択。
次行に #hc ***** と記述すると、
範囲選択時、画面左上に ***** を表示します。

@REM 消去
@echo off
REM #jww
REM #cd
REM #h1
REM #hc 図形を範囲選択してください
REM #hr
REM #e
jgawk 'BEGIN{print "hd"}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
type jwc_temp.txt
pause
del temp.txt

| | コメント (2) | トラックバック (0)

2010年11月 7日 (日)

文字作図

キー入力から文字を作図する場合は、バッチファイルに #c または、#f を記述します。
#f は、IMEをON(日本語入力)で起動します。

@REM 文字作図
@echo off
REM #jww
REM #cd
REM #0 文字の位置を指示してください (L)free (R)Read
REM #c 文字Aを入力してください
REM #f 文字Bを入力してください
REM #hr
REM #e
jgawk -vA=%1 -vB=%2 'BEGIN{dq="\\""}END{ca=dq A;cb=dq B;printf "%%s %%.15g %%.15g %%.15g %%.15g %%s\n","ch",0,0,1,0,ca;printf "%%s %%.15g %%.15g %%.15g %%.15g %%s\n","ch",0,-5,1,0,cb}' "jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
type jwc_temp.txt
pause
del temp.txt

続きを読む "文字作図"

| | コメント (0) | トラックバック (0)

2010年11月 6日 (土)

円弧作図

円弧を作図する場合は、開始角/終了角を算出する必要があります。
2点の座標から、角度はアークタンジェント atan2(y,x)で計算します。
単位は"ラジアン"なので、書出しデータは、"度"に変換。

@REM 円弧作図
@echo off
REM #jww
REM #cd
REM #0 中心点を指示してください (L)free (R)Read
REM #1 円弧の始点を指示してください (L)free (R)Read
REM #2 終点を指示してください (L)free (R)Read
REM #hr
REM #e
jgawk 'BEGIN{pi=atan2(0,-1)}/^^hp1/{r=sqrt($2^^2+$3^^2);ths=atan2($3,$2);ths=ths*180/pi}/^^hp2/{the=atan2($3,$2);the=the*180/pi}END{printf "%%s %%.15g %%.15g %%.15g %%.15g %%.15g %%.15g %%.15g\n","ci",0,0,r,ths,the,1,0}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
type jwc_temp.txt
pause
del temp.txt

続きを読む "円弧作図"

| | コメント (0) | トラックバック (0)

2010年11月 4日 (木)

円作図

円の作図は、線作図のバッチファイルのスプリクトを変更します。
#0や#1に続く「*****」は、実行時にステータスバーに表示されます。

REM 円作図
@echo off
REM #jww
REM #cd
REM #0 中心点を指示してください (L)free (R)Read
REM #1 円位置を指示してください (L)free (R)Read
REM #hr
REM #e
jgawk '/^^hp1/{x=$2;y=$3;r=sqrt(x^^2+y^^2);printf "%%s %%.15g %%.15g %%.15g\n","ci",0,0,r}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
type jwc_temp.txt
pause
del temp.txt

続きを読む "円作図"

| | コメント (0) | トラックバック (0)

2010年11月 3日 (水)

仮線表示

2点を指定する時、仮線を表示することができます。
#0は使用できないので、始点は #1-、終点を #2とします。
#1- を #1/ にすると、15°毎の線作図ができます。

Line

続きを読む "仮線表示"

| | コメント (0) | トラックバック (0)

AWKで外変

新しいカテゴリ"AWKで外変"を追加しました。m(__)m
AWKスプリクトを利用した外部変形(外変)の作成方法を解説していきます。

最初に、線を作図する外変用バッチファイルで基本を確認してください。
1.実行するとDOS窓が開き、"書出し"されたjwc_temp.txtの内容が表示されます。
2.任意のキーを押すと、"書換え"られたjwc_temp.txtに線データが表示されます。
3.任意のキーを押すと、DOS窓が閉じて1本の線が作図されます。

注)外変動作の確認に、"type"、"pause"のDOSコマンドを利用しています。

----------
@REM 線
@echo off
REM #jww
REM #cd
REM #0 始点を指示してください (L)free (R)Read
REM #1 終点を指示してください (L)free (R)Read
REM #hr
REM #e
type jwc_temp.txt
pause
jgawk '/^^hp1/{x2=$2;y2=$3}END{print 0,0,x2,y2}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
type jwc_temp.txt
pause
del temp.txt
----------

続きを読む "AWKで外変"

| | コメント (0) | トラックバック (0)

« 2010年10月 | トップページ | 2010年12月 »