« 2007年4月 | トップページ | 2007年6月 »

2007年5月30日 (水)

書式(浮動小数点)

"printf"の書式を確認するスクリプトです。                      
前回紹介したバッチファイルの2行目を編集してください。

<%f 浮動小数点>

jgawk 'BEGIN{N=12345.6789;printf"%%f",N}' nul>temp.txt

%f  ⇒ 12345.678900 /小数点第6位まで表示(数値がない場合は、0を表示)
% .3f  ⇒ 12345.679 /小数点第3位まで表示(第4位を四捨五入)

<%g 浮動小数点/指数表示>

jgawk 'BEGIN{N=123.456789;printf"%%g",N}' nul>temp.txt

%g  ⇒ 123.457 /6桁表示
% .15g  ⇒ 123.456789 /15桁まで表示
% .3g  ⇒ 指数表示/N=1234の時1.23e+004

続きを読む "書式(浮動小数点)"

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

2007年5月29日 (火)

書式(文字列/整数)

"printf" で使用する出力書式をバッチファイルで確認。
注)一行スプリクトの場合は、%s を %%s で実行します。

<%s 文字列> 

REM ##### 書式 %s #####
jgawk 'BEGIN{N="abcdefgh";printf"%%s",N}' nul>temp.txt
type temp.txt
pause
del temp.txt
REM #####

%s ⇒ abcdefgh /文字列をすべて出力
%10s ⇒ □□ abcdefgh /10文字分のスペースに右詰め (□はスペース)
% .5s ⇒ abcde /先頭から5文字を出力    

<%d 整数>

REM ##### 書式 %d #####
jgawk 'BEGIN{N=123456.789;printf"%%d",N}' nul>temp.txt
type temp.txt
pause
del temp.txt
REM #####

%d ⇒ 123456 /整数部だけを出力
%10d ⇒ □□□□123456 /10文字分のスペースに右詰め(□はスペース)

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

2007年5月26日 (土)

四捨五入

数値の小数点第2位を四捨五入するスクリプトファイルです。              

##########
#
#四捨五入
BEGIN{k=10;x=N;x=x*k;y=rnd(x)/k}
END{print y}
#
#ユーザー定義関数
function rnd(x){if(x>0) return int(x+0.5)}
#
##########

function ~ return で、ユーザーが定義した関数を使用することができます。
int(x)は、数値の整数部を返すawkの組込関数です。

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

数字と文字の和

数字と文字を組合わせて文字列を出力するスプリクトの確認です。
算術演算子を使用しないと、数字が文字列として追加されています。

REM ##### 数字+文字 #####
REM
jgawk 'END{a=3;b=" × ";c=500;d=" = ";e=1500;f=a b c d e f;print f}' nul>temp.txt
type temp.txt
pause
del temp.txt
REM
REM #####

続きを読む "数字と文字の和"

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

2007年5月19日 (土)

有限構築線

無限線ではありませんが、
水平/垂直/角度に対応した有限の構築線を作図する外変です。
定規とコンパスで作図してた時代は、こんな感じだったかな。

設計に使用する場合は、自己責任でお願いします。

070519_3

作図方向の切換えは、キーボードの 1~9 が使用できます。
水平/垂直は、読取範囲外でLまたは、Rクリックで可能。
作図方法は、コントロールバーに表示されます。

続きを読む "有限構築線"

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

2007年5月14日 (月)

ユーザー入力

外変実行中にユーザー入力をスプリクトで使用するバッチファイルの動作確認です。

ユーザー入力は、
REM #c (数値入力) とREM #f(文字入力) を使用します。
REM #fは、自動的に日本語入力になります。

awk側は、 -v(変数名)=%(番号)で入力情報を読込みます。
注)このスクリプトは、jwc_temp.txt を読込む必要がないので、
入力ファイルは、 nul にしています。

続きを読む "ユーザー入力"

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

2007年5月13日 (日)

演算子/関数

