Cylinder Intersector
This program generates a wide range of sets of intersecting cylinders.
The cylinders are aligned with selectable polyhedral
symmetry axes.
You can set the dimensions of each set separately.
Set the length to zero to make disks, which lets you construct
symmetry planes.
Some builtin examples below illustrate some possible settings.
Instructions:
Using the "check boxes," select the sets of directions you want to include.
Only the lines with a check show up in the output.
Type in the desired cylinder length and diameter for each selected group.
Click the view button. Try sliding down the
boundary between this control panel and the image to get a larger viewing area.
Examples: Here are just a few of the things you can make with this program.
Clicking any of the following should produce an image in the window above.
Each also sets appropriate values in the spaces above, so you can see how they work:

The "equators" of an icosadodecahedron.
(Each is a very short cylinder orthogonal to a 5fold axis.)

3 mutually orthogonal pipes (cylinders aligned along the 4fold axes of a cube).
Go inside to see their inner region is shaped like a curved rhombic dodecahedron.

The mirror planes of symmetry of an icosahedron.
(15 zerolength cylinders orthogonal to the 2fold axes of an icosahedron.)

An illustration of how one can choose 3 mutually orthogonal planes from the
15 planes of symmetry of an icosahedron.

A cuboctahedral thingy.

The nine planes of symmetry of a cube.
They are orthogonal to the 4fold and 2fold axes.

6 cylinders aligned along the 5fold axes of an icosahedron, each as tall as wide.
Notes:
Colors are randomly assigned, so click again if you don't like the coloring.
The cylinders are actually prisms with a number of sides that you can adjust 
Set higher values give a better rendering if it doesn't slow your machine too much.
If you are a programmer, you may like to look at the
VRML source code which this
page generates to describe an object.