« DXFのインポート2 | トップページ | Excel マクロの記録 »

2008年3月 9日 (日)

Excel データの作図

ExcelからCSV形式で保存した座標データをJwwで作図する外部変形です。                  

距離と角度から、座標データを求めるExcel シートを作成してみました。

Excel_2 

注)データ入力が完了したら、Excel 形式で必ずバックアップを保存してください。 

外部変形用バッチファイルのあるフォルダにCSV形式で保存します。
ファイル名は、cord.csv とします。

CSV形式の保存には、Excel マクロを利用します。マクロの解説はこちら

Csv_save_2   

CSVファイルをメモ帳で開くとテキストデータを確認できます。
外部変形で使用するのは、#~## までのデータです。

Csvfile   

Jwwを起動して外部変形を実行し、基準点の位置を指定します。
表示内容等は、awkスプリクトを変更してご利用ください。

Jww

バッチファイルは、cord.csv を上書きする設定にしています。
CSV保存時に、上書きメッセージをスキップしたい場合、
最終行の"REM"を削除してください。

拡張版を公開しましたので、バッチファイル/スプリクトは、こちらへ

<cord.bat>
--------------------
@REM Excel to Jww 座標出力
@echo off
REM
REM #jww
REM #cd
REM #0 原点を指定してください
REM #hr
REM #e
REM
jgawk -f cord.awk cord.csv>jwc_temp.txt
REM del cord.csv

<cord.awk>
--------------------
###Excel to Jww 座標出力
###
BEGIN{
#カンマ区切り(CSV用)
FS=",";
#文字列設定
dq="\"";deg="°";min="'";sec="”";sh="/";
#縮尺(S=1/10)
S=10;
#文字位置調整
cdx=0;cdy=3*S;
#文字方向指定(水平)
ddx=5
}
###
#座標値取得
/^#/,/^##/{
if($1=="#"){ch1=$3;ch2=$4;cht=dq ch1 sh ch2}
if(NF==10){
chn[NR]=$2;x[NR]=$3;y[NR]=$4;L[NR]=$5;d[NR]=$6;m[NR]=$7;s[NR]=$8;
chr[NR]=dq chn[NR] sh L[NR] sh d[NR] deg m[NR] min s[NR] sec}
if($1=="##"){n=NR;next}
}
END{
###表題の作図
{printf "%s %d %d %d %d %s\n","ch",-20*S,5*S,ddx,0,cht}
###点の作図
for(i=4;i<=n;i++)
{printf "%s %.15g %.15g\n","pt",x[i],y[i]}
###符号/距離/角度表示
for(i=4;i<=n;i++)
{xc=x[i]+cdx;yc=y[i]+cdy;
printf "%s %.15g %.15g %.15g %.15g %s\n","ch",xc,yc,ddx,0,chr[i]}
###基点/測定点間作図
#線種/線色指定
print "lc2";
print "lt7";
for(i=4;i<=n;i++)
{printf "%.15g %.15g %.15g %.15g\n",0,0,x[i],y[i]}
###境界線作図
#線種指定
print "lc3";
print "lt5";
for(i=4;i<=n-1;i++)
{printf "%.15g %.15g %.15g %.15g\n",x[i],y[i],x[i+1],y[i+1]}
printf "%.15g %.15g %.15g %.15g\n",x[n],y[n],x[4],y[4]
}

各要素をレイヤ分けするスプリクトにしてみました。
また、コメント欄を空白セルにすると何も表記しないようにしました。 08/03/10

符号表記を元に戻し(21行目)、距離と符号の間は、半角スペースにしました。
アレンジする場合は、sp=" "(5行目)を変更してください。08/03/11

