{"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\/nb\/calculators\/bolt-pattern-calculator\/","title":{"rendered":"Boltm\u00f8nsterkalkulator | PCD, vinkler og koordinater"},"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>Beregn bolthullets X- og Y-koordinater, vinkler og avstander for ethvert boltsirkelm\u00f8nster. Skriv inn antall bolter, PCD og startvinkel. Interaktiv SVG-visualisering.<\/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\/nb\/wp-json\/wp\/v2\/calculator\/100039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator\/100039\/revisions"}],"predecessor-version":[{"id":100350,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/calculator\/100039\/revisions\/100350"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/media?parent=100039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/categories?post=100039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/nb\/wp-json\/wp\/v2\/tags?post=100039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}