Solid plot with different transversal section. (Triangles, Square, Etc)

It´s possible to make a solid plot with different transversal section ?

For example, if we have to make a solid of revolution we just take the command “RevolutionPlot3D”. But what happen when you need to plot a different solid with different transversal sections like triangles, square, ellipses, Etc.

It is capable mathematica to plot a solid whose characteristics are the following :
The solid formed by a deformable circle whose center moves around the periphery of an ellipse. The radius of the circle measures the distance between the point (x,0) and (x,y), where “y” is defined as:
y=(b / a) Sqrt(a^2 - x^2) (Ellipse)

Another example: The solid with circular base whose cross sections perpendicular to the diameter of the circle are square . The side of the square is defined as parallel to the diameter of the rope circumference. ( The side of the square is variable) .

So, If Mathematica is able to plot such solids. What kind of command should I use to draw it.
Right now i´m using Wólfram Mathematica 10.

It is capable mathematica to plot a solid whose characteristics are
the following : The solid formed by a deformable circle whose center
moves around the periphery of an ellipse. The radius of the circle
measures the distance between the point (x,0) and (x,y), where “y” is
defined as: y=(b / a) Sqrt(a^2 - x^2) (Ellipse)

First look at it in 2D

With[{a = Pi, b = 1},
 Graphics[{
    {Blue, Table[Circle[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]}, 
    {Red, Thick,Circle[{0, 0}, {a, b}]}, 
    {Green, Table[Circle[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]}}, 
  Frame -> True]
 ]

then produce the solid of revolution. Because analytical calculations can become cumbersome often an visual equivalent procedure is the following: get the contour in 2D of the points depicted and use an interpolating function on it to get the input necessary to run RevolutionPlot3D. To do so one switches from Circle to Disk

R = With[{a = 2 \[Pi], b = 1},
   BooleanRegion[Or, 
    Join[Table[Disk[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}], 
           Table[Disk[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]
    ]
  ]
];

and discretizes it:

DiscretizeRegion[R]
BoundaryDiscretizeRegion[R]

the boundary discretized region is a good candidate to work with in RevolutionPlo3D.

To continue one uses straightforward

Clear[R]
R = With[{a = \[Pi], b = 1},
   BooleanRegion[Or, Join[
     Table[Disk[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}], 
     Table[Disk[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]]]];

bdr = BoundaryDiscretizeRegion[R];

Clear[g]
g = Interpolation[Select[MeshCoordinates[bdr], #[[2]] >= 0 &]];

to produce the wanted solids of revolution

RevolutionPlot3D[g[t], {t, -6.28, 6.28}, PerformanceGoal -> "Quality"]
RevolutionPlot3D[{g[t], t}, {t, -6.28, 6.28}, PerformanceGoal -> "Quality"]

et voilà

this approach is rather generic because of the usage of mesh algorithms.