@jjlmoya/utils-diy 1.28.0 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/category/i18n/de.ts +12 -12
- package/src/category/i18n/en.ts +110 -110
- package/src/category/i18n/es.ts +110 -110
- package/src/category/i18n/fr.ts +101 -101
- package/src/category/i18n/id.ts +12 -12
- package/src/category/i18n/it.ts +12 -12
- package/src/category/i18n/ja.ts +12 -12
- package/src/category/i18n/ko.ts +12 -12
- package/src/category/i18n/nl.ts +12 -12
- package/src/category/i18n/pl.ts +12 -12
- package/src/category/i18n/pt.ts +12 -12
- package/src/category/i18n/ru.ts +12 -12
- package/src/category/i18n/sv.ts +12 -12
- package/src/category/i18n/tr.ts +12 -12
- package/src/category/i18n/zh.ts +12 -12
- package/src/category/index.ts +36 -36
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/entries.ts +37 -37
- package/src/env.d.ts +1 -1
- package/src/index.ts +50 -50
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_length.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +15 -15
- package/src/tool/balusterCalculator/bibliography.ts +16 -16
- package/src/tool/balusterCalculator/i18n/de.ts +251 -251
- package/src/tool/balusterCalculator/i18n/en.ts +251 -251
- package/src/tool/balusterCalculator/i18n/es.ts +251 -251
- package/src/tool/balusterCalculator/i18n/fr.ts +251 -251
- package/src/tool/balusterCalculator/i18n/id.ts +251 -251
- package/src/tool/balusterCalculator/i18n/it.ts +251 -251
- package/src/tool/balusterCalculator/i18n/ja.ts +251 -251
- package/src/tool/balusterCalculator/i18n/ko.ts +251 -251
- package/src/tool/balusterCalculator/i18n/nl.ts +251 -251
- package/src/tool/balusterCalculator/i18n/pl.ts +251 -251
- package/src/tool/balusterCalculator/i18n/pt.ts +251 -251
- package/src/tool/balusterCalculator/i18n/ru.ts +251 -251
- package/src/tool/balusterCalculator/i18n/sv.ts +251 -251
- package/src/tool/balusterCalculator/i18n/tr.ts +251 -251
- package/src/tool/balusterCalculator/i18n/zh.ts +251 -251
- package/src/tool/balusterCalculator/seo.astro +15 -15
- package/src/tool/clayCalculator/bibliography.ts +12 -12
- package/src/tool/clayCalculator/i18n/de.ts +174 -174
- package/src/tool/clayCalculator/i18n/en.ts +174 -174
- package/src/tool/clayCalculator/i18n/es.ts +174 -174
- package/src/tool/clayCalculator/i18n/fr.ts +174 -174
- package/src/tool/clayCalculator/i18n/id.ts +174 -174
- package/src/tool/clayCalculator/i18n/it.ts +174 -174
- package/src/tool/clayCalculator/i18n/ja.ts +173 -173
- package/src/tool/clayCalculator/i18n/ko.ts +174 -174
- package/src/tool/clayCalculator/i18n/nl.ts +174 -174
- package/src/tool/clayCalculator/i18n/pl.ts +174 -174
- package/src/tool/clayCalculator/i18n/pt.ts +174 -174
- package/src/tool/clayCalculator/i18n/ru.ts +174 -174
- package/src/tool/clayCalculator/i18n/sv.ts +174 -174
- package/src/tool/clayCalculator/i18n/tr.ts +174 -174
- package/src/tool/clayCalculator/i18n/zh.ts +174 -174
- package/src/tool/clayCalculator/seo.astro +15 -15
- package/src/tool/concreteCalculator/bibliography.ts +7 -7
- package/src/tool/concreteCalculator/i18n/de.ts +188 -188
- package/src/tool/concreteCalculator/i18n/en.ts +188 -188
- package/src/tool/concreteCalculator/i18n/es.ts +188 -188
- package/src/tool/concreteCalculator/i18n/fr.ts +188 -188
- package/src/tool/concreteCalculator/i18n/id.ts +188 -188
- package/src/tool/concreteCalculator/i18n/it.ts +188 -188
- package/src/tool/concreteCalculator/i18n/ja.ts +188 -188
- package/src/tool/concreteCalculator/i18n/ko.ts +188 -188
- package/src/tool/concreteCalculator/i18n/nl.ts +188 -188
- package/src/tool/concreteCalculator/i18n/pl.ts +188 -188
- package/src/tool/concreteCalculator/i18n/pt.ts +188 -188
- package/src/tool/concreteCalculator/i18n/ru.ts +188 -188
- package/src/tool/concreteCalculator/i18n/sv.ts +188 -188
- package/src/tool/concreteCalculator/i18n/tr.ts +188 -188
- package/src/tool/concreteCalculator/i18n/zh.ts +188 -188
- package/src/tool/concreteCalculator/seo.astro +15 -15
- package/src/tool/cutOptimizer/bibliography.ts +12 -12
- package/src/tool/cutOptimizer/i18n/de.ts +169 -169
- package/src/tool/cutOptimizer/i18n/en.ts +169 -169
- package/src/tool/cutOptimizer/i18n/es.ts +169 -169
- package/src/tool/cutOptimizer/i18n/fr.ts +169 -169
- package/src/tool/cutOptimizer/i18n/id.ts +169 -169
- package/src/tool/cutOptimizer/i18n/it.ts +169 -169
- package/src/tool/cutOptimizer/i18n/ja.ts +169 -169
- package/src/tool/cutOptimizer/i18n/ko.ts +169 -169
- package/src/tool/cutOptimizer/i18n/nl.ts +169 -169
- package/src/tool/cutOptimizer/i18n/pl.ts +169 -169
- package/src/tool/cutOptimizer/i18n/pt.ts +169 -169
- package/src/tool/cutOptimizer/i18n/ru.ts +169 -169
- package/src/tool/cutOptimizer/i18n/sv.ts +169 -169
- package/src/tool/cutOptimizer/i18n/tr.ts +169 -169
- package/src/tool/cutOptimizer/i18n/zh.ts +169 -169
- package/src/tool/cutOptimizer/seo.astro +15 -15
- package/src/tool/drillCalculator/bibliography.ts +12 -12
- package/src/tool/drillCalculator/i18n/de.ts +134 -134
- package/src/tool/drillCalculator/i18n/en.ts +134 -134
- package/src/tool/drillCalculator/i18n/es.ts +134 -134
- package/src/tool/drillCalculator/i18n/fr.ts +134 -134
- package/src/tool/drillCalculator/i18n/id.ts +134 -134
- package/src/tool/drillCalculator/i18n/it.ts +134 -134
- package/src/tool/drillCalculator/i18n/ja.ts +134 -134
- package/src/tool/drillCalculator/i18n/ko.ts +134 -134
- package/src/tool/drillCalculator/i18n/nl.ts +134 -134
- package/src/tool/drillCalculator/i18n/pl.ts +134 -134
- package/src/tool/drillCalculator/i18n/pt.ts +134 -134
- package/src/tool/drillCalculator/i18n/ru.ts +134 -134
- package/src/tool/drillCalculator/i18n/sv.ts +134 -134
- package/src/tool/drillCalculator/i18n/tr.ts +134 -134
- package/src/tool/drillCalculator/i18n/zh.ts +134 -134
- package/src/tool/drillCalculator/seo.astro +15 -15
- package/src/tool/drillSharpener/bibliography.ts +16 -16
- package/src/tool/drillSharpener/i18n/de.ts +117 -117
- package/src/tool/drillSharpener/i18n/en.ts +117 -117
- package/src/tool/drillSharpener/i18n/es.ts +117 -117
- package/src/tool/drillSharpener/i18n/fr.ts +117 -117
- package/src/tool/drillSharpener/i18n/id.ts +117 -117
- package/src/tool/drillSharpener/i18n/it.ts +117 -117
- package/src/tool/drillSharpener/i18n/ja.ts +117 -117
- package/src/tool/drillSharpener/i18n/ko.ts +117 -117
- package/src/tool/drillSharpener/i18n/nl.ts +117 -117
- package/src/tool/drillSharpener/i18n/pl.ts +117 -117
- package/src/tool/drillSharpener/i18n/pt.ts +117 -117
- package/src/tool/drillSharpener/i18n/ru.ts +117 -117
- package/src/tool/drillSharpener/i18n/sv.ts +117 -117
- package/src/tool/drillSharpener/i18n/tr.ts +117 -117
- package/src/tool/drillSharpener/i18n/zh.ts +117 -117
- package/src/tool/drillSharpener/seo.astro +15 -15
- package/src/tool/epoxyCalculator/bibliography.ts +20 -20
- package/src/tool/epoxyCalculator/i18n/de.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/en.ts +178 -178
- package/src/tool/epoxyCalculator/i18n/es.ts +178 -178
- package/src/tool/epoxyCalculator/i18n/fr.ts +178 -178
- package/src/tool/epoxyCalculator/i18n/id.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/it.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/ja.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/ko.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/nl.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/pl.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/pt.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/ru.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/sv.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/tr.ts +116 -116
- package/src/tool/epoxyCalculator/i18n/zh.ts +116 -116
- package/src/tool/epoxyCalculator/seo.astro +15 -15
- package/src/tool/furnitureFit/bibliography.ts +12 -12
- package/src/tool/furnitureFit/i18n/de.ts +111 -111
- package/src/tool/furnitureFit/i18n/en.ts +149 -149
- package/src/tool/furnitureFit/i18n/es.ts +149 -149
- package/src/tool/furnitureFit/i18n/fr.ts +149 -149
- package/src/tool/furnitureFit/i18n/id.ts +111 -111
- package/src/tool/furnitureFit/i18n/it.ts +111 -111
- package/src/tool/furnitureFit/i18n/ja.ts +111 -111
- package/src/tool/furnitureFit/i18n/ko.ts +111 -111
- package/src/tool/furnitureFit/i18n/nl.ts +111 -111
- package/src/tool/furnitureFit/i18n/pl.ts +111 -111
- package/src/tool/furnitureFit/i18n/pt.ts +111 -111
- package/src/tool/furnitureFit/i18n/ru.ts +111 -111
- package/src/tool/furnitureFit/i18n/sv.ts +111 -111
- package/src/tool/furnitureFit/i18n/tr.ts +111 -111
- package/src/tool/furnitureFit/i18n/zh.ts +111 -111
- package/src/tool/furnitureFit/seo.astro +15 -15
- package/src/tool/mortarCalculator/bibliography.ts +20 -20
- package/src/tool/mortarCalculator/i18n/de.ts +130 -130
- package/src/tool/mortarCalculator/i18n/en.ts +202 -202
- package/src/tool/mortarCalculator/i18n/es.ts +179 -179
- package/src/tool/mortarCalculator/i18n/fr.ts +203 -203
- package/src/tool/mortarCalculator/i18n/id.ts +130 -130
- package/src/tool/mortarCalculator/i18n/it.ts +130 -130
- package/src/tool/mortarCalculator/i18n/ja.ts +130 -130
- package/src/tool/mortarCalculator/i18n/ko.ts +130 -130
- package/src/tool/mortarCalculator/i18n/nl.ts +130 -130
- package/src/tool/mortarCalculator/i18n/pl.ts +130 -130
- package/src/tool/mortarCalculator/i18n/pt.ts +130 -130
- package/src/tool/mortarCalculator/i18n/ru.ts +130 -130
- package/src/tool/mortarCalculator/i18n/sv.ts +130 -130
- package/src/tool/mortarCalculator/i18n/tr.ts +130 -130
- package/src/tool/mortarCalculator/i18n/zh.ts +130 -130
- package/src/tool/mortarCalculator/seo.astro +15 -15
- package/src/tool/passepartoutCalculator/bibliography.ts +16 -16
- package/src/tool/passepartoutCalculator/i18n/de.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/en.ts +165 -165
- package/src/tool/passepartoutCalculator/i18n/es.ts +165 -165
- package/src/tool/passepartoutCalculator/i18n/fr.ts +165 -165
- package/src/tool/passepartoutCalculator/i18n/id.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/it.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/ja.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/ko.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/nl.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/pl.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/pt.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/ru.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/sv.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/tr.ts +108 -108
- package/src/tool/passepartoutCalculator/i18n/zh.ts +108 -108
- package/src/tool/passepartoutCalculator/seo.astro +15 -15
- package/src/tool/pythagoreanRightAngleCalculator/bibliography.ts +12 -12
- package/src/tool/pythagoreanRightAngleCalculator/i18n/de.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/en.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/es.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/fr.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/id.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/it.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/ja.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/ko.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/nl.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/pl.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/pt.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/ru.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/sv.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/tr.ts +129 -129
- package/src/tool/pythagoreanRightAngleCalculator/i18n/zh.ts +129 -129
- package/src/tool/stairCalculator/bibliography.ts +16 -16
- package/src/tool/stairCalculator/i18n/de.ts +143 -143
- package/src/tool/stairCalculator/i18n/en.ts +145 -145
- package/src/tool/stairCalculator/i18n/es.ts +145 -145
- package/src/tool/stairCalculator/i18n/fr.ts +145 -145
- package/src/tool/stairCalculator/i18n/id.ts +143 -143
- package/src/tool/stairCalculator/i18n/it.ts +143 -143
- package/src/tool/stairCalculator/i18n/ja.ts +143 -143
- package/src/tool/stairCalculator/i18n/ko.ts +143 -143
- package/src/tool/stairCalculator/i18n/nl.ts +143 -143
- package/src/tool/stairCalculator/i18n/pl.ts +143 -143
- package/src/tool/stairCalculator/i18n/pt.ts +143 -143
- package/src/tool/stairCalculator/i18n/ru.ts +143 -143
- package/src/tool/stairCalculator/i18n/sv.ts +143 -143
- package/src/tool/stairCalculator/i18n/tr.ts +143 -143
- package/src/tool/stairCalculator/i18n/zh.ts +143 -143
- package/src/tool/stairCalculator/seo.astro +15 -15
- package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -16
- package/src/tool/thermalExpansionCalculator/i18n/de.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/en.ts +170 -170
- package/src/tool/thermalExpansionCalculator/i18n/es.ts +170 -170
- package/src/tool/thermalExpansionCalculator/i18n/fr.ts +170 -170
- package/src/tool/thermalExpansionCalculator/i18n/id.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/it.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/ja.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/ko.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/nl.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/pl.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/pt.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/ru.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/sv.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/tr.ts +132 -132
- package/src/tool/thermalExpansionCalculator/i18n/zh.ts +132 -132
- package/src/tool/thermalExpansionCalculator/seo.astro +15 -15
- package/src/tool/twoStrokeMixtureCalculator/bibliography.ts +12 -12
- package/src/tool/twoStrokeMixtureCalculator/i18n/de.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/en.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/es.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/fr.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/id.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/it.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/ja.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/ko.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/nl.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/pl.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/pt.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/ru.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/sv.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/tr.ts +194 -194
- package/src/tool/twoStrokeMixtureCalculator/i18n/zh.ts +194 -194
- package/src/tool/voltageDropCalculator/bibliography.ts +16 -16
- package/src/tool/voltageDropCalculator/i18n/de.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/en.ts +151 -151
- package/src/tool/voltageDropCalculator/i18n/es.ts +151 -151
- package/src/tool/voltageDropCalculator/i18n/fr.ts +145 -145
- package/src/tool/voltageDropCalculator/i18n/id.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/it.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/ja.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/ko.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/nl.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/pl.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/pt.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/ru.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/sv.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/tr.ts +113 -113
- package/src/tool/voltageDropCalculator/i18n/zh.ts +113 -113
- package/src/tool/voltageDropCalculator/seo.astro +15 -15
- package/src/tool/workshopFractionConverter/bibliography.ts +12 -12
- package/src/tool/workshopFractionConverter/i18n/de.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/en.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/es.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/fr.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/id.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/it.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/ja.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/ko.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/nl.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/pl.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/pt.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/ru.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/sv.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/tr.ts +147 -147
- package/src/tool/workshopFractionConverter/i18n/zh.ts +147 -147
- package/src/tools.ts +20 -20
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
import type { CutOptimizerUI } from '../ui';
|
|
4
|
-
import { bibliography } from '../bibliography';
|
|
5
|
-
|
|
6
|
-
const slug = 'optimizator-raskroya';
|
|
7
|
-
const title = 'Оптимизатор раскроя полотна и досок';
|
|
8
|
-
const description =
|
|
9
|
-
'Бесплатный калькулятор для оптимизации раскроя дерева, металла или труб. Минимизируйте отходы с помощью алгоритмов Bin Packing 1D и 2D. Идеально для столярных работ, металлообработки и ремонта.';
|
|
10
|
-
|
|
11
|
-
const faqData = [
|
|
12
|
-
{
|
|
13
|
-
question: 'Что такое 1D оптимизатор раскроя?',
|
|
14
|
-
answer:
|
|
15
|
-
'Это инструмент, использующий математические алгоритмы (такие как задача об упаковке в контейнеры - Bin Packing Problem), чтобы определить, как вырезать более мелкие детали из стандартной длинной заготовки (рейка, профиль, труба) с минимально возможными отходами.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
question: 'Почему нужно учитывать толщину реза (Kerf)?',
|
|
19
|
-
answer:
|
|
20
|
-
'Каждый раз, когда пила прорезает материал, расходуется несколько миллиметров (обычно от 2 до 4 мм в зависимости от диска). Если не учитывать это пространство, последние детали в вашем списке окажутся короче, чем планировалось.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Можно ли смешивать детали разной длины?',
|
|
24
|
-
answer:
|
|
25
|
-
'Да, наш калькулятор принимает любые комбинации длины и количества. Алгоритм оценит все возможные комбинации и отдаст приоритет максимальному использованию имеющегося материала.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
question: 'Как сохранить план раскроя?',
|
|
29
|
-
answer:
|
|
30
|
-
'После завершения оптимизации вы можете распечатать страницу или сделать снимок экрана визуальной схемы. Это послужит физическим руководством в мастерской, чтобы не перепутать порядок резов.',
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
const howToData = [
|
|
35
|
-
{
|
|
36
|
-
name: 'Определите исходный материал (Stock)',
|
|
37
|
-
text: 'Введите общую длину имеющейся рейки или профиля (например, 2400 мм или 6000 мм).',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Настройте толщину диска (Kerf)',
|
|
41
|
-
text: 'Установите количество миллиметров, которые пила удаляет при каждом проходе, чтобы расчет был точным до миллиметра.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'Составьте список деталей',
|
|
45
|
-
text: 'Введите длину и количество каждой детали, необходимой для вашего проекта.',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: 'Запустите оптимизацию',
|
|
49
|
-
text: 'Получите наиболее эффективную схему раскроя и точный процент образующихся отходов.',
|
|
50
|
-
},
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
-
'@context': 'https://schema.org',
|
|
55
|
-
'@type': 'FAQPage',
|
|
56
|
-
mainEntity: faqData.map((item) => ({
|
|
57
|
-
'@type': 'Question',
|
|
58
|
-
name: item.question,
|
|
59
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
-
})),
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const howToSchema: WithContext<HowToThing> = {
|
|
64
|
-
'@context': 'https://schema.org',
|
|
65
|
-
'@type': 'HowTo',
|
|
66
|
-
name: title,
|
|
67
|
-
description,
|
|
68
|
-
step: howToData.map((step, i) => ({
|
|
69
|
-
'@type': 'HowToStep',
|
|
70
|
-
position: i + 1,
|
|
71
|
-
name: step.name,
|
|
72
|
-
text: step.text,
|
|
73
|
-
})),
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
77
|
-
'@context': 'https://schema.org',
|
|
78
|
-
'@type': 'SoftwareApplication',
|
|
79
|
-
name: title,
|
|
80
|
-
description,
|
|
81
|
-
applicationCategory: 'UtilityApplication',
|
|
82
|
-
operatingSystem: 'All',
|
|
83
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
84
|
-
inLanguage: 'ru',
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
88
|
-
slug,
|
|
89
|
-
title,
|
|
90
|
-
description,
|
|
91
|
-
faqTitle: 'Часто задаваемые вопросы',
|
|
92
|
-
faq: faqData,
|
|
93
|
-
bibliography,
|
|
94
|
-
howTo: howToData,
|
|
95
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
-
seo: [
|
|
97
|
-
{
|
|
98
|
-
type: 'title',
|
|
99
|
-
text: 'Полное руководство по оптимизации раскроя',
|
|
100
|
-
level: 2,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
type: 'paragraph',
|
|
104
|
-
html: 'Оптимизация раскроя, технически известная как <strong>задача о раскрое материала (Cutting Stock Problem)</strong>, является одной из самых интересных логистических задач в промышленном проектировании. Для проекта из 20 деталей и 5 заготовок существуют миллионы возможных комбинаций. Компьютерный алгоритм может найти оптимальное решение за миллисекунды, сокращая обычные отходы с 15% до менее чем 5%.',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
type: 'title',
|
|
108
|
-
text: 'Линейный 1D раскрой и раскрой щитов 2D',
|
|
109
|
-
level: 3,
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
type: 'card',
|
|
113
|
-
icon: 'mdi:arrow-expand-horizontal',
|
|
114
|
-
title: 'Линейный раскрой для реек и профилей',
|
|
115
|
-
html: '<p>В <strong>линейном раскрое (1D)</strong> оптимизация происходит только в одном измерении: длине. Ширина материала считается постоянной. Идеально подходит для пиломатериалов (рейки, балки), металлических и алюминиевых профилей, труб ПВХ или медных труб, а также шпилек.</p>',
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'card',
|
|
119
|
-
icon: 'mdi:view-grid',
|
|
120
|
-
title: 'Раскрой щитов для досок и листов',
|
|
121
|
-
html: '<p>В <strong>раскрое щитов (2D)</strong> учитываются два измерения: ширина и длина. Инструмент использует алгоритмы гильотинного типа, где каждый рез идет от края до края. Идеально подходит для древесных плит (МДФ, ДСП), фанеры, стекла, оргстекла и металлических листов.</p>',
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
type: 'title',
|
|
125
|
-
text: 'Критический фактор: Толщина реза (Kerf)',
|
|
126
|
-
level: 3,
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
type: 'paragraph',
|
|
130
|
-
html: '<strong>Kerf</strong> - это материал, который удаляется при каждом резе. Стандартный диск настольной пилы расходует от 3,0 до 3,2 мм на один рез. Ручная циркулярная пила расходует 1,5-2,5 мм. Лазерная резка оргстекла - всего 0,1-0,3 мм. Игнорирование толщины реза в проекте с 10 резами на рейках длиной 2400 мм может привести к потере от 30 до 32 мм полезного материала.',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'title',
|
|
134
|
-
text: 'Алгоритм Best Fit Decreasing',
|
|
135
|
-
level: 3,
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
type: 'card',
|
|
139
|
-
icon: 'mdi:chip',
|
|
140
|
-
title: 'Как работает оптимизатор изнутри',
|
|
141
|
-
html: '<p>Ядро оптимизатора использует стратегию <strong>Best Fit Decreasing (BFD)</strong>: сначала сортируются все детали от самой длинной к самой короткой (большие детали сложнее разместить). Затем для каждой детали ищется существующий остаток, в который она помещается с минимальным лишним зазором. Только если деталь не помещается ни в один остаток, берется новая заготовка. Этот процесс сокращает отходы на порядки по сравнению со случайным выбором.</p>',
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
ui: {
|
|
145
|
-
modeLinearLabel: 'Линейный (Заготовки)',
|
|
146
|
-
modePanelLabel: 'Панельный (Щиты)',
|
|
147
|
-
configTitle: 'Настройка материала',
|
|
148
|
-
labelStockLength: 'Длина материала (мм)',
|
|
149
|
-
labelStockWidth: 'Ширина материала (мм)',
|
|
150
|
-
labelKerf: 'Толщина диска / Kerf (мм)',
|
|
151
|
-
cutsTitle: 'Список резов',
|
|
152
|
-
placeholderLength: 'Длина',
|
|
153
|
-
placeholderWidth: 'Ширина',
|
|
154
|
-
placeholderQty: 'Кол-во',
|
|
155
|
-
btnRemoveTitle: 'Удалить',
|
|
156
|
-
statStockUsed: 'Использовано материала',
|
|
157
|
-
statTotalCuts: 'Всего резов',
|
|
158
|
-
statWaste: 'Всего отходов',
|
|
159
|
-
statEfficiency: 'Эффективность',
|
|
160
|
-
vizTitle: 'Визуализация раскроя',
|
|
161
|
-
emptyState: 'Добавьте детали и нажмите расчет, чтобы увидеть план раскроя.',
|
|
162
|
-
noValidCuts: 'Не удалось создать корректный раскрой. Проверьте размеры.',
|
|
163
|
-
noValidPanels: 'Не удалось создать корректные щиты. Убедитесь, что детали помещаются на щите.',
|
|
164
|
-
stockLabel: 'Материал',
|
|
165
|
-
panelLabel: 'Панель',
|
|
166
|
-
wasteLabel: 'Отходы:',
|
|
167
|
-
effLabel: 'Эфф:',
|
|
168
|
-
},
|
|
169
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CutOptimizerUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'optimizator-raskroya';
|
|
7
|
+
const title = 'Оптимизатор раскроя полотна и досок';
|
|
8
|
+
const description =
|
|
9
|
+
'Бесплатный калькулятор для оптимизации раскроя дерева, металла или труб. Минимизируйте отходы с помощью алгоритмов Bin Packing 1D и 2D. Идеально для столярных работ, металлообработки и ремонта.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Что такое 1D оптимизатор раскроя?',
|
|
14
|
+
answer:
|
|
15
|
+
'Это инструмент, использующий математические алгоритмы (такие как задача об упаковке в контейнеры - Bin Packing Problem), чтобы определить, как вырезать более мелкие детали из стандартной длинной заготовки (рейка, профиль, труба) с минимально возможными отходами.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Почему нужно учитывать толщину реза (Kerf)?',
|
|
19
|
+
answer:
|
|
20
|
+
'Каждый раз, когда пила прорезает материал, расходуется несколько миллиметров (обычно от 2 до 4 мм в зависимости от диска). Если не учитывать это пространство, последние детали в вашем списке окажутся короче, чем планировалось.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Можно ли смешивать детали разной длины?',
|
|
24
|
+
answer:
|
|
25
|
+
'Да, наш калькулятор принимает любые комбинации длины и количества. Алгоритм оценит все возможные комбинации и отдаст приоритет максимальному использованию имеющегося материала.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Как сохранить план раскроя?',
|
|
29
|
+
answer:
|
|
30
|
+
'После завершения оптимизации вы можете распечатать страницу или сделать снимок экрана визуальной схемы. Это послужит физическим руководством в мастерской, чтобы не перепутать порядок резов.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Определите исходный материал (Stock)',
|
|
37
|
+
text: 'Введите общую длину имеющейся рейки или профиля (например, 2400 мм или 6000 мм).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Настройте толщину диска (Kerf)',
|
|
41
|
+
text: 'Установите количество миллиметров, которые пила удаляет при каждом проходе, чтобы расчет был точным до миллиметра.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Составьте список деталей',
|
|
45
|
+
text: 'Введите длину и количество каждой детали, необходимой для вашего проекта.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Запустите оптимизацию',
|
|
49
|
+
text: 'Получите наиболее эффективную схему раскроя и точный процент образующихся отходов.',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'FAQPage',
|
|
56
|
+
mainEntity: faqData.map((item) => ({
|
|
57
|
+
'@type': 'Question',
|
|
58
|
+
name: item.question,
|
|
59
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
64
|
+
'@context': 'https://schema.org',
|
|
65
|
+
'@type': 'HowTo',
|
|
66
|
+
name: title,
|
|
67
|
+
description,
|
|
68
|
+
step: howToData.map((step, i) => ({
|
|
69
|
+
'@type': 'HowToStep',
|
|
70
|
+
position: i + 1,
|
|
71
|
+
name: step.name,
|
|
72
|
+
text: step.text,
|
|
73
|
+
})),
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
77
|
+
'@context': 'https://schema.org',
|
|
78
|
+
'@type': 'SoftwareApplication',
|
|
79
|
+
name: title,
|
|
80
|
+
description,
|
|
81
|
+
applicationCategory: 'UtilityApplication',
|
|
82
|
+
operatingSystem: 'All',
|
|
83
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
84
|
+
inLanguage: 'ru',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
92
|
+
faq: faqData,
|
|
93
|
+
bibliography,
|
|
94
|
+
howTo: howToData,
|
|
95
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
+
seo: [
|
|
97
|
+
{
|
|
98
|
+
type: 'title',
|
|
99
|
+
text: 'Полное руководство по оптимизации раскроя',
|
|
100
|
+
level: 2,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'paragraph',
|
|
104
|
+
html: 'Оптимизация раскроя, технически известная как <strong>задача о раскрое материала (Cutting Stock Problem)</strong>, является одной из самых интересных логистических задач в промышленном проектировании. Для проекта из 20 деталей и 5 заготовок существуют миллионы возможных комбинаций. Компьютерный алгоритм может найти оптимальное решение за миллисекунды, сокращая обычные отходы с 15% до менее чем 5%.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: 'Линейный 1D раскрой и раскрой щитов 2D',
|
|
109
|
+
level: 3,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'card',
|
|
113
|
+
icon: 'mdi:arrow-expand-horizontal',
|
|
114
|
+
title: 'Линейный раскрой для реек и профилей',
|
|
115
|
+
html: '<p>В <strong>линейном раскрое (1D)</strong> оптимизация происходит только в одном измерении: длине. Ширина материала считается постоянной. Идеально подходит для пиломатериалов (рейки, балки), металлических и алюминиевых профилей, труб ПВХ или медных труб, а также шпилек.</p>',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'card',
|
|
119
|
+
icon: 'mdi:view-grid',
|
|
120
|
+
title: 'Раскрой щитов для досок и листов',
|
|
121
|
+
html: '<p>В <strong>раскрое щитов (2D)</strong> учитываются два измерения: ширина и длина. Инструмент использует алгоритмы гильотинного типа, где каждый рез идет от края до края. Идеально подходит для древесных плит (МДФ, ДСП), фанеры, стекла, оргстекла и металлических листов.</p>',
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'title',
|
|
125
|
+
text: 'Критический фактор: Толщина реза (Kerf)',
|
|
126
|
+
level: 3,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'paragraph',
|
|
130
|
+
html: '<strong>Kerf</strong> - это материал, который удаляется при каждом резе. Стандартный диск настольной пилы расходует от 3,0 до 3,2 мм на один рез. Ручная циркулярная пила расходует 1,5-2,5 мм. Лазерная резка оргстекла - всего 0,1-0,3 мм. Игнорирование толщины реза в проекте с 10 резами на рейках длиной 2400 мм может привести к потере от 30 до 32 мм полезного материала.',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'title',
|
|
134
|
+
text: 'Алгоритм Best Fit Decreasing',
|
|
135
|
+
level: 3,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'card',
|
|
139
|
+
icon: 'mdi:chip',
|
|
140
|
+
title: 'Как работает оптимизатор изнутри',
|
|
141
|
+
html: '<p>Ядро оптимизатора использует стратегию <strong>Best Fit Decreasing (BFD)</strong>: сначала сортируются все детали от самой длинной к самой короткой (большие детали сложнее разместить). Затем для каждой детали ищется существующий остаток, в который она помещается с минимальным лишним зазором. Только если деталь не помещается ни в один остаток, берется новая заготовка. Этот процесс сокращает отходы на порядки по сравнению со случайным выбором.</p>',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
ui: {
|
|
145
|
+
modeLinearLabel: 'Линейный (Заготовки)',
|
|
146
|
+
modePanelLabel: 'Панельный (Щиты)',
|
|
147
|
+
configTitle: 'Настройка материала',
|
|
148
|
+
labelStockLength: 'Длина материала (мм)',
|
|
149
|
+
labelStockWidth: 'Ширина материала (мм)',
|
|
150
|
+
labelKerf: 'Толщина диска / Kerf (мм)',
|
|
151
|
+
cutsTitle: 'Список резов',
|
|
152
|
+
placeholderLength: 'Длина',
|
|
153
|
+
placeholderWidth: 'Ширина',
|
|
154
|
+
placeholderQty: 'Кол-во',
|
|
155
|
+
btnRemoveTitle: 'Удалить',
|
|
156
|
+
statStockUsed: 'Использовано материала',
|
|
157
|
+
statTotalCuts: 'Всего резов',
|
|
158
|
+
statWaste: 'Всего отходов',
|
|
159
|
+
statEfficiency: 'Эффективность',
|
|
160
|
+
vizTitle: 'Визуализация раскроя',
|
|
161
|
+
emptyState: 'Добавьте детали и нажмите расчет, чтобы увидеть план раскроя.',
|
|
162
|
+
noValidCuts: 'Не удалось создать корректный раскрой. Проверьте размеры.',
|
|
163
|
+
noValidPanels: 'Не удалось создать корректные щиты. Убедитесь, что детали помещаются на щите.',
|
|
164
|
+
stockLabel: 'Материал',
|
|
165
|
+
panelLabel: 'Панель',
|
|
166
|
+
wasteLabel: 'Отходы:',
|
|
167
|
+
effLabel: 'Эфф:',
|
|
168
|
+
},
|
|
169
|
+
};
|