--------------------
###Excel to Jww 座標出力(レイヤ別)
###
BEGIN{
#カンマ区切り(CSV用)
FS=",";
#文字列設定
dq="\"";deg="°";min="'";sec="”";sh="/";sp=" ";
#縮尺(S=1/10)
S=10;
#文字位置調整
cdx=0;cdy=3*S;
#文字方向指定(水平)
ddx=5
}
###
#座標値取得
/^#/,/^##/{
if($1=="#"){ch1=$3;ch2=$4;cht=dq ch1 ch2}
if(NF==10){
chn[NR]=$2;x[NR]=$3;y[NR]=$4;L[NR]=$5;d[NR]=$6;m[NR]=$7;s[NR]=$8;
chr[NR]=dq chn[NR] sp L[NR] sh d[NR] deg m[NR] min s[NR] sec}
if($1=="##"){n=NR;next}
}
END{
###表題の作図
{print "ly3";printf "%s %d %d %d %d %s\n","ch",-20*S,5*S,ddx,0,cht}
###点の作図
print "ly2";
for(i=4;i<=n;i++)
{printf "%s %.15g %.15g\n","pt",x[i],y[i]}
###符号/距離/角度表示
print "ly3";
for(i=4;i<=n;i++)
{xc=x[i]+cdx;yc=y[i]+cdy;
printf "%s %.15g %.15g %.15g %.15g %s\n","ch",xc,yc,ddx,0,chr[i]}
###基点/測定点間作図
#レイヤ/線種/線色指定
print "ly1";
print "lc2";
print "lt7";
for(i=4;i<=n;i++)
{printf "%.15g %.15g %.15g %.15g\n",0
,0,x[i],y[i]}
###境界線作図
#レイヤ/線種/線色指定
print "ly0";
print "lc3";

print "lt5";
for(i=4;i<=n-1;i++)
{printf "%.15g %.15g %.15g %.15g\n",x[i],y[i],x[i+1],y[i+1]}
printf "%.15g %.15g %.15g %.15g\n",x[n],y[n],x[4],y[4]
}

|

« DXFのインポート2 | トップページ | Excel マクロの記録 »

コメント

 (*’ー’)(,,*)(*‘∇‘)(,,*)うんうん
 こういことがしたかった わけです。

 座標の場合、kazuさんちで紹介されている、JWW座標展開 for EXCEL97,2000とか、HinoさんちのR座標敷地とかを使えばできるんですとね。

 ただ、現場の場合 いまだ平板測量が進歩して、光波つかった 測量値から図面を起こすには これが必要だったんです。

 いままでは 指定距離、角度を線コマンドかいて、そこに点をうって、境界を作図してました。

 現場の人間には 必要なものですよ。

 15日にお会いできるまでに ゆっくり検証させて頂きます。
 (*- -)(*_ _)ペコリ
 ありがとう ございます。

 

投稿: 盗朱 | 2008年3月10日 (月) 00時36分

盗朱さん、こんばんは。

ゆっくり検証してください。
要望があれば、できる範囲で対応します。
次は、"拡張版"複数データをレイヤ分けして作図。
うまくできるかどうかわかりませんが・・・・・・。

ではまた。

投稿: somem | 2008年3月10日 (月) 19時46分

 おはようございます。(o*。_。)oペコッ
 レイヤ分けはうまくいきました。
 
 しかし問題が・・・CSVファイル開いても、ポイント名が書き出されていません・・
 なんでかなぁ・・?
http://yui.at/bbs1/sr3_bbss.cgi?cat=2026unyored

 あと、外経線ですが作図してほしい時(敷地を書く場合)と、そうでない場合があります。


 緑の線が必要ない場合、敷地+既存構築物がある場合、ポイントの点と(ポイント名、距離、角度)と原点だけでいい場合があるんです。

 外部変形実行時に、敷地とその他と二つ選択出来て、
 敷地の場合は、緑の線も作図。

 その他の場合は、ポイント名(ポイント・距離・角度)と原点、だけの作図。

 
 おいそがしいとは 思いますが、よろしくお願いします。

投稿: 盗朱 | 2008年3月11日 (火) 09時49分

盗朱さんのブログを見て、符号は使わないものと勝手に解釈。
スラッシュと一緒に・・・・・。(-_-;)

ブログのスプリクトは、スラッシュをスペースに変えて
符号表記できるように変更しておきます。

2種類の作図の使い分けは、ちょっと待っててください。

投稿: somem | 2008年3月11日 (火) 20時31分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: Excel データの作図:

« DXFのインポート2 | トップページ | Excel マクロの記録 »