方位記号作図

線選択の際、基準線の中心よりも北側をマウス指示で、基準線の中心に方位を作成します。

conpass.bat—————————————————————————————————-

@REM 方位記号作図
@REM conpass.bat 2012/07/04 tincan
@echo off
copy jwc_temp.txt temp.txt > nul
jgawk -f compass.awk temp.txt %1 > jwc_temp.txt
goto END
REM
REM #jw
REM #h0
REM #g0
REM #1ln 基準線の北側をマウス指示
REM #e
REM
:END
REM pause

compass.awk—————————————————————————————————-

# 方位記号作図
# compass.awk 2012/07/04 tincan
#
BEGIN{
CONVFMT="%.10f"
r=15 # 方位円の半径(mm)
}
/^h[qk]/{next}
/^hs/{for(i=0;i<=15;i++)s[sprintf("lg%x",i)]=$(i+2);next} /^h[cn]/{next} /^hp1ln/{x1=$2;y1=$3;next} /^lg/{r*=s[$1];next} /^l[yct]/{next} /^[c#]/{next} /^hhp1ln/{ getline x=($1+$3)/2;y=($2+$4)/2 if(0<=sqrt(($1-x1)^2+($2-y1)^2)-sqrt(($3-x1)^2+($4-y1)^2)){ x1=$3;y1=$4;next } x1=$1;y1=$2;next } END{ print_C(x,y,atan2(y1-y,x1-x)) } # ユーザー定義関数 # 方位の書出 function print_C(x,y,a){ b=atan2(0.6,-0.8) c=atan2(0.6,0.8) print_ln(x+r*cos(a-b),y+r*sin(a-b),x+r*cos(a),y+r*sin(a)) print_ln(x+r*cos(a+b),y+r*sin(a+b),x+r*cos(a),y+r*sin(a)) print_pt(x,y) print_ci(x,y,r) print_ci(x-r*1.6*cos(a),y-r*1.6*sin(a),r,degrees(a-c),degrees(a+c)) printf"h#《終了》方位角=%.3f度\n",degrees(atan2(x2,y2)) } # 線の書式 function print_ln(x1,y1,x2,y2){ printf" %.10f %.10f %.10f %.10f\n",x1,y1,x2,y2 } # 点の書式 function print_pt(x,y){ printf"pt %.10f %.10f\n",x,y } # 円、円弧の書式 function print_ci(x,y,r,d1,d2){ printf"ci %.10f %.10f %.10f %.10f %.10f\n",x,y,r,d1,d2 } # ラジアンを角度に変換 function degrees(rad){ return(deg=rad*180/atan2(0,-1)) } # 角度をラジアンに変換 function radians(deg){ return(rad=deg*atan2(0,-1)/180) }

----------------------------------------------------------------------------------------------------