引出線(横)
引出線の横に注記を作図するスプリクトです。
使い方は、引出線 と同じです。
バッチファイルのAWKファイル名を変更してお使いください。
<leader3.awk>
--------------------
##### 引出線3 #####
### 線色・線種・文字種指定
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置補正
cxu=1.5;cyu=0.1;cyl=0.3;
#水平線長さ
hl=3.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;hl=sc*hl;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
#文字位置補正(左側注記)
dx=sc*(tn*(cw+cd));
#引出線角度
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+hl,ye;print cn;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye+cyu,5,0,ccu;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-cyl-ch,5,0,ccl}}
#左側注記
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-hl,ye;print cn;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye+cyu,5,0,ccu
printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------
◇書込文字種で作図する場合のスプリクトです。 09.1.12 追記 --------------------
##### 引出線(横)#####
### 書込文字種 ###
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置補正
cxu=1.5;cyu=0.1;cyl=0.3;
#水平線長さ
hl=3.5;
#矢印長さ・角度
arw=3;th=pi/12;
#線色
lc="lc1";
#線種
lt="lt1";
#注記(総文字数 全角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)}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1)}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1)}
/^cn/{if(NF==1){cn=substr($1,3,1);cw=CW[cn];ch=CH[cn];cd=CD[cn]}
if(NF==5){cw=$2;ch=$3;cd=$4}}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;hl=sc*hl;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
#文字位置補正(左側注記)
dx=sc*(tn*(cw+cd));
#引出線角度
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+hl,ye;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye+cyu,5,0,ccu;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-cyl-ch,5,0,ccl}}
#左側注記
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-hl,ye;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye+cyu,5,0,ccu
printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------
| 固定リンク
コメント