□投稿者/ 田舎の土建屋 (1回)-(2017/04/26(Wed) 16:47:51)
| 当方win7 pro XPmode HO cad ver2.7使用gawkは同一フォルダに在り。 2点間で互いに高さを持つ時、H=1mのピッチ割を図面に落とす。 「おーくの友」の作者に謝意を送ります。
REM m補助【HO_CAD用に変更】 * @echo off REM #jw REM #h0 REM #cd REM #1起点指示 REM #2端点指示 REM #1ch 起点高さ指示【TXT読み込み】 REM #2ch 端点高さ指示【TXT読み込み】 REM #e copy jwc_temp.txt test.txt > nul gawk.exe -f m補助.awk test.txt > jwc_temp.txt del test.txt end
# m補助.awk
/^hp1/{x1=$2;y1=$3} /^hp2/{x2=$2;y2=$3} /^hhp3/{n=1} /^hhp4/{n=2} /^ch/{ if(n==1){h1=substr($6,2)*10^3} if(n==2){h2=substr($6,2)*10^3} } END{ if((h2-h1)>0) { xu=x2;yu=y2;hu=h2;xb=x1;yb=y1;hb=h1 } else{xu=x1;yu=y1;hu=h1;xb=x2;yb=y2;hb=h2 } si=xu-xb; xsgn= sgn(si); si=yu-yb; ysgn= sgn(si); c=1000;hu=hu/c;hb=hb/c xk=(hu-hb)/(xu-xb+1e-7);yk=(hu-hb)/(yu-yb+1e-7) ab=xk;ab=abs(ab) xk=ab ab=yk;ab=abs(ab) yk=ab xt=(hb-int(hb))/xk;yt=(hb-int(hb))/yk xmk=1/xk;ymk=1/yk xge=xb-xsgn*xt;yge=yb-ysgn*yt;xcyo=(xu-xge);ycyo=(yu-yge) if(ysgn==0){n=xcyo/xmk} else{n=ycyo/ymk} ab=n;ab=abs(ab) n=ab;n=int(n) for(i = 1; i<= n; i++){ printf("pt %e %e\n",(i*xsgn*xmk+xge),(i*ysgn*ymk+yge)) }} function abs(ab) { if (ab<0) return -ab else return ab } function sgn(si) { if (si > 0) { return si=1} else if (si == 0) { return si=0} else { return si=-1; }}
|
|