2025年1月20日(月) 04:19 JST

2014年度第2回GDL講習会

  • 2014年4月30日(水) 10:27 JST
  • 投稿者:
    ゲストユーザ

第2回 基本的な図形2と角度計算

第2回の講習では昨年と同様に図形をパラメトリックに作成することを主題にしました。講習で取り扱った題材は昨年と同様ですので、こちらのページをご覧ください。課題では講習で使った円錐台を生成するコマンドであるCONEコマンドを用いて「Round chair」を作成しました。



今回の講習では、CONE、PRISMコマンドを扱いました。また講習では取り扱いませんでしたが、RULEDコマンドも便利なので使ってみましょう。

<おさらい>

CONE h, r1, r2, alpha, alpha2

CONEコマンドは高さ、上下の円の半径、Z軸に関する傾きを引数にすることができます。Y軸に関して回転させることで今回の講習で取り扱ったような、傾いた円柱を作ることができます。

PRISM div, h, x1, y1, x2, y2,...

PRISMコマンドは、XY平面上に作成した図形を、Z軸方向に押し出して形状を生成します。引数には、平面での頂点数、押し出す高さ、平面図形のXY座標を渡します。

RULED div, 1+2+4+16+32, x1, y1, z1, x2, y2, z2,...

RULEDコマンドは、上面と下面の図形を序数の対応ごとに結んで立体を生成します。divは面の頂点数、その次の数はマスクの設定を意味しますが、詳しくはいずれ解説します。 そのあとに下面の図形の座標、上面の図形の座標を渡します。

Round chair

変数を用いることにより、ある値を変えてもモデル全体の形状を破綻なく、パラメトリックに変更できます。 脚が椅子の軸に接する位置や脚の地面に接する角度を計算で求めます。
!!丸椅子の部材寸法
!!座面
zamen_r = 0.19   !!座面の半径
zamen_h = 0.05 !!座面の厚さ
!!ジョイント部
joint_r = 0.02 !!半径
joint_h = 0.03 !!高さ
!!軸
jiku_w = 0.08 !軸部の幅
jiku_d = 0.08   !軸部の長さ
jiku_h = 0.16   !軸部の高さ
jiku_z = 0.14	 !軸部の位置の高さ
!!脚
leg_u_r = 0.025  !!軸部接地部の半径
leg_d_r = 0.01    !!地面接地部の半径
leg_h = 0.18       !!地面から軸部接地部までの高さ
leg_position_r = zamen_r * 1.25  !!軸の中心から脚の中心までの距離
leg_angle = ATN((leg_position_r - jiku_w / 2) / leg_h)   !!足の傾き
CONEコマンドで生成された上面と下面はZ軸に関して傾くので、ROTYするとうまくいきます。 椅子の材質は先週の講習で取り扱ったMATERIALコマンドを用いてみましょう。
MATERIAL 59
!!脚の配置
FOR i = 1 to 4
	DEL TOP
	ADD leg_position_r * cos(90 * i), leg_position_r * sin(90 * i), 0
	ROTZ 90 * i
	ROTY - leg_angle
	CONE leg_h / cos(leg_angle), leg_d_r, leg_u_r, 90 + leg_angle, leg_angle
NEXT i

!!軸
DEL TOP
ADDZ jiku_z
ADD - jiku_w / 2, -jiku_l / 2, 0
BRICK  jiku_w, jiku_d, jiku_h

!!ジョイント
DEL 1
ADDZ jiku_h
CYLIND joint_h, joint_r

!!座面
MATERIAL 156
CYLIND zamen_h, zamen_r
DEL TOP


継手仕口 蟻継ぎ

次に継手仕口の作成です。 PRISMでできる物の例として蟻継ぎを作成してみましょう。蟻継ぎの名前の由来はメス側が蟻の口、牙に似ているからと言われています。 角材の中心軸に対して左右対称になっているので簡単に座標値を整理することができます。

!!蟻継の寸法
atama_w = 0.045	!!頭の幅
atama_d =	0.030	!!頭の長さ
kubi_w = 0.030	!!首の広さ
width = 0.105		!!角材の太さ
length = 0.400	!!角材の長さ
div = 8				!!頂点数
h = width/2			!!高さの半分
koshi = 0.015	!!腰

!!男木
x1 =   width/2		 : y1 = 0
x2 =   x1	   		 : y2 = length
x3 =   kubi_w/2      : y3 = y2
x4 =   atama_w/2 	 : y4 = y2 + atama_d
x5=  - x4	 	 	 : y5 = y4
x6 = - x3 	 		 : y6 = y3
x7 = - x2 			 : y7 = y2
x8 = - x1			 : y8 = y1

ADDZ h
PRISM div , h ,x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8
DEL 1
ADDX  -h
BLOCK width, length - koshi , h


