Excel データの作図
外部変形用バッチファイルのあるフォルダにCSV形式で保存します。
ファイル名は、cord.csv とします。
CSV形式の保存には、Excel マクロを利用します。マクロの解説はこちら。
CSVファイルをメモ帳で開くとテキストデータを確認できます。
外部変形で使用するのは、#~## までのデータです。
Jwwを起動して外部変形を実行し、基準点の位置を指定します。
表示内容等は、awkスプリクトを変更してご利用ください。
バッチファイルは、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]
}
| 固定リンク
コメント
(*’ー’)(,,*)(*‘∇‘)(,,*)うんうん
こういことがしたかった わけです。
座標の場合、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分