$fn=64; // --- Parameters --- thickness = 2.0; // Thickness of the entire label total_stake_length = 100.0; // Length from tip to the bottom of the label plate tip_length = 25.0; // Length of the pointed soil insertion tip stake_width_bottom = 8.0; // Width of the stake just above the tip stake_width_top = 14.0; // Width of the stake where it meets the label label_width = 70.0; // Width of the writing area label_height = 40.0; // Height of the writing area corner_radius = 4.0; // Rounding of the label plate corners module plant_label_stake() { // Extrude the entire 2D profile to make it flat and easily 3D printable linear_extrude(height = thickness) { union() { // Pointed Tip polygon([ [0, 0], [stake_width_bottom/2, tip_length], [-stake_width_bottom/2, tip_length] ]); // Tapered Stake Shaft // Overlaps slightly with tip and label to ensure watertight/manifold geometry polygon([ [-stake_width_bottom/2, tip_length - 0.1], [stake_width_bottom/2, tip_length - 0.1], [stake_width_top/2, total_stake_length + 0.1], [-stake_width_top/2, total_stake_length + 0.1] ]); // Rounded Rectangular Label Plate translate([0, total_stake_length]) { hull() { translate([-label_width/2 + corner_radius, corner_radius]) circle(r = corner_radius); translate([label_width/2 - corner_radius, corner_radius]) circle(r = corner_radius); translate([-label_width/2 + corner_radius, label_height - corner_radius]) circle(r = corner_radius); translate([label_width/2 - corner_radius, label_height - corner_radius]) circle(r = corner_radius); } } } } } // Generate the model plant_label_stake();