当方の「script!3D」を使って立体を作ろう話その27。
今回は、面取直方体の作図命令です。
3D-CAD/CG では、直方体を作図してから面取りを掛けるって感じになると思いますが「script!3D」でそういう事は出来ませんけれども、最初から面取りを掛けている直方体を作図する、という事は出来るようにしています。面取りするのでも簡単なようで結構面倒臭いので~
面取直方体1
CBOX1 n,sx,sy,sz,cx,cy,cz,f1,f2,f3,f4,f5,f6,f
原点・作図軸・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1~)
sx : X軸方向長さ[mm](>0)
sy : Y軸方向長さ[mm](>0)
sz : 高さ[mm](>0)(=0の時は面取部のみ,高さは表現しない)
cx : X軸方向面取量[mm](0≦cx<sx(/2))
cy : Y軸方向面取量[mm](0≦cy<sy(/2))
cz : Z軸方向面取量[mm](0≦cz<sz)
f1 : 底面の表示 0:しない 1:する
f2 : 上面の表示 0:しない 1:する
f3 : 正面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f4 : 左面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f5 : 背面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f6 : 右面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
簡単例です。
// 面取直方体作図テスト01
#VAR
 sx = 100   ;*X軸方向長さ[mm]
 sy = 120   ;*Y軸方向長さ[mm]
 sz = 150   ;*高さ[mm]
 cx = 10   ;*X軸方向面取量[mm]
 cy = 10   ;*Y軸方向面取量[mm]
 cz = 10   ;*Z軸方向面取量[mm]
 n
#DRAW
 PEN 120
 CBOX1 n,sx,sy,sz, cx,cy,cz, 2,2,2,2,2,2, 0
実行します。
20090313h

この機能は上面の部分だけを面取りします。
高さを「0」にすると、高さに関して面取り部分だけを表示するようになります。
20090313i

これを組み合わせて軸回転をして作図するようにすれば底面部分を面取りする直方体を作図する事が出来ます。
// 面取直方体作図テスト02
#VAR
 sx = 100   ;*X軸方向長さ[mm]
 sy = 120   ;*Y軸方向長さ[mm]
 sz = 150   ;*高さ[mm]
 cx = 10   ;*X軸方向面取量[mm]
 cy = 10   ;*Y軸方向面取量[mm]
 cz = 10   ;*Z軸方向面取量[mm]
 n
 w1
#DRAW
 PEN 121
 MATRIXO 0,0,cz
 CAL w1 = sz - cz  // 面取り分、引く
 CBOX1 n,sx,sy,w1, cx,cy,cz, 1,1,2,2,2,2, 0

 CAL w1 = PI
 RLXMATR w1
 CBOX1 n,sx,sy,0, cx,cy,cz, 2,2,2,2,2,2, 0
実行します。
20090313j

面取りをしたい側、したくない側、を指定できるよう、f3~f6の引数で指定できるようにしています。

次に第2パターンの面取直方体です。
面取直方体2
CBOX2 n,sx,sy,sz,cx,cy,cz,f1,f2,f3,f4,f5,f6,f
原点・作図軸・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1~)
sx : X軸方向長さ[mm](>0)
sy : Y軸方向長さ[mm](>0)
sz : 高さ[mm](>0)(=0の時は面取部のみ,高さは表現しない)
cx : X軸方向面取量[mm](0≦cx<sx(/2))
cy : Y軸方向面取量[mm](0≦cy<sy(/2))
cz : Z軸方向面取量[mm](0≦cz<sz)
f1 : 底面の表示 0:しない 1:する
f2 : 上面の表示 0:しない 1:する
f3 : 正面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f4 : 左面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f5 : 背面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f6 : 右面側 有効無効フラグ 0:無効/面無 1:無効/面有 2:有効
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
簡単例です。
// 面取直方体作図テスト03
#VAR
 sx = 100   ;*X軸方向長さ[mm]
 sy = 120   ;*Y軸方向長さ[mm]
 sz = 150   ;*高さ[mm]
 cx = 10   ;*X軸方向面取量[mm]
 cy = 10   ;*Y軸方向面取量[mm]
 cz = 10   ;*Z軸方向面取量[mm]
 n
#DRAW
 PEN 122
 CBOX2 n,sx,sy,sz, cx,cy,cz, 1,1,2,2,2,2, 0
実行します。
20090313k

という具合に側面にも面取りを施すパターンです。

■GOOD JOB!
この記事よいネ!クリック!→