+module PlugKeeperProfileHalf(){
+ p_max = plugkeeper_p_max;
+ p_min = plugkeeper_p_min;
+ d = plugkeeper_d_u * keeper_prong;
+
+ translate([ plugkeeper_x_maxw, 0 ]) {
+ polygon([ p_min,
+ p_max,
+ p_max + d,
+ p_min + d ]);
+ }
+}
+
+module PlugKeeperStalkProfile(){
+ hull(){
+ for (m=[0,1]) mirror([0,m,0]) PlugKeeperProfileHalf();
+ translate([ plugkeeper_x_maxw + keeper_stalk_len, 0,0 ])
+ square([ 0.1, keeper_stalk_basewidth ], center=true);
+ }
+}
+
+module PlugKeeper(){
+ for (m=[0,1]) mirror([0,m,0]) {
+ translate([0,0, -keeper_stalk_thick])
+ linear_extrude(height=plug_h + keeper_stalk_thick)
+ PlugKeeperProfileHalf();
+
+ translate([0, 0, plug_h - plug_tooth_h])
+ linear_extrude(height= plug_tooth_h)
+ translate(plugkeeper_d_u * -plug_tooth_dy)
+ PlugKeeperProfileHalf();
+
+ }
+}
+