{"id":10322,"date":"2026-09-01T23:53:27","date_gmt":"2026-09-01T23:53:27","guid":{"rendered":"https:\/\/theycraft.com\/?page_id=10322"},"modified":"2026-09-02T02:21:50","modified_gmt":"2026-09-02T02:21:50","slug":"custom-bodice-sloper-top-pattern-generator","status":"publish","type":"page","link":"https:\/\/theycraft.com\/fr\/sewing-free-tools\/custom-bodice-sloper-top-pattern-generator\/","title":{"rendered":"Custom Bodice Sloper &#038; Top Pattern Generator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10322\" class=\"elementor elementor-10322\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bedab56 e-flex e-con-boxed e-con e-parent\" data-id=\"bedab56\" 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-4b9ba64 elementor-widget elementor-widget-html\" data-id=\"4b9ba64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  .tc-bodice-root {\r\n    width: 100%;\r\n    margin: 0 auto 36px auto;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n    color: #1e293b;\r\n    box-sizing: border-box;\r\n    line-height: 1.5;\r\n  }\r\n  .tc-bodice-root * { box-sizing: border-box; }\r\n\r\n  \/* 100% Content-Width Hero Banner *\/\r\n  .tc-bodice-banner {\r\n    position: relative;\r\n    width: 100%;\r\n    background: radial-gradient(circle at 85% 15%, #1e293b 0%, #0f172a 70%);\r\n    border: 1px solid rgba(255, 255, 255, 0.08);\r\n    border-radius: 20px;\r\n    padding: 56px 32px;\r\n    text-align: center;\r\n    overflow: hidden;\r\n    margin-bottom: 28px;\r\n    box-shadow: 0 20px 25px -5px rgba(15, 23, 42, 0.25), 0 8px 10px -6px rgba(15, 23, 42, 0.2);\r\n  }\r\n\r\n  .tc-bodice-banner::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background-image: radial-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px);\r\n    background-size: 20px 20px;\r\n    pointer-events: none;\r\n    opacity: 0.6;\r\n  }\r\n\r\n  .tc-bodice-banner-inner {\r\n    position: relative;\r\n    z-index: 1;\r\n    max-width: 720px;\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .tc-bodice-badge {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    background: rgba(52, 211, 153, 0.1);\r\n    border: 1px solid rgba(52, 211, 153, 0.25);\r\n    color: #34d399;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    letter-spacing: 1.4px;\r\n    text-transform: uppercase;\r\n    padding: 6px 14px;\r\n    border-radius: 9999px;\r\n    margin-bottom: 18px;\r\n  }\r\n\r\n  .tc-bodice-dot {\r\n    width: 6px;\r\n    height: 6px;\r\n    background-color: #34d399;\r\n    border-radius: 50%;\r\n    box-shadow: 0 0 8px #34d399;\r\n  }\r\n\r\n  .tc-bodice-title {\r\n    color: #ffffff !important;\r\n    font-size: 34px !important;\r\n    font-weight: 800 !important;\r\n    line-height: 1.25 !important;\r\n    letter-spacing: -0.5px;\r\n    margin: 0 auto 16px auto !important;\r\n  }\r\n\r\n  .tc-bodice-desc {\r\n    color: #94a3b8;\r\n    font-size: 16px;\r\n    line-height: 1.6;\r\n    max-width: 580px;\r\n    margin: 0 auto 28px auto;\r\n  }\r\n\r\n  .tc-bodice-cta {\r\n    display: inline-block;\r\n    background: #059669;\r\n    color: #ffffff !important;\r\n    text-decoration: none !important;\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    letter-spacing: 0.3px;\r\n    padding: 14px 36px;\r\n    border-radius: 9999px;\r\n    box-shadow: 0 4px 18px rgba(5, 150, 105, 0.4);\r\n    transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);\r\n  }\r\n  .tc-bodice-cta:hover { background: #047857; transform: translateY(-2px); }\r\n\r\n  \/* Centered Drafting Tool (Max-width 540px) *\/\r\n  .tc-bodice-inner {\r\n    max-width: 540px;\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .tc-card {\r\n    background: #ffffff;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 12px;\r\n    padding: 22px;\r\n    margin-bottom: 18px;\r\n    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.04);\r\n  }\r\n\r\n  .tc-card h3 {\r\n    margin: 0 0 14px 0;\r\n    font-size: 17px;\r\n    color: #0f172a;\r\n    border-bottom: 2px solid #f1f5f9;\r\n    padding-bottom: 8px;\r\n  }\r\n\r\n  .tc-field { margin-bottom: 12px; }\r\n  .tc-field label {\r\n    display: block;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    margin-bottom: 4px;\r\n    color: #1e293b;\r\n  }\r\n\r\n  .tc-field input, .tc-field select {\r\n    width: 100%;\r\n    padding: 10px;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 6px;\r\n    font-size: 14px;\r\n    background: #ffffff;\r\n    color: #1e293b;\r\n  }\r\n\r\n  .tc-toggle-bar { display: flex; gap: 8px; margin-bottom: 14px; }\r\n  .tc-tbtn {\r\n    flex: 1;\r\n    padding: 8px;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 6px;\r\n    background: #f8fafc;\r\n    color: #475569;\r\n    cursor: pointer;\r\n  }\r\n  .tc-tbtn.active {\r\n    background: #0f172a !important;\r\n    color: #ffffff !important;\r\n    border-color: #0f172a !important;\r\n  }\r\n\r\n  .tc-results-box {\r\n    margin-top: 14px;\r\n    padding: 14px;\r\n    background: #f8fafc;\r\n    border-radius: 8px;\r\n    border: 1px solid #cbd5e1;\r\n  }\r\n\r\n  .tc-stat-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    padding: 6px 0;\r\n    border-bottom: 1px dashed #cbd5e1;\r\n    font-size: 13px;\r\n  }\r\n  .tc-stat-row:last-of-type { border-bottom: none; }\r\n  .tc-stat-row strong { color: #059669; }\r\n\r\n  #tcBodiceCanvas {\r\n    width: 100%;\r\n    height: 330px;\r\n    background: #ffffff;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 6px;\r\n    margin-top: 12px;\r\n    display: block;\r\n  }\r\n\r\n  .tc-btn-export {\r\n    width: 100%;\r\n    margin-top: 14px;\r\n    background: #0f172a;\r\n    color: #ffffff;\r\n    border: none;\r\n    padding: 12px;\r\n    border-radius: 6px;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    text-align: center;\r\n    transition: all 0.2s;\r\n  }\r\n  .tc-btn-export:hover { background: #1e293b; }\r\n\r\n  .tc-guide-h4 { font-size: 14px; font-weight: 700; color: #059669; margin: 14px 0 6px 0; }\r\n  .tc-guide-list { margin: 0 0 10px 0; padding-left: 18px; font-size: 13px; line-height: 1.6; color: #334155; }\r\n  .tc-guide-list li { margin-bottom: 4px; }\r\n  .tc-formula-box {\r\n    background: #0f172a;\r\n    color: #f8fafc;\r\n    padding: 12px;\r\n    border-radius: 6px;\r\n    font-family: monospace;\r\n    font-size: 12px;\r\n    line-height: 1.6;\r\n    margin: 8px 0;\r\n  }\r\n  .tc-formula-box span { color: #34d399; }\r\n\r\n  @media (max-width: 600px) {\r\n    .tc-bodice-banner { padding: 36px 20px; border-radius: 16px; }\r\n    .tc-bodice-title { font-size: 24px !important; }\r\n    .tc-bodice-desc { font-size: 14px; margin-bottom: 22px; }\r\n    .tc-bodice-cta { width: 100%; padding: 13px 20px; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"tc-bodice-root\">\r\n\r\n  <div class=\"tc-bodice-banner\">\r\n    <div class=\"tc-bodice-banner-inner\">\r\n      <div class=\"tc-bodice-badge\">\r\n        <span class=\"tc-bodice-dot\"><\/span>\r\n        PATTERN DRAFTING ENGINE\r\n      <\/div>\r\n      <h1 class=\"tc-bodice-title\">Custom Bodice Sloper &amp; Top Pattern Generator<\/h1>\r\n      <p class=\"tc-bodice-desc\">\r\n        Draft balanced front and back bodice blocks customized to your bust, waist, and torso length. Visualizes armhole scyes and waist darts instantly.\r\n      <\/p>\r\n      <a href=\"#bodBust\" class=\"tc-bodice-cta\">Draft Bodice Block<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"tc-bodice-inner\">\r\n    <div class=\"tc-card\">\r\n      <div class=\"tc-toggle-bar\">\r\n        <button type=\"button\" class=\"tc-tbtn active\" id=\"btnBodIn\">Inches<\/button>\r\n        <button type=\"button\" class=\"tc-tbtn\" id=\"btnBodCm\">Centimeters<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"tc-field\">\r\n        <label for=\"bodBust\" id=\"lblBodBust\">Full Bust Circumference (inches)<\/label>\r\n        <input type=\"number\" id=\"bodBust\" value=\"36\" min=\"20\" step=\"0.5\" \/>\r\n      <\/div>\r\n\r\n      <div class=\"tc-field\">\r\n        <label for=\"bodWaist\" id=\"lblBodWaist\">Natural Waist Circumference (inches)<\/label>\r\n        <input type=\"number\" id=\"bodWaist\" value=\"28\" min=\"15\" step=\"0.5\" \/>\r\n      <\/div>\r\n\r\n      <div class=\"tc-field\">\r\n        <label for=\"bodNape\" id=\"lblBodNape\">Back Waist Length \/ Nape to Waist (inches)<\/label>\r\n        <input type=\"number\" id=\"bodNape\" value=\"16\" min=\"10\" step=\"0.5\" \/>\r\n      <\/div>\r\n\r\n      <div class=\"tc-field\">\r\n        <label for=\"bodShoulder\" id=\"lblBodShoulder\">Cross Shoulder Width (inches)<\/label>\r\n        <input type=\"number\" id=\"bodShoulder\" value=\"15\" min=\"8\" step=\"0.5\" \/>\r\n      <\/div>\r\n\r\n      <div class=\"tc-results-box\">\r\n        <div class=\"tc-stat-row\">\r\n          <span>Quarter Bust Arc (Front Block):<\/span>\r\n          <span><strong id=\"outQuarterBust\">9.50<\/strong> <span class=\"unitBod\">in<\/span><\/span>\r\n        <\/div>\r\n        <div class=\"tc-stat-row\">\r\n          <span>Front Waist Dart Intake:<\/span>\r\n          <span><strong id=\"outWaistDart\">1.75<\/strong> <span class=\"unitBod\">in<\/span><\/span>\r\n        <\/div>\r\n        <div class=\"tc-stat-row\">\r\n          <span>Armhole Scye Depth:<\/span>\r\n          <span><strong id=\"outArmDepth\">8.00<\/strong> <span class=\"unitBod\">in<\/span><\/span>\r\n        <\/div>\r\n\r\n        <svg id=\"tcBodiceCanvas\" viewBox=\"0 0 460 320\">\r\n          <path id=\"svgFrontBodice\" d=\"M 35 70 Q 50 70 65 35 L 125 55 Q 110 90 150 130 L 140 230 L 100 230 L 85 145 L 70 230 L 35 230 Z\" fill=\"#ecfdf5\" stroke=\"#059669\" stroke-width=\"2\" \/>\r\n          <line id=\"svgFrontGrain\" x1=\"55\" y1=\"80\" x2=\"55\" y2=\"210\" stroke=\"#059669\" stroke-width=\"1.2\" stroke-dasharray=\"3 3\"\/>\r\n          <text id=\"svgTxtFront\" x=\"90\" y=\"180\" font-size=\"11\" font-weight=\"600\" fill=\"#065f46\" text-anchor=\"middle\">FRONT (Fold)<\/text>\r\n\r\n          <path id=\"svgBackBodice\" d=\"M 230 45 Q 245 45 260 35 L 320 50 Q 305 85 340 130 L 330 230 L 295 230 L 285 135 L 275 230 L 230 230 Z\" fill=\"#f8fafc\" stroke=\"#334155\" stroke-width=\"2\" \/>\r\n          <line id=\"svgBackGrain\" x1=\"250\" y1=\"60\" x2=\"250\" y2=\"210\" stroke=\"#64748b\" stroke-width=\"1.2\" stroke-dasharray=\"3 3\"\/>\r\n          <text id=\"svgTxtBack\" x=\"285\" y=\"180\" font-size=\"11\" font-weight=\"600\" fill=\"#1e293b\" text-anchor=\"middle\">BACK (Seam)<\/text>\r\n        <\/svg>\r\n\r\n        <button type=\"button\" class=\"tc-btn-export\" id=\"btnDownloadBodiceSvg\">\r\n          Download Printable Bodice Pattern (SVG)\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"tc-card\">\r\n      <h3>Bodice Sloper Field Manual<\/h3>\r\n      <div class=\"tc-guide-h4\">Pattern Drafting Architecture<\/div>\r\n      <ul class=\"tc-guide-list\">\r\n        <li><strong>Quarter Front Block:<\/strong> Cut on the center-front fold. Includes a 1\/2\" larger chest arc to naturally account for bust protrusion without stretching.<\/li>\r\n        <li><strong>Quarter Back Block:<\/strong> Cut as two panels to allow for a zipper, button placket, or contoured center-back shaping seam.<\/li>\r\n        <li><strong>Waist Dart Apex:<\/strong> The front waist dart stops 1\" (2.5 cm) short of the true bust apex to prevent sharp conical pointing.<\/li>\r\n      <\/ul>\r\n      <div class=\"tc-guide-h4\">Drafting Formulas<\/div>\r\n      <div class=\"tc-formula-box\">\r\n        \u2022 Front Bust Arc = <span>(Bust \u00f7 4) + 0.5\" ease<\/span><br>\r\n        \u2022 Back Bust Arc = <span>(Bust \u00f7 4) - 0.5\"<\/span><br>\r\n        \u2022 Armhole Depth = <span>(Bust \u00f7 6) + 2\" (or 5 cm)<\/span>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n  var activeUnit = 'in';\r\n\r\n  function initBodiceEngine() {\r\n    var bIn = document.getElementById('btnBodIn');\r\n    var bCm = document.getElementById('btnBodCm');\r\n\r\n    var inpBust = document.getElementById('bodBust');\r\n    var inpWaist = document.getElementById('bodWaist');\r\n    var inpNape = document.getElementById('bodNape');\r\n    var inpShoulder = document.getElementById('bodShoulder');\r\n\r\n    var lblBust = document.getElementById('lblBodBust');\r\n    var lblWaist = document.getElementById('lblBodWaist');\r\n    var lblNape = document.getElementById('lblBodNape');\r\n    var lblShoulder = document.getElementById('lblBodShoulder');\r\n\r\n    var outBust = document.getElementById('outQuarterBust');\r\n    var outDart = document.getElementById('outWaistDart');\r\n    var outArm = document.getElementById('outArmDepth');\r\n    var unitSpans = document.querySelectorAll('.unitBod');\r\n\r\n    var svgFront = document.getElementById('svgFrontBodice');\r\n    var svgBack = document.getElementById('svgBackBodice');\r\n    var btnExport = document.getElementById('btnDownloadBodiceSvg');\r\n\r\n    if (!bIn || !bCm || !inpBust || !inpWaist || !svgFront || !svgBack) return;\r\n\r\n    function renderDraft() {\r\n      var bust = parseFloat(inpBust.value);\r\n      var waist = parseFloat(inpWaist.value);\r\n      var nape = parseFloat(inpNape.value);\r\n      var sh = parseFloat(inpShoulder.value);\r\n\r\n      if (!bust || bust == 0) bust = (activeUnit === 'cm') ? 92 : 36;\r\n      if (!waist || waist == 0) waist = (activeUnit === 'cm') ? 71 : 28;\r\n      if (!nape || nape == 0) nape = (activeUnit === 'cm') ? 41 : 16;\r\n      if (!sh || sh == 0) sh = (activeUnit === 'cm') ? 38 : 15;\r\n\r\n      var diff = (activeUnit === 'cm') ? 1.3 : 0.5;\r\n      var qBustFront = (bust \/ 4) + diff;\r\n      var qBustBack = (bust \/ 4) - diff;\r\n      var qWaist = waist \/ 4;\r\n      var dartIntake = Math.max(0.5, qBustFront - qWaist);\r\n      var armDepth = (bust \/ 6) + ((activeUnit === 'cm') ? 5 : 2);\r\n      var halfShoulder = sh \/ 2;\r\n\r\n      outBust.textContent = qBustFront.toFixed(2);\r\n      outDart.textContent = dartIntake.toFixed(2);\r\n      outArm.textContent = armDepth.toFixed(2);\r\n\r\n      var maxDraftW = (qBustFront + qBustBack) + ((activeUnit === 'cm') ? 15 : 6);\r\n      var scale = Math.min(180 \/ maxDraftW, 200 \/ nape);\r\n\r\n      \/\/ FRONT BLOCK\r\n      var fx0 = 35;\r\n      var fy0 = 35;\r\n      var fW_bust = qBustFront * scale;\r\n      var fW_waist = (qWaist + dartIntake) * scale;\r\n      var fL_nape = nape * scale;\r\n      var fArmY = fy0 + (armDepth * scale);\r\n      var fNeckW = ((activeUnit === 'cm') ? 6.5 : 2.5) * scale;\r\n      var fNeckD = ((activeUnit === 'cm') ? 7.5 : 3.0) * scale;\r\n      var fShW = (halfShoulder * scale);\r\n      var fShDrop = ((activeUnit === 'cm') ? 4.5 : 1.75) * scale;\r\n\r\n      var fDartCenter = fx0 + (fW_waist * 0.5);\r\n      var fDartHalf = (dartIntake * scale) * 0.5;\r\n      var fDartTipY = fArmY + 15;\r\n\r\n      var fPath = [\r\n        'M', fx0, (fy0 + fNeckD),\r\n        'Q', (fx0 + (fNeckW * 0.5)), (fy0 + fNeckD), (fx0 + fNeckW), fy0,\r\n        'L', (fx0 + fShW), (fy0 + fShDrop),\r\n        'Q', (fx0 + (fShW * 0.75)), (fy0 + (fShDrop + 20)), (fx0 + fW_bust), fArmY,\r\n        'L', (fx0 + fW_waist), (fy0 + fL_nape),\r\n        'L', (fDartCenter + fDartHalf), (fy0 + fL_nape),\r\n        'L', fDartCenter, fDartTipY,\r\n        'L', (fDartCenter - fDartHalf), (fy0 + fL_nape),\r\n        'L', fx0, (fy0 + fL_nape),\r\n        'Z'\r\n      ].join(' ');\r\n      svgFront.setAttribute('d', fPath);\r\n\r\n      \/\/ BACK BLOCK\r\n      var bx0 = fx0 + fW_bust + 40;\r\n      var bW_bust = qBustBack * scale;\r\n      var bW_waist = (qWaist + (dartIntake * 0.7)) * scale;\r\n      var bNeckW = ((activeUnit === 'cm') ? 6.5 : 2.5) * scale;\r\n      var bNeckD = ((activeUnit === 'cm') ? 2.0 : 0.75) * scale;\r\n      var bShDrop = ((activeUnit === 'cm') ? 3.5 : 1.25) * scale;\r\n\r\n      var bDartCenter = bx0 + (bW_waist * 0.45);\r\n      var bDartHalf = (dartIntake * 0.7 * scale) * 0.5;\r\n      var bDartTipY = fArmY + 5;\r\n\r\n      var bPath = [\r\n        'M', bx0, (fy0 + bNeckD),\r\n        'Q', (bx0 + (bNeckW * 0.4)), (fy0 + bNeckD), (bx0 + bNeckW), fy0,\r\n        'L', (bx0 + fShW), (fy0 + bShDrop),\r\n        'Q', (bx0 + (fShW * 0.8)), (fy0 + (bShDrop + 20)), (bx0 + bW_bust), fArmY,\r\n        'L', (bx0 + bW_waist), (fy0 + fL_nape),\r\n        'L', (bDartCenter + bDartHalf), (fy0 + fL_nape),\r\n        'L', bDartCenter, bDartTipY,\r\n        'L', (bDartCenter - bDartHalf), (fy0 + fL_nape),\r\n        'L', bx0, (fy0 + fL_nape),\r\n        'Z'\r\n      ].join(' ');\r\n      svgBack.setAttribute('d', bPath);\r\n    }\r\n\r\n    function switchU(t) {\r\n      if (activeUnit === t) return;\r\n      activeUnit = t;\r\n      var b = parseFloat(inpBust.value);\r\n      var w = parseFloat(inpWaist.value);\r\n      var n = parseFloat(inpNape.value);\r\n      var s = parseFloat(inpShoulder.value);\r\n\r\n      if (activeUnit === 'cm') {\r\n        bCm.className = 'tc-tbtn active';\r\n        bIn.className = 'tc-tbtn';\r\n        lblBust.textContent = 'Full Bust Circumference (cm)';\r\n        lblWaist.textContent = 'Natural Waist Circumference (cm)';\r\n        lblNape.textContent = 'Back Waist Length \/ Nape to Waist (cm)';\r\n        lblShoulder.textContent = 'Cross Shoulder Width (cm)';\r\n        unitSpans.forEach(function(el) { el.textContent = 'cm'; });\r\n\r\n        if (b) inpBust.value = (b * 2.54).toFixed(1);\r\n        if (w) inpWaist.value = (w * 2.54).toFixed(1);\r\n        if (n) inpNape.value = (n * 2.54).toFixed(1);\r\n        if (s) inpShoulder.value = (s * 2.54).toFixed(1);\r\n      } else {\r\n        bIn.className = 'tc-tbtn active';\r\n        bCm.className = 'tc-tbtn';\r\n        lblBust.textContent = 'Full Bust Circumference (inches)';\r\n        lblWaist.textContent = 'Natural Waist Circumference (inches)';\r\n        lblNape.textContent = 'Back Waist Length \/ Nape to Waist (inches)';\r\n        lblShoulder.textContent = 'Cross Shoulder Width (inches)';\r\n        unitSpans.forEach(function(el) { el.textContent = 'in'; });\r\n\r\n        if (b) inpBust.value = (b \/ 2.54).toFixed(1);\r\n        if (w) inpWaist.value = (w \/ 2.54).toFixed(1);\r\n        if (n) inpNape.value = (n \/ 2.54).toFixed(1);\r\n        if (s) inpShoulder.value = (s \/ 2.54).toFixed(1);\r\n      }\r\n      renderDraft();\r\n    }\r\n\r\n    btnExport.addEventListener('click', function() {\r\n      var svg = document.getElementById('tcBodiceCanvas');\r\n      var xml = new XMLSerializer().serializeToString(svg);\r\n      var svgData = 'data:image\/svg+xml;utf8,' + encodeURIComponent(xml);\r\n      var link = document.createElement('a');\r\n      link.href = svgData;\r\n      link.download = 'bodice-sloper-pattern.svg';\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n    });\r\n\r\n    bIn.addEventListener('click', function() { switchU('in'); });\r\n    bCm.addEventListener('click', function() { switchU('cm'); });\r\n    inpBust.addEventListener('input', renderDraft);\r\n    inpWaist.addEventListener('input', renderDraft);\r\n    inpNape.addEventListener('input', renderDraft);\r\n    inpShoulder.addEventListener('input', renderDraft);\r\n\r\n    renderDraft();\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', initBodiceEngine);\r\n  } else {\r\n    initBodiceEngine();\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\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>PATTERN DRAFTING ENGINE Custom Bodice Sloper &amp; Top Pattern Generator Draft balanced front and back bodice blocks customized to your bust, waist, and torso length. Visualizes armhole scyes and waist darts instantly. Draft Bodice Block Inches Centimeters Full Bust Circumference (inches) Natural Waist Circumference (inches) Back Waist Length \/ Nape to Waist (inches) Cross Shoulder [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":10364,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","footnotes":""},"class_list":["post-10322","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/comments?post=10322"}],"version-history":[{"count":7,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10322\/revisions"}],"predecessor-version":[{"id":10329,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10322\/revisions\/10329"}],"up":[{"embeddable":true,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10364"}],"wp:attachment":[{"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/media?parent=10322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}