This is a work in progress, I still need to work on getting the ridges to automatically tilt with the wall angle properly which is going to involve some math that is eluding me at the moment but the basics and the default settings work well.

I wanted a grid at the bottom of the pan that would catch finer material so I added that and made it so I can rotate the grid for experimentation.

Here is the code:

//

/*[Pan Parameters]*/
Pan_or_Classifier=true;
Diameter=254;//[20:.01:304.8]
Wall_angle=2;//[1:.01:3]
Height=60;//[10:.01:100]
Wall_thickness=5;//[2:.01:10]

/*[Grid Parameters]*/
Show_grid=true;
Grid_spacing=10;//[1:.25:10]
rotate=0;//[0:.01:83]

/*[Ridge Parameters]*/
ShowRidges=true;
Ridge_number=10;//[1:1:20]
Ridge_spacing=10;//[-10:.01:10]
Ridge_length=120;//[20:1:360]
Tilt_angle=4.8;//[0:.01:90]

/*[Drop Ridge Parameters]*/
ShowDropRidge=true;
Drop_ridge_length=120;//[20:1:360]

/*[Hidden]*/
$fa=$preview? 2:1;;
$fs=$preview?.5:.1;;

module ridges(){
rotate_extrude(angle=Ridge_length){
for(i=[0:1:Ridge_number-1])
translate([i*10,5,0])
translate([Diameter/2+3,i*Tilt_angle,0])
circle(3,$fn=7);
}}

module Drop_ridges(){
rotate_extrude(angle=Drop_ridge_length){
for(i=[0:1:Ridge_number-1])
translate([i*10,5,0])
translate([Diameter/2+3,i*Tilt_angle,0])
circle(3,$fn=7);
}}

module Grid(){
for(i=[1:Grid_spacing:Diameter]){
translate([0,i-2,Height])
rotate([rotate,0,0])
cube([Diameter*2,2,Height*2],center=true);
translate([0,-i,Height])
rotate([rotate,0,0])
cube([Diameter*2,2,Height*2],center=true);
}}

module Pan(){
render()
difference(){
linear_extrude(Height,scale=Wall_angle)
circle(Diameter/2);
linear_extrude(Height,scale=Wall_angle)
circle(Diameter/2-Wall_thickness);
}}

module Grid_trim(){
translate([0,0,-4])
render()
difference(){
linear_extrude(7.5)
circle(Diameter/2+.45);
linear_extrude(7.5)
circle(Diameter/2-18);
}}

module GridX(){
intersection(){
translate([0,0,-Height+1])
Grid();
cylinder(Height,r=Diameter/2.2,center=false);
}}

module GridY(){
rotate([0,0,90])
intersection(){
translate([0,0,-Height+1])
Grid();
cylinder(Height,r=Diameter/2.2,center=false);
}}

module drop_ridge(){
mirror([1,1,0])
difference(){
Pan();
Drop_ridges();
}}

if(ShowDropRidge)
drop_ridge();
else
Pan();

if(ShowRidges)
rotate([0,0,-30])
ridges();

if (Show_grid){
translate([0,0,-4])
resize([Diameter-16,Diameter-16,7.5])
GridX();
translate([0,0,-4])
resize([Diameter-16,Diameter-16,7.5])
GridY();
Grid_trim();
}

if(Pan_or_Classifier)
translate([0,0,-4])
linear_extrude(5)
circle(Diameter/2);


Here are some results:

You can adjust how many ridges there are, the length you want them to be and turn off or on which components you don't want

My plan is to eventually combine this with the sluice from post # 87 and have an all in one solution.

3d Part design with Inkscape and OpenSCAD #87: Customizable sluicebox part 2
Part 2 of a customizable sluice box designed with Inkscape and OpenSCAD