{"id":25051,"date":"2026-11-05T08:34:47","date_gmt":"2026-11-05T08:34:47","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=25051"},"modified":"2026-11-05T08:34:49","modified_gmt":"2026-11-05T08:34:49","slug":"press-brake-tonnage-calculator-2","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/pt\/press-brake-tonnage-calculator-2\/","title":{"rendered":"Press Brake Tonnage Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Press Brake Tonnage Calculator<\/strong> estimates the bending force required for air bending based on material type, thickness, bend length, and V-die opening. Use it to support preliminary press brake selection and check whether your machine may have sufficient capacity for a planned job. Choose or enter the material\u2019s tensile strength for a more relevant estimate. Actual tonnage requirements vary with material grade, tooling, and machine setup, so confirm calculations with your press brake and tooling manufacturer.<\/p>\n\n\n\n<iframe class=\"pbt-frame skip-lazy no-lazyload\" data-no-lazy=\"1\" data-skip-lazy=\"1\" title=\"Press Brake Tonnage Calculator\" scrolling=\"no\" style=\"display:block !important;width:100% !important;max-width:1000px !important;height:700px;border:0 !important;margin:0 auto !important;padding:0 !important;overflow:hidden;background:transparent;float:none !important\" srcdoc=\"&lt;!DOCTYPE html&gt;&#10;&lt;html lang=&quot;en&quot;&gt;&#10;&lt;head&gt;&#10;&lt;meta charset=&quot;UTF-8&quot;&gt;&#10;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&#10;&lt;title&gt;Press Brake Tonnage Calculator by Material and Thickness&lt;\/title&gt;&#10;&lt;style&gt;&#10;\/* =====================================================================&#10;   Press Brake Tonnage Calculator \u2014 every selector is scoped under&#10;   .pbt-root so the calculator never changes how the rest of a page looks.&#10;   ===================================================================== *\/&#10;.pbt-root{&#10;  --pbt-blue:#1e3a8a;--pbt-blue-2:#1d4ed8;--pbt-blue-soft:#e8eefb;--pbt-blue-line:#c7d4f0;&#10;  --pbt-bg:#f3f5f8;--pbt-card:#ffffff;--pbt-text:#1f2937;--pbt-heading:#111827;--pbt-muted:#525c6b;&#10;  --pbt-border:#d6dce5;--pbt-field:#fbfcfe;--pbt-danger:#b42318;--pbt-danger-bg:#fef3f2;&#10;  --pbt-warn:#8a4b00;--pbt-warn-bg:#fff8eb;--pbt-warn-line:#f5d39b;&#10;  --pbt-radius:12px;--pbt-shadow:0 1px 2px rgba(16,24,40,.06),0 6px 16px rgba(16,24,40,.06);&#10;  font-family:system-ui,-apple-system,&quot;Segoe UI&quot;,Roboto,&quot;Helvetica Neue&quot;,Arial,&quot;Noto Sans&quot;,sans-serif;&#10;  font-size:16px;line-height:1.55;color:var(--pbt-text);background:var(--pbt-bg);&#10;  max-width:1000px;margin:0 auto;padding:28px 16px 36px;text-align:left;border-radius:16px;&#10;  -webkit-text-size-adjust:100%;&#10;}&#10;.pbt-root *,.pbt-root *::before,.pbt-root *::after{box-sizing:border-box}&#10;.pbt-root [hidden]{display:none !important}&#10;.pbt-root h2,.pbt-root h3{font-family:inherit;color:var(--pbt-heading);line-height:1.25;margin:0 0 .5em;padding:0;letter-spacing:normal;text-transform:none;font-weight:700;border:0;background:none}&#10;.pbt-root .pbt-title{font-size:clamp(1.35rem,2.8vw,1.8rem);margin:0 0 4px}&#10;.pbt-root .pbt-lede{color:var(--pbt-muted);margin:0 0 20px;font-size:.95rem}&#10;.pbt-root h2.pbt-h{font-size:clamp(1.1rem,2vw,1.3rem);margin:0 0 14px}&#10;.pbt-root h3{font-size:1rem}&#10;.pbt-root p{margin:0 0 .85em;padding:0}&#10;.pbt-root ul{margin:0;padding-left:1.2em}&#10;.pbt-root li{margin:0 0 .3em}&#10;&#10;\/* ---------- layout ---------- *\/&#10;.pbt-root .pbt-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:22px}&#10;.pbt-root .pbt-card{background:var(--pbt-card);border:1px solid var(--pbt-border);border-radius:var(--pbt-radius);box-shadow:var(--pbt-shadow);padding:22px}&#10;.pbt-root .pbt-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}&#10;&#10;\/* ---------- fields ---------- *\/&#10;.pbt-root .pbt-field{margin:0 0 16px;min-width:0}&#10;.pbt-root .pbt-field &gt; label,.pbt-root .pbt-label{display:block;font-size:.88rem;font-weight:600;color:var(--pbt-text);margin:0 0 5px;line-height:1.3}&#10;.pbt-root .pbt-inline{display:flex;gap:8px;align-items:stretch}&#10;.pbt-root .pbt-inline .pbt-input{flex:1 1 auto;min-width:0}&#10;.pbt-root .pbt-inline .pbt-unit{flex:0 0 auto;width:auto;min-width:92px;max-width:45%}&#10;.pbt-root .pbt-input,.pbt-root .pbt-select{&#10;  display:block;width:100%;height:42px;margin:0;padding:8px 12px;font:inherit;font-size:15px;line-height:1.3;color:var(--pbt-text);&#10;  background-color:var(--pbt-field);border:1px solid #b9c2cf;border-radius:8px;box-shadow:none;outline:none;&#10;  transition:border-color .15s,box-shadow .15s;max-width:none;min-height:0;text-transform:none;letter-spacing:normal}&#10;.pbt-root .pbt-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;cursor:pointer;&#10;  background-image:url(&quot;data:image\/svg+xml,%3Csvg xmlns=&#x27;http:\/\/www.w3.org\/2000\/svg&#x27; width=&#x27;12&#x27; height=&#x27;8&#x27; viewBox=&#x27;0 0 12 8&#x27;%3E%3Cpath d=&#x27;M1 1.5l5 5 5-5&#x27; fill=&#x27;none&#x27; stroke=&#x27;%231e3a8a&#x27; stroke-width=&#x27;1.8&#x27; stroke-linecap=&#x27;round&#x27; stroke-linejoin=&#x27;round&#x27;\/%3E%3C\/svg%3E&quot;);&#10;  background-repeat:no-repeat;background-position:right 11px center;background-size:12px 8px}&#10;.pbt-root .pbt-input:hover,.pbt-root .pbt-select:hover{border-color:#8f9bab}&#10;.pbt-root .pbt-input:focus,.pbt-root .pbt-select:focus{border-color:var(--pbt-blue-2);box-shadow:0 0 0 3px rgba(29,78,216,.25);background-color:#fff}&#10;.pbt-root .pbt-input.pbt-invalid{border-color:var(--pbt-danger);background-color:var(--pbt-danger-bg)}&#10;.pbt-root .pbt-input.pbt-invalid:focus{box-shadow:0 0 0 3px rgba(180,35,24,.2)}&#10;.pbt-root .pbt-err{color:var(--pbt-danger);font-size:.83rem;margin:5px 0 0;line-height:1.35;font-weight:500}&#10;.pbt-root .pbt-help{color:var(--pbt-muted);font-size:.82rem;margin:5px 0 0;line-height:1.4}&#10;.pbt-root .pbt-fwarn{color:var(--pbt-warn);font-size:.82rem;margin:5px 0 0;line-height:1.4;background:var(--pbt-warn-bg);border-left:3px solid var(--pbt-warn-line);padding:5px 8px;border-radius:0 6px 6px 0}&#10;.pbt-root .pbt-suffix{position:relative}&#10;.pbt-root .pbt-suffix .pbt-input{padding-right:40px}&#10;.pbt-root .pbt-suffix-u{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:.88rem;color:var(--pbt-muted);pointer-events:none}&#10;.pbt-root .pbt-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:6px 0 0;font-size:.82rem;color:var(--pbt-muted)}&#10;.pbt-root .pbt-link{font:inherit;font-size:.82rem;font-weight:600;color:var(--pbt-blue-2);background:none;border:0;padding:2px 4px;margin:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;border-radius:4px;box-shadow:none;text-transform:none;letter-spacing:normal;line-height:1.3;height:auto;min-width:0;width:auto}&#10;.pbt-root .pbt-link:hover{color:var(--pbt-blue);background:none}&#10;.pbt-root .pbt-link:focus-visible{outline:2px solid var(--pbt-blue-2);outline-offset:1px}&#10;.pbt-root .pbt-link:disabled{color:var(--pbt-muted);cursor:default;text-decoration:none}&#10;&#10;\/* ---------- buttons (hardened against theme button rules) ---------- *\/&#10;.pbt-root .pbt-actions{display:flex !important;flex-wrap:wrap;justify-content:center;gap:10px;width:100%;margin:8px 0 0 !important;padding:0 !important;float:none !important;clear:both}&#10;.pbt-root .pbt-btn{display:inline-flex !important;align-items:center;justify-content:center;float:none !important;width:auto !important;min-width:150px;height:42px;padding:0 20px;margin:0 !important;&#10;  position:static !important;font:inherit;font-size:.95rem;font-weight:650;line-height:1;border-radius:8px;border:1px solid var(--pbt-blue);background:var(--pbt-blue);color:#fff;cursor:pointer;&#10;  text-decoration:none;text-transform:none;letter-spacing:normal;box-shadow:none;transition:background .15s,border-color .15s,color .15s}&#10;.pbt-root .pbt-btn:hover{background:#172f73;border-color:#172f73;color:#fff}&#10;.pbt-root .pbt-btn.pbt-btn-2{background:#fff;color:var(--pbt-blue);border-color:#9fb1db}&#10;.pbt-root .pbt-btn.pbt-btn-2:hover{background:var(--pbt-blue-soft);color:var(--pbt-blue);border-color:var(--pbt-blue)}&#10;.pbt-root .pbt-btn:focus-visible{outline:3px solid var(--pbt-blue-2);outline-offset:2px}&#10;&#10;\/* ---------- results ---------- *\/&#10;.pbt-root .pbt-results:focus{outline:none}&#10;.pbt-root .pbt-alert{border:1px solid #fecdca;background:var(--pbt-danger-bg);color:var(--pbt-danger);border-radius:10px;padding:12px 14px;margin:0;font-size:.9rem}&#10;.pbt-root .pbt-alert ul{margin:6px 0 0;padding-left:1.2em}&#10;.pbt-root .pbt-warnbox{border:1px solid var(--pbt-warn-line);background:var(--pbt-warn-bg);color:var(--pbt-warn);border-radius:10px;padding:12px 14px;margin:0 0 14px;font-size:.9rem}&#10;.pbt-root .pbt-warnbox strong{color:#6b3a00}&#10;.pbt-root .pbt-warnbox ul{margin:6px 0 0;padding-left:1.2em}&#10;.pbt-root .pbt-method{border:1px solid var(--pbt-blue-line);background:var(--pbt-blue-soft);color:var(--pbt-heading);border-radius:10px;padding:12px 14px;margin:0 0 14px;font-size:.9rem}&#10;.pbt-root .pbt-sub-h{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--pbt-blue);margin:0 0 8px}&#10;.pbt-root .pbt-rgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}&#10;.pbt-root .pbt-rcard{border:1px solid var(--pbt-blue-line);background:var(--pbt-blue-soft);border-radius:12px;padding:16px 16px 14px;min-width:0}&#10;.pbt-root .pbt-rcard-label{display:block;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--pbt-blue);margin-bottom:6px}&#10;.pbt-root .pbt-rcard-value{font-size:clamp(1.5rem,3.2vw,2rem);font-weight:800;line-height:1.15;color:var(--pbt-heading);word-break:break-word;font-variant-numeric:tabular-nums}&#10;.pbt-root .pbt-rcard-unit{font-size:.5em;font-weight:700;margin-left:5px;color:var(--pbt-muted)}&#10;.pbt-root .pbt-rcard-sub{font-size:.82rem;color:var(--pbt-muted);margin-top:6px;font-variant-numeric:tabular-nums}&#10;.pbt-root .pbt-cap{margin-top:14px;border-radius:12px;padding:18px;background:linear-gradient(135deg,#1e3a8a 0%,#1d4ed8 100%);color:#fff}&#10;.pbt-root .pbt-cap .pbt-rcard-label{color:#dbe5ff}&#10;.pbt-root .pbt-cap-main{font-size:clamp(1.7rem,3.6vw,2.3rem);font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums}&#10;.pbt-root .pbt-cap-main .pbt-rcard-unit{color:#dbe5ff}&#10;.pbt-root .pbt-cap-alt{margin-top:6px;font-size:.9rem;color:#e9efff;font-variant-numeric:tabular-nums}&#10;.pbt-root .pbt-cap-note{margin-top:8px;font-size:.82rem;color:#e9efff}&#10;.pbt-root .pbt-table{width:100%;border-collapse:collapse;margin:14px 0 0;font-size:.9rem;font-variant-numeric:tabular-nums}&#10;.pbt-root .pbt-table th,.pbt-root .pbt-table td{text-align:left;padding:9px 10px;border:0;border-bottom:1px solid var(--pbt-border);vertical-align:top;background:none}&#10;.pbt-root .pbt-table th{font-weight:600;color:var(--pbt-muted);width:46%}&#10;.pbt-root .pbt-table td{color:var(--pbt-heading);font-weight:600}&#10;.pbt-root .pbt-table tr:last-child th,.pbt-root .pbt-table tr:last-child td{border-bottom:0}&#10;.pbt-root .pbt-formula{background:#0f1f45;color:#e6edff;padding:14px 16px;border-radius:10px;margin:14px 0 0}&#10;.pbt-root .pbt-formula-block{margin:0 0 12px}&#10;.pbt-root .pbt-formula-block:last-child{margin-bottom:0}&#10;.pbt-root .pbt-formula-label{display:block;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#b4c4ec;margin-bottom:4px}&#10;.pbt-root .pbt-formula-main{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.96rem;font-weight:700;margin:0 0 3px;word-break:break-word}&#10;.pbt-root .pbt-formula-sub{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;color:#cdd8f5;word-break:break-word;margin:0}&#10;.pbt-root .pbt-safety{margin:16px 0 0;font-size:.88rem}&#10;.pbt-root .pbt-safety h3{font-size:.95rem;margin:0 0 6px}&#10;.pbt-root .pbt-disclaimer{font-size:.85rem;color:var(--pbt-muted);background:#f6f8fb;border-left:3px solid var(--pbt-blue-line);padding:10px 12px;border-radius:0 8px 8px 0;margin:16px 0 0}&#10;&#10;\/* ---------- responsive ---------- *\/&#10;@media (max-width:760px){&#10;  .pbt-root .pbt-rgrid{grid-template-columns:minmax(0,1fr)}&#10;}&#10;@media (max-width:600px){&#10;  .pbt-root{padding:20px 12px 28px;border-radius:0}&#10;  .pbt-root .pbt-card{padding:16px}&#10;  .pbt-root .pbt-row{grid-template-columns:minmax(0,1fr)}&#10;  .pbt-root .pbt-btn{flex:1 1 100%}&#10;  .pbt-root .pbt-table th{width:50%}&#10;}&#10;@media (prefers-reduced-motion:reduce){&#10;  .pbt-root *{transition:none !important}&#10;}&#10;html,body{margin:0;padding:0;background:transparent}&#10;&lt;\/style&gt;&#10;&lt;\/head&gt;&#10;&lt;body&gt;&#10;&#10;&lt;div class=&quot;pbt-root&quot; id=&quot;pbt-app&quot;&gt;&#10;  &lt;div class=&quot;pbt-stack&quot;&gt;&#10;    &lt;!-- ================= INPUTS ================= --&gt;&#10;    &lt;section class=&quot;pbt-card&quot; aria-labelledby=&quot;pbt-inputs-title&quot;&gt;&#10;      &lt;h2 class=&quot;pbt-h&quot; id=&quot;pbt-inputs-title&quot;&gt;Bending Inputs&lt;\/h2&gt;&#10;&#10;      &lt;form id=&quot;pbt-form&quot; novalidate autocomplete=&quot;off&quot;&gt;&#10;        &lt;div class=&quot;pbt-row&quot;&gt;&#10;          &lt;!-- Material --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-mat&quot;&gt;Material&lt;\/label&gt;&#10;            &lt;select id=&quot;pbt-mat&quot; class=&quot;pbt-select&quot; aria-describedby=&quot;pbt-mat-help&quot;&gt;&#10;              &lt;option value=&quot;mild&quot;&gt;Mild Steel (\u2248 450 MPa)&lt;\/option&gt;&#10;              &lt;option value=&quot;stainless&quot;&gt;Stainless Steel (\u2248 650 MPa)&lt;\/option&gt;&#10;              &lt;option value=&quot;aluminum&quot;&gt;Aluminum (\u2248 230 MPa)&lt;\/option&gt;&#10;              &lt;option value=&quot;other&quot;&gt;Other (enter tensile strength)&lt;\/option&gt;&#10;            &lt;\/select&gt;&#10;            &lt;p class=&quot;pbt-help&quot; id=&quot;pbt-mat-help&quot;&gt;&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- Tensile strength --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-rm&quot;&gt;Tensile Strength (Rm)&lt;\/label&gt;&#10;            &lt;div class=&quot;pbt-inline&quot;&gt;&#10;              &lt;input id=&quot;pbt-rm&quot; class=&quot;pbt-input&quot; type=&quot;text&quot; inputmode=&quot;decimal&quot; aria-describedby=&quot;pbt-rm-err pbt-rm-help&quot;&gt;&#10;              &lt;select id=&quot;pbt-rm-unit&quot; class=&quot;pbt-select pbt-unit&quot; aria-label=&quot;Tensile strength unit&quot;&gt;&#10;                &lt;option value=&quot;mpa&quot;&gt;MPa (N\/mm\u00b2)&lt;\/option&gt;&#10;                &lt;option value=&quot;ksi&quot;&gt;ksi&lt;\/option&gt;&#10;              &lt;\/select&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-err&quot; id=&quot;pbt-rm-err&quot; hidden&gt;&lt;\/p&gt;&#10;            &lt;p class=&quot;pbt-help&quot; id=&quot;pbt-rm-help&quot;&gt;Pre-filled from the selected material. Edit it to match your grade and condition.&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- Thickness --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-t&quot;&gt;Material Thickness (t)&lt;\/label&gt;&#10;            &lt;div class=&quot;pbt-inline&quot;&gt;&#10;              &lt;input id=&quot;pbt-t&quot; class=&quot;pbt-input&quot; type=&quot;text&quot; inputmode=&quot;decimal&quot; aria-describedby=&quot;pbt-t-err&quot;&gt;&#10;              &lt;select id=&quot;pbt-t-unit&quot; class=&quot;pbt-select pbt-unit pbt-len&quot; aria-label=&quot;Thickness unit&quot;&gt;&#10;                &lt;option value=&quot;mm&quot;&gt;mm&lt;\/option&gt;&#10;                &lt;option value=&quot;in&quot;&gt;in&lt;\/option&gt;&#10;              &lt;\/select&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-err&quot; id=&quot;pbt-t-err&quot; hidden&gt;&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- Bend length --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-l&quot;&gt;Bend Length (L)&lt;\/label&gt;&#10;            &lt;div class=&quot;pbt-inline&quot;&gt;&#10;              &lt;input id=&quot;pbt-l&quot; class=&quot;pbt-input&quot; type=&quot;text&quot; inputmode=&quot;decimal&quot; aria-describedby=&quot;pbt-l-err pbt-l-help&quot;&gt;&#10;              &lt;select id=&quot;pbt-l-unit&quot; class=&quot;pbt-select pbt-unit pbt-len&quot; aria-label=&quot;Bend length unit&quot;&gt;&#10;                &lt;option value=&quot;mm&quot;&gt;mm&lt;\/option&gt;&#10;                &lt;option value=&quot;in&quot;&gt;in&lt;\/option&gt;&#10;              &lt;\/select&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-err&quot; id=&quot;pbt-l-err&quot; hidden&gt;&lt;\/p&gt;&#10;            &lt;p class=&quot;pbt-help&quot; id=&quot;pbt-l-help&quot;&gt;Total length of the bend line being formed.&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- V-die opening --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-v&quot;&gt;V-Die Opening (V)&lt;\/label&gt;&#10;            &lt;div class=&quot;pbt-inline&quot;&gt;&#10;              &lt;input id=&quot;pbt-v&quot; class=&quot;pbt-input&quot; type=&quot;text&quot; inputmode=&quot;decimal&quot; aria-describedby=&quot;pbt-v-err pbt-v-suggest pbt-v-warn&quot;&gt;&#10;              &lt;select id=&quot;pbt-v-unit&quot; class=&quot;pbt-select pbt-unit pbt-len&quot; aria-label=&quot;V-die opening unit&quot;&gt;&#10;                &lt;option value=&quot;mm&quot;&gt;mm&lt;\/option&gt;&#10;                &lt;option value=&quot;in&quot;&gt;in&lt;\/option&gt;&#10;              &lt;\/select&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-err&quot; id=&quot;pbt-v-err&quot; hidden&gt;&lt;\/p&gt;&#10;            &lt;div class=&quot;pbt-suggest&quot;&gt;&#10;              &lt;span id=&quot;pbt-v-suggest&quot;&gt;Suggested starting value: enter a thickness first.&lt;\/span&gt;&#10;              &lt;button type=&quot;button&quot; class=&quot;pbt-link&quot; id=&quot;pbt-v-use&quot; disabled&gt;Use suggested&lt;\/button&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-fwarn&quot; id=&quot;pbt-v-warn&quot; hidden&gt;&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- Bending method --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-method&quot;&gt;Bending Method&lt;\/label&gt;&#10;            &lt;select id=&quot;pbt-method&quot; class=&quot;pbt-select&quot; aria-describedby=&quot;pbt-method-help&quot;&gt;&#10;              &lt;option value=&quot;air&quot;&gt;Air Bending&lt;\/option&gt;&#10;              &lt;option value=&quot;bottoming&quot;&gt;Bottoming&lt;\/option&gt;&#10;              &lt;option value=&quot;coining&quot;&gt;Coining&lt;\/option&gt;&#10;            &lt;\/select&gt;&#10;            &lt;p class=&quot;pbt-help&quot; id=&quot;pbt-method-help&quot;&gt;Tonnage is calculated with the air-bending model only.&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;&#10;          &lt;!-- Safety allowance --&gt;&#10;          &lt;div class=&quot;pbt-field&quot;&gt;&#10;            &lt;label for=&quot;pbt-sa&quot;&gt;Safety Allowance&lt;\/label&gt;&#10;            &lt;div class=&quot;pbt-suffix&quot;&gt;&#10;              &lt;input id=&quot;pbt-sa&quot; class=&quot;pbt-input&quot; type=&quot;text&quot; inputmode=&quot;decimal&quot; aria-describedby=&quot;pbt-sa-err pbt-sa-help&quot;&gt;&#10;              &lt;span class=&quot;pbt-suffix-u&quot; aria-hidden=&quot;true&quot;&gt;%&lt;\/span&gt;&#10;            &lt;\/div&gt;&#10;            &lt;p class=&quot;pbt-err&quot; id=&quot;pbt-sa-err&quot; hidden&gt;&lt;\/p&gt;&#10;            &lt;p class=&quot;pbt-help&quot; id=&quot;pbt-sa-help&quot;&gt;Margin added to the estimated force for the recommended minimum machine capacity (0\u2013100%).&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;        &lt;\/div&gt;&#10;&#10;        &lt;div class=&quot;pbt-actions&quot;&gt;&#10;          &lt;button type=&quot;submit&quot; class=&quot;pbt-btn&quot; id=&quot;pbt-calc&quot;&gt;Calculate&lt;\/button&gt;&#10;        &lt;\/div&gt;&#10;      &lt;\/form&gt;&#10;    &lt;\/section&gt;&#10;&#10;    &lt;!-- ================= RESULTS ================= --&gt;&#10;    &lt;section class=&quot;pbt-card pbt-results&quot; aria-labelledby=&quot;pbt-results-title&quot; id=&quot;pbt-results&quot; tabindex=&quot;-1&quot; hidden&gt;&#10;      &lt;h2 class=&quot;pbt-h&quot; id=&quot;pbt-results-title&quot;&gt;Results&lt;\/h2&gt;&#10;&#10;      &lt;div class=&quot;pbt-alert&quot; id=&quot;pbt-error&quot; role=&quot;alert&quot; hidden&gt;&lt;\/div&gt;&#10;&#10;      &lt;div id=&quot;pbt-body&quot; aria-live=&quot;polite&quot;&gt;&#10;        &lt;div class=&quot;pbt-method&quot; id=&quot;pbt-method-note&quot; hidden&gt;&lt;\/div&gt;&#10;        &lt;div class=&quot;pbt-warnbox&quot; id=&quot;pbt-warnbox&quot; hidden&gt;&lt;\/div&gt;&#10;&#10;        &lt;p class=&quot;pbt-sub-h&quot; id=&quot;pbt-force-h&quot;&gt;Estimated air-bending force (total for the entered bend length)&lt;\/p&gt;&#10;        &lt;div class=&quot;pbt-rgrid&quot;&gt;&#10;          &lt;div class=&quot;pbt-rcard&quot;&gt;&#10;            &lt;span class=&quot;pbt-rcard-label&quot;&gt;Force&lt;\/span&gt;&#10;            &lt;div class=&quot;pbt-rcard-value&quot;&gt;&lt;span id=&quot;pbt-r-kn&quot;&gt;&lt;\/span&gt;&lt;span class=&quot;pbt-rcard-unit&quot;&gt;kN&lt;\/span&gt;&lt;\/div&gt;&#10;            &lt;div class=&quot;pbt-rcard-sub&quot;&gt;Kilonewtons&lt;\/div&gt;&#10;          &lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-rcard&quot;&gt;&#10;            &lt;span class=&quot;pbt-rcard-label&quot;&gt;Metric tons-force&lt;\/span&gt;&#10;            &lt;div class=&quot;pbt-rcard-value&quot;&gt;&lt;span id=&quot;pbt-r-tf&quot;&gt;&lt;\/span&gt;&lt;span class=&quot;pbt-rcard-unit&quot;&gt;tf&lt;\/span&gt;&lt;\/div&gt;&#10;            &lt;div class=&quot;pbt-rcard-sub&quot;&gt;kN \u00f7 9.80665&lt;\/div&gt;&#10;          &lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-rcard&quot;&gt;&#10;            &lt;span class=&quot;pbt-rcard-label&quot;&gt;US short tons&lt;\/span&gt;&#10;            &lt;div class=&quot;pbt-rcard-value&quot;&gt;&lt;span id=&quot;pbt-r-ust&quot;&gt;&lt;\/span&gt;&lt;span class=&quot;pbt-rcard-unit&quot;&gt;US tons&lt;\/span&gt;&lt;\/div&gt;&#10;            &lt;div class=&quot;pbt-rcard-sub&quot;&gt;kN \u00f7 8.89644&lt;\/div&gt;&#10;          &lt;\/div&gt;&#10;        &lt;\/div&gt;&#10;&#10;        &lt;div class=&quot;pbt-cap&quot; id=&quot;pbt-cap&quot;&gt;&#10;          &lt;span class=&quot;pbt-rcard-label&quot;&gt;Recommended minimum press brake capacity&lt;\/span&gt;&#10;          &lt;div class=&quot;pbt-cap-main&quot;&gt;&lt;span id=&quot;pbt-r-cap-tf&quot;&gt;&lt;\/span&gt;&lt;span class=&quot;pbt-rcard-unit&quot;&gt;tf&lt;\/span&gt;&lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-cap-alt&quot; id=&quot;pbt-r-cap-alt&quot;&gt;&lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-cap-note&quot; id=&quot;pbt-r-cap-note&quot;&gt;&lt;\/div&gt;&#10;        &lt;\/div&gt;&#10;&#10;        &lt;table class=&quot;pbt-table&quot;&gt;&#10;          &lt;caption class=&quot;pbt-sub-h&quot; style=&quot;text-align:left;caption-side:top;padding:0 0 4px&quot;&gt;Details&lt;\/caption&gt;&#10;          &lt;tbody&gt;&#10;            &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Force per meter of bend&lt;\/th&gt;&lt;td id=&quot;pbt-r-pm&quot;&gt;&lt;\/td&gt;&lt;\/tr&gt;&#10;            &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Force per foot of bend&lt;\/th&gt;&lt;td id=&quot;pbt-r-pf&quot;&gt;&lt;\/td&gt;&lt;\/tr&gt;&#10;            &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Material and tensile strength used&lt;\/th&gt;&lt;td id=&quot;pbt-r-mat&quot;&gt;&lt;\/td&gt;&lt;\/tr&gt;&#10;            &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Inputs in mm&lt;\/th&gt;&lt;td id=&quot;pbt-r-in&quot;&gt;&lt;\/td&gt;&lt;\/tr&gt;&#10;            &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;V-die opening to thickness ratio (V\/t)&lt;\/th&gt;&lt;td id=&quot;pbt-r-ratio&quot;&gt;&lt;\/td&gt;&lt;\/tr&gt;&#10;          &lt;\/tbody&gt;&#10;        &lt;\/table&gt;&#10;&#10;        &lt;div class=&quot;pbt-formula&quot;&gt;&#10;          &lt;div class=&quot;pbt-formula-block&quot;&gt;&#10;            &lt;span class=&quot;pbt-formula-label&quot;&gt;Air-bending formula used&lt;\/span&gt;&#10;            &lt;p class=&quot;pbt-formula-main&quot;&gt;F (kN) = 1.42 \u00d7 Rm \u00d7 L \u00d7 t\u00b2 \/ (V \u00d7 1000)&lt;\/p&gt;&#10;            &lt;p class=&quot;pbt-formula-sub&quot;&gt;Rm in N\/mm\u00b2, L, t and V in mm. Dividing by 1000 converts N to kN.&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-formula-block&quot;&gt;&#10;            &lt;span class=&quot;pbt-formula-label&quot;&gt;With your values&lt;\/span&gt;&#10;            &lt;p class=&quot;pbt-formula-sub&quot; id=&quot;pbt-d-f&quot;&gt;&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;          &lt;div class=&quot;pbt-formula-block&quot;&gt;&#10;            &lt;span class=&quot;pbt-formula-label&quot;&gt;Conversions and capacity&lt;\/span&gt;&#10;            &lt;p class=&quot;pbt-formula-sub&quot; id=&quot;pbt-d-conv&quot;&gt;&lt;\/p&gt;&#10;          &lt;\/div&gt;&#10;        &lt;\/div&gt;&#10;&#10;        &lt;div class=&quot;pbt-safety&quot;&gt;&#10;          &lt;h3&gt;Before bending&lt;\/h3&gt;&#10;          &lt;ul&gt;&#10;            &lt;li&gt;This is an estimate for straight air bending. The result is the &lt;strong&gt;total&lt;\/strong&gt; force for the full bend length entered; force per meter is shown above for comparison with tonnage charts.&lt;\/li&gt;&#10;            &lt;li&gt;Verify the press brake&#x27;s rated capacity and any off-center or short-length load limits.&lt;\/li&gt;&#10;            &lt;li&gt;Check the load limits of the punch and die (usually stated per meter) for this bend.&lt;\/li&gt;&#10;            &lt;li&gt;Confirm the actual tensile strength of your material, including grade, temper and condition.&lt;\/li&gt;&#10;            &lt;li&gt;Follow the press brake manufacturer&#x27;s guidance and your site&#x27;s safe operating procedures. This calculator does not replace machine manuals or engineering review.&lt;\/li&gt;&#10;          &lt;\/ul&gt;&#10;        &lt;\/div&gt;&#10;      &lt;\/div&gt;&#10;&#10;      &lt;p class=&quot;pbt-disclaimer&quot;&gt;This calculator provides an approximate air-bending tonnage estimate. Actual force depends on material grade and condition, bend length, tooling geometry, friction, and machine setup. Confirm the required force and tooling limits with the machine and tool manufacturers before bending.&lt;\/p&gt;&#10;    &lt;\/section&gt;&#10;  &lt;\/div&gt;&#10;&lt;\/div&gt;&#10;&#10;&lt;script&gt;&#10;\/* =====================================================================&#10;   Press Brake Tonnage Calculator \u2014 vanilla JavaScript, no globals.&#10;   Internal units: lengths in mm, strength in N\/mm\u00b2 (MPa), force in kN.&#10;   ===================================================================== *\/&#10;(function () {&#10;  &#x27;use strict&#x27;;&#10;&#10;  var root = document.getElementById(&#x27;pbt-app&#x27;);&#10;  if (!root || root.getAttribute(&#x27;data-pbt-ready&#x27;) === &#x27;1&#x27;) return;&#10;  root.setAttribute(&#x27;data-pbt-ready&#x27;, &#x27;1&#x27;);&#10;&#10;  function $(id) { return document.getElementById(id); }&#10;&#10;  \/* ---------- 1. Reference data ---------- *\/&#10;  var MM_PER_IN = 25.4;&#10;  var MPA_PER_KSI = 6.894757;&#10;  var KN_PER_TF = 9.80665;        \/\/ metric ton-force&#10;  var KN_PER_UST = 8.89644;       \/\/ US short ton-force&#10;  var MM_PER_FT = 304.8;&#10;&#10;  var MATERIALS = {&#10;    mild:      { name: &#x27;Mild Steel&#x27;,      rm: 450, note: &#x27;Assumed 450 MPa \u2014 typical low-carbon structural\/sheet steel. Edit to match your grade.&#x27; },&#10;    stainless: { name: &#x27;Stainless Steel&#x27;, rm: 650, note: &#x27;Assumed 650 MPa \u2014 typical austenitic (e.g. 304, annealed). Edit to match your grade.&#x27; },&#10;    aluminum:  { name: &#x27;Aluminum&#x27;,        rm: 230, note: &#x27;Assumed 230 MPa \u2014 typical 5052-H32 sheet. Alloys and tempers vary widely; edit as needed.&#x27; },&#10;    other:     { name: &#x27;Other material&#x27;,  rm: null, note: &#x27;Enter the tensile strength of your material from its certificate or datasheet.&#x27; }&#10;  };&#10;&#10;  var DEFAULT_SA = &#x27;20&#x27;;&#10;&#10;  var vTouched = false;           \/\/ true once the user edits V manually&#10;&#10;  \/* ---------- 2. Parsing &amp; formatting ---------- *\/&#10;  \/** Accepts &quot;1,5&quot; (decimal comma), &quot;1,000.5&quot; and scientific notation. *\/&#10;  function parseNum(raw) {&#10;    var s = String(raw == null ? &#x27;&#x27; : raw).trim().replace(\/\\s+\/g, &#x27;&#x27;);&#10;    if (s === &#x27;&#x27;) return { empty: true, ok: false };&#10;    if (\/^[+-]?\\d{1,3}(,\\d{3})+(\\.\\d+)?$\/.test(s)) s = s.replace(\/,\/g, &#x27;&#x27;);&#10;    else if (\/^[+-]?\\d*,\\d+$\/.test(s)) s = s.replace(&#x27;,&#x27;, &#x27;.&#x27;);&#10;    if (!\/^[+-]?(\\d+\\.?\\d*|\\.\\d+)(e[+-]?\\d+)?$\/i.test(s)) return { empty: false, ok: false };&#10;    var n = Number(s);&#10;    if (!isFinite(n)) return { empty: false, ok: false };&#10;    return { empty: false, ok: true, n: n };&#10;  }&#10;  function fx(n, d) {&#10;    if (d == null) d = 2;&#10;    if (typeof n !== &#x27;number&#x27; || !isFinite(n)) return &#x27;\u2014&#x27;;&#10;    if (n !== 0 &amp;&amp; Math.abs(n) &lt; 0.5 * Math.pow(10, -d)) return Number(n.toPrecision(3)).toString();&#10;    return n.toLocaleString(&#x27;en-US&#x27;, { minimumFractionDigits: d, maximumFractionDigits: d });&#10;  }&#10;  function g(n, p) {&#10;    if (typeof n !== &#x27;number&#x27; || !isFinite(n)) return &#x27;\u2014&#x27;;&#10;    return Number(n.toPrecision(p || 6)).toLocaleString(&#x27;en-US&#x27;, { maximumFractionDigits: 10 });&#10;  }&#10;  \/** Value for writing back into an input (no thousands separators). *\/&#10;  function plain(n, p) { return String(Number(n.toPrecision(p || 6))); }&#10;  function esc(s) {&#10;    return String(s).replace(\/[&amp;&lt;&gt;&quot;&#x27;]\/g, function (c) {&#10;      return { &#x27;&amp;&#x27;: &#x27;&amp;amp;&#x27;, &#x27;&lt;&#x27;: &#x27;&amp;lt;&#x27;, &#x27;&gt;&#x27;: &#x27;&amp;gt;&#x27;, &#x27;&quot;&#x27;: &#x27;&amp;quot;&#x27;, &quot;&#x27;&quot;: &#x27;&amp;#39;&#x27; }[c];&#10;    });&#10;  }&#10;&#10;  \/* ---------- 3. Unit helpers ---------- *\/&#10;  function toMm(val, unit) { return unit === &#x27;in&#x27; ? val * MM_PER_IN : val; }&#10;  function fromMm(mm, unit) { return unit === &#x27;in&#x27; ? mm \/ MM_PER_IN : mm; }&#10;  function toMpa(val, unit) { return unit === &#x27;ksi&#x27; ? val * MPA_PER_KSI : val; }&#10;  function fromMpa(mpa, unit) { return unit === &#x27;ksi&#x27; ? mpa \/ MPA_PER_KSI : mpa; }&#10;&#10;  \/* ---------- 4. Validation ---------- *\/&#10;  var LABEL = { rm: &#x27;Tensile strength (Rm)&#x27;, t: &#x27;Material thickness (t)&#x27;, l: &#x27;Bend length (L)&#x27;, v: &#x27;V-die opening (V)&#x27;, sa: &#x27;Safety allowance&#x27; };&#10;  var KEYS = [&#x27;rm&#x27;, &#x27;t&#x27;, &#x27;l&#x27;, &#x27;v&#x27;, &#x27;sa&#x27;];&#10;&#10;  function setErr(key, msg) {&#10;    var el = $(&#x27;pbt-&#x27; + key), er = $(&#x27;pbt-&#x27; + key + &#x27;-err&#x27;);&#10;    if (msg) {&#10;      el.classList.add(&#x27;pbt-invalid&#x27;); el.setAttribute(&#x27;aria-invalid&#x27;, &#x27;true&#x27;);&#10;      er.textContent = msg; er.hidden = false;&#10;    } else {&#10;      el.classList.remove(&#x27;pbt-invalid&#x27;); el.removeAttribute(&#x27;aria-invalid&#x27;);&#10;      er.textContent = &#x27;&#x27;; er.hidden = true;&#10;    }&#10;  }&#10;  function clearAllErrors() { KEYS.forEach(function (k) { setErr(k, null); }); }&#10;&#10;  function check(key) {&#10;    var p = parseNum($(&#x27;pbt-&#x27; + key).value);&#10;    if (p.empty) return LABEL[key] + &#x27; is required.&#x27;;&#10;    if (!p.ok) return LABEL[key] + &#x27; must be a valid number.&#x27;;&#10;    if (p.n &lt; 0) return LABEL[key] + &#x27; cannot be negative.&#x27;;&#10;    if (key === &#x27;sa&#x27;) {&#10;      if (p.n &gt; 100) return &#x27;Safety allowance cannot exceed 100%.&#x27;;&#10;      return null;                 \/\/ 0% is allowed&#10;    }&#10;    if (p.n === 0) return LABEL[key] + &#x27; must be greater than zero.&#x27;;&#10;    return null;&#10;  }&#10;  function read(key, errs) {&#10;    var msg = check(key);&#10;    setErr(key, msg);&#10;    if (msg) { errs.push(msg); return null; }&#10;    return parseNum($(&#x27;pbt-&#x27; + key).value).n;&#10;  }&#10;&#10;  \/* ---------- 5. V-die suggestion &amp; ratio warnings ---------- *\/&#10;  \/** Rule of thumb: V \u2248 8 \u00d7 t up to 12 mm thick, \u2248 10 \u00d7 t above. Returns mm. *\/&#10;  function suggestV(tMm) {&#10;    var k = tMm &lt;= 12 ? 8 : 10;&#10;    var v = tMm * k;&#10;    v = v &gt;= 10 ? Math.round(v) : Math.round(v * 2) \/ 2;&#10;    return { mm: v, k: k };&#10;  }&#10;  function fmtLen(mm, unit) {&#10;    return unit === &#x27;in&#x27; ? g(Math.round(mm \/ MM_PER_IN * 1000) \/ 1000) + &#x27; in&#x27; : g(mm) + &#x27; mm&#x27;;&#10;  }&#10;  function currentThicknessMm() {&#10;    var p = parseNum($(&#x27;pbt-t&#x27;).value);&#10;    if (!p.ok || p.n &lt;= 0) return null;&#10;    return toMm(p.n, $(&#x27;pbt-t-unit&#x27;).value);&#10;  }&#10;  function updateSuggestion() {&#10;    var tMm = currentThicknessMm(), btn = $(&#x27;pbt-v-use&#x27;), txt = $(&#x27;pbt-v-suggest&#x27;);&#10;    if (tMm === null) {&#10;      txt.textContent = &#x27;Suggested starting value: enter a thickness first.&#x27;;&#10;      btn.disabled = true;&#10;      return null;&#10;    }&#10;    var s = suggestV(tMm), vu = $(&#x27;pbt-v-unit&#x27;).value;&#10;    txt.textContent = &#x27;Suggested starting value: &#x27; + fmtLen(s.mm, vu) + &#x27; (\u2248 &#x27; + s.k + &#x27; \u00d7 t).&#x27;;&#10;    btn.disabled = false;&#10;    return s;&#10;  }&#10;  function applySuggestion() {&#10;    var s = updateSuggestion();&#10;    if (!s) return;&#10;    var vu = $(&#x27;pbt-v-unit&#x27;).value;&#10;    var val = vu === &#x27;in&#x27; ? Math.round(s.mm \/ MM_PER_IN * 1000) \/ 1000 : s.mm;&#10;    $(&#x27;pbt-v&#x27;).value = plain(val);&#10;    if ($(&#x27;pbt-v&#x27;).classList.contains(&#x27;pbt-invalid&#x27;)) setErr(&#x27;v&#x27;, null);&#10;    updateRatioWarn();&#10;  }&#10;&#10;  \/** Returns a warning string for an unusual V\/t ratio, or null. *\/&#10;  function ratioWarning(ratio) {&#10;    if (ratio &lt; 4) return &#x27;The V-die opening is very small for this thickness (V\/t = &#x27; + fx(ratio, 1) + &#x27;). This is outside normal air-bending practice and greatly raises force and the risk of overloading the tooling.&#x27;;&#10;    if (ratio &lt; 6) return &#x27;The V-die opening is unusually small for this thickness (V\/t = &#x27; + fx(ratio, 1) + &#x27;). Force rises sharply and tooling load limits may be exceeded.&#x27;;&#10;    if (ratio &gt; 16) return &#x27;The V-die opening is very large for this thickness (V\/t = &#x27; + fx(ratio, 1) + &#x27;). The inside radius will be large and this estimate is less reliable.&#x27;;&#10;    if (ratio &gt; 12) return &#x27;The V-die opening is unusually large for this thickness (V\/t = &#x27; + fx(ratio, 1) + &#x27;). Expect a larger inside radius and reduced bend accuracy.&#x27;;&#10;    return null;&#10;  }&#10;  function updateRatioWarn() {&#10;    var tMm = currentThicknessMm(), p = parseNum($(&#x27;pbt-v&#x27;).value), w = $(&#x27;pbt-v-warn&#x27;);&#10;    if (tMm === null || !p.ok || p.n &lt;= 0) { w.hidden = true; return; }&#10;    var msg = ratioWarning(toMm(p.n, $(&#x27;pbt-v-unit&#x27;).value) \/ tMm);&#10;    w.textContent = msg || &#x27;&#x27;; w.hidden = !msg;&#10;  }&#10;&#10;  \/* ---------- 6. Material handling ---------- *\/&#10;  function applyMaterial(focusOther) {&#10;    var m = MATERIALS[$(&#x27;pbt-mat&#x27;).value];&#10;    $(&#x27;pbt-mat-help&#x27;).textContent = m.note;&#10;    setErr(&#x27;rm&#x27;, null);&#10;    if (m.rm === null) {&#10;      $(&#x27;pbt-rm&#x27;).value = &#x27;&#x27;;&#10;      $(&#x27;pbt-rm-help&#x27;).textContent = &#x27;Required for &quot;Other&quot;: enter the minimum or typical tensile strength of your material.&#x27;;&#10;      if (focusOther) $(&#x27;pbt-rm&#x27;).focus();&#10;    } else {&#10;      $(&#x27;pbt-rm&#x27;).value = plain(fromMpa(m.rm, $(&#x27;pbt-rm-unit&#x27;).value), 4);&#10;      $(&#x27;pbt-rm-help&#x27;).textContent = &#x27;Pre-filled from the selected material. Edit it to match your grade and condition.&#x27;;&#10;    }&#10;  }&#10;&#10;  \/* ---------- 7. Calculation ---------- *\/&#10;  function compute() {&#10;    var errs = [];&#10;    clearAllErrors();&#10;    var rmIn = read(&#x27;rm&#x27;, errs), tIn = read(&#x27;t&#x27;, errs), lIn = read(&#x27;l&#x27;, errs), vIn = read(&#x27;v&#x27;, errs), saPct = read(&#x27;sa&#x27;, errs);&#10;    if (errs.length) { showErrors(errs); return false; }&#10;&#10;    var units = { rm: $(&#x27;pbt-rm-unit&#x27;).value, t: $(&#x27;pbt-t-unit&#x27;).value, l: $(&#x27;pbt-l-unit&#x27;).value, v: $(&#x27;pbt-v-unit&#x27;).value };&#10;&#10;    \/\/ Step 1: convert every input to mm and N\/mm\u00b2&#10;    var Rm = toMpa(rmIn, units.rm);&#10;    var t = toMm(tIn, units.t);&#10;    var L = toMm(lIn, units.l);&#10;    var V = toMm(vIn, units.v);&#10;&#10;    \/\/ Step 2: air-bending force. 1.42 \u00d7 Rm[N\/mm\u00b2] \u00d7 L[mm] \u00d7 t\u00b2[mm\u00b2] \/ V[mm] gives N; \u00f7 1000 \u2192 kN&#10;    var F = 1.42 * Rm * L * t * t \/ (V * 1000);&#10;    if (!isFinite(F) || F &lt;= 0) {&#10;      showErrors([&#x27;The result is outside the numeric range that can be represented. Check the magnitude of your inputs.&#x27;]);&#10;      return false;&#10;    }&#10;&#10;    \/\/ Step 3: equivalent forces and capacity with safety allowance&#10;    var tf = F \/ KN_PER_TF, ust = F \/ KN_PER_UST;&#10;    var factor = 1 + saPct \/ 100;&#10;    var capKn = F * factor;&#10;&#10;    \/\/ Step 4: force per unit length&#10;    var perM = F \/ L * 1000, perFt = F \/ L * MM_PER_FT;&#10;&#10;    var warnings = [];&#10;    if (t &gt; V \/ 2) warnings.push(&#x27;The V-die opening is not wider than twice the thickness, so the material cannot be air bent over this die.&#x27;);&#10;    var rw = ratioWarning(V \/ t);&#10;    if (rw) warnings.push(rw);&#10;&#10;    render({&#10;      matKey: $(&#x27;pbt-mat&#x27;).value, method: $(&#x27;pbt-method&#x27;).value, units: units,&#10;      rmIn: rmIn, tIn: tIn, lIn: lIn, vIn: vIn, saPct: saPct,&#10;      Rm: Rm, t: t, L: L, V: V, F: F, tf: tf, ust: ust, factor: factor, capKn: capKn,&#10;      perM: perM, perFt: perFt, warnings: warnings&#10;    });&#10;    return true;&#10;  }&#10;&#10;  \/* ---------- 8. Rendering ---------- *\/&#10;  function showErrors(errs) {&#10;    var box = $(&#x27;pbt-error&#x27;);&#10;    box.innerHTML = &#x27;&lt;strong&gt;Please correct the following input&#x27; + (errs.length &gt; 1 ? &#x27;s&#x27; : &#x27;&#x27;) + &#x27;:&lt;\/strong&gt;&lt;ul&gt;&#x27; +&#10;      errs.map(function (e) { return &#x27;&lt;li&gt;&#x27; + esc(e) + &#x27;&lt;\/li&gt;&#x27;; }).join(&#x27;&#x27;) + &#x27;&lt;\/ul&gt;&#x27;;&#10;    box.hidden = false;&#10;    $(&#x27;pbt-body&#x27;).hidden = true;&#10;  }&#10;&#10;  function render(R) {&#10;    $(&#x27;pbt-error&#x27;).hidden = true;&#10;    $(&#x27;pbt-body&#x27;).hidden = false;&#10;&#10;    var isAir = R.method === &#x27;air&#x27;;&#10;    var note = $(&#x27;pbt-method-note&#x27;);&#10;    if (isAir) {&#10;      note.hidden = true;&#10;      $(&#x27;pbt-force-h&#x27;).textContent = &#x27;Estimated air-bending force (total for the entered bend length)&#x27;;&#10;    } else {&#10;      var name = R.method === &#x27;bottoming&#x27; ? &#x27;Bottoming&#x27; : &#x27;Coining&#x27;;&#10;      note.innerHTML = &#x27;&lt;strong&gt;&#x27; + name + &#x27; selected \u2014 no tonnage is calculated for this method.&lt;\/strong&gt; &#x27; +&#10;        name + &#x27; forces the sheet into the die and needs substantially more force than air bending, depending strongly on the die angle, punch radius, die opening and how far the material is pressed&#x27; +&#10;        (R.method === &#x27;coining&#x27; ? &#x27; (coining typically requires several times the air-bending force)&#x27; : &#x27;&#x27;) +&#10;        &#x27;. There is no reliable general multiplier, so use the force data from your machine and tooling manufacturers. &#x27; +&#10;        &#x27;The figures below are the &lt;strong&gt;air-bending reference only&lt;\/strong&gt; and are not the force required for &#x27; + name.toLowerCase() + &#x27;.&#x27;;&#10;      note.hidden = false;&#10;      $(&#x27;pbt-force-h&#x27;).textContent = &#x27;Air-bending reference force (not valid for &#x27; + name.toLowerCase() + &#x27;)&#x27;;&#10;    }&#10;&#10;    var wb = $(&#x27;pbt-warnbox&#x27;);&#10;    if (R.warnings.length) {&#10;      wb.innerHTML = &#x27;&lt;strong&gt;Check your setup:&lt;\/strong&gt;&lt;ul&gt;&#x27; + R.warnings.map(function (w) { return &#x27;&lt;li&gt;&#x27; + esc(w) + &#x27;&lt;\/li&gt;&#x27;; }).join(&#x27;&#x27;) + &#x27;&lt;\/ul&gt;&#x27;;&#10;      wb.hidden = false;&#10;    } else { wb.hidden = true; }&#10;&#10;    $(&#x27;pbt-r-kn&#x27;).textContent = fx(R.F);&#10;    $(&#x27;pbt-r-tf&#x27;).textContent = fx(R.tf);&#10;    $(&#x27;pbt-r-ust&#x27;).textContent = fx(R.ust);&#10;&#10;    \/\/ Capacity is only recommended for air bending&#10;    $(&#x27;pbt-cap&#x27;).hidden = !isAir;&#10;    $(&#x27;pbt-r-cap-tf&#x27;).textContent = fx(R.capKn \/ KN_PER_TF);&#10;    $(&#x27;pbt-r-cap-alt&#x27;).textContent = &#x27;= &#x27; + fx(R.capKn) + &#x27; kN  \u00b7  &#x27; + fx(R.capKn \/ KN_PER_UST) + &#x27; US short tons&#x27;;&#10;    $(&#x27;pbt-r-cap-note&#x27;).textContent = &#x27;Estimated force plus a &#x27; + g(R.saPct) + &#x27;% safety allowance (\u00d7 &#x27; + g(R.factor, 4) + &#x27;). Adjust the allowance above to suit your shop practice.&#x27;;&#10;&#10;    $(&#x27;pbt-r-pm&#x27;).textContent = fx(R.perM) + &#x27; kN\/m  \u00b7  &#x27; + fx(R.perM \/ KN_PER_TF) + &#x27; tf\/m&#x27;;&#10;    $(&#x27;pbt-r-pf&#x27;).textContent = fx(R.perFt) + &#x27; kN\/ft  \u00b7  &#x27; + fx(R.perFt \/ KN_PER_UST) + &#x27; US tons\/ft&#x27;;&#10;&#10;    var m = MATERIALS[R.matKey];&#10;    var rmText = g(R.Rm, 5) + &#x27; N\/mm\u00b2 (MPa)&#x27;;&#10;    if (R.units.rm === &#x27;ksi&#x27;) rmText += &#x27; \u2014 from &#x27; + g(R.rmIn) + &#x27; ksi&#x27;;&#10;    var edited = m.rm !== null &amp;&amp; Math.abs(R.Rm - m.rm) &gt; 0.5;&#10;    $(&#x27;pbt-r-mat&#x27;).textContent = m.name + &#x27;, &#x27; + rmText + (m.rm === null ? &#x27; (user-entered)&#x27; : edited ? &#x27; (edited from &#x27; + m.rm + &#x27; MPa default)&#x27; : &#x27; (default)&#x27;);&#10;    $(&#x27;pbt-r-in&#x27;).textContent = &#x27;t = &#x27; + g(R.t) + &#x27; mm, L = &#x27; + g(R.L) + &#x27; mm, V = &#x27; + g(R.V) + &#x27; mm&#x27;;&#10;    $(&#x27;pbt-r-ratio&#x27;).textContent = fx(R.V \/ R.t, 2) + &#x27;  (typical air-bending range \u2248 6\u201312)&#x27;;&#10;&#10;    $(&#x27;pbt-d-f&#x27;).textContent = &#x27;F = 1.42 \u00d7 &#x27; + g(R.Rm, 5) + &#x27; \u00d7 &#x27; + g(R.L) + &#x27; \u00d7 &#x27; + g(R.t) + &#x27;\u00b2 \/ (&#x27; + g(R.V) + &#x27; \u00d7 1000) = &#x27; + fx(R.F) + &#x27; kN&#x27;;&#10;&#10;    var conv = [];&#10;    if (R.units.rm === &#x27;ksi&#x27;) conv.push(&#x27;Rm = &#x27; + g(R.rmIn) + &#x27; ksi \u00d7 6.894757 = &#x27; + g(R.Rm, 5) + &#x27; N\/mm\u00b2&#x27;);&#10;    if (R.units.t === &#x27;in&#x27;) conv.push(&#x27;t = &#x27; + g(R.tIn) + &#x27; in \u00d7 25.4 = &#x27; + g(R.t) + &#x27; mm&#x27;);&#10;    if (R.units.l === &#x27;in&#x27;) conv.push(&#x27;L = &#x27; + g(R.lIn) + &#x27; in \u00d7 25.4 = &#x27; + g(R.L) + &#x27; mm&#x27;);&#10;    if (R.units.v === &#x27;in&#x27;) conv.push(&#x27;V = &#x27; + g(R.vIn) + &#x27; in \u00d7 25.4 = &#x27; + g(R.V) + &#x27; mm&#x27;);&#10;    conv.push(&#x27;Metric tons-force = &#x27; + fx(R.F) + &#x27; \u00f7 9.80665 = &#x27; + fx(R.tf) + &#x27; tf&#x27;);&#10;    conv.push(&#x27;US short tons = &#x27; + fx(R.F) + &#x27; \u00f7 8.89644 = &#x27; + fx(R.ust) + &#x27; US tons&#x27;);&#10;    if (isAir) conv.push(&#x27;Capacity = &#x27; + fx(R.F) + &#x27; kN \u00d7 (1 + &#x27; + g(R.saPct) + &#x27;\/100) = &#x27; + fx(R.capKn) + &#x27; kN = &#x27; + fx(R.capKn \/ KN_PER_TF) + &#x27; tf&#x27;);&#10;    $(&#x27;pbt-d-conv&#x27;).innerHTML = conv.map(esc).join(&#x27;&lt;br&gt;&#x27;);&#10;  }&#10;&#10;  \/* ---------- 9. Initial state ---------- *\/&#10;  function hideResults() {&#10;    $(&#x27;pbt-results&#x27;).hidden = true;&#10;    $(&#x27;pbt-error&#x27;).hidden = true;&#10;  }&#10;  function setLenUnits(u) { [&#x27;t&#x27;, &#x27;l&#x27;, &#x27;v&#x27;].forEach(function (k) { $(&#x27;pbt-&#x27; + k + &#x27;-unit&#x27;).value = u; }); }&#10;&#10;  function doReset() {&#10;    $(&#x27;pbt-mat&#x27;).value = &#x27;mild&#x27;;&#10;    $(&#x27;pbt-rm-unit&#x27;).value = &#x27;mpa&#x27;;&#10;    setLenUnits(&#x27;mm&#x27;);&#10;    $(&#x27;pbt-t&#x27;).value = &#x27;&#x27;; $(&#x27;pbt-l&#x27;).value = &#x27;&#x27;; $(&#x27;pbt-v&#x27;).value = &#x27;&#x27;;&#10;    $(&#x27;pbt-method&#x27;).value = &#x27;air&#x27;;&#10;    $(&#x27;pbt-sa&#x27;).value = DEFAULT_SA;&#10;    vTouched = false;&#10;    clearAllErrors();&#10;    applyMaterial(false);&#10;    updateSuggestion(); updateRatioWarn();&#10;    hideResults();&#10;  }&#10;&#10;  \/* ---------- 10. Events ---------- *\/&#10;  \/\/ Remember each unit select&#x27;s previous value so the entered quantity is converted, not reinterpreted&#10;  root.querySelectorAll(&#x27;select.pbt-unit&#x27;).forEach(function (s) { s.setAttribute(&#x27;data-prev&#x27;, s.value); });&#10;&#10;  root.addEventListener(&#x27;change&#x27;, function (e) {&#10;    var t = e.target;&#10;    if (t.id === &#x27;pbt-mat&#x27;) { applyMaterial(true); }&#10;    else if (t.classList.contains(&#x27;pbt-unit&#x27;)) {&#10;      var key = t.id.replace(&#x27;pbt-&#x27;, &#x27;&#x27;).replace(&#x27;-unit&#x27;, &#x27;&#x27;);&#10;      var input = $(&#x27;pbt-&#x27; + key), prev = t.getAttribute(&#x27;data-prev&#x27;), next = t.value;&#10;      var p = parseNum(input.value);&#10;      if (p.ok &amp;&amp; prev &amp;&amp; prev !== next) {&#10;        var val = key === &#x27;rm&#x27; ? fromMpa(toMpa(p.n, prev), next) : fromMm(toMm(p.n, prev), next);&#10;        input.value = plain(val, 6);&#10;      }&#10;      t.setAttribute(&#x27;data-prev&#x27;, next);&#10;    }&#10;    updateSuggestion(); updateRatioWarn();&#10;    if (!$(&#x27;pbt-results&#x27;).hidden &amp;&amp; t.tagName === &#x27;SELECT&#x27;) compute();&#10;  });&#10;&#10;  root.addEventListener(&#x27;input&#x27;, function (e) {&#10;    var t = e.target;&#10;    if (!t.classList || !t.classList.contains(&#x27;pbt-input&#x27;)) return;&#10;    var key = t.id.replace(&#x27;pbt-&#x27;, &#x27;&#x27;);&#10;    if (key === &#x27;v&#x27;) vTouched = true;&#10;    if (key === &#x27;t&#x27;) {&#10;      var s = updateSuggestion();&#10;      if (s &amp;&amp; !vTouched) {                       \/\/ pre-fill V until the user edits it&#10;        var vu = $(&#x27;pbt-v-unit&#x27;).value;&#10;        $(&#x27;pbt-v&#x27;).value = plain(vu === &#x27;in&#x27; ? Math.round(s.mm \/ MM_PER_IN * 1000) \/ 1000 : s.mm);&#10;        if ($(&#x27;pbt-v&#x27;).classList.contains(&#x27;pbt-invalid&#x27;) &amp;&amp; !check(&#x27;v&#x27;)) setErr(&#x27;v&#x27;, null);&#10;      }&#10;    }&#10;    if (key === &#x27;t&#x27; || key === &#x27;v&#x27;) updateRatioWarn();&#10;    if (t.classList.contains(&#x27;pbt-invalid&#x27;) &amp;&amp; !check(key)) setErr(key, null);&#10;  });&#10;&#10;  $(&#x27;pbt-v-use&#x27;).addEventListener(&#x27;click&#x27;, function () { applySuggestion(); });&#10;&#10;  $(&#x27;pbt-form&#x27;).addEventListener(&#x27;submit&#x27;, function (e) {&#10;    e.preventDefault();&#10;    var res = $(&#x27;pbt-results&#x27;), first = res.hidden;&#10;    res.hidden = false;&#10;    var ok = compute();&#10;    if (!ok) {&#10;      var bad = root.querySelector(&#x27;.pbt-invalid&#x27;);&#10;      if (bad) bad.focus();&#10;    } else if (first &amp;&amp; res.scrollIntoView) {&#10;      res.scrollIntoView({ behavior: &#x27;smooth&#x27;, block: &#x27;nearest&#x27; });&#10;    }&#10;  });&#10;&#10;  \/* ---------- 11. Init ---------- *\/&#10;  doReset();&#10;})();&#10;&lt;\/script&gt;&#10;&lt;script&gt;&#10;\/* Auto-height when embedded in an iframe (e.g. a WordPress HTML block). Does nothing on a standalone page. *\/&#10;(function () {&#10;  var f = null;&#10;  try { f = window.frameElement; } catch (e) { f = null; }&#10;  if (!f) return;&#10;  var root = document.getElementById(&#x27;pbt-app&#x27;);&#10;  function fit() {&#10;    var h = Math.ceil((root || document.body).getBoundingClientRect().height);&#10;    if (h &gt; 0) f.style.setProperty(&#x27;height&#x27;, h + &#x27;px&#x27;, &#x27;important&#x27;);&#10;  }&#10;  fit();&#10;  if (window.ResizeObserver) new ResizeObserver(fit).observe(root || document.body);&#10;  window.addEventListener(&#x27;load&#x27;, fit);&#10;  window.addEventListener(&#x27;resize&#x27;, fit);&#10;  setTimeout(fit, 300);&#10;})();&#10;&lt;\/script&gt;&#10;&lt;\/body&gt;&#10;&lt;\/html&gt;&#10;\"><\/iframe>\n","protected":false},"excerpt":{"rendered":"<p>The Press Brake Tonnage Calculator estimates the bending force required for air bending based on material type, thickness, bend length, and V-die opening. Use it&#8230;<\/p>","protected":false},"author":2,"featured_media":25052,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8808],"tags":[8423,4198,287,4700,8426],"class_list":["post-25051","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-manufacturing-and-processes","tag-bending-force","tag-metal-fabrication","tag-press-brake","tag-sheet-metal-bending","tag-tonnage-calculator","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/11\/Press-Brake-Tonnage-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/posts\/25051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/comments?post=25051"}],"version-history":[{"count":1,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/posts\/25051\/revisions"}],"predecessor-version":[{"id":25053,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/posts\/25051\/revisions\/25053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/media\/25052"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/media?parent=25051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/categories?post=25051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/pt\/wp-json\/wp\/v2\/tags?post=25051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}