awkの関数/演算子を抜粋してみました。必要に応じて追加していきます。

<算術演算子>

+ [和] , - [差] , * [乗] , / [除]

<関係演算子>

a==b [等しい(a=b)] , != [等しくない(a≠b)]
a<b [b より小] , a<=b [b 以下] , a>=b [b 以上] , a>b [b より大]

<論理演算子>

|| [論理和] , && [論理積]

<算術関数>

atan2(y,x) [y/xの逆正接 (単位:ラジアン)]
sin(x) [正弦 (x 単位ラジアン)]
cos(x) [余弦 (x 単位ラジアン)]
sqrt(x)  [平方根]
int(x) [整数部を返す]

<文字列関数>

※先頭に"j"がつく文字列関数は、全角/半角を区別できます。


substr(a,b,c)  [適合する文字列を返す/a(文字列),b(開始文字),c(文字数)]
jsubstr(a,b,c)  [適合する文字列を返す/a(文字列),b(開始文字),c(文字数)]
split(a,b,c)  [文字列を配列にして返す/a(文字列),b(配列名),c(区切り)]
length(a)  [文字列の長さを返す/a(文字列)]
jlength(a)  [文字列の長さを返す/a(文字列)]
sub(a,b,c)  [文字列の最初の1文字を置換/a(対象文字),b(置換文字),c(文字列)]
gsub(a,b,c)   
[文字列をすべて置換/a(対象文字),b(置換文字),c(文字列)]
index(a,b) [文字位置を返す/a(文字列),b(対象文字)]
jindex(a,b) [文字位置を返す/a(文字列),b(対象文字)]

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

2007年5月12日 (土)

破断線の作図(改)

破断線作図のスクリプトファイルを変更しました。

水平/垂直方向に作図する終点の位置を角度で範囲設定しています。
設定は、X軸/Y軸に対して±3°以内。

続きを読む "破断線の作図(改)"

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

2007年5月 9日 (水)

破断線の作図

任意の2点を指定して、破断線を作図する外部変形です。
始点と終点を通る線が、水平/垂直に近い場合は、水平/垂直方向に作図します。

07/5/10  wdの設定値を5から2に変更しました。
設定は、終点位置とX軸/Y軸からの距離が ±2(図寸)以内。

右AM9時「線上点・交点」が使用できます。
但し、水平/垂直方向に作図する場合、
指示線は、水平線/垂直線を使用してください。

続きを読む "破断線の作図"

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

2007年5月 7日 (月)

縮尺の書出し2

書込レイヤグループの縮尺だけを書出しするスプリクトファイルの確認です。

例) hs 1 0.5 0.2 0.1 1 1 1 1 1 1 10 1 1 1 50 100                          

縮尺が1/10の場合、hsの値は、逆数の10で表示されます。
上記の例で、書込レイヤグループが"A"の場合の値を、変数 sc に代入してみます。

続きを読む "縮尺の書出し2"

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

縮尺の書出し

各レイヤグループの縮尺を書出すスプリクトファイルの動作確認です。

外部変形を実行すると、jwc_temp.txt に、各レイヤグループの縮尺が書出されます。
縮尺が全て 1/1 の場合 : hs 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

スプリクトファイルは、

レイヤグループ 0 : S[0]=$2
レイヤグループ 1 : S[1]=$3
    -----
    -----
レイヤグループ e : S["e"]=$16
レイヤグループ f : S["f"]=$17

として配列変数に代入してから、出力結果を確認します。 

for(i=0;i<=9;i++) S[i]=$(i+2) は、レイヤグループ0~9 までの配列 S[0]~S[9] を定義
i++ は、i=i+1 と 同じです。

続きを読む "縮尺の書出し"

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

2007年5月 6日 (日)

スプリクトファイル

一行スプリクトでデータが処理できない場合、スプリクトファイルが必要になります。
スプリクトファイルの拡張子は、"awk"、メモ帳で作成し "ファイル名".awk で
保存すればOKです。

