{"id":1243,"date":"2026-05-28T06:49:10","date_gmt":"2026-05-28T06:49:10","guid":{"rendered":"https:\/\/aubrikmc.com\/?page_id=1243"},"modified":"2026-05-28T06:58:46","modified_gmt":"2026-05-28T06:58:46","slug":"hi-lo-cost-checker","status":"publish","type":"page","link":"https:\/\/aubrikmc.com\/pt\/welding-rotators-turning-rolls\/fit-up-rotator\/hi-lo-cost-checker\/","title":{"rendered":"oi-lo-custo-verificador"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-ffe3b83\" data-block-id=\"ffe3b83\"><style>.stk-ffe3b83 {margin-bottom:0px !important;}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-ffe3b83-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-2db7744\" data-v=\"4\" data-block-id=\"2db7744\"><style>.stk-2db7744-container{margin-top:var(--stk--preset--spacing--50, 1.5rem) !important;margin-right:var(--stk--preset--spacing--50, 1.5rem) !important;margin-bottom:var(--stk--preset--spacing--50, 1.5rem) !important;margin-left:var(--stk--preset--spacing--50, 1.5rem) !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-2db7744-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-2db7744-inner-blocks\"><div class=\"ct-breadcrumbs\" data-source=\"rankmath\" ><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-a9918a9\" data-block-id=\"a9918a9\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-a9918a9-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-8597623\" data-v=\"4\" data-block-id=\"8597623\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-8597623-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-8597623-inner-blocks\">\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>ABOKE Hi-Lo Cost Checker \u2014 AWS D1.1 Tolerance &amp; Rework Risk<\/title>\n<style>\n  :root { \n    --brand-primary: #0060A8; \n    --brand-accent: #1878C0; \n    --brand-deep: #003060; \n    --bg-soft: #f0f6fc; \n    --border: #d8e7f3; \n    --error: #dc2626;\n  }\n  \n  * { box-sizing: border-box; }\n  body { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; color: #1a2332; background: #fff; margin: 0; padding: 0; }\n  .tool-wrap { max-width: 780px; margin: 0 auto; padding: 32px 20px; }\n  \n  \/* Heading Hierarchy *\/\n  h1 { color: var(--brand-deep); font-size: 28px; margin: 0 0 12px; font-weight: 800; }\n  h2 { color: var(--brand-primary); font-size: 20px; margin: 0 0 16px; padding-bottom: 8px; border-bottom: 2px solid var(--bg-soft); }\n  h3 { color: var(--brand-deep); font-size: 18px; margin: 0 0 12px; font-weight: 700; }\n  h4 { color: var(--brand-deep); font-size: 15px; margin: 0 0 8px; font-weight: 700; }\n\n  .tool-lead { color: #4a5b73; font-size: 15px; margin: 0 0 32px; max-width: 65ch; line-height: 1.6; }\n  \n  .tool-card { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 28px; box-shadow: 0 4px 12px rgba(0, 96, 168, 0.05); margin-bottom: 24px; }\n  \n  .row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }\n  .field label { display: block; font-weight: 600; color: var(--brand-deep); font-size: 14px; margin-bottom: 6px; }\n  .field input { width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: 6px; font-size: 15px; font-family: inherit; background: #fff; transition: border-color 0.2s; }\n  .field input:focus { outline: none; border-color: var(--brand-accent); box-shadow: 0 0 0 3px rgba(24, 120, 192, 0.1); }\n  .field-help { font-size: 12px; color: #6b7d96; margin-top: 6px; }\n  \n  .error-msg { color: var(--error); font-size: 14px; font-weight: 600; margin-bottom: 16px; display: none; }\n  \n  .btn { display: inline-block; padding: 14px 28px; background: var(--brand-primary); color: #fff; border: 0; border-radius: 6px; font-size: 15px; font-weight: 600; cursor: pointer; text-decoration: none; transition: background 0.2s; }\n  .btn:hover { background: var(--brand-deep); }\n  .btn-secondary { background: transparent; color: var(--brand-primary); border: 1px solid var(--brand-primary); }\n  .btn-secondary:hover { background: var(--bg-soft); }\n  \n  .cta-row { margin-top: 24px; display: flex; gap: 12px; flex-wrap: wrap; }\n  \n  \/* Results Section *\/\n  .result { background: var(--bg-soft); border: 2px solid var(--brand-primary); border-radius: 12px; padding: 32px 28px 28px; margin-top: 20px; display: none; }\n  .result.show { display: block; animation: fadeIn 0.4s ease; }\n  @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\n  \n  \/* Verdict Boxes *\/\n  .verdict-pass { background: #d1fae5; border: 2px solid #047857; color: #064e3b; padding: 16px 20px; border-radius: 8px; margin-bottom: 20px; font-weight: 600; line-height: 1.5; }\n  .verdict-warn { background: #fef3c7; border: 2px solid #d97706; color: #92400e; padding: 16px 20px; border-radius: 8px; margin-bottom: 20px; font-weight: 600; line-height: 1.5; }\n  .verdict-fail { background: #fee2e2; border: 2px solid #dc2626; color: #7f1d1d; padding: 16px 20px; border-radius: 8px; margin-bottom: 20px; font-weight: 600; line-height: 1.5; }\n  \n  .result-row { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid #d0e0ed; }\n  .result-row:last-of-type { border-bottom: 0; margin-bottom: 24px; }\n  .result-label { color: #4a5b73; font-size: 14px; }\n  .result-value { font-weight: 700; color: var(--brand-deep); text-align: right; }\n  \n  \/* Table Styling *\/\n  .cost-table { width: 100%; border-collapse: collapse; margin-top: 16px; font-size: 14px; background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }\n  .cost-table th, .cost-table td { padding: 12px 14px; text-align: left; border-bottom: 1px solid #f1f5f9; }\n  .cost-table th { background: var(--brand-deep); color: #fff; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; }\n  .cost-table tr:last-child td { border-bottom: none; }\n  .cost-table tbody tr:hover { background: #f8fafc; }\n  \n  .disclaimer { margin-top: 32px; padding-top: 16px; border-top: 1px solid #d0e0ed; }\n  .disclaimer h4 { color: #64748B; margin-bottom: 8px; font-size: 13px; text-transform: uppercase; letter-spacing: 0.5px; }\n  .disclaimer p { font-size: 12px; color: #6b7d96; margin: 0; line-height: 1.6; }\n\n  @media (max-width: 560px) { \n    .row { grid-template-columns: 1fr; gap: 16px; } \n    .result-row { flex-direction: column; gap: 4px; }\n    .result-value { text-align: left; }\n    .cost-table { display: block; overflow-x: auto; white-space: nowrap; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"tool-wrap\">\n  <!-- H1: Main Tool Title -->\n  <h1>ABOKE Hi-Lo Cost Checker \u2014 AWS D1.1 Tolerance &amp; Rework Risk<\/h1>\n  <p class=\"tool-lead\">Enter your current edge mismatch (hi-lo) and wall thickness; the tool checks compliance with AWS D1.1 butt-joint misalignment limits and estimates the rework cost exposure across your section count. Calculator implements the published cost curve from ABOKE&#8217;s Pillar guide.<\/p>\n\n  <div class=\"tool-card\">\n    <!-- H2: Input Section -->\n    <h2>Joint &amp; project specs<\/h2>\n    \n    <div id=\"errorMsg\" class=\"error-msg\">Please fill in all fields with valid non-negative numbers.<\/div>\n\n    <div class=\"row\">\n      <div class=\"field\">\n        <label for=\"hilo\">Edge mismatch \/ hi-lo (mm)<\/label>\n        <input type=\"number\" id=\"hilo\" min=\"0\" max=\"20\" step=\"0.1\" value=\"2.5\">\n        <div class=\"field-help\">Measured between two adjacent plates at the joint<\/div>\n      <\/div>\n      <div class=\"field\">\n        <label for=\"wallT\">Thinner plate thickness (mm)<\/label>\n        <input type=\"number\" id=\"wallT\" min=\"3\" max=\"200\" step=\"0.5\" value=\"16\">\n        <div class=\"field-help\">AWS D1.1 uses the thinner part for the 10% rule<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"row\">\n      <div class=\"field\">\n        <label for=\"sections\">Section count in this project<\/label>\n        <input type=\"number\" id=\"sections\" min=\"1\" max=\"500\" step=\"1\" value=\"12\">\n        <div class=\"field-help\">e.g. 6\u201312 for a tank, 20\u201340 for a wind tower<\/div>\n      <\/div>\n      <div class=\"field\">\n        <label for=\"reworkRate\">Inspection rework cost ($\/hr)<\/label>\n        <input type=\"number\" id=\"reworkRate\" min=\"20\" max=\"500\" step=\"5\" value=\"85\">\n        <div class=\"field-help\">Loaded cost: welder + NDT + bevel rework<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"cta-row\">\n      <button id=\"btnCalc\" class=\"btn\">Check tolerance &rarr;<\/button>\n      <button id=\"btnReset\" class=\"btn btn-secondary\">Reset<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"result\" id=\"result\">\n    <!-- H2: Results Section -->\n    <h2>AWS D1.1 Evaluation &amp; Cost<\/h2>\n    \n    <div id=\"verdictBlock\"><\/div>\n    \n    <div class=\"result-row\"><span class=\"result-label\">Your hi-lo<\/span><span class=\"result-value\" id=\"resHilo\">\u2014<\/span><\/div>\n    <div class=\"result-row\"><span class=\"result-label\">AWS D1.1 limit (lesser rule)<\/span><span class=\"result-value\" id=\"resLimit\">\u2014<\/span><\/div>\n    <div class=\"result-row\"><span class=\"result-label\">10% \u00d7 wall = <\/span><span class=\"result-value\" id=\"rule10\">\u2014<\/span><\/div>\n    <div class=\"result-row\"><span class=\"result-label\">1\/8 in. (3.18 mm) rule<\/span><span class=\"result-value\" id=\"ruleEighth\">3.18 mm<\/span><\/div>\n    <div class=\"result-row\"><span class=\"result-label\">Rework hours per joint<\/span><span class=\"result-value\" id=\"resReworkH\">\u2014<\/span><\/div>\n    <div class=\"result-row\"><span class=\"result-label\">Project rework cost exposure<\/span><span class=\"result-value\" id=\"resReworkCost\">\u2014<\/span><\/div>\n    \n    <!-- H3: Table Subsection -->\n    <h3 style=\"margin-top: 32px;\">Project Cost Curve Preview<\/h3>\n    <table class=\"cost-table\">\n      <thead>\n        <tr>\n          <th>Hi-lo (mm)<\/th>\n          <th>AWS verdict<\/th>\n          <th>Rework hr\/joint<\/th>\n          <th id=\"dynamicCostHeader\">Project Cost<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody id=\"curveBody\"><\/tbody>\n    <\/table>\n    \n    <div class=\"disclaimer\">\n      <!-- H4: Disclaimer Subsection -->\n      <h4>Methodology &amp; Standards<\/h4>\n      <p>Tolerance check based on AWS D1.1:2020 \u00a75.21 butt-joint misalignment provision: offset shall not exceed 10% of the thinner part or 1\/8 in. (3 mm), whichever is smaller. Rework hour estimates from the published ABOKE Hi-Lo Cost Curve. Project cost = average rework hours per joint \u00d7 section count \u00d7 your loaded rework rate. Actual cost depends on weld procedure, plate material, NDT method, and shop overhead allocation.<\/p>\n    <\/div>\n\n    <div class=\"cta-row\" style=\"margin-top: 24px;\">\n      <a href=\"#ct-popup-790\" class=\"btn\">Cut my hi-lo to \u00b10.5 mm &rarr;<\/a>\n      <a href=\"https:\/\/aubrikmc.com\/welding-rotators\/fit-up-rotator\/\" class=\"btn btn-secondary\">See the full Fit-Up Rotator guide<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\nfunction reworkHours(h) {\n  if (h <= 0.5) return 0;\n  if (h <= 1.0) return 0;\n  if (h <= 1.5) return 0.25;\n  if (h <= 2.0) return 1.5;\n  if (h <= 3.0) return 3;\n  if (h <= 4.0) return 5;\n  if (h <= 5.0) return 8;\n  if (h <= 7.0) return 15;\n  if (h <= 10) return 25;\n  return 40;\n}\n\nfunction verdict(h, limit) {\n  if (h <= 0.5) return {cls: \"verdict-pass\", txt: `\u2705 PASS \u2014 well inside hydraulic territory (\u00b10.5 mm). Compliant with AWS D1.1 (limit = ${limit.toFixed(2)} mm).`};\n  if (h <= limit * 0.5) return {cls: \"verdict-pass\", txt: `\u2705 PASS \u2014 comfortable margin to the ${limit.toFixed(2)} mm AWS D1.1 limit.`};\n  if (h <= limit) return {cls: \"verdict-warn\", txt: `\u26a0\ufe0f PASS but tight \u2014 only ${(limit-h).toFixed(2)} mm headroom to the AWS D1.1 limit of ${limit.toFixed(2)} mm. Hi-lo > 1.5 mm triggers measurable rework risk.`};\n  return {cls: \"verdict-fail\", txt: `\u274c FAIL \u2014 exceeds AWS D1.1 limit of ${limit.toFixed(2)} mm. Joint must be re-bevelled, partial cut-out, or section rejected.`};\n}\n\nfunction checkHiLo() {\n  const h = parseFloat(document.getElementById('hilo').value);\n  const t = parseFloat(document.getElementById('wallT').value);\n  const sec = parseInt(document.getElementById('sections').value);\n  const rate = parseFloat(document.getElementById('reworkRate').value);\n  const errorMsg = document.getElementById('errorMsg');\n\n  \/\/ Input Validation\n  if ([h, t, sec, rate].some(v => isNaN(v) || v < 0)) {\n    errorMsg.style.display = \"block\"; \n    return; \n  }\n  errorMsg.style.display = \"none\";\n\n  const rule10 = t * 0.1;\n  const ruleE = 3.175;\n  const limit = Math.min(rule10, ruleE);\n  const v = verdict(h, limit);\n\n  document.getElementById('verdictBlock').innerHTML = `<div class=\"${v.cls}\">${v.txt}<\/div>`;\n  document.getElementById('resHilo').textContent = `${h.toFixed(2)} mm`;\n  document.getElementById('resLimit').textContent = `${limit.toFixed(2)} mm`;\n  document.getElementById('rule10').textContent = `${rule10.toFixed(2)} mm`;\n\n  const rh = reworkHours(h);\n  const cost = rh * sec * rate;\n  document.getElementById('resReworkH').textContent = rh === 0 ? \"0 (typical)\" : `${rh} hr (typical)`;\n  document.getElementById('resReworkCost').textContent = \"$\" + cost.toLocaleString('en-US', {maximumFractionDigits:0});\n\n  \/\/ Dynamically update table header\n  document.getElementById('dynamicCostHeader').textContent = `Project Cost (${sec} sections)`;\n\n  const curveData = [\n    {h: \"0.5\", v: \"Pass\", r: 0},\n    {h: \"1.0\", v: \"Pass\", r: 0},\n    {h: \"1.5\", v: \"Pass\", r: 0.25},\n    {h: \"2.0\", v: \"Pass\", r: 1.5},\n    {h: \"3.0\", v: \"Pass (manual typical)\", r: 3},\n    {h: \"4.0\", v: \"Fail (>3 mm)\", r: 5},\n    {h: \"5.0\", v: \"Fail\", r: 8},\n    {h: \"7.0\", v: \"Fail (catastrophic)\", r: 15},\n    {h: \">10\", v: \"Out of code scope\", r: 40}\n  ];\n  const tbody = document.getElementById('curveBody');\n  tbody.innerHTML = \"\";\n  curveData.forEach(d => {\n    const tr = document.createElement('tr');\n    const c = d.r * sec * rate;\n    tr.innerHTML = `<td>${d.h}<\/td><td>${d.v}<\/td><td>${d.r}<\/td><td>$${c.toLocaleString('en-US', {maximumFractionDigits:0})}<\/td>`;\n    tbody.appendChild(tr);\n  });\n\n  const resultDiv = document.getElementById('result');\n  resultDiv.classList.add('show');\n  \n  setTimeout(() => {\n    resultDiv.scrollIntoView({behavior: 'smooth', block: 'start'});\n  }, 50);\n}\n\nfunction resetForm() {\n  document.getElementById('hilo').value = 2.5;\n  document.getElementById('wallT').value = 16;\n  document.getElementById('sections').value = 12;\n  document.getElementById('reworkRate').value = 85;\n  document.getElementById('errorMsg').style.display = \"none\";\n  document.getElementById('result').classList.remove('show');\n}\n\n\/\/ Event Listeners (Prevents CSP inline script blocking issues)\ndocument.addEventListener('DOMContentLoaded', () => {\n  document.getElementById('btnCalc').addEventListener('click', checkHiLo);\n  document.getElementById('btnReset').addEventListener('click', resetForm);\n  \n  \/\/ Allow Enter key to trigger calculation\n  const inputs = document.querySelectorAll('.tool-card input');\n  inputs.forEach(input => {\n    input.addEventListener('keypress', function(e) {\n      if (e.key === 'Enter') {\n        checkHiLo();\n      }\n    });\n  });\n});\n<\/script>\n<\/body>\n<\/html>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>ABOKE Hi-Lo Cost Checker \u2014 AWS D1.1 Tolerance &amp; Rework Risk ABOKE Hi-Lo Cost Checker \u2014 AWS D1.1 Tolerance &amp; Rework Risk Enter your current edge mismatch (hi-lo) and wall thickness; the tool checks compliance with AWS D1.1 butt-joint misalignment limits and estimates the rework cost exposure across your section count. Calculator implements the published [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":1164,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-1243","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/pages\/1243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/comments?post=1243"}],"version-history":[{"count":0,"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/pages\/1243\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/pages\/1164"}],"wp:attachment":[{"href":"https:\/\/aubrikmc.com\/pt\/wp-json\/wp\/v2\/media?parent=1243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}