openscad funnel script makes funnels with 2mm thick wall.

$fn=100;
difference() { //creates the wide top of the funnel
cylinder(d1=50,d2=12,h=40);
cylinder(d1=46,d2=8,h=40);
} // end difference

difference(){ //creates the spout
translate ([0,0,40]) cylinder(d1=12,d2=12, h=30);
translate ([0,0,40]) cylinder(d1=8,d2=8, h=30);
} // end difference
That's it :-)
change the cylinder diameters, heights, wall thicknesses and translates for variables and that one script will generate any size funnel you like. I can't be arsed to do it now :-)
Change the d2's in the spout section to get a tapered spout. Don't forget to change the internal diameter as well :-)

funnel will print the way up it's generated, with a 2mm wall you can make a pretty steep sided funnel.