{"id":100230,"date":"2026-02-15T20:28:31","date_gmt":"2026-02-15T20:28:31","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100230"},"modified":"2026-03-05T15:42:18","modified_gmt":"2026-03-05T15:42:18","slug":"soft-foot-calculator","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/bn\/calculators\/soft-foot-calculator\/","title":{"rendered":"\u09b8\u09ab\u099f \u09ab\u09c1\u099f \u0995\u09cd\u09af\u09be\u09b2\u0995\u09c1\u09b2\u09c7\u099f\u09b0 \u2014 \u09ac\u09bf\u09a8\u09be\u09ae\u09c2\u09b2\u09cd\u09af\u09c7 \u09ae\u09c7\u09b6\u09bf\u09a8 \u09ab\u09cd\u09b0\u09c7\u09ae \u09ac\u09bf\u0995\u09c3\u09a4\u09bf \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Soft Foot Calculator\",\"alternateName\":[\"Machine Frame Distortion Calculator\",\"Soft Foot Check Tool\",\"Shimming Calculator\"],\"description\":\"Free online engineering calculator for soft foot detection and correction in rotating machinery. Enter dial indicator readings to identify the worst foot, determine shim corrections, and check acceptable limits.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/soft-foot-calculator\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2024-01-01\",\"dateModified\":\"2025-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"4 or 6 foot configurations\",\"Pass\/Warn\/Fail color coding\",\"Worst foot identification\",\"Shim thickness recommendation\",\"Auto-calculation on input change\",\"URL parameter sharing\",\"Calculation history\"],\"keywords\":\"soft foot, machine alignment, frame distortion, shimming, dial indicator, rotating machinery\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"What is soft foot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Soft foot is a condition where one or more machine feet do not make complete, flat contact with the baseplate. When the hold-down bolt is tightened, it distorts the machine frame, causing internal stresses and misalignment of bearings and shaft. The reading is typically 0.05 mm or more when loosening a foot bolt.\"}},\n{\"@type\":\"Question\",\"name\":\"Why does soft foot matter?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Soft foot distorts the machine frame when bolts are tightened, causing internal bearing misalignment, inconsistent alignment readings, increased vibration, premature bearing failure, and the inability to achieve repeatable shaft alignment.\"}},\n{\"@type\":\"Question\",\"name\":\"How do I measure soft foot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Mount a dial indicator on the machine frame near each foot. With all bolts tight, loosen one bolt at a time and record the dial indicator movement. The reading represents the gap (soft foot) at that location. Re-tighten before moving to the next foot.\"}},\n{\"@type\":\"Question\",\"name\":\"What are the types of soft foot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"There are three main types: 1) Parallel (gap) soft foot \u2014 uniform gap under the foot, corrected with flat shims. 2) Angular soft foot \u2014 wedge-shaped gap, corrected with tapered or stepped shims. 3) Springing (reactive\/induced) soft foot \u2014 caused by external forces like pipe strain or conduit stress distorting the machine.\"}},\n{\"@type\":\"Question\",\"name\":\"How do I correct soft foot?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"For parallel soft foot: add flat shims equal to the dial indicator reading under the affected foot. For angular soft foot: use stepped or tapered shims. For springing foot: address the external force (pipe strain, conduit stress, dowel pin binding) rather than adding shims. Always re-check after correction.\"}}\n]}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Soft Foot Calculator\",\"item\":\"https:\/\/vibromera.eu\/calculators\/soft-foot-calculator\/\"}\n]}\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 {\n    --vc-bg: #f4f1ec;\n    --vc-surface: #ffffff;\n    --vc-surface-alt: #f8f6f2;\n    --vc-ink: #1a1a1a;\n    --vc-ink-secondary: #5a5650;\n    --vc-ink-muted: #8a857e;\n    --vc-accent: #c85a2a;\n    --vc-accent-hover: #b04d22;\n    --vc-accent-light: #fdf0ea;\n    --vc-blue: #2a5c8c;\n    --vc-blue-light: #eaf1f8;\n    --vc-green: #2a7a4b;\n    --vc-green-light: #eaf8ef;\n    --vc-yellow: #a67c00;\n    --vc-yellow-light: #fef9e8;\n    --vc-red: #b91c1c;\n    --vc-red-light: #fef2f2;\n    --vc-border: #d9d4cc;\n    --vc-border-light: #e8e4dd;\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\n    --vc-radius: 8px;\n    --vc-radius-lg: 12px;\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\n    --vc-display: 'Fraunces', Georgia, serif;\n}\n\n.vc-calculator {\n    font-family: var(--vc-font);\n    font-size: 15px;\n    line-height: 1.65;\n    color: var(--vc-ink);\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 20px 16px 40px;\n    -webkit-font-smoothing: antialiased;\n}\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\n\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\n.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:0.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:-0.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; }\n.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\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\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\n\/* \u2500\u2500 FORM \u2500\u2500 *\/\n.vc-form { padding:24px; }\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\n.vc-field { display:flex; flex-direction:column; }\n.vc-field-full { grid-column: 1 \/ -1; }\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\n.vc-select, .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 0.15s, box-shadow 0.15s; }\n.vc-select { padding-right:36px; appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%235a5650' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'\/%3E%3C\/svg%3E\"); background-repeat:no-repeat; background-position:right 10px center; }\n.vc-select:focus, .vc-input:focus { outline:none; border-color:var(--vc-accent); box-shadow:0 0 0 3px rgba(200,90,42,0.12); }\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\n\n\/* \u2500\u2500 INPUT STATUS COLORS \u2500\u2500 *\/\n.vc-input-pass { border-color:var(--vc-green)!important; background:var(--vc-green-light)!important; }\n.vc-input-warn { border-color:var(--vc-yellow)!important; background:var(--vc-yellow-light)!important; }\n.vc-input-fail { border-color:var(--vc-red)!important; background:var(--vc-red-light)!important; }\n\n\/* \u2500\u2500 PRESETS \u2500\u2500 *\/\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\n.vc-presets-label { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); width:100%; margin-bottom:2px; }\n.vc-preset-btn { padding:5px 12px; font-family:var(--vc-font); font-size:12px; font-weight:500; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* \u2500\u2500 RESULTS \u2500\u2500 *\/\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 0.5s cubic-bezier(0.4,0,0.2,1), padding 0.3s; }\n.vc-results.vc-visible { max-height:2000px; padding:24px; }\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\n.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 0.15s; }\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\n\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\n.vc-rcard { background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); padding:16px; transition:transform 0.2s; }\n.vc-rcard:hover { transform:translateY(-1px); }\n.vc-rcard-primary { border-color:var(--vc-accent); border-width:2px; background:linear-gradient(135deg, #fdf6f2 0%, var(--vc-surface) 100%); grid-column:1 \/ -1; }\n.vc-rcard-label { font-family:var(--vc-mono); font-size:10px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); margin-bottom:4px; }\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\n.vc-rcard-sub { font-family:var(--vc-font); font-size:12px; font-weight:400; color:var(--vc-ink-muted); margin-top:4px; }\n\n\/* \u2500\u2500 STATUS BADGES \u2500\u2500 *\/\n.vc-status { display:inline-block; padding:3px 10px; border-radius:4px; font-family:var(--vc-mono); font-size:11px; font-weight:600; letter-spacing:0.04em; }\n.vc-status-pass { background:var(--vc-green-light); color:var(--vc-green); }\n.vc-status-warn { background:var(--vc-yellow-light); color:var(--vc-yellow); }\n.vc-status-fail { background:var(--vc-red-light); color:var(--vc-red); }\n\n\/* \u2500\u2500 FOOT TABLE \u2500\u2500 *\/\n.vc-foot-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:14px; }\n.vc-foot-table th, .vc-foot-table td { padding:10px 14px; border:1px solid var(--vc-border-light); text-align:center; }\n.vc-foot-table th { background:var(--vc-surface-alt); font-family:var(--vc-mono); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\n.vc-foot-table td { font-family:var(--vc-mono); font-size:15px; font-weight:500; }\n.vc-foot-table .vc-worst { font-weight:700; }\n\n\/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\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 0.15s; }\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\n.vc-section-icon { font-size:20px; line-height:1; }\n.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 0.3s; flex-shrink:0; }\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\n.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\n\/* \u2500\u2500 THEORY \u2500\u2500 *\/\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\n.vc-theory h3:first-child { margin-top:20px; }\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\n.vc-theory li { margin-bottom:5px; }\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:16px; font-weight:500; text-align:center; margin:14px 0; color:var(--vc-ink); overflow-x:auto; }\n.vc-info-box { background:var(--vc-blue-light); border-left:3px solid var(--vc-blue); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-warning-box { background:var(--vc-yellow-light); border-left:3px solid var(--vc-yellow); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\n.vc-table th { background:var(--vc-surface-alt); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\n\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\n.vc-faq-q { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; border:none; background:var(--vc-surface-alt); cursor:pointer; font-family:var(--vc-font); font-size:15px; font-weight:600; color:var(--vc-ink); text-align:left; transition:background 0.15s; }\n.vc-faq-q:hover { background:#ede9e3; }\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\n.vc-faq-a-inner p { margin:0 0 8px; }\n.vc-faq-a-inner p:last-child { margin-bottom:0; }\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; }\n.vc-faq-a-inner li { margin-bottom:3px; }\n\n\/* \u2500\u2500 RELATED \u2500\u2500 *\/\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\n.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 0.15s; }\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* \u2500\u2500 PROMO \u2500\u2500 *\/\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; }\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-promo-text strong { color:var(--vc-ink); }\n.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 0.15s; }\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\n\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\n.vc-footer a { color:var(--vc-accent); text-decoration:none; }\n.vc-footer a:hover { text-decoration:underline; }\n.vc-footer-links { margin-top:8px; font-size:12px; }\n.vc-footer-links a { margin:0 8px; }\n\n\/* \u2500\u2500 PRINT \u2500\u2500 *\/\n@media print {\n    .vc-section-body { max-height:none!important; }\n    .vc-faq-a { max-height:none!important; }\n    .vc-results { max-height:none!important; padding:24px!important; }\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\n}\n<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-soft-foot\">\n\n<!-- Header -->\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool<\/p>\n    <h1 class=\"vc-header-title\">Soft Foot Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Check for machine frame distortion by entering dial indicator readings at each foot. Identify the worst soft foot, determine shim corrections, and verify acceptable limits.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">4 or 6 Feet<\/span>\n        <span class=\"vc-badge\">Pass \/ Warn \/ Fail<\/span>\n        <span class=\"vc-badge\">Shim Recommendation<\/span>\n    <\/div>\n<\/header>\n\n<!-- Calculator Card -->\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 vc-field-full\">\n                <label class=\"vc-label\" for=\"vc-numfeet\">Number of Feet<\/label>\n                <select class=\"vc-select\" id=\"vc-numfeet\" style=\"max-width:200px;\">\n                    <option value=\"4\" selected>4 feet<\/option>\n                    <option value=\"6\">6 feet<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"vc-field vc-field-full\" style=\"margin-top:4px;\">\n                <label class=\"vc-label\">Dial Indicator Readings <span class=\"vc-label-hint\">(mm \u2014 reading when bolt is loosened at each foot)<\/span><\/label>\n            <\/div>\n\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-f1\">Foot 1 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f1\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.02\" value=\"0.02\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-f2\">Foot 2 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f2\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.08\" value=\"0.08\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-f3\">Foot 3 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f3\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.03\" value=\"0.03\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-f4\">Foot 4 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f4\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.15\" value=\"0.15\">\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-f5-field\" style=\"display:none;\">\n                <label class=\"vc-label\" for=\"vc-f5\">Foot 5 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f5\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.04\">\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-f6-field\" style=\"display:none;\">\n                <label class=\"vc-label\" for=\"vc-f6\">Foot 6 <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-f6\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 0.06\">\n            <\/div>\n        <\/div>\n\n        <!-- Presets -->\n        <div class=\"vc-presets\">\n            <div class=\"vc-presets-label\">Quick presets<\/div>\n            <button type=\"button\" class=\"vc-preset-btn\" data-preset=\"bad\">4 feet: 0.02, 0.08, 0.03, 0.15 mm<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-preset=\"good\">4 feet: 0.01, 0.03, 0.02, 0.04 mm (all OK)<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-preset=\"mixed\">4 feet: 0.04, 0.06, 0.02, 0.09 mm<\/button>\n        <\/div>\n    <\/form>\n\n    <!-- Results -->\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Results<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\n                <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>\n                Copy\n            <\/button>\n        <\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\">\n                <div class=\"vc-rcard-label\">Worst Foot Identified<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-worst\">\u2014<\/div>\n                <div class=\"vc-rcard-sub\" id=\"vc-r-worst-detail\"><\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Overall Status<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-status\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Recommended Shim<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-shim\">\u2014<\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"vc-viz\" id=\"vc-viz\" style=\"text-align:center;margin:16px 0 8px\"><\/div>\n        <!-- Detailed foot table -->\n        <table class=\"vc-foot-table\" id=\"vc-foot-table\">\n            <thead>\n                <tr><th>Foot<\/th><th>Reading (mm)<\/th><th>Reading (\u03bcm)<\/th><th>Status<\/th><th>Shim Needed<\/th><\/tr>\n            <\/thead>\n            <tbody id=\"vc-foot-tbody\"><\/tbody>\n        <\/table>\n    <\/div>\n<\/div>\n\n<!-- Theory & Reference -->\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udcd8<\/span>\n            <span class=\"vc-section-title\">Theory &amp; Reference<\/span>\n        <\/span>\n        <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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>What is Soft Foot?<\/h3>\n            <p>Soft foot occurs when one or more machine feet do not make full, flat contact with the baseplate or foundation. When the hold-down bolt at that foot is tightened, the machine frame is distorted, causing internal stresses that misalign bearings and seals.<\/p>\n\n            <h3>Acceptance Criteria<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Reading<\/th><th>Status<\/th><th>Action<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>&lt; 0.05 mm (50 \u03bcm)<\/td><td style=\"color:var(--vc-green);font-weight:600;\">PASS<\/td><td>Acceptable \u2014 no correction needed<\/td><\/tr>\n                    <tr><td>0.05 \u2013 0.10 mm (50\u2013100 \u03bcm)<\/td><td style=\"color:var(--vc-yellow);font-weight:600;\">WARNING<\/td><td>Marginal \u2014 correction recommended<\/td><\/tr>\n                    <tr><td>&gt; 0.10 mm (100 \u03bcm)<\/td><td style=\"color:var(--vc-red);font-weight:600;\">FAIL<\/td><td>Excessive \u2014 must correct before alignment<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Types of Soft Foot<\/h3>\n            <ul>\n                <li><strong>Parallel (Gap) Soft Foot<\/strong> \u2014 uniform gap under the foot. Caused by missing or incorrect shims. Corrected by adding flat shims equal to the gap.<\/li>\n                <li><strong>Angular Soft Foot<\/strong> \u2014 wedge-shaped gap where the foot rocks on one edge. Caused by non-parallel machining. Corrected with tapered or stepped shims.<\/li>\n                <li><strong>Springing (Reactive\/Induced) Soft Foot<\/strong> \u2014 caused by external forces such as pipe strain, conduit stress, or dowel pin binding. The foot appears flat but the frame deflects. Must address the external force source.<\/li>\n            <\/ul>\n\n            <h3>Measurement Procedure<\/h3>\n            <ol>\n                <li>Tighten all machine foot bolts to normal torque.<\/li>\n                <li>Mount a dial indicator (or use a laser alignment system) on the machine frame near Foot 1.<\/li>\n                <li>Zero the indicator, then loosen the bolt at Foot 1.<\/li>\n                <li>Record the maximum dial indicator movement \u2014 this is the soft foot at Foot 1.<\/li>\n                <li>Re-tighten the bolt at Foot 1.<\/li>\n                <li>Repeat for each remaining foot.<\/li>\n            <\/ol>\n\n            <div class=\"vc-formula-box\">Shim thickness = Dial indicator reading at the soft foot<\/div>\n\n            <h3>Practical Example<\/h3>\n            <div class=\"vc-example-box\">\n                <div class=\"vc-example-title\">Example \u2014 4-Foot Motor<\/div>\n                <p><strong>Readings:<\/strong> Foot 1 = 0.02 mm, Foot 2 = 0.08 mm, Foot 3 = 0.03 mm, Foot 4 = 0.15 mm<\/p>\n                <p>Foot 4 = 0.15 mm \u2192 <strong>FAIL<\/strong> (exceeds 0.10 mm limit)<\/p>\n                <p>Foot 2 = 0.08 mm \u2192 <strong>WARNING<\/strong> (between 0.05 and 0.10 mm)<\/p>\n                <p>Feet 1 and 3 \u2192 <strong>PASS<\/strong> (below 0.05 mm)<\/p>\n                <p>Correction: Add <strong>0.15 mm shim<\/strong> under Foot 4, then re-check all feet.<\/p>\n            <\/div>\n\n            <div class=\"vc-info-box\">\n                <p><strong>\ud83d\udca1 Tip:<\/strong> Always correct soft foot before performing shaft alignment. Soft foot will cause alignment readings to be inconsistent and non-repeatable.<\/p>\n            <\/div>\n\n            <div class=\"vc-warning-box\">\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> If loosening a bolt gives a negative reading (foot lifts), this indicates springing\/reactive soft foot caused by external forces. Do not add shims \u2014 instead, identify and relieve the external force (pipe strain, conduit, etc.).<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Related Calculators -->\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udd17<\/span>\n            <span class=\"vc-section-title\">Related Calculators<\/span>\n        <\/span>\n        <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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-related\">\n                <a class=\"vc-related-link\" href=\"\/calculators\/shaft-alignment-tolerance\/\">Shaft Alignment Tolerance<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/thermal-growth-alignment\/\">Thermal Growth Compensation<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-velocity\/\">Vibration Velocity (ISO 10816)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 21940)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/shaft-radial-runout\/\">Shaft Radial Runout<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- FAQ -->\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\u2753<\/span>\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\n        <\/span>\n        <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>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Promo -->\n<div class=\"vc-promo\">\n    <div class=\"vc-promo-text\">\n        <strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>\n        Professional alignment and vibration analysis instruments with built-in soft foot detection. Achieve precision alignment on-site. Used in 50+ countries.\n    <\/div>\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\n<\/div>\n\n<!-- Footer -->\n<footer class=\"vc-footer\">\n    <p>\u00a9 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\n    <p style=\"font-size:12px;margin-top:4px;\">Machine alignment engineering reference. Last updated: February 2025<\/p>\n    <div class=\"vc-footer-links\">\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\n    <\/div>\n<\/footer>\n\n<\/div>\n\n<script>\n(function() {\n    'use strict';\n\n    var SLUG = 'soft-foot-calculator';\n\n    function $(id) { return document.getElementById(id); }\n    function fmt(n, d) { if(isNaN(n)) return '\u2014'; var f=n.toFixed(d===undefined?2:d); return f.replace(\/(\\.\\d*?)0+$\/,'$1').replace(\/\\.$\/,''); }\n\n    \/* \u2500\u2500 LIMITS \u2500\u2500 *\/\n    var LIMIT_PASS = 0.05;\n    var LIMIT_WARN = 0.10;\n\n    function getStatus(val) {\n        if (val < LIMIT_PASS) return 'pass';\n        if (val <= LIMIT_WARN) return 'warn';\n        return 'fail';\n    }\n\n    function getStatusLabel(s) {\n        if (s === 'pass') return '<span class=\"vc-status vc-status-pass\">PASS<\/span>';\n        if (s === 'warn') return '<span class=\"vc-status vc-status-warn\">WARNING<\/span>';\n        return '<span class=\"vc-status vc-status-fail\">FAIL<\/span>';\n    }\n\n    function getInputClass(s) {\n        if (s === 'pass') return 'vc-input-pass';\n        if (s === 'warn') return 'vc-input-warn';\n        return 'vc-input-fail';\n    }\n\n    \/* \u2500\u2500 SHOW\/HIDE 5&6 \u2500\u2500 *\/\n    $('vc-numfeet').addEventListener('change', function() {\n        var show = this.value === '6';\n        $('vc-f5-field').style.display = show ? '' : 'none';\n        $('vc-f6-field').style.display = show ? '' : 'none';\n        calculate();\n    });\n\n    \/* \u2500\u2500 CALCULATION \u2500\u2500 *\/\n    function calculate() {\n        var numFeet = parseInt($('vc-numfeet').value);\n        var readings = [];\n        var valid = true;\n\n        for (var i = 1; i <= numFeet; i++) {\n            var val = parseFloat($('vc-f' + i).value);\n            if (isNaN(val) || val < 0) { valid = false; break; }\n            readings.push({ foot: i, value: val, status: getStatus(val) });\n        }\n\n        \/\/ Clear input colors\n        for (var j = 1; j <= 6; j++) {\n            var inp = $('vc-f' + j);\n            inp.classList.remove('vc-input-pass', 'vc-input-warn', 'vc-input-fail');\n        }\n\n        if (!valid || readings.length === 0) {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        \/\/ Color inputs\n        readings.forEach(function(r) {\n            $('vc-f' + r.foot).classList.add(getInputClass(r.status));\n        });\n\n        \/\/ Find worst foot\n        var worst = readings.reduce(function(max, r) { return r.value > max.value ? r : max; }, readings[0]);\n\n        \/\/ Overall status\n        var hasFailure = readings.some(function(r) { return r.status === 'fail'; });\n        var hasWarning = readings.some(function(r) { return r.status === 'warn'; });\n        var allPass = readings.every(function(r) { return r.status === 'pass'; });\n\n        var overallStatus, overallLabel;\n        if (hasFailure) {\n            overallStatus = 'fail';\n            overallLabel = getStatusLabel('fail') + ' <span style=\"font-size:14px;color:var(--vc-ink-secondary);margin-left:8px;\">Correct before alignment<\/span>';\n        } else if (hasWarning) {\n            overallStatus = 'warn';\n            overallLabel = getStatusLabel('warn') + ' <span style=\"font-size:14px;color:var(--vc-ink-secondary);margin-left:8px;\">Correction recommended<\/span>';\n        } else {\n            overallStatus = 'pass';\n            overallLabel = getStatusLabel('pass') + ' <span style=\"font-size:14px;color:var(--vc-ink-secondary);margin-left:8px;\">All feet within tolerance<\/span>';\n        }\n\n        \/\/ Count issues\n        var failCount = readings.filter(function(r) { return r.status === 'fail'; }).length;\n        var warnCount = readings.filter(function(r) { return r.status === 'warn'; }).length;\n        var passCount = readings.filter(function(r) { return r.status === 'pass'; }).length;\n\n        \/\/ Display primary result\n        $('vc-r-worst').innerHTML = 'Foot ' + worst.foot + ' \u2014 ' + fmt(worst.value, 3) + ' <span class=\"vc-rcard-unit\">mm<\/span> <span class=\"vc-rcard-unit\">(' + fmt(worst.value * 1000, 0) + ' \u03bcm)<\/span>';\n        $('vc-r-worst-detail').textContent = passCount + ' pass, ' + warnCount + ' warning, ' + failCount + ' fail out of ' + numFeet + ' feet';\n        $('vc-r-status').innerHTML = overallLabel;\n\n        \/\/ Shim recommendation\n        if (worst.status === 'pass') {\n            $('vc-r-shim').innerHTML = 'No shim needed';\n        } else {\n            $('vc-r-shim').innerHTML = fmt(worst.value, 3) + ' <span class=\"vc-rcard-unit\">mm at Foot ' + worst.foot + '<\/span>';\n        }\n\n        \/\/ Build detailed table\n        var tbody = $('vc-foot-tbody');\n        tbody.innerHTML = '';\n        readings.forEach(function(r) {\n            var isWorst = r.foot === worst.foot && worst.status !== 'pass';\n            var shimText = r.status === 'pass' ? '\u2014' : fmt(r.value, 3) + ' mm';\n            tbody.innerHTML += '<tr class=\"' + (isWorst ? 'vc-worst' : '') + '\">' +\n                '<td>Foot ' + r.foot + (isWorst ? ' \u2605' : '') + '<\/td>' +\n                '<td>' + fmt(r.value, 3) + '<\/td>' +\n                '<td>' + fmt(r.value * 1000, 0) + '<\/td>' +\n                '<td>' + getStatusLabel(r.status) + '<\/td>' +\n                '<td>' + shimText + '<\/td>' +\n                '<\/tr>';\n        });\n\n        $('vc-results').classList.add('vc-visible');\n        drawViz(readings);\n\n        \/\/ URL params\n        var u = new URL(window.location);\n        u.searchParams.set('feet', numFeet);\n        readings.forEach(function(r) { u.searchParams.set('f' + r.foot, r.value); });\n        history.replaceState(null, '', u.toString());\n\n        \/\/ History\n        var summaryParts = readings.map(function(r) { return 'F' + r.foot + '=' + fmt(r.value, 3); });\n        saveHistory({\n            feet: numFeet,\n            readings: readings.map(function(r) { return r.value; }),\n            _summary: summaryParts.join(', ') + ' \u2192 worst: Foot ' + worst.foot\n        });\n    }\n\n    \/* \u2500\u2500 PRESETS \u2500\u2500 *\/\n    var presets = {\n        'bad': { feet:4, values:[0.02, 0.08, 0.03, 0.15] },\n        'good': { feet:4, values:[0.01, 0.03, 0.02, 0.04] },\n        'mixed': { feet:4, values:[0.04, 0.06, 0.02, 0.09] }\n    };\n\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            var p = presets[this.getAttribute('data-preset')];\n            if (!p) return;\n            $('vc-numfeet').value = p.feet;\n            $('vc-f5-field').style.display = p.feet === 6 ? '' : 'none';\n            $('vc-f6-field').style.display = p.feet === 6 ? '' : 'none';\n            for (var i = 0; i < p.values.length; i++) {\n                $('vc-f' + (i + 1)).value = p.values[i];\n            }\n            calculate();\n        });\n    });\n\n    \/* \u2500\u2500 AUTO-CALCULATE \u2500\u2500 *\/\n    $('vc-form').addEventListener('input', calculate);\n    $('vc-form').addEventListener('change', calculate);\n\n    \/* \u2500\u2500 COPY \u2500\u2500 *\/\n    $('vc-copy-btn').addEventListener('click', function() {\n        var numFeet = parseInt($('vc-numfeet').value);\n        var lines = ['Soft Foot Check Results', '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501'];\n        for (var i = 1; i <= numFeet; i++) {\n            var val = parseFloat($('vc-f' + i).value) || 0;\n            var status = getStatus(val);\n            lines.push('Foot ' + i + ': ' + fmt(val, 3) + ' mm (' + fmt(val * 1000, 0) + ' \u03bcm) \u2014 ' + status.toUpperCase());\n        }\n        lines.push('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\n        lines.push('Worst: ' + $('vc-r-worst').textContent);\n        lines.push('Shim: ' + $('vc-r-shim').textContent);\n        lines.push('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\n        lines.push('vibromera.eu\/calculators\/soft-foot-calculator\/');\n        var text = lines.join('\\n');\n\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(text).then(function() {\n                var btn = $('vc-copy-btn');\n                btn.classList.add('vc-copied');\n                btn.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!';\n                setTimeout(function() {\n                    btn.classList.remove('vc-copied');\n                    btn.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';\n                }, 2000);\n            });\n        }\n    });\n\n    \/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\n        btn.addEventListener('click', function() {\n            var section = this.closest('.vc-section');\n            var isOpen = section.classList.contains('vc-open');\n            section.classList.toggle('vc-open');\n            this.setAttribute('aria-expanded', !isOpen);\n        });\n    });\n\n    \/* \u2500\u2500 FAQ \u2500\u2500 *\/\n    var faqData = [\n        { q: 'What is soft foot?', a: '<p>Soft foot is a condition where one or more machine feet do not make complete, flat contact with the baseplate or foundation. When the hold-down bolt at that foot is tightened, it pulls the machine frame down, causing internal distortion that misaligns bearings and seals.<\/p><p>The term comes from the analogy of a table with one short leg \u2014 it rocks and is unstable.<\/p>' },\n        { q: 'Why does soft foot matter?', a: '<p>Soft foot is critical because it:<\/p><ul><li><strong>Distorts the machine frame<\/strong> \u2014 causing internal bearing misalignment<\/li><li><strong>Makes alignment non-repeatable<\/strong> \u2014 readings change each time bolts are tightened<\/li><li><strong>Increases vibration<\/strong> \u2014 due to internal stresses and bearing preload<\/li><li><strong>Causes premature bearing failure<\/strong> \u2014 from uneven load distribution<\/li><li><strong>Wastes alignment time<\/strong> \u2014 if not corrected first, alignment will never converge<\/li><\/ul><p>Always check and correct soft foot <strong>before<\/strong> performing shaft alignment.<\/p>' },\n        { q: 'How do I measure soft foot?', a: '<p>Follow this procedure:<\/p><ol><li>Tighten all hold-down bolts to normal torque<\/li><li>Mount a dial indicator on the machine frame near the first foot<\/li><li>Zero the indicator<\/li><li>Loosen the bolt at that foot (about 1\/4 turn)<\/li><li>Record the maximum indicator movement (positive = gap)<\/li><li>Re-tighten the bolt<\/li><li>Move to the next foot and repeat<\/li><\/ol><p>Alternatively, modern laser alignment systems have a built-in soft foot check function that measures all feet quickly.<\/p>' },\n        { q: 'What are the types of soft foot?', a: '<p>There are three main types:<\/p><ul><li><strong>Parallel (gap) soft foot<\/strong> \u2014 A uniform gap exists under the foot, typically due to missing, incorrect, or worn shims. Corrected by adding flat shims equal to the measured gap.<\/li><li><strong>Angular soft foot<\/strong> \u2014 The foot has a wedge-shaped gap and rocks on one edge. Caused by non-parallel machining of the foot or baseplate. Corrected with tapered or stepped shims, or by machining the foot.<\/li><li><strong>Springing (reactive\/induced) soft foot<\/strong> \u2014 No gap exists, but external forces (pipe strain, conduit stress, dowel pin binding) distort the machine when the bolt is tightened. Cannot be corrected with shims \u2014 must address the external force.<\/li><\/ul>' },\n        { q: 'How do I correct soft foot?', a: '<p><strong>Parallel soft foot:<\/strong> Add flat shims equal to the dial indicator reading under the affected foot. Use quality pre-cut stainless steel shims. Avoid using more than 3\u20134 shims in a stack.<\/p><p><strong>Angular soft foot:<\/strong> Use tapered shims, stepped shims, or machine the foot surface to achieve full contact. Sometimes a thin coat of epoxy or polymer can fill small angular gaps.<\/p><p><strong>Springing soft foot:<\/strong> Identify and relieve the external force. Common causes include pipe strain, electrical conduit stress, tight dowel pins, and foundation settling. Do not add shims for springing soft foot \u2014 it will make the problem worse.<\/p><p>After correction, always re-check all feet to verify the fix.<\/p>' }\n    ];\n\n    var faqList = $('vc-faq-list');\n    faqData.forEach(function(faq) {\n        faqList.innerHTML += '<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>' + faq.q + '<\/span><svg class=\"vc-faq-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button><div class=\"vc-faq-a\"><div class=\"vc-faq-a-inner\">' + faq.a + '<\/div><\/div><\/div>';\n    });\n    faqList.addEventListener('click', function(e) {\n        var btn = e.target.closest('.vc-faq-q');\n        if (!btn) return;\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\n    });\n\n    \/* \u2500\u2500 VISUALIZATION \u2500\u2500 *\/\n    function drawViz(readings) {\n        var c = $('vc-viz'), W = 340, H = 200;\n        var svg = '<svg width=\"'+W+'\" height=\"'+H+'\" viewBox=\"0 0 '+W+' '+H+'\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">';\n        var cx = W \/ 2, cy = H \/ 2 + 10;\n        var baseW = 200, baseH = 90, footR = 14;\n        var colors = { pass: '#2a7a4b', warn: '#a67c00', fail: '#b91c1c' };\n        var bgColors = { pass: '#eaf8ef', warn: '#fef9e8', fail: '#fef2f2' };\n        \/\/ Machine base (3D-ish)\n        svg += '<rect x=\"'+(cx-baseW\/2)+'\" y=\"'+(cy-baseH\/2)+'\" width=\"'+baseW+'\" height=\"'+baseH+'\" rx=\"6\" fill=\"#e0e7ef\" stroke=\"#7b8fa3\" stroke-width=\"1.5\"\/>';\n        svg += '<text x=\"'+cx+'\" y=\"'+cy+'\" text-anchor=\"middle\" fill=\"#5a6a7a\" font-size=\"12\" font-weight=\"600\">Machine Base<\/text>';\n        \/\/ Foot positions (4 or 6)\n        var n = readings.length;\n        var footPos;\n        if (n === 6) {\n            footPos = [\n                { x: cx - baseW\/2 + 20, y: cy - baseH\/2 + 15 },\n                { x: cx,                  y: cy - baseH\/2 + 15 },\n                { x: cx + baseW\/2 - 20, y: cy - baseH\/2 + 15 },\n                { x: cx - baseW\/2 + 20, y: cy + baseH\/2 - 15 },\n                { x: cx,                  y: cy + baseH\/2 - 15 },\n                { x: cx + baseW\/2 - 20, y: cy + baseH\/2 - 15 }\n            ];\n        } else {\n            footPos = [\n                { x: cx - baseW\/2 + 25, y: cy - baseH\/2 + 18 },\n                { x: cx + baseW\/2 - 25, y: cy - baseH\/2 + 18 },\n                { x: cx - baseW\/2 + 25, y: cy + baseH\/2 - 18 },\n                { x: cx + baseW\/2 - 25, y: cy + baseH\/2 - 18 }\n            ];\n        }\n        for (var i = 0; i < n && i < footPos.length; i++) {\n            var r = readings[i];\n            var fp = footPos[i];\n            var col = colors[r.status], bg = bgColors[r.status];\n            svg += '<circle cx=\"'+fp.x+'\" cy=\"'+fp.y+'\" r=\"'+footR+'\" fill=\"'+bg+'\" stroke=\"'+col+'\" stroke-width=\"2\"\/>';\n            svg += '<text x=\"'+fp.x+'\" y=\"'+(fp.y+1)+'\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"'+col+'\" font-size=\"9\" font-weight=\"700\">F'+r.foot+'<\/text>';\n            \/\/ Value below foot\n            var ly = fp.y > cy ? fp.y + footR + 12 : fp.y - footR - 5;\n            svg += '<text x=\"'+fp.x+'\" y=\"'+ly+'\" text-anchor=\"middle\" fill=\"'+col+'\" font-size=\"9\" font-weight=\"600\">'+fmt(r.value, 3)+'<\/text>';\n        }\n        svg += '<text x=\"'+cx+'\" y=\"14\" text-anchor=\"middle\" fill=\"#2c3e50\" font-size=\"11\" font-weight=\"600\">Soft Foot Overview (mm)<\/text>';\n        svg += '<\/svg>';\n        c.innerHTML = svg;\n    }\n\n    \/* \u2500\u2500 HISTORY \u2500\u2500 *\/\n    function saveHistory(entry) {\n        var key = 'vc_history_' + SLUG;\n        var arr = [];\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\n        entry._ts = new Date().toISOString();\n        arr.unshift(entry);\n        if (arr.length > 10) arr = arr.slice(0, 10);\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\n    }\n\n    \/* \u2500\u2500 URL PARAMS \u2500\u2500 *\/\n    function loadParams() {\n        var p = new URLSearchParams(window.location.search);\n        if (p.get('feet')) {\n            $('vc-numfeet').value = p.get('feet');\n            var show = p.get('feet') === '6';\n            $('vc-f5-field').style.display = show ? '' : 'none';\n            $('vc-f6-field').style.display = show ? '' : 'none';\n        }\n        for (var i = 1; i <= 6; i++) {\n            if (p.get('f' + i)) $('vc-f' + i).value = p.get('f' + i);\n        }\n    }\n\n    \/* \u2500\u2500 INIT \u2500\u2500 *\/\n    function init() {\n        loadParams();\n        calculate();\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', init);\n    } else {\n        init();\n    }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u09ae\u09c7\u09b6\u09bf\u09a8 \u09ab\u09cd\u09b0\u09c7\u09ae \u09ac\u09bf\u0995\u09c3\u09a4\u09bf \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09bf\u09a8\u09be\u09ae\u09c2\u09b2\u09cd\u09af\u09c7 \u0985\u09a8\u09b2\u09be\u0987\u09a8 \u09b8\u09ab\u099f \u09ab\u09c1\u099f \u0995\u09cd\u09af\u09be\u09b2\u0995\u09c1\u09b2\u09c7\u099f\u09b0\u0964 \u09b8\u09ac\u099a\u09c7\u09af\u09bc\u09c7 \u0996\u09be\u09b0\u09be\u09aa \u09b8\u09ab\u099f \u09ab\u09c1\u099f \u09b8\u09a8\u09be\u0995\u09cd\u09a4 \u0995\u09b0\u09a4\u09c7, \u09b6\u09bf\u09ae \u09b8\u0982\u09b6\u09cb\u09a7\u09a8 \u09a8\u09bf\u09b0\u09cd\u09a7\u09be\u09b0\u09a3 \u0995\u09b0\u09a4\u09c7 \u098f\u09ac\u0982 \u0997\u09cd\u09b0\u09b9\u09a3\u09af\u09cb\u0997\u09cd\u09af \u09b8\u09c0\u09ae\u09be \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09a4\u09c7 \u09aa\u09cd\u09b0\u09a4\u09bf\u099f\u09bf \u09ab\u09c1\u099f\u09c7 \u09a1\u09be\u09af\u09bc\u09be\u09b2 \u09b8\u09c2\u099a\u0995 \u09b0\u09bf\u09a1\u09bf\u0982 \u09aa\u09cd\u09b0\u09ac\u09c7\u09b6 \u0995\u09b0\u09c1\u09a8\u0964<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100230","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":2,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100230\/revisions"}],"predecessor-version":[{"id":100771,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100230\/revisions\/100771"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/media?parent=100230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/categories?post=100230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/tags?post=100230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}