続きを読む "スプリクトファイル"

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

レイヤグループの書出し

書込みレイヤグループを書出しするバッチファイルの動作確認です。

substr(a,b,c)  a:文字列/b:先頭位置/c:文字列長さ

---------------
@REM レイヤグループの書出し
REM #jww
REM #cd

jgawk '/^lg/{lg=substr($1,3,1);print $1,lg}' jwc_temp.txt>layer.txt
type layer.txt
pause
del layer.txt
---------------

続きを読む "レイヤグループの書出し"

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

2007年5月 5日 (土)

線データの書出し

線のデータを書出しするバッチファイルの動作確認です。

REM #kln   k は、1~9の整数、線を選択

---------------
@REM 線データの書出し
REM #jww
REM #cd
REM #1ln 線を選択
REM #2ln 線を選択

type jwc_temp.txt
jgawk 'NF==4{print}' jwc_temp.txt>line.txt
type line.txt
pause
del line.txt
---------------  

続きを読む "線データの書出し"

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

円データの書出し

円データを書出しするバッチファイルの動作確認です。

REM #nci   n は1~9の整数、円/円弧/楕円/楕円弧が選択可

---------------
@REM 円データの書出し
REM #jww
REM #cd
REM #1ci 円を選択
REM #2ci 円弧を選択
REM #3ci 楕円を選択
REM #4ci 楕円弧を選択

type jwc_temp.txt
jgawk '/^^ci/{print}' jwc_temp.txt>circle.txt
type circle.txt
pause
del circle.txt
----------------

続きを読む "円データの書出し"

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

2007年5月 4日 (金)

組込変数 NR/NF

awkには、組込変数がいくつか用意されています。
すでに"フィールド"で紹介している、$2、$3 も組込変数のひとつです。
また、$0は、レコード(行)全体を出力します。

続きを読む "組込変数 NR/NF"

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

点座標の書出し

Jww上で指示した点の座標を書出しするバッチファイルの動作確認です。

--------------------
@REM 点座標の書出し
REM #jww
REM #cd
REM #1 1点目を指定(L)/(R)
REM #2 2点目を指定(L)/(R)
type jwc_temp.txt
jgawk '/hp1/{print};/hp2/{print}' jwc_temp.txt>point.txt
type point.txt
pause
del point.txt
---------------
REM #n :n は、0~99までの整数、点を指示する場合に使用。
#0を指定すると、指定した点が書出しデータの原点になります。

続きを読む "点座標の書出し"

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

2007年5月 3日 (木)

フィールド

awkは、各行毎に空白を区切りとして "フィールド" を割当てます。
フィールド名は、先頭から $1、$2・・・・・・$N で割当てられます。

続きを読む "フィールド"

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

パターンとアクション

awkは、テキストファイルを一行ずつ読み込み、指定した"アクション"を実行します。   また、指定した"パターン"にマッチングする行を選択して実行することも可能。 

バッチファイル上で実行するスプリクトの表記は、

jgawk '/パターン/{アクション}' *.txt となります。

バッチファイル、awktxt.bat を作成し、テキストファイル sample.txtで確認します。

続きを読む "パターンとアクション"

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

2007年5月 2日 (水)

動作確認の前に

公開されているawk関連のwebサイトで、スクリプトの勉強をしながら
外部変形に取組んでみたものの、やっぱり知識不足。m(__)m

あらためて、awkスプリクトの動作をJw_cad上で確認してみることにします。

動作環境は下記の通りです。

OS:Windows XP SP2
Jw_cad:バージョン5.11e
awkプログラム:WILLs' trash can さんのgawkm115.zipをダウンロード。(作者様に感謝)
gawk.exeとjgawk.exe(gawk.exeをリネーム)をsystem32フォルダ内にコピー。

| | トラックバック (0)

« 2007年4月 | トップページ | 2007年6月 »