somemさんのブログ等で傘の話がありましたので
Script!3D で作ってみました。
(ちょっと時間が掛かってしまいました・・・)
という感じで、スケッチアップに送信して
先端部の円に線があるのを消して、ソフトニング。支柱と柄の部分は少し粗いので別個に再度ソフトニング。
こんな感じかなぁ?
Script!3D で作ってみました。
(ちょっと時間が掛かってしまいました・・・)
// 傘実行しますと
#VAR
kcol = 1 ;*傘の線色
scol = 7 ;*支柱の線色
ecol = 5 ;*柄の線色
kh = 300 ;*傘高さ
kr = 500 ;*傘半径
kn = 8 ;*角数
krx = 20 ;*krx
krz = 30 ;*krz
ss = 100 ;*先端部長さ
sl = 800 ;*支柱長さ
sr = 5 ;*支柱半径
el = 100 ;*柄長さ
er = 10 ;*柄半径
er2 = 40 ;*柄外半径
i
i1
j
khx
khz
khr
khsa
khea
ka
krd
krxx
krzz
krr
kx
ky
x1
y1
z1
x2
y2
z2
x3
y3
z3
wx1
wy1
wr1
wsa1
wea1
wx2
wz2
wr2
wsa2
wea2
a1
a2
a3
a4
wx3
wy3
wz3
#DRAW
LAYER 0
PEN kcol
CAL x1 = kr
CAL z1 = 0
CAL x2 = 0
CAL z2 = kh
CAL x3 =-kr
CAL z3 = 0
GET3PA i,j,khx,khz,khr,khsa,khea, x1,z1,x2,z2,x3,z3
CAL khea = khea / 2
//
CAL ka = 2.0*PI / kn
CAL krd = kr
CAL krxx = krx
CAL krzz = krz
CAL krr = kr
CAL i1 = 0
#WHILE (i1 < (SetArcSep-1))
CAL kx = krd*Sin(ka/2)
CAL ky = krd*Cos(ka/2)
CAL x1 = kx
CAL y1 =-ky
CAL x2 = 0
CAL y2 =-ky + krxx
CAL x3 =-kx
CAL y3 =-ky
GET3PA i,j,wx1,wy1,wr1,wsa1,wea1, x1,y1,x2,y2,x3,y3
// ARC2D i,SetArcSep, wx1,wy1,wr1,wsa1,wea1
//
CAL x1 =-kx
CAL z1 = 0
CAL x2 = 0
CAL z2 =-krzz
CAL x3 = kx
CAL z3 = 0
GET3PA i,j,wx2,wz2,wr2,wsa2,wea2, x1,z1,x2,z2,x3,z3
//
CAL z3 = Sqrt(khr*khr - krr*krr) + khz
//
CAL a1 = (wea1 - wsa1)/SetArcSep
CAL a2 = wsa1
CAL a3 =-(wea2 - wsa2)/SetArcSep
CAL a4 = wea2
CAL x1 = wx1 + wr1*Cos(a2)
CAL y1 = wy1 + wr1*Sin(a2)
CAL z1 = wz2 + wr2*Sin(a4) + z3
CAL wx3 = x1
CAL wy3 = y1
CAL wz3 = z1
CAL i = 0
#WHILE (i < SetArcSep)
CAL a2 = a2 + a1
CAL a4 = a4 + a3
CAL x2 = wx1 + wr1*Cos(a2)
CAL y2 = wy1 + wr1*Sin(a2)
CAL z2 = wz2 + wr2*Sin(a4) + z3
LINE3D j,x1,y1,z1, x2,y2,z2
CAL x1 = x2
CAL y1 = y2
CAL z1 = z2
CAL i = i + 1
#END
//
RENCLR
RENSET
RLSEL1 j,-1,-1,0, wx3,wy3,wz3,0.001,1,1,999,999
#IF (i1 > 0)
R_RULED 0,-1,-1,1
#END
//
CAL krd = krd - kr/SetArcSep
CAL krxx = krxx - krx/SetArcSep
CAL krzz = krzz - krz/SetArcSep
CAL krr = krr - kr/SetArcSep
CAL i1 = i1 + 1
#END
S_PICK3 0,-1,-1, 0,0,kh
// 線を消す
ALLSEL j, 1,1,999,999
S_DELE
// コピー
ALLSEL j, 1,6,999,999
CAL a1 = 2.0*PI *(kn-1)/kn
CAL i = kn-1
S_COPRS 0,-1,-1,i, 0,0,0, 0,0,0, 0,0,kh, 1,1,1, 0,a1,0
// ----- 支柱〜 -----
PEN scol
// 先端部
CAL x1 = 0
CAL y1 = 0
CAL z1 = kh
MATRIXO x1,y1,z1
CAL z2 = sr/2
CTUBE i,SetArcSep,sr,ss,z2,0,0,0,1,0
// 支柱
CAL z1 = kh - sl
MATRIXO x1,y1,z1
CYLIND i,SetArcSep,sr,sl,0,0,0
// --- 柄 ---
PEN ecol
#IF (er > sr)
DSLD2D i,SetArcSep,0,0,er,er,0,sr,0
#ELSE
#IF (er < sr)
DSLD2D i,SetArcSep,0,0,sr,sr,0,er,0
#END
#END
#IF (el > er2)
CAL z1 = -(el - er2)
MATRIXL x1,y1,z1
CAL z1 = el - er2
CYLIND i,SetArcSep,er,z1,0,0,0
#END
LAYER 1
CSLD2D i,SetArcSep,0,0,er,er,0,1
ALLSEL j, 1,999,1,999
CAL x1 = er2 - er
CAL y1 = 0
CAL z1 = kh - sl - el + er2
CAL x2 = x1
CAL y2 = 10
CAL z2 = z1
CAL a1 =-PI
S_ROT1 2,0,-1,SetArcSep, x1,y1,z1,x2,y2,z2,a1
S_DELE
LAYER 0
CAL x1 = er2*2 - er*2
CAL y1 = 0
CAL z1 = 0
MATRIXL x1,y1,z1
CAL j = Int(SetArcSep/2)
DOME i,j,er,0,0
という感じで、スケッチアップに送信して
先端部の円に線があるのを消して、ソフトニング。支柱と柄の部分は少し粗いので別個に再度ソフトニング。
こんな感じかなぁ?