« 六角形の作図 | トップページ | スリットの作図 »

2007年6月17日 (日)

寸法編集(カンマ付)

寸法編集、カンマ付に対応させてみました。                            

070617

#--------------------
#寸法値編集
BEGIN{if(N+0 == 0) exit;n=N;k=10;
#接頭語/カンマ/ピリオドの設定
mu="X";eq="=";cma=",";pd=".";
#文字幅/文字間隔の設定(cn4の場合)
chw=2;sp=0.25;
#選択図形の消去
print "hd"}
#
#縮尺
/^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]}
#寸法値読取(カンマ付対応)
/^cs/{dim=substr($6,2,15);dq=substr($6,1,1);dl0=length(dim)
split(dim,ca,",");ddt=length(ca[1]);
if(ca[2]+0==0 && ddt==1 && dl0>=2) {cm=1;cadim=ca[1]*1000}
if(ca[2]+0!=0){cm=1;cadim=ca[1] ca[2]}
if(ca[2]+0==0 && ddt>=2){cadim=ca[1]}
#ピッチ計算/四捨五入/(カンマ対応)
pch=cadim/n;pch=k*pch;pch=rnd(pch)/k;
split(pch,p,".");pdt=length(p[1]);
if(cm!=1){capch=pch}
if(cm==1 && pdt<=3){capch=pch}
if(cm==1 && pdt>=4 && p[2]+0==0){d1=substr(p[1],1,pdt-3);
d2=substr(p[1],pdt-2,3);capch=d1 cma d2}
if(cm==1 && pdt>=4 && p[2]+0!=0){d1=substr(p[1],1,pdt-3);
d2=substr(p[1],pdt-2,3);capch=d1 cma d2 pd p[2]}

#寸法値編集
chdim=n mu capch eq dim;ch=dq chdim;
#寸法値長さ
dn=length(dim);dl=dn*chw+(dn-1)*sp;
#文字長さ
chn=length(chdim);chl=chn*chw+(chn-1)*sp;
#文字座標移動/表示
if($5==0) {dx=sc*(chl-dl)/2;print "ch",$2-dx,$3,$4,$5,ch}
else{dy=sc*(chl-dl)/2;print "ch",$2,$3-dy,$4,$5,ch}}
#寸法線再表示
/^#/,/^NF==0/{if($1=="#"){next}if($1=="msg"){next}if(NF==1){print $1}
if(NF==4){print}if($1=="pt"){print}}
#
#四捨五入
function rnd(x){if(x>0) return int(x+0.5)}

|

« 六角形の作図 | トップページ | スリットの作図 »

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/94529/15471234

この記事へのトラックバック一覧です: 寸法編集(カンマ付):

« 六角形の作図 | トップページ | スリットの作図 »