{"id":100039,"date":"2026-02-15T20:07:48","date_gmt":"2026-02-15T20:07:48","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100039"},"modified":"2026-02-15T20:07:48","modified_gmt":"2026-02-15T20:07:48","slug":"bolt-pattern-calculator","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/tl\/calculators\/bolt-pattern-calculator\/","title":{"rendered":"Bolt Pattern Calculator | PCD, Angles &amp; Coordinates"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Bolt Pattern Calculator\",\"description\":\"Calculate bolt hole X,Y coordinates, angles and adjacent distances for any bolt circle pattern with SVG visualization.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/bolt-pattern-calculator\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"isAccessibleForFree\":true}\n<\/script>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&#038;family=JetBrains+Mono:wght@400;500;600&#038;family=Fraunces:opsz,wght@9..144,700;9..144,800&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n:root{--vc-bg:#f4f1ec;--vc-surface:#fff;--vc-surface-alt:#f8f6f2;--vc-ink:#1a1a1a;--vc-ink-secondary:#5a5650;--vc-ink-muted:#8a857e;--vc-accent:#c85a2a;--vc-accent-hover:#b04d22;--vc-accent-light:#fdf0ea;--vc-blue:#2a5c8c;--vc-blue-light:#eaf1f8;--vc-green:#2a7a4b;--vc-green-light:#eaf8ef;--vc-yellow:#a67c00;--vc-yellow-light:#fef9e8;--vc-border:#d9d4cc;--vc-border-light:#e8e4dd;--vc-shadow:0 1px 3px rgba(26,26,26,.06),0 4px 12px rgba(26,26,26,.04);--vc-radius:8px;--vc-radius-lg:12px;--vc-font:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--vc-mono:'JetBrains Mono','Consolas',monospace;--vc-display:'Fraunces',Georgia,serif}\n.vc-calculator{font-family:var(--vc-font);font-size:15px;line-height:1.65;color:var(--vc-ink);max-width:960px;margin:0 auto;padding:20px 16px 40px;-webkit-font-smoothing:antialiased}.vc-calculator *,.vc-calculator *::before,.vc-calculator *::after{box-sizing:border-box}\n.vc-header{text-align:center;padding:48px 24px 40px;position:relative}.vc-header::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:80px;height:3px;background:var(--vc-accent);border-radius:2px}\n.vc-header-eyebrow{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--vc-accent);margin:0 0 12px}\n.vc-header-title{font-family:var(--vc-display);font-size:clamp(24px,4vw,36px);font-weight:800;line-height:1.15;color:var(--vc-ink);margin:0 0 16px;letter-spacing:-.02em}\n.vc-header-subtitle{font-size:15px;color:var(--vc-ink-secondary);margin:0 auto 20px;max-width:620px}\n.vc-badges{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center}.vc-badge{font-family:var(--vc-mono);font-size:11px;font-weight:500;padding:4px 10px;border-radius:4px;background:var(--vc-surface);border:1px solid var(--vc-border);color:var(--vc-ink-secondary)}\n.vc-card{background:var(--vc-surface);border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);box-shadow:var(--vc-shadow);overflow:hidden;margin-top:32px}\n.vc-form{padding:24px}.vc-form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}@media(max-width:600px){.vc-form-grid{grid-template-columns:1fr}}\n.vc-field{display:flex;flex-direction:column}\n.vc-label{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--vc-ink-secondary);margin-bottom:6px}.vc-label-hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--vc-ink-muted);font-size:11px}\n.vc-input{width:100%;padding:10px 12px;border:1.5px solid var(--vc-border);border-radius:6px;font-family:var(--vc-font);font-size:14px;color:var(--vc-ink);background:var(--vc-surface);transition:border-color .15s,box-shadow .15s}\n.vc-input:focus{outline:none;border-color:var(--vc-accent);box-shadow:0 0 0 3px rgba(200,90,42,.12)}\n.vc-results{border-top:1px solid var(--vc-border-light);background:var(--vc-surface-alt);padding:0;max-height:0;overflow:hidden;transition:max-height .5s cubic-bezier(.4,0,.2,1),padding .3s}.vc-results.vc-visible{max-height:8000px;padding:24px}\n.vc-results-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.vc-results-title{font-family:var(--vc-display);font-size:20px;font-weight:700;color:var(--vc-ink);margin:0}\n.vc-copy-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border:1px solid var(--vc-border);border-radius:6px;background:var(--vc-surface);font-family:var(--vc-font);font-size:12px;font-weight:500;color:var(--vc-ink-secondary);cursor:pointer;transition:all .15s}.vc-copy-btn:hover{border-color:var(--vc-accent);color:var(--vc-accent)}.vc-copy-btn.vc-copied{background:var(--vc-green-light);border-color:var(--vc-green);color:var(--vc-green)}\n.vc-rcard{background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;transition:transform .2s;margin-bottom:12px}.vc-rcard:hover{transform:translateY(-1px)}\n.vc-rcard-label{font-family:var(--vc-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:4px}\n.vc-rcard-value{font-family:var(--vc-mono);font-size:20px;font-weight:600;color:var(--vc-ink);line-height:1.2}\n.vc-rcard-unit{font-size:14px;font-weight:400;color:var(--vc-ink-secondary)}\n.vc-svg-wrap{display:flex;justify-content:center;margin:20px 0;background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px}\n.vc-svg-wrap svg{max-width:100%;height:auto}\n.vc-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}.vc-table th,.vc-table td{padding:10px 12px;border:1px solid var(--vc-border-light);text-align:center}.vc-table th{background:var(--vc-surface-alt);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--vc-ink-secondary)}.vc-table tr:nth-child(even){background:var(--vc-surface-alt)}\n.vc-section{margin-top:24px;border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);background:var(--vc-surface);box-shadow:var(--vc-shadow);overflow:hidden}\n.vc-section-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border:none;background:transparent;cursor:pointer;font-family:var(--vc-font);text-align:left;transition:background .15s}.vc-section-toggle:hover{background:var(--vc-surface-alt)}\n.vc-section-toggle-text{display:flex;align-items:center;gap:10px}.vc-section-icon{font-size:20px;line-height:1}.vc-section-title{font-family:var(--vc-display);font-size:18px;font-weight:700;color:var(--vc-ink);margin:0}\n.vc-section-chevron{width:20px;height:20px;color:var(--vc-ink-muted);transition:transform .3s;flex-shrink:0}.vc-section.vc-open .vc-section-chevron{transform:rotate(180deg)}\n.vc-section-body{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1)}.vc-section.vc-open .vc-section-body{max-height:20000px}\n.vc-section-inner{padding:0 24px 24px;border-top:1px solid var(--vc-border-light)}\n.vc-theory h3{font-family:var(--vc-display);font-size:17px;font-weight:700;color:var(--vc-ink);margin:28px 0 10px}.vc-theory h3:first-child{margin-top:20px}.vc-theory p{font-size:14px;color:var(--vc-ink-secondary);margin:0 0 10px}\n.vc-formula-box{background:var(--vc-surface-alt);border:2px solid var(--vc-border);border-radius:6px;padding:14px 20px;font-family:var(--vc-mono);font-size:15px;font-weight:500;text-align:center;margin:14px 0;color:var(--vc-ink);overflow-x:auto}\n.vc-related{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.vc-related-link{display:inline-block;padding:8px 16px;font-family:var(--vc-font);font-size:13px;font-weight:600;background:var(--vc-surface-alt);color:var(--vc-ink-secondary);border:1px solid var(--vc-border);border-radius:var(--vc-radius);text-decoration:none;transition:all .15s}.vc-related-link:hover{border-color:var(--vc-accent);color:var(--vc-accent);background:var(--vc-accent-light)}\n.vc-promo{margin-top:24px;padding:20px;background:linear-gradient(135deg,var(--vc-accent-light),var(--vc-surface));border:1px solid var(--vc-border);border-radius:var(--vc-radius-lg);display:flex;align-items:center;gap:16px}.vc-promo-text{flex:1;font-size:14px;color:var(--vc-ink-secondary)}.vc-promo-text strong{color:var(--vc-ink)}.vc-promo-link{padding:8px 20px;font-size:13px;font-weight:700;color:#fff;background:var(--vc-accent);border-radius:var(--vc-radius);text-decoration:none;white-space:nowrap;transition:background .15s}.vc-promo-link:hover{background:var(--vc-accent-hover)}\n.vc-footer{text-align:center;padding:32px 16px;font-size:13px;color:var(--vc-ink-muted)}.vc-footer a{color:var(--vc-accent);text-decoration:none}.vc-footer a:hover{text-decoration:underline}.vc-footer-links{margin-top:8px;font-size:12px}.vc-footer-links a{margin:0 8px}\n@media print{.vc-section-body{max-height:none!important}.vc-results{max-height:none!important;padding:24px!important}.vc-copy-btn,.vc-section-chevron,.vc-promo{display:none!important}}\n<\/style>\n\n<div class=\"vc-calculator\">\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool<\/p>\n    <h1 class=\"vc-header-title\">Bolt Pattern Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Calculate X,Y coordinates, angles, and adjacent hole distances for any bolt circle pattern. Includes interactive SVG visualization with numbered holes.<\/p>\n    <div class=\"vc-badges\"><span class=\"vc-badge\">PCD<\/span><span class=\"vc-badge\">X,Y Coordinates<\/span><span class=\"vc-badge\">SVG Visual<\/span><\/div>\n<\/header>\n\n<div class=\"vc-card\">\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-bolts\">Number of Bolts<\/label><input class=\"vc-input\" type=\"number\" id=\"vc-bolts\" min=\"2\" max=\"100\" step=\"1\" value=\"8\"><\/div>\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-pcd\">PCD <span class=\"vc-label-hint\">(Pitch Circle Diameter, mm)<\/span><\/label><input class=\"vc-input\" type=\"number\" id=\"vc-pcd\" step=\"any\" min=\"1\" value=\"200\"><\/div>\n            <div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-start-angle\">Starting Angle <span class=\"vc-label-hint\">(degrees from 12 o&#8217;clock)<\/span><\/label><input class=\"vc-input\" type=\"number\" id=\"vc-start-angle\" step=\"any\" value=\"0\"><\/div>\n        <\/div>\n    <\/form>\n\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Bolt Pattern<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy<\/button>\n        <\/div>\n        <div class=\"vc-rcard\">\n            <div class=\"vc-rcard-label\">Distance Between Adjacent Holes<\/div>\n            <div class=\"vc-rcard-value\" id=\"vc-r-dist\">\u2014<\/div>\n        <\/div>\n        <div class=\"vc-svg-wrap\" id=\"vc-svg-wrap\"><\/div>\n        <table class=\"vc-table\" id=\"vc-coord-table\">\n            <thead><tr><th>Hole #<\/th><th>Angle (\u00b0)<\/th><th>X (mm)<\/th><th>Y (mm)<\/th><\/tr><\/thead>\n            <tbody id=\"vc-coord-body\"><\/tbody>\n        <\/table>\n    <\/div>\n<\/div>\n\n<div class=\"vc-section vc-open\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udcd8<\/span><span class=\"vc-section-title\">Theory &amp; Formulas<\/span><\/span><svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>Bolt Hole Coordinates<\/h3>\n            <p>For a bolt circle with N bolts on a PCD of diameter D, starting at angle \u03b8\u2080:<\/p>\n            <div class=\"vc-formula-box\">X<sub>i<\/sub> = (D\/2) \u00d7 sin(\u03b8\u2080 + i \u00d7 360\u00b0\/N)<br>Y<sub>i<\/sub> = (D\/2) \u00d7 cos(\u03b8\u2080 + i \u00d7 360\u00b0\/N)<\/div>\n            <h3>Distance Between Adjacent Holes<\/h3>\n            <div class=\"vc-formula-box\">d = D \u00d7 sin(\u03c0\/N)<\/div>\n            <p>This is the chord length between adjacent equally-spaced holes on the bolt circle.<\/p>\n\n            <h3>Common Bolt Patterns<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Bolts<\/th><th>Angle Between<\/th><th>Typical Use<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>3<\/td><td>120\u00b0<\/td><td>Small flanges, sensor mounts<\/td><\/tr>\n                    <tr><td>4<\/td><td>90\u00b0<\/td><td>Square flanges, bearing housings<\/td><\/tr>\n                    <tr><td>6<\/td><td>60\u00b0<\/td><td>Medium flanges, pipe flanges DN50\u2013DN150<\/td><\/tr>\n                    <tr><td>8<\/td><td>45\u00b0<\/td><td>Standard flanges, DN150\u2013DN300<\/td><\/tr>\n                    <tr><td>12<\/td><td>30\u00b0<\/td><td>Large flanges, DN300\u2013DN600<\/td><\/tr>\n                    <tr><td>16<\/td><td>22.5\u00b0<\/td><td>Large pressure vessel flanges<\/td><\/tr>\n                    <tr><td>20<\/td><td>18\u00b0<\/td><td>Very large flanges, turbine casings<\/td><\/tr>\n                    <tr><td>24<\/td><td>15\u00b0<\/td><td>Large reactor vessels<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Standard Flange PCD Reference (EN 1092-1, PN16)<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>DN<\/th><th>PCD (mm)<\/th><th>Bolts<\/th><th>Bolt Size<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>DN25<\/td><td>85<\/td><td>4<\/td><td>M12<\/td><\/tr>\n                    <tr><td>DN50<\/td><td>125<\/td><td>4<\/td><td>M16<\/td><\/tr>\n                    <tr><td>DN80<\/td><td>160<\/td><td>8<\/td><td>M16<\/td><\/tr>\n                    <tr><td>DN100<\/td><td>190<\/td><td>8<\/td><td>M16<\/td><\/tr>\n                    <tr><td>DN150<\/td><td>250<\/td><td>8<\/td><td>M20<\/td><\/tr>\n                    <tr><td>DN200<\/td><td>310<\/td><td>8 or 12<\/td><td>M20<\/td><\/tr>\n                    <tr><td>DN250<\/td><td>370<\/td><td>12<\/td><td>M24<\/td><\/tr>\n                    <tr><td>DN300<\/td><td>430<\/td><td>12<\/td><td>M24<\/td><\/tr>\n                    <tr><td>DN400<\/td><td>535<\/td><td>16<\/td><td>M27<\/td><\/tr>\n                    <tr><td>DN500<\/td><td>650<\/td><td>20<\/td><td>M30<\/td><\/tr>\n                    <tr><td>DN600<\/td><td>770<\/td><td>20<\/td><td>M33<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Tips for CNC\/DRO Work<\/h3>\n            <ul>\n                <li>The X,Y coordinates shown assume the center of the bolt circle is at origin (0,0)<\/li>\n                <li>For CNC work, add your actual center position offset to all coordinates<\/li>\n                <li>The starting angle of 0\u00b0 is at the 12 o&#8217;clock position (positive Y axis)<\/li>\n                <li>Angles increase clockwise (conventional for bolt patterns)<\/li>\n                <li>Always verify coordinates by checking the adjacent distance matches the calculated chord length<\/li>\n            <\/ul>\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"vc-section\"><button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udd17<\/span><span class=\"vc-section-title\">Related Calculators<\/span><\/span><svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\n    <div class=\"vc-section-body\"><div class=\"vc-section-inner\"><div class=\"vc-related\"><a class=\"vc-related-link\" href=\"\/calculators\/shim-thickness-calculator\/\">Shim Thickness Calculator<\/a><a class=\"vc-related-link\" href=\"\/calculators\/length-unit-converter\/\">Length Converter<\/a><a class=\"vc-related-link\" href=\"\/calculators\/pipe-support-spacing\/\">Pipe Support Spacing<\/a><\/div><\/div><\/div>\n<\/div>\n\n<div class=\"vc-promo\"><div class=\"vc-promo-text\"><strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>Professional engineering instruments and calculators.<\/div><a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a><\/div>\n<footer class=\"vc-footer\"><p>&copy; 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a><\/p><p style=\"font-size:12px;margin-top:4px;\">Bolt Pattern Calculator. Last updated: February 2025<\/p><div class=\"vc-footer-links\"><a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a><a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a><\/div><\/footer>\n<\/div>\n\n<script>\n(function(){\n    'use strict';\n    function $(id){return document.getElementById(id)}\n    function fmt(n,d){if(isNaN(n)||!isFinite(n))return '\u2014';return n.toFixed(d===undefined?3:d).replace(\/(\\.\\d*?)0+$\/,'$1').replace(\/\\.$\/,'')}\n\n    function calculate(){\n        var N=parseInt($('vc-bolts').value);\n        var D=parseFloat($('vc-pcd').value);\n        var theta0=parseFloat($('vc-start-angle').value)||0;\n        if(!N||N<2||!D||D<=0){$('vc-results').classList.remove('vc-visible');return}\n\n        var R=D\/2;\n        var adjDist=D*Math.sin(Math.PI\/N);\n        $('vc-r-dist').innerHTML=fmt(adjDist,3)+' <span class=\"vc-rcard-unit\">mm<\/span>';\n\n        var holes=[];\n        for(var i=0;i<N;i++){\n            var angleDeg=theta0+i*(360\/N);\n            var angleRad=angleDeg*Math.PI\/180;\n            var x=R*Math.sin(angleRad);\n            var y=R*Math.cos(angleRad);\n            holes.push({n:i+1,angle:angleDeg%360,x:x,y:y});\n        }\n\n        \/\/ Table\n        var tbody=$('vc-coord-body');tbody.innerHTML='';\n        holes.forEach(function(h){\n            tbody.innerHTML+='<tr><td><strong>'+h.n+'<\/strong><\/td><td>'+fmt(h.angle,2)+'\u00b0<\/td><td>'+fmt(h.x,3)+'<\/td><td>'+fmt(h.y,3)+'<\/td><\/tr>';\n        });\n\n        \/\/ SVG\n        var svgSize=320;var margin=40;var scale=(svgSize-2*margin)\/D;\n        var cx=svgSize\/2,cy=svgSize\/2;\n        var svg='<svg width=\"'+svgSize+'\" height=\"'+svgSize+'\" viewBox=\"0 0 '+svgSize+' '+svgSize+'\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">';\n        svg+='<rect width=\"'+svgSize+'\" height=\"'+svgSize+'\" fill=\"#faf8f5\" rx=\"8\"\/>';\n        \/\/ Center crosshair\n        svg+='<line x1=\"'+(cx-10)+'\" y1=\"'+cy+'\" x2=\"'+(cx+10)+'\" y2=\"'+cy+'\" stroke=\"#8a857e\" stroke-width=\"0.5\"\/>';\n        svg+='<line x1=\"'+cx+'\" y1=\"'+(cy-10)+'\" x2=\"'+cx+'\" y2=\"'+(cy+10)+'\" stroke=\"#8a857e\" stroke-width=\"0.5\"\/>';\n        \/\/ PCD circle\n        svg+='<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+(R*scale)+'\" fill=\"none\" stroke=\"#d9d4cc\" stroke-width=\"1\" stroke-dasharray=\"4,3\"\/>';\n        \/\/ Holes\n        holes.forEach(function(h){\n            var sx=cx+h.x*scale;var sy=cy-h.y*scale;\n            svg+='<circle cx=\"'+sx+'\" cy=\"'+sy+'\" r=\"8\" fill=\"#c85a2a\" stroke=\"#fff\" stroke-width=\"2\"\/>';\n            svg+='<text x=\"'+sx+'\" y=\"'+(sy+1)+'\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#fff\" font-size=\"9\" font-weight=\"700\" font-family=\"JetBrains Mono,monospace\">'+h.n+'<\/text>';\n            \/\/ Label outside\n            var lx=cx+h.x*scale*1.22;var ly=cy-h.y*scale*1.22;\n            svg+='<text x=\"'+lx+'\" y=\"'+ly+'\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#5a5650\" font-size=\"8\" font-family=\"JetBrains Mono,monospace\">'+fmt(h.angle,1)+'\u00b0<\/text>';\n        });\n        \/\/ Adjacent lines\n        for(var i=0;i<N;i++){\n            var h1=holes[i],h2=holes[(i+1)%N];\n            svg+='<line x1=\"'+(cx+h1.x*scale)+'\" y1=\"'+(cy-h1.y*scale)+'\" x2=\"'+(cx+h2.x*scale)+'\" y2=\"'+(cy-h2.y*scale)+'\" stroke=\"#d9d4cc\" stroke-width=\"0.7\"\/>';\n        }\n        svg+='<\/svg>';\n        $('vc-svg-wrap').innerHTML=svg;\n\n        $('vc-results').classList.add('vc-visible');\n    }\n\n    $('vc-form').addEventListener('input',calculate);\n    $('vc-form').addEventListener('change',calculate);\n\n    $('vc-copy-btn').addEventListener('click',function(){\n        var rows=document.querySelectorAll('#vc-coord-body tr');\n        var text='Bolt Pattern \u2014 '+$('vc-bolts').value+' holes, PCD='+$('vc-pcd').value+' mm\\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n';\n        text+='Adjacent distance: '+$('vc-r-dist').textContent+'\\n\\n';\n        text+='Hole\\tAngle\\tX (mm)\\tY (mm)\\n';\n        rows.forEach(function(r){var c=r.querySelectorAll('td');text+=c[0].textContent+'\\t'+c[1].textContent+'\\t'+c[2].textContent+'\\t'+c[3].textContent+'\\n'});\n        text+='\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\nvibromera.eu';\n        if(navigator.clipboard){navigator.clipboard.writeText(text).then(function(){var b=$('vc-copy-btn');b.classList.add('vc-copied');b.innerHTML='<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg> Copied!';setTimeout(function(){b.classList.remove('vc-copied');b.innerHTML='<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy'},2000)})}\n    });\n\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn){btn.addEventListener('click',function(){var s=this.closest('.vc-section');s.classList.toggle('vc-open');this.setAttribute('aria-expanded',s.classList.contains('vc-open'))})});\n\n    function init(){calculate()}\n    if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init)}else{init()}\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Kalkulahin ang mga X,Y coordinate, anggulo, at distansya ng bolt hole para sa anumang bolt circle pattern. Ilagay ang bilang ng mga bolt, PCD, at simula ng anggulo. Interactive na SVG visualization.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100039","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/calculator\/100039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/calculator\/100039\/revisions"}],"predecessor-version":[{"id":100350,"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/calculator\/100039\/revisions\/100350"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/media?parent=100039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/categories?post=100039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/tl\/wp-json\/wp\/v2\/tags?post=100039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}