引出線(文字種指定)
引出線で、線色/線種/文字種を指定するスプリクトです。
バッチファイルは、AWKファイル名を変更して使用してください。
◇線色/線種/文字種を変更する場合は、茶文字の記述を変更してください。
<leader2.awk>
--------------------
##### 引出線2 #####
### 線色・線種・文字種指定
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置・水平線補正
cxu=1.0;cyu=0.3;cyl=0.5;adl=0.5;
#矢印長さ・角度
arw=3;th=pi/12;
#線色
lc="lc1";
#線種
lt="lt1";
#文字種
cn="cn4";cnn=substr(cn,3,1);
#注記(総文字数 全角50文字まで)
cc=substr(CC,3,100);
split(cc,T,"¥");tu=T[1];tl=T[2];
ccu=dq tu;ccl=dq tl;
tnu=length(tu);tnl=length(tl)
if(tnu>tnl){tn=tnu/2}else{tn=tnl/2}
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#文字幅/高さ/間隔
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1);cw=CW[cnn]}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1);ch=CH[cnn]}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1);cd=CD[cnn]}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
dx=cxu+sc*(tn*(cw+cd)+adl);
#引出線角度
anr=atan2((ye-ys),(xe-xs));
#矢印終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
###データ書出し
#線色/線種指定
print lc;print lt;
#曲線属性化
print "pl";
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl;
if(xs<=xe){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+dx,ye;print cn;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye-cyl-ch,5,0,ccl}}
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-dx,ye;print cn;
printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------
| 固定リンク
コメント