For our final comb we revised a couple things. We separated the teeth to be further than a regular comb in order to print properly. We also widened the outer teeth so it would provide structure. We rounded the teeth ends as well, before they were cone-shaped, this makes it more practical. The body of the comb is longer so that it covers a larger amount of hair. 
Code:

// BY_CRC customizable comb

// 2013-08

//

 

frame_length = 120; // length of frame in mm

frame_width = 8; // width of frame in mm

frame_height = 15; // height of frame in mm

frame_end_tooth_radius = frame_width / 2; // radius of first and last tooth in mm

 

// tooth radius calculated later

tooth_radius = 3 ; // radius of a tooth in mm

tooth_length = 25; // length of a tooth in mm

tooth_amount = 15; // number of teeth

factor = 0.75; // tooth tip / tooth base factor

 

z = frame_height – 1;

y = tooth_radius + (frame_width – tooth_radius – tooth_radius) / 2;

// x in for loop

 

module tooth(radius, length, x, y, z){

translate ( [x, y, z] )

cylinder (h=length, r1=radius, r2=radius*factor, $fn=60);

translate ( [x, y, z+length] )

sphere (r=radius*factor, $fn=60);

}

 

module frame(length, width, height){

cube ( [length, width, height] );

}

 

union(){

frame(frame_length, frame_width, frame_height);

tooth(frame_end_tooth_radius, tooth_length+frame_height-1, 0, y, 0);

tooth(frame_end_tooth_radius, tooth_length+frame_height-1, frame_length, y, 0);

 

for (i = [0:frame_length/tooth_amount:frame_length]) {

tooth(tooth_radius,tooth_length, i, y, z );

}

}