測点距離作図
11/4 ゼロパディング追加
11/5 ユーザー設定追加
<バッチファイル>
@REM 測点距離作図
@echo off
goto %1
REM #jww
REM #cd
REM #hm|直線(L)|曲線(R)|直線+曲線|曲線+直線|
REM #:1
REM #h1 範囲選択
REM #hc 指定点/起点を範囲選択してください
REM #hr
REM #e
REM #:2
REM #h1 範囲選択
REM #hc 指定点/起点/曲線を範囲選択してください
REM #hr
REM #e
REM #:3
REM #:4
REM #h1 範囲選択
REM #hc 指定点/起点/曲線を範囲選択してください
REM #1 変化点を指定してください
REM #hr
REM #e
:1
:2
:3
:4
jgawk -vT=%1 -f sokuten.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:end
<AWKスクリプト>
ファイル名、sokuten.awkで保存してください。
BEGIN{
##ユーザー設定
lg="lg5" #レイヤグループ名
ly="lya" #レイヤ名
cn="cn6" #文字種
ccn="cc0" #文字基点/左下
dx=5;dy=0 #文字方向/水平
k=1000 #小数点桁数、3桁
##初期設定
pi=atan2(0,-1) #円周率
i=1;j=1;p=1;q=1 #カウンタ
}
#####
#書込レイヤグループ・レイヤ
/lg/{culg=$1}
/ly/{culy=$1}
#変化点
/hp1/{ xc=$2;yc=$3}
#曲線
/^ci/{ r=$4;p=p+1}
#測点
/pt/{
x=$2;y=$3
if(x==0 && y==0){}
else{
if(T==1){
dist=sqrt(x^2+y^2)/1000
}
if(T==2){
ht=sqrt(x^2+y^2)/2
btm=sqrt(r^2-ht^2)
ang=atan2(ht,btm)*2
dist=r*ang/1000
}
if(T==3){
dist1=sqrt(xc^2+yc^2)
ht=sqrt((xc-x)^2+(yc-y)^2)/2
btm=sqrt(r^2-ht^2)
ang=atan2(ht,btm)*2
dist2=r*ang
dist=(dist1+dist2)/1000
}
if(T==4){
ht=sqrt(xc^2+yc^2)/2
btm=sqrt(r^2-ht^2)
ang=atan2(ht,btm)*2
dist1=r*ang
dist2=sqrt((xc-x)^2+(yc-y)^2)
dist=(dist1+dist2)/1000
}
dist=int(dist*k+0.5)/k #四捨五入
#ゼロパディング
split(dist,dec,".")
lgh=length(dec[2])
if(lgh==2){dist=dist "0"}
if(lgh==1){dist=dist "00"}
if(lgh==0){dist=dist ".000"}
idx[i]=x;idy[i]=y #測点座標
dst[i]=dist #追加距離
j=i
i=i+1
} #else
}
#起点名
/^ch/{ chr=$6; q=q+1}
END{
#エラーメッセージ
if(p>2){print "h#円/円弧が複数あります";exit}
if(q>2){print "h#文字が複数あります";exit}
#レイヤ指定
print lg #レイヤグループ
print ly #レイヤ
#文字設定
print cn #文字種
print ccn #文字基点
#測点名作図
for (i=1;i<=j;i++){
ind=chr "+" dst[i]
print "ch",idx[i],idy[i],dx,dy,ind}
#書込レイヤグループ・レイヤ
print culg
print culy
}
| 固定リンク
コメント
somem様
お世話になっております。
素晴らしいです~!!
直線+曲線と複合操作も
盛り込んで頂いて
感謝しております
毎度ご厚意に甘えてしまい
本当に恐縮です
先にお礼を申し上げます
投稿: a.fujii | 2023年11月 4日 (土) 23時22分
追伸:
実は
別でお願いしたかったのですが
センター点から左右に設置した
任意平行点(幅杭)にも測点距離が
配置され素晴らし過ぎます
※ちなみに配置された距離文字のレイヤ指定可能でしょうか?
投稿: a.fujii | 2023年11月 4日 (土) 23時32分
a.fujiiさん
スクリプト更新しました。
レイヤグループ、レイヤは、ユーザー設定で指定してください。
※外変実行後は、カレントレイヤに戻ります。
投稿: somem | 2023年11月 5日 (日) 08時52分
somem様
お世話になっております
早速のご対応ありがとう御座いました!
感謝しかありません
投稿: a.fujii | 2023年11月 5日 (日) 18時57分
somem様
お世話になっております。
少し気になったのですが
条件設定バーに命令文が出てこないですが…
REM #h1 範囲選択
REM #hc 指定点/起点を範囲選択してください
REM #h1 範囲選択
REM #hc 指定点/起点/曲線を範囲選択してください
REM #h1 範囲選択
REM #hc 指定点/起点/曲線を範囲選択してください
REM #1 曲/直/変化点を指定してください(これは出ます)
よろしくお願いいたします。
投稿: a.fujii | 2023年11月14日 (火) 16時27分
a.fujiiさん こんばんは。
#hcのメッセージは、画面内左上に表示します。
コントロールバーには表示しません。
ご確認ください。
投稿: somem | 2023年11月14日 (火) 19時12分
somem様
お世話になっております
すいません…モニターを大きくしたので
気ずきませんでした
投稿: a.fujii | 2023年11月15日 (水) 11時38分