{"id":17375,"date":"2026-09-20T07:01:59","date_gmt":"2026-09-20T07:01:59","guid":{"rendered":"https:\/\/www.dgcrane.com\/?p=17375"},"modified":"2026-09-20T07:02:02","modified_gmt":"2026-09-20T07:02:02","slug":"crane-travelling-static-resistance-calculator","status":"publish","type":"post","link":"https:\/\/www.dgcrane.com\/fa\/crane-travelling-static-resistance-calculator\/","title":{"rendered":"\u0645\u062d\u0627\u0633\u0628\u0647\u200c\u06af\u0631 \u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a"},"content":{"rendered":"<div id=\"calculator\">\n  <div class=\"calculator-shell\">\n    <form id=\"calculator-form\" novalidate action=\"\">\n      <span class=\"calculator-sr-only\">\u0645\u0628\u0646\u0627\u06cc \u0645\u062d\u0627\u0633\u0628\u0647: EN 13135:2026. \u0645\u062d\u062f\u0648\u062f\u0647: \u0686\u0631\u062e\u200c\u0647\u0627\u06cc \u0641\u0648\u0644\u0627\u062f\u06cc \u0628\u0627 \u06cc\u0627\u062a\u0627\u0642\u0627\u0646 \u063a\u0644\u062a\u06a9\u06cc \u0631\u0648\u06cc \u0631\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u0648\u0644\u0627\u062f\u06cc. \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f ISO 8686-1:2012 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. \u062a\u0627\u0631\u06cc\u062e \u062a\u0623\u06cc\u06cc\u062f: 2026-09-17.<\/span>\n\n      <section class=\"calculator-section\">\n        <div class=\"calculator-grid\">\n          <div class=\"calculator-field\">\n            <label for=\"calculator-loadMass\">\u0628\u0627\u0631 \u0646\u0627\u0645\u06cc\u060c G<sub>\u0646<\/sub> (\u06a9\u06cc\u0644\u0648\u06af\u0631\u0645)<\/label>\n            <input id=\"calculator-loadMass\" name=\"loadMass\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"1000000000\" step=\"any\" value=\"10000\" aria-describedby=\"calculator-loadMass-error\">\n            <span id=\"calculator-loadMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gravity\">\u06af\u0631\u0627\u0646\u0634\u060c \u06af\u0631\u0645 (\u0646\u06cc\u0648\u062a\u0646\/\u06a9\u06cc\u0644\u0648\u06af\u0631\u0645)<\/label>\n            <input id=\"calculator-gravity\" name=\"gravity\" type=\"number\" inputmode=\"decimal\" min=\"1\" max=\"20\" step=\"any\" value=\"10\" aria-describedby=\"calculator-gravity-error\">\n            <span id=\"calculator-gravity-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gradient\">\u0634\u06cc\u0628 \u0633\u0631\u0628\u0627\u0644\u0627\u06cc\u06cc\u060c i (\u2030)<\/label>\n            <input id=\"calculator-gradient\" name=\"gradient\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"100\" step=\"any\" value=\"1\" aria-describedby=\"calculator-gradient-error\">\n            <span id=\"calculator-gradient-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-wheelType\">\u0633\u0627\u062e\u062a \u0686\u0631\u062e<\/label>\n            <select id=\"calculator-wheelType\" name=\"wheelType\">\n              <option value=\"flanged\" selected>\u0686\u0631\u062e\u200c\u0647\u0627\u06cc \u0641\u0644\u0646\u062c\u200c\u062f\u0627\u0631<\/option>\n              <option value=\"flangeless\">\u0686\u0631\u062e\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u0641\u0644\u0646\u062c<\/option>\n            <\/select>\n            <span id=\"calculator-wheelType-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneMass\">\u062c\u0631\u0645 \u062e\u0648\u062f \u062c\u0631\u062b\u0642\u06cc\u0644\u060c G (\u06a9\u06cc\u0644\u0648\u06af\u0631\u0645)<\/label>\n            <input id=\"calculator-craneMass\" name=\"craneMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"20000\" aria-describedby=\"calculator-craneMass-error\">\n            <span id=\"calculator-craneMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyMass\">\u062c\u0631\u0645 \u062e\u0648\u062f \u0686\u0631\u062e \u062f\u0633\u062a\u06cc\u060c G<sub>1<\/sub> (\u06a9\u06cc\u0644\u0648\u06af\u0631\u0645)<\/label>\n            <input id=\"calculator-trolleyMass\" name=\"trolleyMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"2000\" aria-describedby=\"calculator-trolleyMass-error\">\n            <span id=\"calculator-trolleyMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneDiameter\">\u0686\u0631\u062e \u062c\u0631\u062b\u0642\u06cc\u0644 D<sub>\u062f\u0628\u0644\u06cc\u0648<\/sub> (\u0645\u06cc\u0644\u06cc \u0645\u062a\u0631)<\/label>\n            <select id=\"calculator-craneDiameter\" name=\"craneDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\">160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\" selected>400<\/option>\n              <option value=\"630\">\u06f6\u06f3\u06f0 \u0648 \u0628\u0632\u0631\u06af\u062a\u0631<\/option>\n            <\/select>\n            <span id=\"calculator-craneDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneFactor\">\u0636\u0631\u06cc\u0628 \u062c\u0631\u062b\u0642\u06cc\u0644\u060c F<sub>\u0631<\/sub><\/label>\n            <select id=\"calculator-craneFactor\" name=\"craneFactor\" aria-describedby=\"calculator-craneFactor-error\"><\/select>\n            <span id=\"calculator-craneFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyDiameter\">\u0686\u0631\u062e \u062f\u0633\u062a\u06cc D<sub>\u062f\u0628\u0644\u06cc\u0648<\/sub> (\u0645\u06cc\u0644\u06cc \u0645\u062a\u0631)<\/label>\n            <select id=\"calculator-trolleyDiameter\" name=\"trolleyDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\" selected>160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\">400<\/option>\n              <option value=\"630\">\u06f6\u06f3\u06f0 \u0648 \u0628\u0632\u0631\u06af\u062a\u0631<\/option>\n            <\/select>\n            <span id=\"calculator-trolleyDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyFactor\">\u0636\u0631\u06cc\u0628 \u0648\u0627\u06af\u0646 \u0628\u0631\u0642\u06cc\u060c F<sub>\u0631<\/sub><\/label>\n            <select id=\"calculator-trolleyFactor\" name=\"trolleyFactor\" aria-describedby=\"calculator-trolleyFactor-error\"><\/select>\n            <span id=\"calculator-trolleyFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <div id=\"calculator-error-summary\" class=\"calculator-error-summary\" role=\"alert\" tabindex=\"-1\"><\/div>\n\n      <div class=\"calculator-actions\">\n        <button type=\"submit\">\u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u062f<\/button>\n        <button type=\"reset\" class=\"calculator-reset\">\u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u062f\u062f<\/button>\n      <\/div>\n    <input type=\"hidden\" name=\"trp-form-language\" value=\"fa\"\/><\/form>\n\n    <section class=\"calculator-results\" aria-live=\"polite\" aria-atomic=\"true\">\n      <div class=\"calculator-result-card calculator-result-main\">\n        <span>\u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062d\u0631\u06a9\u062a \u062c\u0631\u062b\u0642\u06cc\u0644\u060c F<sub>\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u062d\u062f\u0627\u06a9\u062b\u0631<\/sub><\/span>\n        <strong id=\"calculator-craneTotal\">-<\/strong>\n      <\/div>\n\n      <div class=\"calculator-result-card\">\n        <span>\u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062d\u0631\u06a9\u062a \u0648\u0627\u06af\u0646 \u0628\u0631\u0642\u06cc\u060c F<sub>\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u062d\u062f\u0627\u06a9\u062b\u0631<\/sub><\/span>\n        <strong id=\"calculator-trolleyTotal\">-<\/strong>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <style>\n    #calculator {\n      --primary-color: #0a3487;\n      --primary-hover: #F58423;\n      --error-color: #e53935;\n      --bg-color: #EAEEF7;\n      --text-color: #4a4a4a;\n      --surface-color: #ffffff;\n      --border-color: #cccccc;\n      --soft-primary: #edf2ff;\n      --soft-error: #fff3f2;\n      --focus-shadow: rgba(10, 52, 135, 0.18);\n\n      max-width: 545px;\n      margin: 0 auto;\n      padding: 30px;\n      color: var(--text-color);\n      background: var(--bg-color);\n      font-family: Arial, Helvetica, sans-serif;\n      line-height: 1.5;\n      box-sizing: border-box;\n    }\n\n    #calculator *,\n    #calculator *::before,\n    #calculator *::after {\n      box-sizing: border-box;\n    }\n\n    #calculator .calculator-shell {\n      padding: 24px;\n      border-top: 5px solid var(--primary-color);\n      background: var(--surface-color);\n    }\n\n    #calculator .calculator-sr-only {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n\n    #calculator .calculator-section {\n      margin: 0 0 16px;\n      padding: 16px;\n      background: var(--bg-color);\n    }\n\n    #calculator .calculator-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 12px 14px;\n      align-items: start;\n    }\n\n    #calculator .calculator-field {\n      min-width: 0;\n    }\n\n    #calculator label,\n    #calculator button,\n    #calculator select {\n      font-size: 14px;\n    }\n\n    #calculator label {\n      display: flex;\n      min-height: 38px;\n      margin-bottom: 5px;\n      align-items: flex-end;\n      font-weight: 700;\n    }\n\n    #calculator input,\n    #calculator select,\n    #calculator button {\n      width: 100%;\n      border-radius: 0;\n      transition: 0.2s ease;\n    }\n\n    #calculator input,\n    #calculator select {\n      height: 36px;\n      padding: 5px 9px;\n      border: 1px solid var(--border-color);\n      color: var(--text-color);\n      background: var(--surface-color);\n      font-size: 16px;\n    }\n\n    #calculator input:focus,\n    #calculator select:focus {\n      border: 2px solid var(--primary-color);\n      outline: 0;\n      box-shadow: 0 0 0 3px var(--focus-shadow);\n    }\n\n    #calculator input.error,\n    #calculator select.error,\n    #calculator input.error:focus,\n    #calculator select.error:focus {\n      border: 2px solid var(--error-color);\n      box-shadow: none;\n    }\n\n    #calculator .error-msg {\n      display: none;\n      margin-top: 5px;\n      color: var(--error-color);\n      font-size: 12px;\n      font-weight: 700;\n    }\n\n    #calculator .error-msg.visible {\n      display: block;\n    }\n\n    #calculator .calculator-error-summary {\n      display: none;\n      margin-bottom: 14px;\n      padding: 10px;\n      border-left: 4px solid var(--error-color);\n      color: var(--error-color);\n      background: var(--soft-error);\n      font-weight: 700;\n    }\n\n    #calculator .calculator-error-summary.visible {\n      display: block;\n    }\n\n    #calculator .calculator-actions {\n      display: flex;\n      gap: 12px;\n      margin-top: 4px;\n    }\n\n    #calculator button {\n      height: 34px;\n      padding: 0 16px;\n      border: 0;\n      color: var(--surface-color);\n      background: var(--primary-color);\n      font-weight: 700;\n      line-height: 34px;\n      cursor: pointer;\n    }\n\n    #calculator button:hover,\n    #calculator button:focus-visible {\n      background: var(--primary-hover);\n      outline: 2px solid var(--primary-color);\n      outline-offset: 2px;\n    }\n\n    #calculator button.calculator-reset {\n      color: var(--primary-color);\n      background: var(--surface-color);\n      border: 1px solid var(--primary-color);\n    }\n\n    #calculator button.calculator-reset:hover,\n    #calculator button.calculator-reset:focus-visible {\n      color: var(--surface-color);\n      background: var(--primary-hover);\n    }\n\n    #calculator .calculator-results {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n      margin-top: 18px;\n    }\n\n    #calculator .calculator-result-card {\n      margin: 0;\n      padding: 14px;\n      border-left: 4px solid var(--primary-color);\n      background: var(--soft-primary);\n    }\n\n    #calculator .calculator-result-card > span {\n      display: block;\n      font-size: 13px;\n      font-weight: 700;\n    }\n\n    #calculator .calculator-result-card strong {\n      display: block;\n      margin: 4px 0 10px;\n      color: var(--primary-color);\n      font-size: 32px;\n      line-height: 1.15;\n      overflow-wrap: anywhere;\n    }\n\n    @media (max-width: 768px) {\n      #calculator {\n        padding: 0.3rem;\n      }\n\n      #calculator .calculator-shell {\n        padding: 0.3rem;\n      }\n\n      #calculator label,\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        font-size: 0.28rem;\n      }\n\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        min-height: 0.7rem;\n        height: 0.7rem;\n      }\n\n      #calculator button {\n        line-height: 0.7rem;\n      }\n\n      #calculator .calculator-actions {\n        flex-direction: column;\n      }\n\n      #calculator .calculator-actions button {\n        width: 100%;\n      }\n\n      #calculator .calculator-grid {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 0.24rem;\n      }\n\n      #calculator label {\n        min-height: 0.7rem;\n      }\n\n      #calculator .calculator-results {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      #calculator *,\n      #calculator *::before,\n      #calculator *::after {\n        transition: none;\n      }\n    }\n  <\/style>\n\n  <script>\n    (() => {\n      \"use strict\";\n\n      const root = document.getElementById(\"calculator\");\n      if (!root) return;\n\n      const form = root.querySelector(\"#calculator-form\");\n      const summary = root.querySelector(\"#calculator-error-summary\");\n\n      const diameterPoints = [\n        50, 80, 100, 125, 160, 250, 320, 400, 630\n      ];\n\n      const factorSets = {\n        flanged: [\n          0.013, 0.011, 0.010, 0.009, 0.008,\n          0.0065, 0.006, 0.0055, 0.005\n        ],\n        flangeless: [\n          0.011, 0.0095, 0.0085, 0.0075, 0.007,\n          0.0055, 0.0052, 0.005, 0.0045\n        ]\n      };\n\n      const fields = {\n        loadMass: root.querySelector(\"#calculator-loadMass\"),\n        gravity: root.querySelector(\"#calculator-gravity\"),\n        gradient: root.querySelector(\"#calculator-gradient\"),\n        wheelType: root.querySelector(\"#calculator-wheelType\"),\n        craneMass: root.querySelector(\"#calculator-craneMass\"),\n        craneDiameter: root.querySelector(\"#calculator-craneDiameter\"),\n        craneFactor: root.querySelector(\"#calculator-craneFactor\"),\n        trolleyMass: root.querySelector(\"#calculator-trolleyMass\"),\n        trolleyDiameter: root.querySelector(\"#calculator-trolleyDiameter\"),\n        trolleyFactor: root.querySelector(\"#calculator-trolleyFactor\")\n      };\n\n      const outputs = {\n        craneTotal: root.querySelector(\"#calculator-craneTotal\"),\n        trolleyTotal: root.querySelector(\"#calculator-trolleyTotal\")\n      };\n\n      function setError(fieldName, message) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.add(\"error\");\n        input.setAttribute(\"aria-invalid\", \"true\");\n\n        if (error) {\n          error.textContent = message;\n          error.classList.add(\"visible\");\n        }\n      }\n\n      function clearError(fieldName) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.remove(\"error\");\n        input.removeAttribute(\"aria-invalid\");\n\n        if (error) {\n          error.textContent = \"\";\n          error.classList.remove(\"visible\");\n        }\n      }\n\n      function validateInput(\n        fieldName,\n        label,\n        minimum,\n        maximum,\n        allowZero\n      ) {\n        const input = fields[fieldName];\n        const value = Number.parseFloat(input.value);\n\n        clearError(fieldName);\n\n        if (\n          input.value.trim() === \"\" ||\n          !Number.isFinite(value)\n        ) {\n          setError(\n            fieldName,\n            `${label} is required and must be a finite number.`\n          );\n          return null;\n        }\n\n        if (\n          (!allowZero && value <= minimum) ||\n          (allowZero &#038;&#038; value < minimum) ||\n          value > maximum\n        ) {\n          const relation = allowZero\n            ? `from ${minimum}`\n            : `greater than ${minimum}`;\n\n          setError(\n            fieldName,\n            `${label} must be ${relation} and no more than ${maximum}.`\n          );\n          return null;\n        }\n\n        return value;\n      }\n\n      function rollingFactor(wheelType, diameter) {\n        const factors = factorSets[wheelType];\n\n        if (!factors) {\n          throw new Error(\"Unsupported wheel construction.\");\n        }\n\n        const index = diameterPoints.indexOf(Number(diameter));\n\n        if (index === -1) {\n          throw new Error(\n            \"Unsupported wheel diameter selection.\"\n          );\n        }\n\n        return factors[index];\n      }\n\n      function calculateTravelResistance(\n        loadMass,\n        selfMass,\n        gravity,\n        gradientPerMille,\n        factor\n      ) {\n        const normalForce =\n          (loadMass + selfMass) * gravity;\n\n        const rolling =\n          normalForce * factor;\n\n        const grade =\n          normalForce * gradientPerMille \/ 1000;\n\n        return {\n          total: rolling + grade\n        };\n      }\n\n      function clearResults() {\n        outputs.craneTotal.textContent = \"\u2014\";\n        outputs.trolleyTotal.textContent = \"\u2014\";\n      }\n\n      function formatForce(value) {\n        return `${value.toLocaleString(\"en-US\", {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        })} N`;\n      }\n\n      function formatFactor(value) {\n        return value\n          .toFixed(6)\n          .replace(\/0+$\/, \"\")\n          .replace(\/\\.$\/, \"\");\n      }\n\n      function populateFactorOptions(prefix) {\n        const wheelType = fields.wheelType.value;\n        const diameter =\n          Number(fields[`${prefix}Diameter`].value);\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        const factors = factorSets[wheelType];\n\n        const options = factors.map((factor) => {\n          const option =\n            document.createElement(\"option\");\n\n          option.value = String(factor);\n          option.textContent =\n            formatFactor(factor);\n\n          return option;\n        });\n\n        factorSelect.replaceChildren(...options);\n\n        factorSelect.value = String(\n          rollingFactor(wheelType, diameter)\n        );\n      }\n\n      function syncWheelSelectors(\n        prefix,\n        changedField\n      ) {\n        const wheelType =\n          fields.wheelType.value;\n\n        const diameterSelect =\n          fields[`${prefix}Diameter`];\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        if (changedField === \"type\") {\n          populateFactorOptions(prefix);\n          return;\n        }\n\n        if (changedField === \"factor\") {\n          const factor =\n            Number(factorSelect.value);\n\n          const index =\n            factorSets[wheelType].findIndex(\n              (candidate) => candidate === factor\n            );\n\n          if (index !== -1) {\n            diameterSelect.value =\n              String(diameterPoints[index]);\n          }\n\n          return;\n        }\n\n        factorSelect.value = String(\n          rollingFactor(\n            wheelType,\n            Number(diameterSelect.value)\n          )\n        );\n      }\n\n      function readAndValidate() {\n        const values = {\n          loadMass: validateInput(\n            \"loadMass\",\n            \"Rated load\",\n            0,\n            1000000000,\n            true\n          ),\n\n          gravity: validateInput(\n            \"gravity\",\n            \"Gravity\",\n            1,\n            20,\n            false\n          ),\n\n          gradient: validateInput(\n            \"gradient\",\n            \"Uphill gradient\",\n            0,\n            100,\n            true\n          ),\n\n          craneMass: validateInput(\n            \"craneMass\",\n            \"Crane self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          craneDiameter:\n            Number(fields.craneDiameter.value),\n\n          craneFactor:\n            Number(fields.craneFactor.value),\n\n          trolleyMass: validateInput(\n            \"trolleyMass\",\n            \"Trolley self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          trolleyDiameter:\n            Number(fields.trolleyDiameter.value),\n\n          trolleyFactor:\n            Number(fields.trolleyFactor.value),\n\n          wheelType:\n            fields.wheelType.value\n        };\n\n        const linkedSelectionsValid =\n          values.craneFactor === rollingFactor(\n            values.wheelType,\n            values.craneDiameter\n          ) &&\n          values.trolleyFactor === rollingFactor(\n            values.wheelType,\n            values.trolleyDiameter\n          );\n\n        const invalid =\n          Object.entries(values).filter(\n            ([name, value]) =>\n              name !== \"wheelType\" &&\n              (\n                value === null ||\n                !Number.isFinite(value)\n              )\n          );\n\n        if (!linkedSelectionsValid) {\n          setError(\n            \"craneFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          setError(\n            \"trolleyFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          return null;\n        }\n\n        return invalid.length ? null : values;\n      }\n\n      function showResults(crane, trolley) {\n        outputs.craneTotal.textContent =\n          formatForce(crane.total);\n\n        outputs.trolleyTotal.textContent =\n          formatForce(trolley.total);\n      }\n\n      populateFactorOptions(\"crane\");\n      populateFactorOptions(\"trolley\");\n\n      fields.wheelType.addEventListener(\n        \"change\",\n        () => {\n          syncWheelSelectors(\"crane\", \"type\");\n          syncWheelSelectors(\"trolley\", \"type\");\n        }\n      );\n\n      fields.craneDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"diameter\"\n        )\n      );\n\n      fields.craneFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"factor\"\n        )\n      );\n\n      fields.trolleyDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"diameter\"\n        )\n      );\n\n      fields.trolleyFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"factor\"\n        )\n      );\n\n      Object.keys(fields).forEach(\n        (fieldName) => {\n          fields[fieldName].addEventListener(\n            \"input\",\n            () => clearError(fieldName)\n          );\n\n          fields[fieldName].addEventListener(\n            \"change\",\n            () => clearError(fieldName)\n          );\n        }\n      );\n\n      form.addEventListener(\n        \"submit\",\n        (event) => {\n          event.preventDefault();\n\n          summary.textContent = \"\";\n          summary.classList.remove(\"visible\");\n\n          const values = readAndValidate();\n\n          if (!values) {\n            clearResults();\n\n            summary.textContent =\n              \"Please correct the highlighted fields.\";\n\n            summary.classList.add(\"visible\");\n            summary.focus();\n            return;\n          }\n\n          const crane =\n            calculateTravelResistance(\n              values.loadMass,\n              values.craneMass,\n              values.gravity,\n              values.gradient,\n              values.craneFactor\n            );\n\n          const trolley =\n            calculateTravelResistance(\n              values.loadMass,\n              values.trolleyMass,\n              values.gravity,\n              values.gradient,\n              values.trolleyFactor\n            );\n\n          showResults(crane, trolley);\n        }\n      );\n\n      form.addEventListener(\n        \"reset\",\n        () => {\n          window.setTimeout(() => {\n            Object.keys(fields).forEach(\n              clearError\n            );\n\n            summary.textContent = \"\";\n            summary.classList.remove(\"visible\");\n\n            populateFactorOptions(\"crane\");\n            populateFactorOptions(\"trolley\");\n            clearResults();\n          }, 0);\n        }\n      );\n    })();\n  <\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u0641\u0631\u0645\u0648\u0644 \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a<\/h2>\n\n\n\n<div id=\"travel-resistance-formulas\">\n  <div class=\"formula\">\n    \u0627\u0641<sub>\u0641<\/sub>\n    = (\u06af\u0631\u0645<sub>\u0646<\/sub> + \u06af) \u00d7 \u06af \u00d7 \u0641<sub>\u0631<\/sub>\n  <\/div>\n\n  <div class=\"formula\">\n    \u0627\u0641<sub>\u0633<\/sub>\n    = (\u06af\u0631\u0645<sub>\u0646<\/sub> + \u06af) \u00d7 \u06af \u00d7 \u06cc\n    <span class=\"formula-condition\">\n    <\/span>\n  <\/div>\n\n  <div class=\"formula formula-total\">\n    \u0627\u0641<sub>\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u062d\u062f\u0627\u06a9\u062b\u0631<\/sub>\n    = \u0627\u0641<sub>\u0641<\/sub>\n    + \u0641<sub>\u0633<\/sub>\n  <\/div>\n\n  <style>\n    #travel-resistance-formulas {\n      --text-color: #4a4a4a;\n\n      width: 100%;\n      margin: 0;\n      padding: 0;\n      color: var(--text-color);\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas *,\n    #travel-resistance-formulas *::before,\n    #travel-resistance-formulas *::after {\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas .formula {\n      padding: 7px 0;\n      color: var(--text-color);\n      font-family: \"Segoe UI\", Arial, Helvetica, sans-serif;\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 400;\n      line-height: 1.55;\n      text-align: left;\n      white-space: nowrap;\n    }\n\n    #travel-resistance-formulas .formula sub {\n      font-size: 65%;\n      font-style: normal;\n      vertical-align: -0.3em;\n    }\n\n    #travel-resistance-formulas .formula-condition {\n      margin-left: 8px;\n      font-size: 16px;\n      font-style: normal;\n      font-weight: 400;\n    }\n\n    #travel-resistance-formulas .formula-total {\n      color: var(--text-color);\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 600;\n    }\n\n    @media (max-width: 520px) {\n      #travel-resistance-formulas {\n        overflow-x: auto;\n      }\n\n      #travel-resistance-formulas .formula {\n        font-size: 18px;\n      }\n\n      #travel-resistance-formulas .formula-condition {\n        font-size: 14px;\n      }\n\n      #travel-resistance-formulas .formula-total {\n        font-size: 18px;\n      }\n    }\n  <\/style>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062c\u06cc<sub>\u0646<\/sub>\u0628\u0627\u0631 \u0645\u062c\u0627\u0632 \u062c\u0631\u062b\u0642\u06cc\u0644\u060c \u0648\u0627\u062d\u062f: \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645<\/li>\n\n\n\n<li>G: \u0648\u0632\u0646 \u062e\u0648\u062f \u062c\u0631\u062b\u0642\u06cc\u0644\u060c \u0648\u0627\u062d\u062f: \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645<\/li>\n\n\n\n<li>\u062c\u06cc<sub>1<\/sub>\u0648\u0632\u0646 \u0645\u062e\u0635\u0648\u0635 \u0686\u0631\u062e \u062f\u0633\u062a\u06cc\u060c \u0648\u0627\u062d\u062f: \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645<\/li>\n\n\n\n<li>g: \u0646\u06cc\u0631\u0648\u06cc \u062c\u0627\u0630\u0628\u0647 (\u0645\u0642\u062f\u0627\u0631 10 \u0646\u06cc\u0648\u062a\u0646 \u0628\u0631 \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a)<\/li>\n\n\n\n<li>\u0641<sub>\u0631<\/sub>\u0636\u0631\u06cc\u0628 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u063a\u0644\u062a\u0634\u06cc<\/li>\n\n\n\n<li>i: \u0634\u06cc\u0628 \u0641\u0631\u0636\u06cc<\/li>\n\n\n\n<li>\u0627\u0641<sub>\u0641<\/sub>\u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0635\u0637\u06a9\u0627\u06a9\u06cc\u060c \u0648\u0627\u062d\u062f: N<\/li>\n\n\n\n<li>Fs: \u0645\u0642\u0627\u0648\u0645\u062a \u06af\u0631\u0627\u062f\u06cc\u0627\u0646\u060c \u0648\u0627\u062d\u062f: N<\/li>\n\n\n\n<li>\u0627\u0641<sub>\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u062d\u062f\u0627\u06a9\u062b\u0631<\/sub>\u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a\u060c \u0648\u0627\u062d\u062f: N<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06cc\u0646 \u0641<sub>\u0631<\/sub> \u0627\u06cc\u0646 \u0636\u0631\u06cc\u0628 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0645\u0642\u0627\u0648\u0645\u062a \u063a\u0644\u062a\u0634\u06cc \u0686\u0631\u062e \u0628\u0647 \u0639\u0644\u0627\u0648\u0647 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0628\u0644\u0628\u0631\u06cc\u0646\u06af \u0686\u0631\u062e\u060c \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0627\u062b\u0631\u0627\u062a \u0627\u0636\u0627\u0641\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0641\u0644\u0646\u062c \u0686\u0631\u062e \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0642\u0637\u0631 \u0686\u0631\u062e\u200c\u0647\u0627\u06cc \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u062d\u0631\u06a9\u062a \u062c\u0631\u062b\u0642\u06cc\u0644 \u0628\u0632\u0631\u06af\u062a\u0631 \u0627\u0632 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u062d\u0631\u06a9\u062a \u0686\u0631\u062e \u062f\u0633\u062a\u06cc \u0627\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0627\u06cc\u0646 \u0645\u062d\u0627\u0633\u0628\u0647\u200c\u06af\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u200c\u0647\u0627\u06cc \u062d\u0631\u06a9\u062a\u06cc \u0648 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u0627\u0644\u06a9\u062a\u0631\u06cc\u06a9\u06cc\u060c \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u062a\u0648\u0627\u0646 \u0646\u0633\u0628\u062a\u0627\u064b \u062d\u0633\u0627\u0633 \u0647\u0633\u062a\u0646\u062f. \u062d\u062a\u06cc \u06af\u0631\u0627\u062f\u06cc\u0627\u0646 \u0641\u0642\u0637 \u06f1\u2030 \u0645\u0642\u0627\u0648\u0645\u062a \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u062d\u0627\u0644 \u06a9\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u062f\u0631 \u063a\u06cc\u0627\u0628 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u062f\u0627\u0632\u0647\u200c\u06af\u06cc\u0631\u06cc \u0634\u062f\u0647 \u0627\u0632 \u062a\u0623\u0633\u06cc\u0633\u0627\u062a\u060c \u06cc\u06a9 \u06af\u0631\u0627\u062f\u06cc\u0627\u0646 \u0641\u0631\u0636\u06cc \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0648\u062a\u0648\u0631 \u0628\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0648\u0686\u06a9 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u062c\u0631\u062b\u0642\u06cc\u0644\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627<\/h2>\n\n\n\n<p>\u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0639\u0645\u062f\u062a\u0627\u064b \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0628\u0633\u062a\u0647 \u0648 \u0633\u0631\u067e\u0648\u0634\u06cc\u062f\u0647 \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u0645\u0646\u0627\u0633\u0628 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062c\u0631\u062b\u0642\u06cc\u0644 \u0633\u0642\u0641\u06cc \u062a\u06a9 \u067e\u0644<\/li>\n\n\n\n<li>\u062c\u0631\u062b\u0642\u06cc\u0644 \u0633\u0642\u0641\u06cc \u062f\u0648 \u067e\u0644<\/li>\n\n\n\n<li>\u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631\u0648\u0627\u0632\u0647\u200c\u0627\u06cc \u062a\u06a9 \u067e\u0644 (\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0641\u0636\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc)<\/li>\n\n\n\n<li>\u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631\u0648\u0627\u0632\u0647\u200c\u0627\u06cc \u062f\u0648 \u067e\u0644 (\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0641\u0636\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc)<\/li>\n\n\n\n<li>\u0686\u0631\u062e \u062f\u0633\u062a\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u0633\u0642\u0641\u06cc<\/li>\n\n\n\n<li>\u0686\u0631\u062e \u062f\u0633\u062a\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u062f\u0631\u0648\u0627\u0632\u0647 \u0627\u06cc<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"\u0645\u062d\u0627\u0633\u0628\u0647\u200c\u06af\u0631 \u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062d\u0631\u06a9\u062a \u062c\u0631\u062b\u0642\u06cc\u0644\u060c \u0646\u06cc\u0631\u0648\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u063a\u0644\u0628\u0647 \u0628\u0631 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0648 \u0634\u06cc\u0628 \u0645\u0633\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062d\u0631\u06a9\u062a \u0639\u0627\u062f\u06cc \u0631\u0627 \u062a\u062e\u0645\u06cc\u0646 \u0645\u06cc\u200c\u0632\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0627\u0631 \u0646\u0627\u0645\u06cc \u0648 \u0648\u0632\u0646 \u0645\u0631\u062f\u0647 \u062c\u0631\u062b\u0642\u06cc\u0644\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0648\u062a\u0648\u0631\u0647\u0627 \u0648 \u062f\u0631\u0627\u06cc\u0648\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062c\u0631\u062b\u0642\u06cc\u0644 \u0631\u0627 \u062d\u0631\u06a9\u062a \u062f\u0647\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0646\u062a\u0627\u06cc\u062c \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u060c \u06af\u06cc\u0631\u0628\u06a9\u0633\u200c\u0647\u0627 \u0648 \u0686\u0631\u062e\u200c\u0647\u0627\u06cc \u0645\u0646\u0637\u0628\u0642 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062d\u0627\u0633\u0628\u0647\u200c\u06af\u0631 \u0645\u0642\u0627\u0648\u0645\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u06cc \u062d\u0631\u06a9\u062a \u062c\u0631\u062b\u0642\u06cc\u0644 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u062e\u0637\u0631 \u0644\u063a\u0632\u0634 \u0686\u0631\u062e \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0634\u06cc\u0628\u200c\u062f\u0627\u0631\u060c \u0645\u062d\u0627\u0633\u0628\u0647\u060c \u0644\u063a\u0632\u0634 \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062c\u0631\u062b\u0642\u06cc\u0644 \u067e\u0633 \u0627\u0632 \u062a\u0648\u0642\u0641 \u0631\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0632 \u0622\u0633\u06cc\u0628 \u0628\u0647 \u06cc\u0627\u062a\u0627\u0642\u0627\u0646\u200c\u0647\u0627\u060c \u06af\u0627\u0632 \u06af\u0631\u0641\u062a\u0646 \u0631\u06cc\u0644 \u0648 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u0635\u0628 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.","protected":false},"author":8,"featured_media":17373,"parent":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"single-onlinetools.php","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[1059],"tags":[],"class_list":["post-17375","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-online-tools"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/posts\/17375"}],"collection":[{"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/comments?post=17375"}],"version-history":[{"count":5,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/posts\/17375\/revisions"}],"predecessor-version":[{"id":17380,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/posts\/17375\/revisions\/17380"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/media\/17373"}],"wp:attachment":[{"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/media?parent=17375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/categories?post=17375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dgcrane.com\/fa\/wp-json\/wp\/v2\/tags?post=17375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}