{"id":7,"date":"2026-08-31T17:35:58","date_gmt":"2026-08-31T17:35:58","guid":{"rendered":"https:\/\/weldcalcpro.com\/?page_id=7"},"modified":"2026-08-31T20:08:26","modified_gmt":"2026-08-31T20:08:26","slug":"elementor-7","status":"publish","type":"page","link":"https:\/\/weldcalcpro.com\/","title":{"rendered":"WeldCalcPro \u2013 Welding Calculators &#038; Preliminary pWPS Generator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7\" class=\"elementor elementor-7\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3c2e15 e-con e-atomic-element e-flexbox-base e-c99a477 \" data-id=\"b3c2e15\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b3c2e15\">\n    \t\t\t<h2 data-interaction-id=\"47387b5\" class=\"e-47387b5-06e22b3 e-heading-base\">Welcome to WeldCalcPro<br>Professional Welding Calculators<\/h2>\n\t\t\t\t\t<a href=\"#wcp-app\" target=\"_self\" class=\"e-9cfa6d0-d8b331a e-button-base\" data-interaction-id=\"9cfa6d0\">\n\t\tOpen pWPS Generator\n\t<\/a>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-aab0deb e-con e-atomic-element e-flexbox-base e-f664553 \" data-id=\"aab0deb\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"aab0deb\">\n    \t\t\t<h2 data-interaction-id=\"8c194e7\" class=\"e-8c194e7-744b672 e-heading-base\">AI Welding pWPS Generator<br>Create a preliminary welding procedure draft in minutes<\/h2>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd6e8a5 elementor-widget elementor-widget-html\" data-id=\"cd6e8a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n#wcp-app,\n#wcp-app * {\n  box-sizing: border-box;\n}\n\n#wcp-app {\n  max-width: 1100px;\n  margin: 35px auto;\n  font-family: Arial, Helvetica, sans-serif;\n  color: #172033;\n}\n\n.wcp-card {\n  background: #fff;\n  border: 1px solid #e2e8f0;\n  border-radius: 18px;\n  overflow: hidden;\n  box-shadow: 0 12px 35px rgba(15,23,42,.08);\n}\n\n.wcp-header {\n  padding: 28px 32px;\n  background: linear-gradient(135deg,#0f172a,#1e3a8a);\n  color: #fff;\n}\n\n.wcp-header h2 {\n  margin: 0 !important;\n  color: #fff !important;\n  font-size: 30px !important;\n}\n\n.wcp-header p {\n  margin: 10px 0 0;\n  color: #dbeafe;\n}\n\n.wcp-form {\n  padding: 30px 32px;\n}\n\n.wcp-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px 24px;\n}\n\n.wcp-field {\n  display: flex;\n  flex-direction: column;\n  gap: 7px;\n}\n\n.wcp-field label {\n  font-size: 14px;\n  font-weight: 700;\n  color: #334155;\n}\n\n.wcp-field input,\n.wcp-field select {\n  width: 100%;\n  min-height: 52px;\n  padding: 12px 15px;\n  border: 1px solid #cbd5e1;\n  border-radius: 10px;\n  background: #f8fafc;\n  font-size: 15px;\n  color: #0f172a;\n}\n\n.wcp-field input:focus,\n.wcp-field select:focus {\n  outline: none;\n  border-color: #2563eb;\n  background: #fff;\n}\n\n.wcp-guidance {\n  margin-top: 20px;\n  padding: 14px 16px;\n  border: 1px solid #bfdbfe;\n  border-radius: 10px;\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-size: 13px;\n  line-height: 1.55;\n}\n\n#wcp-generate {\n  margin-top: 20px;\n  min-height: 54px;\n  padding: 0 28px;\n  border: 0;\n  border-radius: 10px;\n  background: #2563eb;\n  color: #fff;\n  font-size: 16px;\n  font-weight: 800;\n  cursor: pointer;\n}\n\n#wcp-generate:disabled {\n  opacity: .65;\n  cursor: wait;\n}\n\n#wcp-status {\n  display: none;\n  margin-top: 18px;\n  padding: 14px 16px;\n  border-radius: 10px;\n  font-weight: 700;\n  line-height: 1.5;\n  word-break: break-word;\n}\n\n#wcp-status.loading {\n  display: block;\n  background: #eff6ff;\n  border: 1px solid #bfdbfe;\n  color: #1d4ed8;\n}\n\n#wcp-status.error {\n  display: block;\n  background: #fef2f2;\n  border: 1px solid #fecaca;\n  color: #b91c1c;\n}\n\n#wcp-result {\n  display: none;\n  margin-top: 28px;\n  background: #fff;\n  border: 1px solid #dbe3ec;\n  border-radius: 16px;\n  overflow: hidden;\n}\n\n.wcp-result-header {\n  padding: 22px 28px;\n  background: #0f172a;\n  color: #fff;\n  border-bottom: 5px solid #2563eb;\n}\n\n.wcp-result-header h3 {\n  margin: 0;\n  color: #fff;\n}\n\n.wcp-summary {\n  display: grid;\n  grid-template-columns: repeat(4,1fr);\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.wcp-summary div {\n  padding: 15px;\n  border-right: 1px solid #e2e8f0;\n}\n\n.wcp-summary strong {\n  display: block;\n  font-size: 11px;\n  color: #64748b;\n  margin-bottom: 5px;\n  text-transform: uppercase;\n}\n\n#wcp-sections {\n  padding: 24px;\n  background: #f8fafc;\n}\n\n.wcp-section {\n  margin-bottom: 18px;\n  background: #fff;\n  border: 1px solid #e2e8f0;\n  border-radius: 10px;\n  overflow: hidden;\n}\n\n.wcp-section-title {\n  padding: 12px 16px;\n  background: #eef4ff;\n  color: #1e3a8a;\n  font-weight: 900;\n}\n\n.wcp-row {\n  display: grid;\n  grid-template-columns: 35% 65%;\n  border-top: 1px solid #edf2f7;\n}\n\n.wcp-label {\n  padding: 12px 15px;\n  background: #f8fafc;\n  font-weight: 700;\n}\n\n.wcp-value {\n  padding: 12px 15px;\n  word-break: break-word;\n}\n\n.wcp-warning {\n  margin: 0 24px 24px;\n  padding: 16px;\n  background: #fff7ed;\n  border: 1px solid #fdba74;\n  border-left: 5px solid #ea580c;\n  border-radius: 9px;\n  color: #9a3412;\n  font-weight: 800;\n}\n\n@media (max-width: 760px) {\n  .wcp-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .wcp-summary {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  .wcp-row {\n    grid-template-columns: 40% 60%;\n  }\n}\n<\/style>\n\n<div id=\"wcp-app\">\n\n  <div class=\"wcp-card\">\n\n    <div class=\"wcp-header\">\n      <h2>WeldCalcPro<\/h2>\n      <p>AI Draft pWPS Generator<\/p>\n    <\/div>\n\n    <div class=\"wcp-form\">\n\n      <div class=\"wcp-grid\">\n\n        <div class=\"wcp-field\">\n          <label>Project Name *<\/label>\n          <input id=\"wcp-project\" type=\"text\" placeholder=\"Example: Test S355\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Base Material 1 *<\/label>\n          <input id=\"wcp-mat1\" type=\"text\" placeholder=\"Example: S355J2\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Base Material 2<\/label>\n          <input id=\"wcp-mat2\" type=\"text\" placeholder=\"Leave empty if same\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Thickness (mm) *<\/label>\n          <input id=\"wcp-thickness\" type=\"number\" min=\"0.5\" step=\"0.1\" placeholder=\"10\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Applicable Code \/ WPS Standard *<\/label>\n          <select id=\"wcp-standard\">\n            <option value=\"\">Select Code or Standard<\/option>\n            <optgroup label=\"EN \/ ISO\">\n              <option value=\"EN ISO 15609-1\">EN ISO 15609-1 \u2014 WPS content<\/option>\n              <option value=\"EN ISO 15614-1\">EN ISO 15614-1 \u2014 Procedure qualification<\/option>\n              <option value=\"EN 1090-2\">EN 1090-2 \u2014 Steel structures execution<\/option>\n              <option value=\"ISO 3834\">ISO 3834 \u2014 Welding quality requirements<\/option>\n            <\/optgroup>\n            <optgroup label=\"ASME\">\n              <option value=\"ASME BPVC Section IX\">ASME BPVC Section IX \u2014 Procedure qualification<\/option>\n              <option value=\"ASME B31.3\">ASME B31.3 \u2014 Process piping<\/option>\n              <option value=\"ASME B31.1\">ASME B31.1 \u2014 Power piping<\/option>\n              <option value=\"ASME BPVC Section VIII\">ASME BPVC Section VIII \u2014 Pressure vessels<\/option>\n            <\/optgroup>\n            <optgroup label=\"AWS\">\n              <option value=\"AWS D1.1\/D1.1M\">AWS D1.1\/D1.1M \u2014 Structural steel<\/option>\n              <option value=\"AWS D1.2\/D1.2M\">AWS D1.2\/D1.2M \u2014 Aluminum<\/option>\n              <option value=\"AWS D1.5\/D1.5M\">AWS D1.5\/D1.5M \u2014 Bridges<\/option>\n              <option value=\"AWS D1.6\/D1.6M\">AWS D1.6\/D1.6M \u2014 Stainless steel<\/option>\n            <\/optgroup>\n            <optgroup label=\"API\">\n              <option value=\"API 1104\">API 1104 \u2014 Pipelines<\/option>\n            <\/optgroup>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Edition \/ Year *<\/label>\n          <input id=\"wcp-edition\" type=\"text\" inputmode=\"numeric\" placeholder=\"Example: 2021\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Joint Type *<\/label>\n          <select id=\"wcp-joint\">\n            <option value=\"\">Select Joint Type<\/option>\n            <option value=\"Butt Joint\">Butt Joint<\/option>\n            <option value=\"Pipe Butt Joint\">Pipe Butt Joint<\/option>\n            <option value=\"Fillet Joint\">Fillet Joint<\/option>\n            <option value=\"T-Joint\">T-Joint<\/option>\n            <option value=\"Lap Joint\">Lap Joint<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Welding Process *<\/label>\n          <select id=\"wcp-process\">\n            <option value=\"\">Select Process<\/option>\n            <option value=\"111\">111 - SMAW \/ E-Hand<\/option>\n            <option value=\"131\">131 - MIG<\/option>\n            <option value=\"135\">135 - MAG<\/option>\n            <option value=\"136\">136 - FCAW<\/option>\n            <option value=\"138\">138 - MCAW<\/option>\n            <option value=\"141\">141 - TIG \/ WIG<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Welding Position *<\/label>\n          <select id=\"wcp-position\">\n            <option value=\"\">Select Position<\/option>\n            <option value=\"PA\">PA - Flat<\/option>\n            <option value=\"PB\">PB - Fillet<\/option>\n            <option value=\"PC\">PC - Horizontal<\/option>\n            <option value=\"PE\">PE - Overhead<\/option>\n            <option value=\"PF\">PF - Vertical Up<\/option>\n            <option value=\"PG\">PG - Vertical Down<\/option>\n            <option value=\"H-L045\">H-L045 - Pipe<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Qualified Heat Input Min (kJ\/mm)<\/label>\n          <input id=\"wcp-qualified-heat-min\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"From WPQR \/ approved WPS\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Qualified Heat Input Max (kJ\/mm)<\/label>\n          <input id=\"wcp-qualified-heat-max\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"From WPQR \/ approved WPS\">\n        <\/div>\n\n      <\/div>\n\n      <div class=\"wcp-guidance\">\n        Select the applicable project code and its exact edition. A listed code does not by itself prove compliance.\n        The generated document remains a preliminary pWPS and requires review against the governing code, WPQR,\n        approved WPS, client specification, and project requirements.\n      <\/div>\n\n      <button id=\"wcp-generate\" type=\"button\">\n        Generate AI Draft pWPS\n      <\/button>\n\n      <div id=\"wcp-status\"><\/div>\n\n    <\/div>\n\n  <\/div>\n\n\n  <div id=\"wcp-result\">\n\n    <div class=\"wcp-result-header\">\n      <h3>Preliminary pWPS<\/h3>\n    <\/div>\n\n    <div id=\"wcp-summary\" class=\"wcp-summary\"><\/div>\n\n    <div id=\"wcp-sections\"><\/div>\n\n    <div class=\"wcp-warning\">\n      PRELIMINARY pWPS \u2014 ENGINEERING REVIEW REQUIRED.\n      This document is not a qualified production WPS.\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n  const $ = id => document.getElementById(id);\n\n  const button = $(\"wcp-generate\");\n  const statusBox = $(\"wcp-status\");\n  const resultBox = $(\"wcp-result\");\n  const summaryBox = $(\"wcp-summary\");\n  const sectionsBox = $(\"wcp-sections\");\n\n\n  function status(message, type) {\n\n    statusBox.className = \"\";\n\n    if (!message) {\n      statusBox.style.display = \"none\";\n      statusBox.textContent = \"\";\n      return;\n    }\n\n    statusBox.textContent = message;\n    statusBox.classList.add(type);\n    statusBox.style.display = \"block\";\n  }\n\n\n  function escapeHtml(value) {\n    return String(value)\n      .replaceAll(\"&\", \"&amp;\")\n      .replaceAll(\"<\", \"&lt;\")\n      .replaceAll(\">\", \"&gt;\")\n      .replaceAll('\"', \"&quot;\")\n      .replaceAll(\"'\", \"&#039;\");\n  }\n\n\n  function label(key) {\n\n    const names = {\n      groove_type: \"Groove Type\",\n      root_gap_mm: \"Root Gap\",\n      root_face_mm: \"Root Face\",\n      groove_angle_deg: \"Groove Angle\",\n      backing: \"Backing\",\n      root_process: \"Root Process\",\n      fill_cap_process: \"Fill \/ Cap Process\",\n      filler_material: \"Filler Material\",\n      wire_diameter_mm: \"Wire Diameter\",\n      shielding_gas: \"Shielding Gas\",\n      polarity: \"Polarity\",\n      current_min_a: \"Current Minimum\",\n      current_max_a: \"Current Maximum\",\n      voltage_min_v: \"Voltage Minimum\",\n      voltage_max_v: \"Voltage Maximum\",\n      wire_feed_min_m_min: \"Wire Feed Minimum\",\n      wire_feed_max_m_min: \"Wire Feed Maximum\",\n      travel_speed_min_mm_min: \"Travel Speed Minimum\",\n      travel_speed_max_mm_min: \"Travel Speed Maximum\",\n      preheat_c: \"Preheat\",\n      interpass_max_c: \"Maximum Interpass\",\n      pass_sequence: \"Pass Sequence\",\n      inspection_notes: \"Inspection Notes\",\n      engineering_notes: \"Engineering Notes\",\n      heat_input_min_kj_mm: \"Heat Input Minimum\",\n      heat_input_max_kj_mm: \"Heat Input Maximum\",\n      thermal_efficiency_factor: \"Thermal Efficiency Factor\",\n      heat_input_validation: \"Heat Input Validation\",\n      qualified_heat_input_min: \"Qualified Heat Input Minimum\",\n      qualified_heat_input_max: \"Qualified Heat Input Maximum\",\n      document_status: \"Document Status\",\n      engineering_safety_note: \"Engineering Safety Note\"\n    };\n\n    return names[key] || key.replaceAll(\"_\",\" \");\n  }\n\n\n  function unit(key, value) {\n\n    if (value === null || value === undefined || value === \"\") {\n      return \"\";\n    }\n\n    if (\n      key === \"heat_input_min_kj_mm\" ||\n      key === \"heat_input_max_kj_mm\"\n    ) return value + \" kJ\/mm\";\n\n    if (key.endsWith(\"_mm\")) return value + \" mm\";\n    if (key.endsWith(\"_deg\")) return value + \"\u00b0\";\n    if (key.endsWith(\"_a\")) return value + \" A\";\n    if (key.endsWith(\"_v\")) return value + \" V\";\n    if (key.endsWith(\"_c\")) return value + \" \u00b0C\";\n\n    if (key.includes(\"wire_feed\")) {\n      return value + \" m\/min\";\n    }\n\n    if (key.includes(\"travel_speed\")) {\n      return value + \" mm\/min\";\n    }\n\n    return String(value);\n  }\n\n\n  function groupFor(key) {\n\n    if (\n      [\n        \"heat_input_min_kj_mm\",\n        \"heat_input_max_kj_mm\",\n        \"thermal_efficiency_factor\",\n        \"heat_input_validation\"\n      ].includes(key)\n    ) return \"Heat Input\";\n\n\n    if (\n      [\n        \"groove_type\",\n        \"root_gap_mm\",\n        \"root_face_mm\",\n        \"groove_angle_deg\",\n        \"backing\"\n      ].includes(key)\n    ) return \"Joint Design\";\n\n\n    if (\n      [\n        \"root_process\",\n        \"fill_cap_process\",\n        \"filler_material\",\n        \"wire_diameter_mm\",\n        \"shielding_gas\",\n        \"polarity\"\n      ].includes(key)\n    ) return \"Process & Consumables\";\n\n\n    if (\n      [\n        \"current_min_a\",\n        \"current_max_a\",\n        \"voltage_min_v\",\n        \"voltage_max_v\",\n        \"wire_feed_min_m_min\",\n        \"wire_feed_max_m_min\",\n        \"travel_speed_min_mm_min\",\n        \"travel_speed_max_mm_min\"\n      ].includes(key)\n    ) return \"Welding Parameters\";\n\n\n    if (\n      [\n        \"preheat_c\",\n        \"interpass_max_c\",\n        \"pass_sequence\"\n      ].includes(key)\n    ) return \"Thermal & Welding Sequence\";\n\n\n    return \"Inspection & Engineering Notes\";\n  }\n\n\n  function showResult(wps) {\n\n    summaryBox.innerHTML = `\n      <div>\n        <strong>Project<\/strong>\n        ${escapeHtml($(\"wcp-project\").value)}\n      <\/div>\n\n      <div>\n        <strong>Standard<\/strong>\n        ${escapeHtml($(\"wcp-standard\").value + \" \u2014 Edition \" + $(\"wcp-edition\").value.trim())}\n      <\/div>\n\n      <div>\n        <strong>Material<\/strong>\n        ${escapeHtml($(\"wcp-mat1\").value)}\n      <\/div>\n\n      <div>\n        <strong>Thickness<\/strong>\n        ${escapeHtml($(\"wcp-thickness\").value)} mm\n      <\/div>\n    `;\n\n\n    const groups = {};\n\n    Object.keys(wps).forEach(key => {\n\n      const value = wps[key];\n\n      if (\n        value === null ||\n        value === undefined ||\n        value === \"\"\n      ) return;\n\n      const group = groupFor(key);\n\n      if (!groups[group]) {\n        groups[group] = [];\n      }\n\n      groups[group].push({\n        key,\n        value\n      });\n    });\n\n\n    sectionsBox.innerHTML = \"\";\n\n\n    const groupOrder = [\n      \"Joint Design\",\n      \"Process & Consumables\",\n      \"Welding Parameters\",\n      \"Heat Input\",\n      \"Thermal & Welding Sequence\",\n      \"Inspection & Engineering Notes\"\n    ];\n\n    groupOrder.filter(group => groups[group]).forEach(group => {\n\n      const section =\n        document.createElement(\"div\");\n\n      section.className =\n        \"wcp-section\";\n\n\n      const title =\n        document.createElement(\"div\");\n\n      title.className =\n        \"wcp-section-title\";\n\n      title.textContent =\n        group;\n\n\n      section.appendChild(title);\n\n\n      groups[group].forEach(item => {\n\n        const row =\n          document.createElement(\"div\");\n\n        row.className =\n          \"wcp-row\";\n\n\n        const left =\n          document.createElement(\"div\");\n\n        left.className =\n          \"wcp-label\";\n\n        left.textContent =\n          label(item.key);\n\n\n        const right =\n          document.createElement(\"div\");\n\n        right.className =\n          \"wcp-value\";\n\n        right.textContent =\n          unit(\n            item.key,\n            item.value\n          );\n\n\n        row.appendChild(left);\n        row.appendChild(right);\n\n        section.appendChild(row);\n      });\n\n\n      sectionsBox.appendChild(section);\n    });\n\n\n    resultBox.style.display =\n      \"block\";\n  }\n\n\n  async function generate() {\n\n    const payload = {\n\n      project:\n        $(\"wcp-project\").value.trim(),\n\n      standard:\n        $(\"wcp-standard\").value +\n        \" \u2014 Edition \" +\n        $(\"wcp-edition\").value.trim(),\n\n      material1:\n        $(\"wcp-mat1\").value.trim(),\n\n      material2:\n        $(\"wcp-mat2\").value.trim(),\n\n      thickness:\n        $(\"wcp-thickness\").value,\n\n      joint:\n        $(\"wcp-joint\").value,\n\n      process:\n        $(\"wcp-process\").value,\n\n      position:\n        $(\"wcp-position\").value,\n\n      qualified_heat_input_min:\n        $(\"wcp-qualified-heat-min\").value === \"\"\n          ? null\n          : parseFloat($(\"wcp-qualified-heat-min\").value),\n\n      qualified_heat_input_max:\n        $(\"wcp-qualified-heat-max\").value === \"\"\n          ? null\n          : parseFloat($(\"wcp-qualified-heat-max\").value)\n    };\n\n\n    if (\n      !payload.project ||\n      !$(\"wcp-standard\").value ||\n      !$(\"wcp-edition\").value.trim() ||\n      !payload.material1 ||\n      !payload.thickness ||\n      !payload.joint ||\n      !payload.process ||\n      !payload.position\n    ) {\n\n      status(\n        \"Please fill all required fields.\",\n        \"error\"\n      );\n\n      return;\n    }\n\n\n    const hasQualifiedMin =\n      payload.qualified_heat_input_min !== null;\n\n    const hasQualifiedMax =\n      payload.qualified_heat_input_max !== null;\n\n    if (hasQualifiedMin !== hasQualifiedMax) {\n      status(\n        \"Enter both qualified Heat Input limits, or leave both empty.\",\n        \"error\"\n      );\n      return;\n    }\n\n    if (\n      hasQualifiedMin &&\n      payload.qualified_heat_input_min >\n        payload.qualified_heat_input_max\n    ) {\n      status(\n        \"Qualified Heat Input minimum cannot be greater than maximum.\",\n        \"error\"\n      );\n      return;\n    }\n\n\n    button.disabled = true;\n\n    button.textContent =\n      \"AI is generating...\";\n\n    resultBox.style.display =\n      \"none\";\n\n    status(\n      \"Generating preliminary pWPS...\",\n      \"loading\"\n    );\n\n\n    try {\n\n      const endpoint =\n        window.location.origin +\n        \"\/?rest_route=\/weldcalcpro\/v1\/generate-wps\";\n\n\n      const response =\n        await fetch(endpoint, {\n\n          method: \"POST\",\n\n          headers: {\n            \"Content-Type\": \"application\/json\",\n            \"Accept\": \"application\/json\"\n          },\n\n          credentials: \"same-origin\",\n\n          body:\n            JSON.stringify(payload)\n        });\n\n\n      const raw =\n        await response.text();\n\n\n      let json = null;\n\n\n      try {\n\n        json =\n          JSON.parse(raw);\n\n      } catch (e) {\n\n        const start =\n          raw.indexOf(\"{\");\n\n        const end =\n          raw.lastIndexOf(\"}\");\n\n        if (\n          start !== -1 &&\n          end > start\n        ) {\n\n          try {\n\n            json =\n              JSON.parse(\n                raw.substring(\n                  start,\n                  end + 1\n                )\n              );\n\n          } catch (e2) {}\n        }\n      }\n\n\n      if (!json) {\n\n        throw new Error(\n          \"RAW SERVER RESPONSE: \" +\n          raw\n            .replace(\/\\s+\/g,\" \")\n            .substring(0,250)\n        );\n      }\n\n\n      if (!response.ok) {\n\n        throw new Error(\n          json.message ||\n          \"Server error HTTP \" +\n          response.status\n        );\n      }\n\n\n      if (json.success === false) {\n\n        throw new Error(\n          json.message ||\n          \"pWPS generation failed.\"\n        );\n      }\n\n\n      if (!json.wps) {\n\n        throw new Error(\n          \"Server returned no pWPS data.\"\n        );\n      }\n\n\n      status(\"\",\"\");\n\n      showResult(\n        json.wps\n      );\n\n\n    } catch (error) {\n\n      status(\n        \"Error: \" +\n        error.message,\n        \"error\"\n      );\n\n    } finally {\n\n      button.disabled =\n        false;\n\n      button.textContent =\n        \"Generate AI Draft pWPS\";\n    }\n  }\n\n\n  button.addEventListener(\n    \"click\",\n    generate\n  );\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-ce6a82b e-con e-atomic-element e-flexbox-base e-f7365a4 \" data-id=\"ce6a82b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ce6a82b\">\n    \t\t\t<h2 data-interaction-id=\"c6d3a4c\" class=\"e-c6d3a4c-cf1c0cb e-heading-base\">Welding Parameter Calculator<br>Estimate practical starting parameters<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"f1efd8f\" class=\"e-f1efd8f-e749bc1 e-heading-base\">Supported Materials<br>Steel, Stainless Steel, Aluminum, and Copper<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"d3e8b76\" class=\"e-heading-base\"><\/h2>\n\t\t\t\t\t<a href=\"#wc-material\" target=\"_self\" class=\"e-e8f4844-6cfc8ab e-button-base\" data-interaction-id=\"e8f4844\">\n\t\tOpen Welding Calculator\n\t<\/a>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-9886382 e-flex e-con-boxed e-con e-parent\" data-id=\"9886382\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13cd823 elementor-widget elementor-widget-html\" data-id=\"13cd823\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"weldcalc-pro\">\r\n  <h2>Welding Calculator<\/h2>\r\n  <p>Enter the welding parameters to get estimated starting settings.<\/p>\r\n\r\n  <label>Material<\/label>\r\n  <select id=\"wc-material\">\r\n    <option value=\"steel\">Steel<\/option>\r\n    <option value=\"stainless\">Stainless Steel<\/option>\r\n    <option value=\"aluminum\">Aluminum<\/option>\r\n    <option value=\"copper\">Copper<\/option>\r\n  <\/select>\r\n\r\n  <label>Welding Process<\/label>\r\n  <select id=\"wc-process\">\r\n    <option value=\"mig\">MIG \/ MAG<\/option>\r\n    <option value=\"tig\">TIG<\/option>\r\n    <option value=\"mma\">MMA \/ Stick<\/option>\r\n  <\/select>\r\n\r\n  <label>Welding Position<\/label>\r\n  <select id=\"wc-position\">\r\n    <option value=\"PA\">PA - Flat<\/option>\r\n    <option value=\"PB\">PB - Horizontal \/ Vertical Fillet<\/option>\r\n    <option value=\"PC\">PC - Horizontal<\/option>\r\n    <option value=\"PF\">PF - Vertical Up<\/option>\r\n    <option value=\"PG\">PG - Vertical Down<\/option>\r\n  <\/select>\r\n\r\n  <label>Material Thickness (mm)<\/label>\r\n  <input\r\n    id=\"wc-thickness\"\r\n    type=\"number\"\r\n    min=\"0.5\"\r\n    max=\"30\"\r\n    step=\"0.1\"\r\n    placeholder=\"Example: 3\"\r\n  >\r\n\r\n  <label>Wire \/ Electrode Diameter (mm)<\/label>\r\n  <select id=\"wc-diameter\">\r\n    <option value=\"0.8\">0.8 mm<\/option>\r\n    <option value=\"1.0\">1.0 mm<\/option>\r\n    <option value=\"1.2\">1.2 mm<\/option>\r\n    <option value=\"1.6\">1.6 mm<\/option>\r\n    <option value=\"2.0\">2.0 mm<\/option>\r\n    <option value=\"2.5\">2.5 mm<\/option>\r\n    <option value=\"3.2\">3.2 mm<\/option>\r\n    <option value=\"4.0\">4.0 mm<\/option>\r\n  <\/select>\r\n\r\n  <label>Shielding Gas<\/label>\r\n  <select id=\"wc-gas\">\r\n    <option value=\"auto\">Auto - Recommended<\/option>\r\n    <option value=\"arco2\">Argon \/ CO\u2082 Mix<\/option>\r\n    <option value=\"argon\">100% Argon<\/option>\r\n    <option value=\"aro2\">Argon \/ O\u2082 Mix<\/option>\r\n    <option value=\"co2\">100% CO\u2082<\/option>\r\n    <option value=\"arhe\">Argon \/ Helium Mix<\/option>\r\n  <\/select>\r\n\r\n  <button type=\"button\" onclick=\"calculateWeldPro()\">\r\n    Calculate\r\n  <\/button>\r\n\r\n  <div id=\"wc-results\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n.weldcalc-pro {\r\n  max-width: 650px;\r\n  margin: 20px auto;\r\n  padding: 26px;\r\n  border: 1px solid #ddd;\r\n  border-radius: 14px;\r\n  font-family: Arial, sans-serif;\r\n}\r\n\r\n.weldcalc-pro h2 {\r\n  margin-top: 0;\r\n}\r\n\r\n.weldcalc-pro label {\r\n  display: block;\r\n  margin-top: 16px;\r\n  margin-bottom: 6px;\r\n  font-weight: bold;\r\n}\r\n\r\n.weldcalc-pro select,\r\n.weldcalc-pro input {\r\n  width: 100%;\r\n  padding: 12px;\r\n  box-sizing: border-box;\r\n  border: 1px solid #bbb;\r\n  border-radius: 8px;\r\n  font-size: 16px;\r\n}\r\n\r\n.weldcalc-pro button {\r\n  width: 100%;\r\n  padding: 14px;\r\n  margin-top: 22px;\r\n  border: 0;\r\n  border-radius: 8px;\r\n  font-size: 17px;\r\n  cursor: pointer;\r\n}\r\n\r\n#wc-results {\r\n  display: none;\r\n  margin-top: 22px;\r\n  padding: 18px;\r\n  border-radius: 9px;\r\n  background: #f4f4f4;\r\n  line-height: 1.8;\r\n}\r\n<\/style>\r\n\r\n<script>\r\nfunction calculateWeldPro() {\r\n\r\n  const material =\r\n    document.getElementById(\"wc-material\").value;\r\n\r\n  const process =\r\n    document.getElementById(\"wc-process\").value;\r\n\r\n  const position =\r\n    document.getElementById(\"wc-position\").value;\r\n\r\n  const thickness =\r\n    parseFloat(document.getElementById(\"wc-thickness\").value);\r\n\r\n  const diameter =\r\n    parseFloat(document.getElementById(\"wc-diameter\").value);\r\n\r\n  const gasChoice =\r\n    document.getElementById(\"wc-gas\").value;\r\n\r\n  const results =\r\n    document.getElementById(\"wc-results\");\r\n\r\n  if (!thickness || thickness <= 0) {\r\n    results.style.display = \"block\";\r\n    results.innerHTML =\r\n      \"Please enter a valid material thickness.\";\r\n    return;\r\n  }\r\n\r\n  const materialFactor = {\r\n    steel: 1.00,\r\n    stainless: 0.90,\r\n    aluminum: 1.20,\r\n    copper: 1.25\r\n  };\r\n\r\n  const positionFactor = {\r\n    PA: 1.00,\r\n    PB: 0.95,\r\n    PC: 0.90,\r\n    PF: 0.82,\r\n    PG: 0.78\r\n  };\r\n\r\n  let processFactor = 0;\r\n\r\n  if (process === \"mig\") processFactor = 38;\r\n  if (process === \"tig\") processFactor = 32;\r\n  if (process === \"mma\") processFactor = 40;\r\n\r\n  let current =\r\n    thickness *\r\n    processFactor *\r\n    materialFactor[material] *\r\n    positionFactor[position];\r\n\r\n  current = Math.max(25, Math.min(350, current));\r\n\r\n  const minCurrent =\r\n    Math.round(current * 0.85);\r\n\r\n  const maxCurrent =\r\n    Math.round(current * 1.15);\r\n\r\n  let voltage = 0;\r\n  let wireSpeed = \"N\/A\";\r\n\r\n  if (process === \"mig\") {\r\n    voltage =\r\n      Math.round((16 + current * 0.035) * 10) \/ 10;\r\n\r\n    wireSpeed =\r\n      (current \/ (diameter * 35)).toFixed(1) +\r\n      \" m\/min\";\r\n  }\r\n\r\n  if (process === \"tig\") {\r\n    voltage =\r\n      Math.round((10 + current * 0.025) * 10) \/ 10;\r\n  }\r\n\r\n  if (process === \"mma\") {\r\n    voltage =\r\n      Math.round((20 + current * 0.025) * 10) \/ 10;\r\n  }\r\n\r\n  let travelSpeed =\r\n    300 \/ Math.max(1, thickness);\r\n\r\n  travelSpeed =\r\n    travelSpeed * positionFactor[position];\r\n\r\n  travelSpeed =\r\n    Math.round(travelSpeed);\r\n\r\n  let recommendedGas = \"\";\r\n\r\n  if (process === \"mma\") {\r\n    recommendedGas =\r\n      \"No external shielding gas required\";\r\n  }\r\n\r\n  else if (process === \"tig\") {\r\n\r\n    if (material === \"copper\") {\r\n      recommendedGas =\r\n        \"Argon or Argon \/ Helium Mix\";\r\n    } else {\r\n      recommendedGas =\r\n        \"100% Argon\";\r\n    }\r\n  }\r\n\r\n  else if (process === \"mig\") {\r\n\r\n    if (material === \"steel\") {\r\n      recommendedGas =\r\n        \"Argon \/ CO\u2082 Mix\";\r\n    }\r\n\r\n    if (material === \"stainless\") {\r\n      recommendedGas =\r\n        \"Argon \/ CO\u2082 or Argon \/ O\u2082 Mix\";\r\n    }\r\n\r\n    if (material === \"aluminum\") {\r\n      recommendedGas =\r\n        \"100% Argon\";\r\n    }\r\n\r\n    if (material === \"copper\") {\r\n      recommendedGas =\r\n        \"Argon \/ Helium Mix\";\r\n    }\r\n  }\r\n\r\n  const manualGasNames = {\r\n    arco2: \"Argon \/ CO\u2082 Mix\",\r\n    argon: \"100% Argon\",\r\n    aro2: \"Argon \/ O\u2082 Mix\",\r\n    co2: \"100% CO\u2082\",\r\n    arhe: \"Argon \/ Helium Mix\"\r\n  };\r\n\r\n  let displayedGas;\r\n\r\n  if (process === \"mma\") {\r\n    displayedGas =\r\n      \"No external shielding gas required\";\r\n  }\r\n\r\n  else if (gasChoice === \"auto\") {\r\n    displayedGas =\r\n      recommendedGas + \" (Recommended)\";\r\n  }\r\n\r\n  else {\r\n    displayedGas =\r\n      manualGasNames[gasChoice];\r\n  }\r\n\r\n  results.style.display = \"block\";\r\n\r\n  results.innerHTML =\r\n    \"<strong>Estimated Starting Parameters<\/strong><br><br>\" +\r\n\r\n    \"Welding Position: <strong>\" +\r\n    position +\r\n    \"<\/strong><br>\" +\r\n\r\n    \"Current: <strong>\" +\r\n    minCurrent +\r\n    \" \u2013 \" +\r\n    maxCurrent +\r\n    \" A<\/strong><br>\" +\r\n\r\n    \"Voltage: <strong>\" +\r\n    voltage +\r\n    \" V<\/strong><br>\" +\r\n\r\n    \"Wire Feed Speed: <strong>\" +\r\n    wireSpeed +\r\n    \"<\/strong><br>\" +\r\n\r\n    \"Travel Speed: <strong>~\" +\r\n    travelSpeed +\r\n    \" mm\/min<\/strong><br>\" +\r\n\r\n    \"Shielding Gas: <strong>\" +\r\n    displayedGas +\r\n    \"<\/strong><br><br>\" +\r\n\r\n    \"<small>\" +\r\n    \"These values are approximate starting estimates only. \" +\r\n    \"Always verify settings against the consumable manufacturer data, \" +\r\n    \"material requirements and the applicable WPS.\" +\r\n    \"<\/small>\";\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b753e1 e-con e-atomic-element e-flexbox-base e-bb1037d \" data-id=\"2b753e1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2b753e1\">\n    \t\t\t<h2 data-interaction-id=\"83bb3a4\" class=\"e-heading-base\"><\/h2>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-e7d1257 e-con e-atomic-element e-flexbox-base e-6b2b29b \" data-id=\"e7d1257\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"e7d1257\">\n    \t\t<div class=\"elementor-element elementor-element-83df621 elementor-widget elementor-widget-text-editor\" data-id=\"83df621\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Welding Calculator Coming Soon<\/p><p>This calculator will help you calculate welding parameters such as current, voltage, and wire feed speed.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-66bada9 e-con e-atomic-element e-flexbox-base e-f2c47c3 \" data-id=\"66bada9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"66bada9\">\n    \t\t\t<h2 data-interaction-id=\"45046bf\" class=\"e-heading-base\">Welding Cost Calculator<br>Estimate material, labor, and consumable costs. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-2301934-ea49310 e-button-base\" data-interaction-id=\"2301934\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-65e862c e-con e-atomic-element e-flexbox-base e-46962eb \" data-id=\"65e862c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"65e862c\">\n    \t\t\t<h2 data-interaction-id=\"41330ab\" class=\"e-heading-base\">Welding Time Estimator<br>Estimate welding time from weld length, deposition rate, and joint details. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-bbab0c8-969ae59 e-button-base\" data-interaction-id=\"bbab0c8\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-ef3c422 e-con e-atomic-element e-flexbox-base e-db96f64 \" data-id=\"ef3c422\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ef3c422\">\n    \t\t\t<h2 data-interaction-id=\"674345e\" class=\"e-heading-base\">Filler Material Selector<br>Choose preliminary filler classifications by base material and process. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-ca4ece9-28a52ec e-button-base\" data-interaction-id=\"ca4ece9\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-24a144b e-con e-atomic-element e-flexbox-base e-f3189c0 \" data-id=\"24a144b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"24a144b\">\n    \t\t\t<h2 data-interaction-id=\"1ad4720\" class=\"e-heading-base\">Joint Type Helper<br>Review common butt, fillet, T-, lap, and pipe joint configurations. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-9618161-5370bda e-button-base\" data-interaction-id=\"9618161\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-eed4903 e-con e-atomic-element e-flexbox-base e-0d25dc2 \" data-id=\"eed4903\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"eed4903\">\n    \t\t\t<h2 data-interaction-id=\"ed089cf\" class=\"e-heading-base\">Basic Electrode Size Chart<br>Compare common electrode and wire diameters with typical use ranges. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-c11f0d0-50f3fc3 e-button-base\" data-interaction-id=\"c11f0d0\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-6e6e042 e-con e-atomic-element e-flexbox-base e-f721730 \" data-id=\"6e6e042\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6e6e042\">\n    \t\t\t<h2 data-interaction-id=\"0b24f4f\" class=\"e-heading-base\">Preheat &amp; Interpass Guide<br>Review factors affecting preheat and interpass control; engineering verification required. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-e4e6a96-a7c3cbd e-button-base\" data-interaction-id=\"e4e6a96\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-70adfc4 e-con e-atomic-element e-flexbox-base e-4b55567 \" data-id=\"70adfc4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"70adfc4\">\n    \t\t\t<h2 data-interaction-id=\"cd3ded1\" class=\"e-heading-base\">Defect Troubleshooter<br>Explore common welding defects, likely causes, and corrective actions. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-6e5188b-73f23c5 e-button-base\" data-interaction-id=\"6e5188b\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-752e42d e-con e-atomic-element e-flexbox-base e-e265d1b \" data-id=\"752e42d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"752e42d\">\n    \t\t\t<h2 data-interaction-id=\"4757cff\" class=\"e-heading-base\">Welding Reference Gallery<br>Reference illustrations are being prepared. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-9d5a185-ff879a5 e-button-base\" data-interaction-id=\"9d5a185\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-9da8551 e-con e-atomic-element e-flexbox-base e-3e66337 \" data-id=\"9da8551\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"9da8551\">\n    \t\t\t<h2 data-interaction-id=\"e626232\" class=\"e-heading-base\">Quick Settings Cheat Sheet<br>Quick reference for preliminary welding parameters. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-32f85b2-6114445 e-button-base\" data-interaction-id=\"32f85b2\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-cab2b06 e-flex e-con-boxed e-con e-parent\" data-id=\"cab2b06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Welcome to WeldCalcProProfessional Welding Calculators Open pWPS Generator AI Welding pWPS GeneratorCreate a preliminary welding procedure draft in minutes WeldCalcPro AI Draft pWPS Generator Project Name * Base Material 1 * Base Material 2 Thickness (mm) * Applicable Code \/ WPS Standard * Select Code or StandardEN ISO 15609-1 \u2014 WPS contentEN ISO 15614-1 \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":5,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":24,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/24"}],"wp:attachment":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}