!!女木
x11 =   width/2		 : y11 = 0
x12 =   x2                   : y12 = length + atama_d
x13 =   kubi_w/2          : y13 = y12
x14 =   atama_w/2       : y14 = y12 - atama_d
x15=  - x14 		 : y15 = y14
x16 = - x13 	 	 : y16 = y13
x17 = - x12 		 : y17 = y12
x18 = - x11 		 : y18 = y11

DEL TOP
ADDX 3*width
ADDZ h
PRISM div , h ,x11, y11, x12, y12, x13, y13, x14, y14, x15, y15, x16, y16, x17, y17, x18, y18
DEL 1
ADDX  -h
BLOCK width, length + koshi + atama_d, h
DEL TOP

継手仕口 鎌継ぎ

最後に鎌継ぎを作成しましょう。 鎌継ぎは先ほどの蟻継ぎと異なり、鎌が斜めに切れ込んでいるのでPRISMでは生成することができません。 しかし、RULEDコマンドを用いれば、上面と下面の図形が異なっていてもを結ぶことができます。 鎌の切れ込みの角度計算もあるので今回のまとめとしてぜひ挑戦してみましょう。


width = 0.105
length = 0.400
kubi_w = 0.030
kubi_d = 0.060
atama_w = 0.300
atama_d = 0.060
atama_angle = ATN(kubi_w/(2*(atama_d + kubi_d)))
kama_set_back = 0.007
kama = atama_d*TAN(atama_angle)
kama_lower = (atama_d - kama_set_back)*TAN(atama_angle)
kama_set_back = 0.007
koshi = 0.015


!!男木

ADDX - width/2 
BLOCK width, length - koshi, width/2
DEL 1
ADDZ width/2
x1 =   width/2            : y1 = 0
x2 =  x1          : y2 = length
x3 =  kubi_w/2      : y3 = y2
x4 = x3  			: y4 = length + kubi_d 
x5 = x3 + kama           : y5 = y4
x6 =  x3                     : y6 = y4 + atama_d
x7 =   - x6                 : y7 = y6
x8 =   - x5                 : y8 = y5
x9 =   - x4                 : y9 = y4
x10 = - x3                 : y10 = y3
x11 = - x2                 : y11 = y2
x12 = - x1                 : y12 = y1

RULED 12,1+2+4+16+32,
x1, y1, 0,
x2, y2, 0,
x3, y3, 0,
x4, y4 + kama_set_back, 0,	!!鎌に斜めの傾斜を与える
x5, y5 + kama_lower, 0,
x6, y6, 0,
x7, y7, 0,
x8, y8 + kama_lower, 0,
x9, y9 + kama_set_back, 0,
x10, y10, 0,
x11, y11, 0,
x12, y12, 0,
x1, y1, width/2,
x2, y2, width/2,
x3, y3, width/2,
x4, y4, width/2,
x5, y5, width/2,
x6, y6, width/2,
x7, y7, width/2,
x8, y8, width/2,
x9, y9, width/2,
x10, y10, width/2,
x11, y11, width/2,
x12, y12, width/2

DEL TOP

!!女木
ADDX 2.5*width

ADDX - width/2 
BLOCK width, length + atama_d + kubi_d + koshi, width/2
DEL 1
ADDZ width/2
x1 =   width/2           : y1 = 0
x2 =  x1                    : y2 = length + kubi_d + atama_d
x3 =  kubi_w/2           : y3 = y2
x4 = x3                     : y4 = length + atama_d
x5 = x3 + kama          : y5 = y4
x6 =  x3                    : y6 = length
x7 =   - x6                : y7 = y6
x8 =   - x5                : y8 = y5
x9 =   - x4                : y9 = y4
x10 = - x3                : y10 = y3
x11 = - x2                : y11 = y2
x12 = - x1                : y12 = y1

RULED 12,1+2+4+16+32,
x1, y1, 0,
x2, y2, 0,
x3, y3, 0,
x4, y4 - kama_set_back, 0,	!!鎌に斜めの傾斜を与える
x5, y5 - kama_lower, 0,
x6, y6, 0,
x7, y7, 0,
x8, y8 - kama_lower, 0,
x9, y9 - kama_set_back, 0,
x10 ,y10, 0,
x11 ,y11, 0,
x12 ,y12, 0,
x1, y1, width/2,
x2, y2, width/2,
x3, y3, width/2,
x4, y4, width/2,
x5, y5, width/2,
x6, y6, width/2,
x7, y7, width/2,
x8, y8, width/2,
x9, y9, width/2,
x10, y10, width/2,
x11, y11, width/2,
x12, y12, width/2

頂点数が多いため、スクリプトが煩雑に見えますが、対称性を使っているのでとても分かりやすいと思います。 PRISMにはさまざまな類型コマンドもあるので使ってみてください。

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。