main
John Lauer 3D model from KiCad's own package generator at the datasheet's values: radiused gull-wing leads in matte tin, reviewed… 9ad862b
diff --git a/GW_QFP_SOIC_SSOP_TSSOP_SOT/gw_qfp_soic_ssop_tssop_sot.py b/GW_QFP_SOIC_SSOP_TSSOP_SOT/gw_qfp_soic_ssop_tssop_sot.py
index fc78bc0..0c2902e 100644
--- a/GW_QFP_SOIC_SSOP_TSSOP_SOT/gw_qfp_soic_ssop_tssop_sot.py
+++ b/GW_QFP_SOIC_SSOP_TSSOP_SOT/gw_qfp_soic_ssop_tssop_sot.py
@@ -117,8 +117,14 @@ def make_gw(params):
         tb_s = 0.001  # if tb_s is is zero, the solver cannot converge as we have an object with zero volume, so enforce a minimum size here
 
     A = A1 + A2
-    A2_t = (A2 - c) / 2  # body top part height
-    A2_b = A2_t  # body bottom part height
+    # Adom patch: optional A2_b (body height under the leads) for packages whose datasheet prints the
+    # parting line off centre (Diodes SOT25: N = 0.75 mm above the body bottom); default unchanged
+    if params.get("A2_b") is not None:
+        A2_b = params["A2_b"]
+        A2_t = A2 - c - A2_b
+    else:
+        A2_t = (A2 - c) / 2  # body top part height
+        A2_b = A2_t  # body bottom part height
     D1_b = D1 - 2 * tan(radians(the)) * A2_b  # bottom width
     E1_b = E1 - 2 * tan(radians(the)) * A2_b  # bottom length
     D1_t1 = D1 - tb_s  # top part bottom width