建築資料館の掲示板での「急須」の件
前回の自己発言
somemさんのブログ内でのお話
を考えてみて、ちょっくら、当方の「Script!3D」を使って、楕円を描いて、それをつなげて面にして立体化するようなものを作ってみました。
// 楕円を描かせてつなげて立体化
//
#VAR
 col = 1    ;*線色
 ex1 = 100   ;*楕円開始X半径
 ey1 = 100   ;*楕円開始Y半径
 ex2 = 100   ;*楕円中間X半径
 ey2 = 100   ;*楕円中間Y半径
 ex3 = 100   ;*楕円終了X半径
 ey3 = 100   ;*楕円終了Y半径
 ex = 0    ;*最終中心X
 ey = 0    ;*最終中心Y
 ez = 200   ;*最終高さ
 ka1 = 0    ;*開始傾き角度[°]
 ka2 = 0    ;*終了傾き角度[°]
 es = 32    ;*楕円分割数
 sp = 10    ;*分割数
 i
 n
 x
 y
 z
 rx
 ry
 kan1
 kan2
 ka
 j
 at1
 at2
 at3
 p1x
 p1y
 p1z
 p2x
 p2y
 p2z
 p3x
 p3y
 p3z
 p4x
 p4y
 p4z
#DRAW
 // --- 楕円を描く ---
 CAL i = 0
 CAL x = 0
 CAL y = 0
 CAL z = 0
 CAL rx = ex1
 CAL ry = ey1
 CAL kan1 = ka1/180*PI
 CAL kan2 = ka2/180*PI
 CAL ka = kan1
 PEN col
 #WHILE (i <= sp)
  ELLI3D n,es,x,y,z,rx,ry,ka
  CAL i = i + 1
  CAL x = i*i*ex / sp/sp
  CAL y = i*i*ey / sp/sp
  CAL z = z + ez/sp
  #IF (i <= (sp/2))
   CAL rx = rx + (ex2-ex1)/(sp/2)
   CAL ry = ry + (ey2-ey1)/(sp/2)
  #ELSE
   CAL rx = rx + (ex3-ex2)/(sp/2)
   CAL ry = ry + (ey3-ey2)/(sp/2)
  #END
  CAL ka = ka + (kan2-kan1)/sp
 #END
 // --- 楕円同士を接続 ---
 CAL i = 1
 CAL j = i
 GETFIGD j,at1,at2,at3,p1x,p1y,p1z, p2x,p2y,p2z, p3x,p3y,p3z, p4x,p4y,p4z
 RLSEL1 n,-1,-1,0, p1x,p1y,p1z,0.001,1,1,999,999
 #WHILE (i <= sp)
  RENCLR
  RENSET
  CAL j = j + es
  GETFIGD j,at1,at2,at3,p1x,p1y,p1z, p2x,p2y,p2z, p3x,p3y,p3z, p4x,p4y,p4z
  RLSEL1 n,-1,-1,0, p1x,p1y,p1z,0.001,1,1,999,999
  R_RULED 0,-1,-1,0
  CAL i = i + 1
 #END
 // --- 線を消す ---
 ALLSEL n,1,1,999,999
 S_DELE

単に実行しただけであれば単なる円柱です。
20090625a
楕円中間半径と楕円終了半径を指定します。
変化が直線的ですが・・・
20090625b
最終中心を指定します。
20090625c
傾きも変更できるようにしてますので、ねじれをつけることも出来ます。
スケッチアップに送ります。
20090625d
ソフトニングします。
20090625e
みたいな。