« 円中心補助線 | トップページ | 2.5DからSketchUp(サイコロ) »

2008年1月22日 (火)

正多角形に変換

円/円弧を正多角形/正多角形の一部に変換する外部変形です。

注)1.円弧変換の不具合を修正しました。    2/2
2.軸角を含む円弧データに対応しました。 2/5 管理人

2.5Dから3D-dxf を利用する場合にどうぞ。

作図方法は、範囲選択から 左AM 0 時「確定 基点(free)」です。
同一レイヤグループのレイヤは、同時に実行可能。
変換した図形は、曲線属性化されます。
辺の数を変更したい場合は、スプリクト"polygon.awk "の N=90を修正してください。

<polygon.bat>
--------------------
@REM 正多角形変換
@echo off
REM
REM #jww
REM #cd
REM #h1 矩形選択
REM #hr
REM #e
REM
jgawk -f polygon.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

<polygon.awk>
--------------------
#正多角形変換
#初期設定
BEGIN{N=90;pi=atan2(0,-1);thd=360/N;thr=2*pi/N;print "hd"}
#
#円/正多角形
/^#/,/NF==0/{
if($1=="#"){next}
if($1!="ci"){print $0;next}
if($1=="ci" && NF==4){
xc=$2;yc=$3;R=$4;
print "pl";
for(i=0;i<=N;i++){ang=i*thr;x[i]=xc+R*cos(ang);y[i]=yc+R*sin(ang)}
for(j=0;j<=N-1;j++){printf "%.15g %.15g %.15g %.15g\n",x[j],y[j],x[j+1],y[j+1]}
next}
#円弧/線分割
if($1=="ci" && $7==1 && NF==8){
xc=$2;yc=$3;R=$4;an1=$5;an2=$6;hk=$8*pi/180;th1=an1*pi/180;th2=an2*pi/180+hk;
print "pl";
if(an2<an1){thw=360-an1+an2;th1=th1-2*pi}else{thw=an2-an1}
}
nf=thw/thd;n=rndup(nf);
for(i=0;i<=n-1;i++){ang=i*thr+th1+hk;xa[i]=xc+R*cos(ang);
ya[i]=yc+R*sin(ang);xa[n]=xc+R*cos(th2);ya[n]=yc+R*sin(th2)}
for(j=0;j<=n-1;j++){printf "%.15g %.15g %.15g %.15g\n",xa[j],ya[j],xa[j+1],ya[j+1]}
next}
#END
#ユーザー定義関数
function rndup(x){if(x-int(x)>0){return int(x)+1}else{return int(x)}}

|

« 円中心補助線 | トップページ | 2.5DからSketchUp(サイコロ) »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 正多角形に変換:

« 円中心補助線 | トップページ | 2.5DからSketchUp(サイコロ) »