{"id":10330,"date":"2026-09-01T23:57:10","date_gmt":"2026-09-01T23:57:10","guid":{"rendered":"https:\/\/theycraft.com\/?page_id=10330"},"modified":"2026-09-02T02:21:56","modified_gmt":"2026-09-02T02:21:56","slug":"master-pattern-drafting-studio","status":"publish","type":"page","link":"https:\/\/theycraft.com\/fr\/sewing-free-tools\/master-pattern-drafting-studio\/","title":{"rendered":"Master Pattern Drafting Studio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10330\" class=\"elementor elementor-10330\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7efcad e-flex e-con-boxed e-con e-parent\" data-id=\"a7efcad\" 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-73d9f8d elementor-widget elementor-widget-html\" data-id=\"73d9f8d\" 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-cad-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-cad-root * { box-sizing: border-box; }\r\n\r\n  \/* 1. Content-Width Hero Banner *\/\r\n  .tc-cad-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  .tc-cad-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  .tc-cad-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  .tc-cad-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  .tc-cad-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  .tc-cad-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  .tc-cad-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  .tc-cad-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-cad-cta:hover { background: #047857; transform: translateY(-2px); }\r\n\r\n  \/* 2. Studio Master Shell *\/\r\n  .tc-cad-inner {\r\n    max-width: 680px;\r\n    margin: 0 auto;\r\n  }\r\n  .tc-card {\r\n    background: #ffffff;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 12px;\r\n    padding: 24px;\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  \/* Garment Category Tabs *\/\r\n  .tc-garment-tabs {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 8px;\r\n    margin-bottom: 20px;\r\n  }\r\n  .tc-tab-btn {\r\n    padding: 10px 6px;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    text-align: center;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 8px;\r\n    background: #f8fafc;\r\n    color: #475569;\r\n    cursor: pointer;\r\n    transition: all 0.15s ease;\r\n  }\r\n  .tc-tab-btn.active {\r\n    background: #0f172a !important;\r\n    color: #ffffff !important;\r\n    border-color: #0f172a !important;\r\n    box-shadow: 0 2px 4px rgba(15, 23, 42, 0.15);\r\n  }\r\n\r\n  \/* Unit Toggle *\/\r\n  .tc-toggle-bar { display: flex; gap: 8px; margin-bottom: 18px; }\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: #059669 !important;\r\n    color: #ffffff !important;\r\n    border-color: #059669 !important;\r\n  }\r\n\r\n  \/* Form Fields *\/\r\n  .tc-field-grid {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 12px;\r\n    margin-bottom: 14px;\r\n  }\r\n  .tc-field { margin-bottom: 0px; }\r\n  .tc-field label {\r\n    display: block;\r\n    font-size: 12px;\r\n    font-weight: 600;\r\n    margin-bottom: 4px;\r\n    color: #1e293b;\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  \/* Results Table & Vector Viewer *\/\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  .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  #tcMasterCanvas {\r\n    width: 100%;\r\n    height: 350px;\r\n    background: #ffffff;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 8px;\r\n    margin-top: 14px;\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: 13px;\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  \/* Guide Notes *\/\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-cad-banner { padding: 36px 20px; border-radius: 16px; }\r\n    .tc-cad-title { font-size: 24px !important; }\r\n    .tc-cad-desc { font-size: 14px; margin-bottom: 22px; }\r\n    .tc-cad-cta { width: 100%; padding: 13px 20px; }\r\n    .tc-garment-tabs { grid-template-columns: repeat(2, 1fr); }\r\n    .tc-field-grid { grid-template-columns: 1fr; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"tc-cad-root\">\r\n\r\n  <!-- 1. Content-Width Hero Banner -->\r\n  <div class=\"tc-cad-banner\">\r\n    <div class=\"tc-cad-banner-inner\">\r\n      <div class=\"tc-cad-badge\">\r\n        <span class=\"tc-cad-dot\"><\/span>\r\n        CAD PATTERN SYSTEM\r\n      <\/div>\r\n      <h1 class=\"tc-cad-title\">Master Pattern Drafting Studio<\/h1>\r\n      <p class=\"tc-cad-desc\">\r\n        Parametric drafting engine for garments. Select a block style below, enter your body measurements, and generate custom vector pattern slopers ready for export.\r\n      <\/p>\r\n      <a href=\"#garmentTabs\" class=\"tc-cad-cta\">Open Pattern CAD<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- 2. Master Workstation Core -->\r\n  <div class=\"tc-cad-inner\">\r\n    <div class=\"tc-card\">\r\n\r\n      <!-- Garment Selectors -->\r\n      <div class=\"tc-garment-tabs\" id=\"garmentTabs\">\r\n        <button type=\"button\" class=\"tc-tab-btn active\" data-type=\"pants\">Pants \/ Trousers<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"shorts\">Bermuda Shorts<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"tshirt\">T-Shirt Block<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"shirt\">Button-Up Shirt<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"dress\">Shift Dress<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"coat\">Overcoat \/ Jacket<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"skirt\">A-Line \/ Pencil Skirt<\/button>\r\n        <button type=\"button\" class=\"tc-tab-btn\" data-type=\"sleeve\">Fitted Sleeve<\/button>\r\n      <\/div>\r\n\r\n      <!-- Unit Selector -->\r\n      <div class=\"tc-toggle-bar\">\r\n        <button type=\"button\" class=\"tc-tbtn active\" id=\"btnCadIn\">Inches<\/button>\r\n        <button type=\"button\" class=\"tc-tbtn\" id=\"btnCadCm\">Centimeters<\/button>\r\n      <\/div>\r\n\r\n      <!-- Parameter Inputs (Dynamically relabeled by script) -->\r\n      <div class=\"tc-field-grid\">\r\n        <div class=\"tc-field\">\r\n          <label for=\"cadVal1\" id=\"lblCadVal1\">Primary Circumference (Bust\/Waist)<\/label>\r\n          <input type=\"number\" id=\"cadVal1\" value=\"36\" min=\"10\" step=\"0.5\" \/>\r\n        <\/div>\r\n        <div class=\"tc-field\">\r\n          <label for=\"cadVal2\" id=\"lblCadVal2\">Secondary Circumference (Hip\/Bust)<\/label>\r\n          <input type=\"number\" id=\"cadVal2\" value=\"38\" min=\"10\" step=\"0.5\" \/>\r\n        <\/div>\r\n        <div class=\"tc-field\">\r\n          <label for=\"cadVal3\" id=\"lblCadVal3\">Depth \/ Rise \/ Armscye<\/label>\r\n          <input type=\"number\" id=\"cadVal3\" value=\"10\" min=\"2\" step=\"0.5\" \/>\r\n        <\/div>\r\n        <div class=\"tc-field\">\r\n          <label for=\"cadVal4\" id=\"lblCadVal4\">Total Finished Length<\/label>\r\n          <input type=\"number\" id=\"cadVal4\" value=\"40\" min=\"5\" step=\"0.5\" \/>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Output Calculations & Dynamic Blueprint -->\r\n      <div class=\"tc-results-box\">\r\n        <div class=\"tc-stat-row\">\r\n          <span id=\"statName1\">Front Panel Arc Width:<\/span>\r\n          <span><strong id=\"statOut1\">10.00<\/strong> <span class=\"unitCad\">in<\/span><\/span>\r\n        <\/div>\r\n        <div class=\"tc-stat-row\">\r\n          <span id=\"statName2\">Back Panel Arc Width:<\/span>\r\n          <span><strong id=\"statOut2\">10.75<\/strong> <span class=\"unitCad\">in<\/span><\/span>\r\n        <\/div>\r\n        <div class=\"tc-stat-row\">\r\n          <span id=\"statName3\">Total Intake \/ Extension:<\/span>\r\n          <span><strong id=\"statOut3\">2.25<\/strong> <span class=\"unitCad\">in<\/span><\/span>\r\n        <\/div>\r\n\r\n        <!-- Dynamic Vector Drafting Canvas -->\r\n        <svg id=\"tcMasterCanvas\" viewBox=\"0 0 460 330\">\r\n          <defs>\r\n            <pattern id=\"cadGrid\" width=\"20\" height=\"20\" patternUnits=\"userSpaceOnUse\">\r\n              <path d=\"M 20 0 L 0 0 0 20\" fill=\"none\" stroke=\"#f1f5f9\" stroke-width=\"1\"\/>\r\n            <\/pattern>\r\n          <\/defs>\r\n          <rect width=\"100%\" height=\"100%\" fill=\"url(#cadGrid)\" \/>\r\n\r\n          <!-- Front Block Path -->\r\n          <path id=\"svgCadFront\" d=\"\" fill=\"#ecfdf5\" stroke=\"#059669\" stroke-width=\"2\" \/>\r\n          <line id=\"svgCadGrainF\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"0\" stroke=\"#059669\" stroke-width=\"1.2\" stroke-dasharray=\"3 3\"\/>\r\n          <text id=\"svgCadTxtF\" x=\"0\" y=\"0\" font-size=\"11\" font-weight=\"600\" fill=\"#065f46\" text-anchor=\"middle\">FRONT<\/text>\r\n\r\n          <!-- Back Block Path -->\r\n          <path id=\"svgCadBack\" d=\"\" fill=\"#f8fafc\" stroke=\"#334155\" stroke-width=\"2\" \/>\r\n          <line id=\"svgCadGrainB\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"0\" stroke=\"#64748b\" stroke-width=\"1.2\" stroke-dasharray=\"3 3\"\/>\r\n          <text id=\"svgCadTxtB\" x=\"0\" y=\"0\" font-size=\"11\" font-weight=\"600\" fill=\"#1e293b\" text-anchor=\"middle\">BACK<\/text>\r\n        <\/svg>\r\n\r\n        <button type=\"button\" class=\"tc-btn-export\" id=\"btnExportCadSvg\">\r\n          Download 1:1 Scale SVG Sloper File\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Manual & Field Formulas Card -->\r\n    <div class=\"tc-card\">\r\n      <h3 id=\"manualTitle\">Garment Drafting Principles<\/h3>\r\n      <div class=\"tc-guide-h4\" id=\"manualSubhead\">Foundation Geometry<\/div>\r\n      <ul class=\"tc-guide-list\" id=\"manualList\">\r\n        <li><strong>Balanced Quarter Blocks:<\/strong> Garments are drafted in quarter sections (Center Front and Center Back) with proportional wearing ease.<\/li>\r\n        <li><strong>Differential Shaping:<\/strong> Back blocks feature deeper crotch hooks, armscyes, and seat length to accommodate human body articulation.<\/li>\r\n      <\/ul>\r\n      <div class=\"tc-guide-h4\">Drafting Equation<\/div>\r\n      <div class=\"tc-formula-box\" id=\"manualFormula\">\r\n        \u2022 Quarter Width = <span>(Circumference + Ease) \u00f7 4<\/span><br>\r\n        \u2022 Crotch Hook \/ Arc Curve = <span>Hip \u00f7 16 (Front) and Hip \u00f7 8 (Back)<\/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  var activeGarment = 'pants';\r\n\r\n  \/\/ Config presets for each garment\r\n  var GARMENT_PROPS = {\r\n    pants: {\r\n      l1: 'Waist Circumference', l2: 'Full Hip Circumference', l3: 'Crotch Rise Depth', l4: 'Outseam Length',\r\n      d1: 30, d2: 40, d3: 10.5, d4: 40,\r\n      s1: 'Front Hip Arc:', s2: 'Back Hip Arc:', s3: 'Back Extension Hook:',\r\n      fTitle: 'Pants \/ Trouser Foundation', fSub: 'Crotch Depth & Inseam Balance',\r\n      fNotes: ['Front crotch extension equals Hip \/ 16; back extension equals Hip \/ 8 for seat depth.', 'Taper along knees and ankles to shape between wide-leg and cigarette profiles.'],\r\n      fEq: '\u2022 Front Crotch Hook = Hip \u00f7 16<br>\u2022 Back Crotch Hook = Hip \u00f7 8'\r\n    },\r\n    shorts: {\r\n      l1: 'Waist Circumference', l2: 'Full Hip Circumference', l3: 'Crotch Rise Depth', l4: 'Inseam \/ Short Length',\r\n      d1: 30, d2: 40, d3: 10.5, d4: 18,\r\n      s1: 'Front Hem Arc:', s2: 'Back Hem Arc:', s3: 'Crotch Hook Depth:',\r\n      fTitle: 'Bermuda & Chino Shorts Drafting', fSub: 'Thigh Flare & Rise Ease',\r\n      fNotes: ['Shorts share the standard trouser crotch curve but add 1.0\" extra thigh ease to prevent binding.', 'The back rise is angled 1.5\" inward to cup the lumbar curve.'],\r\n      fEq: '\u2022 Short Leg Hem = Thigh Circumference + 2\" ease<br>\u2022 Back Rise Tilt = 1.5\" inward'\r\n    },\r\n    tshirt: {\r\n      l1: 'Chest \/ Bust Circumference', l2: 'Natural Waist', l3: 'Armscye Depth', l4: 'T-Shirt Length',\r\n      d1: 38, d2: 32, d3: 8.5, d4: 26,\r\n      s1: 'Front Chest Width:', s2: 'Back Chest Width:', s3: 'Neck Opening Width:',\r\n      fTitle: 'T-Shirt & Knit Sloper', fSub: 'Zero \/ Negative Ease Principles',\r\n      fNotes: ['Knits require 0\" to -2\" negative ease depending on spandex stretch percentage.', 'Front neckline drop is cut 2.5\" deeper than the back neck base.'],\r\n      fEq: '\u2022 Chest Arc = (Chest - Stretch Allowance) \u00f7 4<br>\u2022 Front Neck Drop = (Neck Circ \u00f7 6) + 1.5\"'\r\n    },\r\n    shirt: {\r\n      l1: 'Bust \/ Chest Circumference', l2: 'Collar Neck Circumference', l3: 'Scye \/ Yoke Depth', l4: 'Shirt Total Length',\r\n      d1: 38, d2: 15.5, d3: 9.0, d4: 28,\r\n      s1: 'Chest Arc (with 3\" ease):', s2: 'Back Yoke Width:', s3: 'Armhole Drop:',\r\n      fTitle: 'Woven Button-Up Shirt Sloper', fSub: 'Yoke & Button Placket Architecture',\r\n      fNotes: ['Adds 3\"\u20134\" total wearing ease across the chest for freedom of movement.', 'Includes a 0.75\" center-front extension for the folded button stand.'],\r\n      fEq: '\u2022 Quarter Chest = (Chest + 3.5\" Ease) \u00f7 4<br>\u2022 Button Extension = 0.75\" past center front'\r\n    },\r\n    dress: {\r\n      l1: 'Full Bust Circumference', l2: 'Full Hip Circumference', l3: 'Waist-to-Hip Depth', l4: 'Total Dress Length',\r\n      d1: 36, d2: 39, d3: 8.0, d4: 38,\r\n      s1: 'Front Bust Arc:', s2: 'Front Hip Arc:', s3: 'Waist Dart Intake:',\r\n      fTitle: 'Classic Shift Dress Block', fSub: 'Vertical Contour Line',\r\n      fNotes: ['Combines bodice and skirt into a continuous contour with waist suppression darts.', 'Cut 1\/2\" larger across the front bust than the back to prevent pulling.'],\r\n      fEq: '\u2022 Side Seam Curve = Quarter Hip - Quarter Waist<br>\u2022 Front Length = Back Length + 1\" (bust lift)'\r\n    },\r\n    coat: {\r\n      l1: 'Chest \/ Bust Circumference', l2: 'Full Hip Circumference', l3: 'Deep Armhole Depth', l4: 'Coat Length',\r\n      d1: 38, d2: 41, d3: 11.0, d4: 42,\r\n      s1: 'Front Coat Arc (6\" ease):', s2: 'Back Coat Arc:', s3: 'Lapel Overlap:',\r\n      fTitle: 'Overcoat & Outerwear Sloper', fSub: 'Layering Ease & Drop Shoulder',\r\n      fNotes: ['Outerwear requires 5\"\u20138\" of wearing ease to layer over heavy winter sweaters.', 'Armscye drop is lowered 2\" (5 cm) compared to a standard bodice.'],\r\n      fEq: '\u2022 Coat Quarter Arc = (Chest + 6\" Ease) \u00f7 4<br>\u2022 Double-Breasted Overlap = 3.5\"'\r\n    },\r\n    skirt: {\r\n      l1: 'Natural Waist', l2: 'Full Hip Circumference', l3: 'Waist-to-Hip Depth', l4: 'Skirt Length',\r\n      d1: 28, d2: 38, d3: 8.0, d4: 24,\r\n      s1: 'Quarter Front Hip Arc:', s2: 'Quarter Waist Arc:', s3: 'Side Suppression:',\r\n      fTitle: 'Skirt Sloper (Pencil \/ A-Line)', fSub: 'Differential Dart Contours',\r\n      fNotes: ['Back dart is drafted deeper and longer to cup the seat contour smoothly.', 'Front dart is shorter to sit flat across the lower abdomen.'],\r\n      fEq: '\u2022 Side Reduction = (Hip + 1\" Ease - Waist) \u00f7 4<br>\u2022 Front Dart = Reduction \u00d7 0.4'\r\n    },\r\n    sleeve: {\r\n      l1: 'Bodice Armscye Perimeter', l2: 'Bicep Circumference', l3: 'Sleeve Cap Height', l4: 'Total Sleeve Length',\r\n      d1: 18, d2: 12.5, d3: 5.5, d4: 23,\r\n      s1: 'Bicep Width (with ease):', s2: 'Cap Ease Allowance:', s3: 'Wrist \/ Cuff Opening:',\r\n      fTitle: 'Fitted Sleeve Foundation', fSub: 'Sleeve Cap Ease Distribution',\r\n      fNotes: ['The sleeve cap seamline measures 1.0\"\u20131.5\" longer than the armhole to provide ease over the shoulder bone.', 'The back cap curve is flatter than the deep scooped front.'],\r\n      fEq: '\u2022 Cap Height = Armscye Perimeter \u00f7 3<br>\u2022 Bicep Width = Bicep Circumference + 2\" ease'\r\n    }\r\n  };\r\n\r\n  function initStudio() {\r\n    var tabs = document.querySelectorAll('.tc-tab-btn');\r\n    var bIn = document.getElementById('btnCadIn');\r\n    var bCm = document.getElementById('btnCadCm');\r\n\r\n    var inp1 = document.getElementById('cadVal1');\r\n    var inp2 = document.getElementById('cadVal2');\r\n    var inp3 = document.getElementById('cadVal3');\r\n    var inp4 = document.getElementById('cadVal4');\r\n\r\n    var lbl1 = document.getElementById('lblCadVal1');\r\n    var lbl2 = document.getElementById('lblCadVal2');\r\n    var lbl3 = document.getElementById('lblCadVal3');\r\n    var lbl4 = document.getElementById('lblCadVal4');\r\n\r\n    var sName1 = document.getElementById('statName1');\r\n    var sName2 = document.getElementById('statName2');\r\n    var sName3 = document.getElementById('statName3');\r\n    var sOut1 = document.getElementById('statOut1');\r\n    var sOut2 = document.getElementById('statOut2');\r\n    var sOut3 = document.getElementById('statOut3');\r\n\r\n    var mTitle = document.getElementById('manualTitle');\r\n    var mSub = document.getElementById('manualSubhead');\r\n    var mList = document.getElementById('manualList');\r\n    var mFormula = document.getElementById('manualFormula');\r\n\r\n    var svgF = document.getElementById('svgCadFront');\r\n    var svgB = document.getElementById('svgCadBack');\r\n    var grainF = document.getElementById('svgCadGrainF');\r\n    var grainB = document.getElementById('svgCadGrainB');\r\n    var txtF = document.getElementById('svgCadTxtF');\r\n    var txtB = document.getElementById('svgCadTxtB');\r\n\r\n    var btnExport = document.getElementById('btnExportCadSvg');\r\n\r\n    if (!bIn || !bCm || !inp1) return;\r\n\r\n    function applyConfig() {\r\n      var cfg = GARMENT_PROPS[activeGarment];\r\n      lbl1.textContent = cfg.l1 + (activeUnit === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl2.textContent = cfg.l2 + (activeUnit === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl3.textContent = cfg.l3 + (activeUnit === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl4.textContent = cfg.l4 + (activeUnit === 'cm' ? ' (cm)' : ' (inches)');\r\n\r\n      var m = (activeUnit === 'cm') ? 2.54 : 1.0;\r\n      inp1.value = (cfg.d1 * m).toFixed(1);\r\n      inp2.value = (cfg.d2 * m).toFixed(1);\r\n      inp3.value = (cfg.d3 * m).toFixed(1);\r\n      inp4.value = (cfg.d4 * m).toFixed(1);\r\n\r\n      sName1.textContent = cfg.s1;\r\n      sName2.textContent = cfg.s2;\r\n      sName3.textContent = cfg.s3;\r\n\r\n      mTitle.textContent = cfg.fTitle;\r\n      mSub.textContent = cfg.fSub;\r\n      mList.innerHTML = '<li><strong>' + cfg.fNotes[0].split(':')[0] + ':<\/strong>' + cfg.fNotes[0].split(':')[1] + '<\/li>' +\r\n                        '<li><strong>' + cfg.fNotes[1].split(':')[0] + ':<\/strong>' + cfg.fNotes[1].split(':')[1] + '<\/li>';\r\n      mFormula.innerHTML = cfg.fEq;\r\n\r\n      drawCanvas();\r\n    }\r\n\r\n    function drawCanvas() {\r\n      var v1 = parseFloat(inp1.value) || 30;\r\n      var v2 = parseFloat(inp2.value) || 40;\r\n      var v3 = parseFloat(inp3.value) || 10;\r\n      var v4 = parseFloat(inp4.value) || 30;\r\n\r\n      var qF = 0;\r\n      var qB = 0;\r\n      var out3 = 0;\r\n\r\n      \/\/ Coordinate anchor constants\r\n      var fx0 = 35;\r\n      var fy0 = 25;\r\n      var bx0 = 240;\r\n\r\n      if (activeGarment === 'pants' || activeGarment === 'shorts') {\r\n        qF = (v2 \/ 4);\r\n        qB = (v2 \/ 4) + ((activeUnit === 'cm') ? 2.5 : 1.0);\r\n        var fHook = v2 \/ 16;\r\n        var bHook = v2 \/ 8;\r\n        out3 = bHook;\r\n\r\n        sOut1.textContent = qF.toFixed(2);\r\n        sOut2.textContent = qB.toFixed(2);\r\n        sOut3.textContent = out3.toFixed(2);\r\n\r\n        var scale = Math.min(160 \/ (qF + fHook), 260 \/ v4);\r\n        var risePx = v3 * scale;\r\n        var lenPx = v4 * scale;\r\n        var wPx = (v1 \/ 4) * scale;\r\n        var hPx = qF * scale;\r\n        var fHookPx = fHook * scale;\r\n        var bHookPx = bHook * scale;\r\n\r\n        \/\/ Pants Front\r\n        var fPath = [\r\n          'M', fx0, fy0,\r\n          'L', (fx0 + wPx), fy0,\r\n          'L', (fx0 + hPx), (fy0 + risePx),\r\n          'L', (fx0 + (hPx * 0.7)), (fy0 + lenPx),\r\n          'L', (fx0 + (hPx * 0.2)), (fy0 + lenPx),\r\n          'L', (fx0 - fHookPx), (fy0 + risePx),\r\n          'Q', fx0, (fy0 + (risePx * 0.7)), fx0, fy0,\r\n          'Z'\r\n        ].join(' ');\r\n        svgF.setAttribute('d', fPath);\r\n\r\n        \/\/ Pants Back\r\n        var bPath = [\r\n          'M', (bx0 + 15), fy0,\r\n          'L', (bx0 + wPx + 15), fy0,\r\n          'L', (bx0 + hPx + 15), (fy0 + risePx),\r\n          'L', (bx0 + (hPx * 0.7) + 15), (fy0 + lenPx),\r\n          'L', (bx0 + (hPx * 0.2)), (fy0 + lenPx),\r\n          'L', (bx0 - bHookPx), (fy0 + risePx),\r\n          'Q', bx0, (fy0 + (risePx * 0.7)), (bx0 + 15), fy0,\r\n          'Z'\r\n        ].join(' ');\r\n        svgB.setAttribute('d', bPath);\r\n\r\n        grainF.setAttribute('x1', fx0 + 40); grainF.setAttribute('y1', fy0 + 40);\r\n        grainF.setAttribute('x2', fx0 + 40); grainF.setAttribute('y2', fy0 + lenPx - 20);\r\n        txtF.setAttribute('x', fx0 + 40); txtF.setAttribute('y', fy0 + (lenPx * 0.5));\r\n        txtF.textContent = 'FRONT LEG';\r\n\r\n        grainB.setAttribute('x1', bx0 + 50); grainB.setAttribute('y1', fy0 + 40);\r\n        grainB.setAttribute('x2', bx0 + 50); grainB.setAttribute('y2', fy0 + lenPx - 20);\r\n        txtB.setAttribute('x', bx0 + 50); txtB.setAttribute('y', fy0 + (lenPx * 0.5));\r\n        txtB.textContent = 'BACK LEG';\r\n\r\n      } else if (activeGarment === 'sleeve') {\r\n        var bicep = v2 + ((activeUnit === 'cm') ? 5 : 2);\r\n        var capH = v3;\r\n        var sLen = v4;\r\n        qF = bicep \/ 2;\r\n        qB = bicep \/ 2;\r\n        out3 = capH;\r\n\r\n        sOut1.textContent = qF.toFixed(2);\r\n        sOut2.textContent = qB.toFixed(2);\r\n        sOut3.textContent = out3.toFixed(2);\r\n\r\n        var sScale = Math.min(320 \/ bicep, 250 \/ sLen);\r\n        var bicPx = bicep * sScale;\r\n        var capPx = capH * sScale;\r\n        var slenPx = sLen * sScale;\r\n        var midX = 230;\r\n\r\n        var slvPath = [\r\n          'M', (midX - (bicPx * 0.5)), (fy0 + capPx),\r\n          'Q', (midX - (bicPx * 0.25)), fy0, midX, fy0,\r\n          'Q', (midX + (bicPx * 0.25)), fy0, (midX + (bicPx * 0.5)), (fy0 + capPx),\r\n          'L', (midX + (bicPx * 0.35)), (fy0 + slenPx),\r\n          'L', (midX - (bicPx * 0.35)), (fy0 + slenPx),\r\n          'Z'\r\n        ].join(' ');\r\n        svgF.setAttribute('d', slvPath);\r\n        svgB.setAttribute('d', ''); \/\/ Unified single pattern piece\r\n\r\n        grainF.setAttribute('x1', midX); grainF.setAttribute('y1', fy0 + 20);\r\n        grainF.setAttribute('x2', midX); grainF.setAttribute('y2', fy0 + slenPx - 20);\r\n        txtF.setAttribute('x', midX); txtF.setAttribute('y', fy0 + (slenPx * 0.5));\r\n        txtF.textContent = 'SLEEVE (Cut 2)';\r\n\r\n        grainB.setAttribute('x1', 0); grainB.setAttribute('y1', 0); grainB.setAttribute('x2', 0); grainB.setAttribute('y2', 0);\r\n        txtB.textContent = '';\r\n\r\n      } else {\r\n        \/\/ Standard Bodice, T-Shirt, Shirt, Coat, Skirt, Dress\r\n        var ease = (activeGarment === 'coat') ? 6 : (activeGarment === 'tshirt' ? 0 : 2);\r\n        qF = (v1 \/ 4) + (ease \/ 4);\r\n        qB = (v1 \/ 4) + (ease \/ 4);\r\n        out3 = Math.max(0.5, v2 - v1);\r\n\r\n        sOut1.textContent = qF.toFixed(2);\r\n        sOut2.textContent = qB.toFixed(2);\r\n        sOut3.textContent = out3.toFixed(2);\r\n\r\n        var bScale = Math.min(160 \/ qF, 260 \/ v4);\r\n        var bW_px = qF * bScale;\r\n        var bL_px = v4 * bScale;\r\n        var scyePx = v3 * bScale;\r\n\r\n        \/\/ Universal Front Torso\/Skirt Contour\r\n        var fD = [\r\n          'M', fx0, (fy0 + 25),\r\n          'Q', (fx0 + 20), (fy0 + 25), (fx0 + 35), fy0,\r\n          'L', (fx0 + bW_px - 15), (fy0 + 15),\r\n          'Q', (fx0 + bW_px - 25), (fy0 + (scyePx * 0.5)), (fx0 + bW_px), (fy0 + scyePx),\r\n          'L', (fx0 + bW_px - 10), (fy0 + bL_px),\r\n          'L', fx0, (fy0 + bL_px),\r\n          'Z'\r\n        ].join(' ');\r\n        svgF.setAttribute('d', fD);\r\n\r\n        \/\/ Universal Back Torso\/Skirt Contour\r\n        var bD = [\r\n          'M', bx0, (fy0 + 12),\r\n          'Q', (bx0 + 20), (fy0 + 12), (bx0 + 35), fy0,\r\n          'L', (bx0 + bW_px - 15), (fy0 + 12),\r\n          'Q', (bx0 + bW_px - 25), (fy0 + (scyePx * 0.5)), (bx0 + bW_px), (fy0 + scyePx),\r\n          'L', (bx0 + bW_px - 10), (fy0 + bL_px),\r\n          'L', bx0, (fy0 + bL_px),\r\n          'Z'\r\n        ].join(' ');\r\n        svgB.setAttribute('d', bD);\r\n\r\n        grainF.setAttribute('x1', fx0 + 25); grainF.setAttribute('y1', fy0 + 40);\r\n        grainF.setAttribute('x2', fx0 + 25); grainF.setAttribute('y2', fy0 + bL_px - 20);\r\n        txtF.setAttribute('x', fx0 + (bW_px * 0.5)); txtF.setAttribute('y', fy0 + (bL_px * 0.5));\r\n        txtF.textContent = 'FRONT (Fold)';\r\n\r\n        grainB.setAttribute('x1', bx0 + (bW_px * 0.5)); grainB.setAttribute('y1', fy0 + 40);\r\n        grainB.setAttribute('x2', bx0 + (bW_px * 0.5)); grainB.setAttribute('y2', fy0 + bL_px - 20);\r\n        txtB.setAttribute('x', bx0 + (bW_px * 0.5)); txtB.setAttribute('y', fy0 + (bL_px * 0.5));\r\n        txtB.textContent = 'BACK (Cut 2)';\r\n      }\r\n    }\r\n\r\n    function switchU(target) {\r\n      if (activeUnit === target) return;\r\n      activeUnit = target;\r\n      var inps = [inp1, inp2, inp3, inp4];\r\n      var m = (target === 'cm') ? 2.54 : (1 \/ 2.54);\r\n\r\n      if (target === 'cm') {\r\n        bCm.className = 'tc-tbtn active';\r\n        bIn.className = 'tc-tbtn';\r\n        document.querySelectorAll('.unitCad').forEach(function(el) { el.textContent = 'cm'; });\r\n      } else {\r\n        bIn.className = 'tc-tbtn active';\r\n        bCm.className = 'tc-tbtn';\r\n        document.querySelectorAll('.unitCad').forEach(function(el) { el.textContent = 'in'; });\r\n      }\r\n\r\n      inps.forEach(function(el) {\r\n        var v = parseFloat(el.value);\r\n        if (v) el.value = (v * m).toFixed(1);\r\n      });\r\n\r\n      var cfg = GARMENT_PROPS[activeGarment];\r\n      lbl1.textContent = cfg.l1 + (target === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl2.textContent = cfg.l2 + (target === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl3.textContent = cfg.l3 + (target === 'cm' ? ' (cm)' : ' (inches)');\r\n      lbl4.textContent = cfg.l4 + (target === 'cm' ? ' (cm)' : ' (inches)');\r\n\r\n      drawCanvas();\r\n    }\r\n\r\n    \/\/ Tab switcher\r\n    tabs.forEach(function(tab) {\r\n      tab.addEventListener('click', function() {\r\n        tabs.forEach(function(t) { t.classList.remove('active'); });\r\n        tab.classList.add('active');\r\n        activeGarment = tab.getAttribute('data-type');\r\n        applyConfig();\r\n      });\r\n    });\r\n\r\n    bIn.addEventListener('click', function() { switchU('in'); });\r\n    bCm.addEventListener('click', function() { switchU('cm'); });\r\n\r\n    [inp1, inp2, inp3, inp4].forEach(function(inp) {\r\n      inp.addEventListener('input', drawCanvas);\r\n    });\r\n\r\n    btnExport.addEventListener('click', function() {\r\n      var svg = document.getElementById('tcMasterCanvas');\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 = activeGarment + '-pattern-sloper.svg';\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n    });\r\n\r\n    applyConfig();\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', initStudio);\r\n  } else {\r\n    initStudio();\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>CAD PATTERN SYSTEM Master Pattern Drafting Studio Parametric drafting engine for garments. Select a block style below, enter your body measurements, and generate custom vector pattern slopers ready for export. Open Pattern CAD Pants \/ Trousers Bermuda Shorts T-Shirt Block Button-Up Shirt Shift Dress Overcoat \/ Jacket A-Line \/ Pencil Skirt Fitted Sleeve Inches Centimeters [&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-10330","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10330","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=10330"}],"version-history":[{"count":7,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10330\/revisions"}],"predecessor-version":[{"id":10337,"href":"https:\/\/theycraft.com\/fr\/wp-json\/wp\/v2\/pages\/10330\/revisions\/10337"}],"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=10330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}