破断線の作図
任意の2点を指定して、破断線を作図する外部変形です。
始点と終点を通る線が、水平/垂直に近い場合は、水平/垂直方向に作図します。
07/5/10 wdの設定値を5から2に変更しました。
設定は、終点位置とX軸/Y軸からの距離が ±2(図寸)以内。
右AM9時「線上点・交点」が使用できます。
但し、水平/垂直方向に作図する場合、
指示線は、水平線/垂直線を使用してください。
-----< 破断線.bat >-----
@REM 破断線の作図
@echo off
REM #jww
REM #cd
REM #0 始点を指示してください。(L)/(R)
REM #1 終点を指示してください。(L)/(R)
REM #hr
REM #e
jgawk -f brk_line.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------
-----< brk_line.awk >-----
#破断線の作図
#定数の設定
BEGIN{
pi=atan2(0,-1);
ang=15*pi/180;sc=1;w=1.1;h=2;
x0=0;y0=0;wd=2
lt="lt1" ;lc="lc1"
}
#終点座標の読取り
/^hp1/{x1=$2;y1=$3}
#縮尺
/^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]
}
#破断記号の座標計算
{
if(x1>=-wd*sc && x1<=wd*sc){an=pi/2;x1=0;x2=0;x5=0;
y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
{an=atan2(y1,x1);
x2=x1/2-sc*w*cos(an);
x5=x1/2+sc*w*cos(an);
y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
if(y1>=-wd*sc && y1<=wd*sc){an=0;y1=0;y2=0;y5=0;
x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{
x3=x1/2-sc*h*cos(pi/2-an-ang);y3=y1/2+sc*h*sin(pi/2-an-ang);
x4=x1/2+sc*h*cos(pi/2-an-ang);y4=y1/2-sc*h*sin(pi/2-an-ang);
}
#各座標の出力
END{
print lt;print lc;
printf ("%.15g %.15g %.15g %.15g\n",x0,y0,x2,y2);
printf ("%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3);
printf ("%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4);
printf ("%.15g %.15g %.15g %.15g\n",x4,y4,x5,y5);
printf ("%.15g %.15g %.15g %.15g\n",x5,y5,x1,y1);
}
#----- 注記 -----
#1.線色は、"lc1"で線色1に設定しています。#線色2にする場合は"lc2"に変更。
#2.wdを変更すると、水平/垂直方向に作図する指示点範囲が変わります。
| 固定リンク
コメント
wdの設定が±5で破断線の長さが短い場合、
任意角度で作図できる範囲が狭いので設定値を変更しました。
角度で範囲設定できる様に、スプリクトの変更が必要ですね。m(__)m
投稿: somem | 2007年5月10日 (木) 23時37分