当方の「script!3D」を使って立体を作ろう話その14。
今回は、円柱(円筒、シリンダー)の作図命令です。
円といっても内接する多角形になりますけれど。
円柱の作図
CYLIND n,sp,r,z,f1,f2,f
原点・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1~)
sp: 分割数(3-1000)
設定画面の「円円弧分割数」を利用する場合は
変数 SetArcSep を指定して下さい。
r : 底面半径[mm] (>0)
z : 高さ [mm] (>0)
f1: 底面の表示 0:しない 1:する
f2: 上面の表示 0:しない 1:する
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
例です。分割数が多ければ多いほど綺麗に円に見えるようになりますが、データ量が大きくなります。
// 円柱作図テスト01
#VAR
n
#DRAW
PEN 11
CYLIND n,SetArcSep,50,100, 1,1,0
実行すると下記のようになります。

円形の上面・底面は分割数分の三角面の集まりとなります。側面は分割数分の四角面の集まりとなります。例えば分割数を12とすると、上面12+側面12+底面12=36個のデータとなります。四角面を2つの三角面のデータにするソフトに受け渡した場合には、上面12+側面12×2+底面12=48個のデータとなります。
データが多ければ多い程、仲介するファイルのサイズも大きくなりますし、相手CAD/CGソフトでも重くなっていきますので、分割数はほどほどにした方が良いです。ちなみにスケッチアップでの円の標準の分割数(セグメント数)は24のようですね。
次に「円底面体(円形チューブ)」です。
これは四角底面体、三角底面体と同様、円錐の上部を水平面ですぱっと切ったような形状となります。
円底面体の作図
CTUBE n,sp,sr,sz,ur,ax,ay,f1,f2,f
原点・作図軸・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1~)
sp: 分割数(3-1000)
sr: 底面半径[mm] (>0)
sz: 高さ [mm] (>0)
ur: 上面半径[mm] (>0)
ax: 上面偏心X [mm]
ay: 上面偏心Y [mm]
f1: 底面の表示 0:しない 1:する
f2: 上面の表示 0:しない 1:する
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
以下は一例です。
// 円底面体作図テスト01
#VAR
n
#DRAW
PEN 13
CTUBE n,SetArcSep,50,100, 20, 0,0, 1,1,0
これを実行すると下図のようになります。

偏心X,Yを指定すると、上面がスライド移動して、斜めになったような図形を作図する事が出来ます。
次に「円錐(コーン)」です。
円錐の作図
CCONE n,sp,sr,sz,ax,ay,f1,f
原点・作図軸・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1~)
sp: 分割数(3-1000)
sr: 底面半径[mm] (>0)
sz: 高さ [mm] (>0)
ax: 上面偏心X [mm]
ay: 上面偏心Y [mm]
f1: 底面の表示 0:しない 1:する
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
一例です。
// 円錐作図テスト01
#VAR
n
#DRAW
PEN 15
CCONE n,SetArcSep,50,100, 0,0, 1,0
実行します。

偏心X,Yを指定すると、頂点がスライド移動して、斜めになったような図形を作図する事が出来ます。
3D図形を複数合体させるような場合は、接する上面や底面の表示を「しない」にすると良い場合が多いです。相手の3D-CAD/CGソフトによっては、面が重複している部分が点滅?状態になったりして見た目が余りよくない状態になったりする場合がありますし、作図しなくて良い面は無い方がファイルサイズも小さくなり、データもその分軽くなります。
例えば、円柱と円底面体と円錐を合体させたような図形を作図するとします。
// 円錐作図テスト02
#VAR
n
#DRAW
PEN 1
CTUBE n,SetArcSep,100,50, 50, 0,0, 1,1,0
PEN 2
MATRIXL 0,0,50 // 相対原点を上に+50
CYLIND n,SetArcSep,50, 50, 1,1,0
PEN 3
MATRIXL 0,0,50 // 相対原点を上に+50
CCONE n,SetArcSep,50,50, 0,0, 1,0
これを実行すると下図のようになります。

これをスケッチアップへ送信します。以下の画面が出ます。

↓

前の方の面を非表示にしてみます。

すると、円錐と円柱、円柱と円底面体の間に面があるのが分ります。しかも二重に重なった状態です。この面は要らないので、円底面体の底面以外は作図しないようにします。
// 円錐作図テスト03
#VAR
n
#DRAW
PEN 1
CTUBE n,SetArcSep,100,50, 50, 0,0, 1,0,0
PEN 2
MATRIXL 0,0,50 // 相対原点を上に+50
CYLIND n,SetArcSep,50, 50, 0,0,0
PEN 3
MATRIXL 0,0,50 // 相対原点を上に+50
CCONE n,SetArcSep,50,50, 0,0, 0,0
上面・底面の表示をしない、としている以外は先と同じです。実行します。

見た目は同じですね。スケッチアップへ送信します。

↓

前回はデータ数は「96」だったものが「48」つまり半分になっています。先と同様に面を非表示にします。

図形と図形の間の面がなくなりました。円錐の底面12個+円柱の上面・底面24個+円底面体の上面12個=合計48個分が出力されていない=データが軽くなった、という事です。
データ量が少ないうちは、あってもなくてもさほど変わらないと感じるでしょうけれども、全体のデータ量が大きくなればなるほど、不要な面の蓄積が効いてきますので、こまめに不要な面は出力しない、と決めて作っておくほうが良い場合が多いです。
| このブログのURL
|この記事のURL