$fn=64; // --- Parameters --- total_length = 150; // Total length of the stake label_width = 70; // Width of the writing area label_height = 45; // Height of the writing area thickness = 2.5; // Base thickness of the marker rim_height = 1.2; // Additional height for the decorative rim rim_width = 3.0; // Width of the decorative rim stem_width_top = 12; // Width of the stem where it meets the label stem_width_bottom = 4; // Width of the stem before the point point_length = 25; // Length of the sharp point // Helper module for the oval shape module oval(w, h) { scale([w/h, 1]) circle(d=h); } // Main object module plant_marker() { union() { // Flat base body (Stem + Label Area) linear_extrude(height = thickness) { union() { // Label area translate([0, total_length - label_height/2]) oval(label_width, label_height); // Tapered stem and point polygon([ [0, 0], // Bottom tip [stem_width_bottom/2, point_length], // Right bottom taper [stem_width_top/2, total_length - label_height/2], // Right top taper [-stem_width_top/2, total_length - label_height/2], // Left top taper [-stem_width_bottom/2, point_length] // Left bottom taper ]); } } // Decorative raised rim on the label // Overlapped slightly into the base by 0.01mm to ensure manifold geometry translate([0, total_length - label_height/2, thickness - 0.01]) linear_extrude(height = rim_height + 0.01) { difference() { oval(label_width, label_height); oval(label_width - rim_width*2, label_height - rim_width*2); } } } } // Render the marker plant_marker();