Our Larval Engineer reports that the PLA pivot for the Sienna’s hood rod didn’t survive contact with the van’s NYS Inspection. I’m not surprised, as PLA tends to be brittle and the inspection happened on a typical February day in upstate New York. Seeing as how PETG claims to be stronger and more durable than PLA, I ran off some replacements:

The square cap fit snugly over the bottom of the post; PETG tolerances seem pretty much the same as for PLA.
A slightly larger loop may be more durable, so I changed one parameter in the OpenSCAD code to get this:

Which printed just like you’d expect:

Despite the hairs stretching between each part, the nozzle didn’t deposit any boogers during the print. The top and bottom use Hilbert Curve infill, which looks pretty and keeps the nozzle from zipping back and forth quite so much; perhaps that’s a step in the right direction.
Tapping the holes for 6-32 stainless machines screws went easily enough:

She gets one of each and I keep the others for show-n-tell sessions.
The OpenSCAD source code, which differs from the original by a constant or two:
// Sienna Hood Rod Pivot // Ed Nisley KE4ZNU November 2013 //- Extrusion parameters must match reality! // Print with 2 shells and 3 solid layers ThreadThick = 0.25; ThreadWidth = 0.40; HoleWindage = 0.2; Protrusion = 0.1; // make holes end cleanly inch = 25.4; function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); //---------------------- // Dimensions ShellOD = 20.0; ShellID = 8.75; ShellLength = 10.0; TaperLength = 1.5; TaperID = 11.4; BaseWidth = 20.0; BaseThick = 3.0; PegSide = 9.5; // mounting peg through sheet metal PegLength = 7.0; PegCornerTrim = 0.75; PegHoleOD = 0.107*inch; // 6-32 tap hole PegTrimSide = sqrt(2)*PegSide - PegCornerTrim; ClampWall = 3.0; // clamping cap under sheet metal ClampHoleOD = 0.150*inch; // 6-32 clearance hole ClampCap = 3.0; // solid end thickness PanelThick = 2.0; // sheet metal under hood NumSides = 6*4; //---------------------- // Useful routines module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); FixDia = Dia / cos(180/Sides); cylinder(r=(FixDia + HoleWindage)/2, h=Height, $fn=Sides); } module ShowPegGrid(Space = 10.0,Size = 1.0) { Range = floor(50 / Space); for (x=[-Range:Range]) for (y=[-Range:Range]) translate([x*Space,y*Space,Size/2]) %cube(Size,center=true); } //---------------------- // Build it //ShowPegGrid(); // pivot translate([-ShellOD,0,0]) difference() { union() { cylinder(r=ShellOD/2,h=ShellLength,$fn=NumSides); // housing translate([-ShellOD/2,0,0]) // filler cube([ShellOD,(ShellOD/2 + BaseThick),ShellLength],center=false); translate([0,(ShellOD/2 + BaseThick/2),ShellLength/2]) // foot cube([BaseWidth,BaseThick,ShellLength],center=true); translate([0, // peg (ShellOD/2 + PegLength/2 + BaseThick - Protrusion), PegSide/2]) intersection() { cube([PegSide,(PegLength + Protrusion),PegSide],center=true); rotate([0,45,0]) cube([PegTrimSide,2*PegLength,PegTrimSide],center=true); } } PolyCyl(ShellID,ShellLength,NumSides); // central hole translate([0,0,-Protrusion]) // end bevels cylinder(r1=TaperID/2,r2=ShellID/2,h=(TaperLength + Protrusion),$fn=NumSides); translate([0,0,(ShellLength + Protrusion)]) rotate([180,0,0]) cylinder(r1=TaperID/2,r2=ShellID/2,h=(TaperLength + Protrusion),$fn=NumSides); translate([0,0,PegSide/2]) // screw tap hole rotate([-90,0,0]) PolyCyl(PegHoleOD,(ShellOD + BaseThick + PegLength),6); } // anchor cap translate([2*PegSide,0,0]) difference() { translate([0,0,(PegLength + ClampCap)/2]) // overall shape cube([(PegSide + ClampWall),(PegSide + ClampWall),(PegLength + ClampCap)],center=true); translate([0,0,(PegLength/2 + ClampCap + Protrusion)]) // peg cutout cube([(PegSide + ThreadWidth),(PegSide + ThreadWidth),(PegLength + Protrusion)],center=true); translate([0,0,-Protrusion]) // screw clearance PolyCyl(ClampHoleOD,2*PegLength,6); }