« 弓形ソリッド | トップページ | 線種変更 »

2023年11月 3日 (金)

測点距離作図

起点からの距離を測点名に追加して作図する外部変形。
※十分検証してからご使用ください。

<操作方法>
1.直線区間
  範囲選択で起点名、指定点を選択、
  起点上で右AM0時 確定 基点<<READ>>を実行
2.曲線区間
  範囲選択で起点名、指定点、曲線を選択、
  起点上で右AM0時 確定 基点<<READ>>を実行
3.直線→曲線、曲線→直線
 範囲選択で起点名、指定点、曲線を選択、
 起点上で右AM0時 確定 基点<<READ>>を実行
 変化点を指定 

Photo_20231103215801
Photo_20231103214901

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分

コメントを書く



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




« 弓形ソリッド | トップページ | 線種変更 »