@jjlmoya/utils-diy 1.28.0 → 1.30.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/seo_translation_completeness.test.ts +18 -12
- 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 = 'schnittoptimierung';
|
|
7
|
-
const title = 'Schnittoptimierung für Leisten und Platten';
|
|
8
|
-
const description =
|
|
9
|
-
'Kostenloser Rechner zur Schnittoptimierung für Holz, Metall oder Rohre. Minimieren Sie den Verschnitt mit dem 1D- und 2D-Bin-Packing-Algorithmus. Ideal für Tischlerei und Metallbau.';
|
|
10
|
-
|
|
11
|
-
const faqData = [
|
|
12
|
-
{
|
|
13
|
-
question: 'Was ist ein 1D-Schnittoptimierer?',
|
|
14
|
-
answer:
|
|
15
|
-
'Es ist ein Werkzeug, das mathematische Algorithmen (wie das Bin-Packing-Problem) verwendet, um zu bestimmen, wie kleinere Teile aus einem standardmäßigen Langstück (Leiste, Profil, Rohr) mit möglichst wenig Verschnitt geschnitten werden können.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
question: 'Warum muss die Schnittbreite (Kerf) berücksichtigt werden?',
|
|
19
|
-
answer:
|
|
20
|
-
'Jedes Mal, wenn die Säge durch das Material schneidet, gehen einige Millimeter verloren (normalerweise zwischen 2 mm und 4 mm, je nach Sägeblatt). Wenn dieser Platz nicht eingerechnet wird, werden die letzten Teile auf Ihrer Liste kürzer als geplant.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Kann ich Teile verschiedener Längen mischen?',
|
|
24
|
-
answer:
|
|
25
|
-
'Ja, unser Rechner akzeptiert jede Kombination von Längen und Mengen. Der Algorithmus bewertet alle möglichen Kombinationen und priorisiert die maximale Ausnutzung des Lagermaterials.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
question: 'Wie speichere ich meinen Schnittplan?',
|
|
29
|
-
answer:
|
|
30
|
-
'Nach der Optimierung können Sie die Seite ausdrucken oder einen Screenshot des visuellen Schemas machen. Dies dient als physische Anleitung in der Werkstatt, um die Reihenfolge der Schnitte nicht zu verwechseln.',
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
const howToData = [
|
|
35
|
-
{
|
|
36
|
-
name: 'Basismaterial definieren (Stock)',
|
|
37
|
-
text: 'Geben Sie die Gesamtlänge der verfügbaren Leiste oder des Profils an (z. B. 2400 mm oder 6000 mm).',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Sägeblattdicke konfigurieren (Kerf)',
|
|
41
|
-
text: 'Stellen Sie die Millimeter ein, die die Säge bei jedem Schnitt entfernt, damit die Berechnung millimetergenau ist.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'Gewünschte Teile auflisten',
|
|
45
|
-
text: 'Geben Sie die Länge und Anzahl jedes Teils ein, das Sie für Ihr Projekt benötigen.',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: 'Optimierung ausführen',
|
|
49
|
-
text: 'Erhalten Sie das effizienteste Schnittschema und den exakten Prozentsatz des erzeugten Verschnitts.',
|
|
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: 'de',
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
88
|
-
slug,
|
|
89
|
-
title,
|
|
90
|
-
description,
|
|
91
|
-
faqTitle: 'Häufig gestellte Fragen',
|
|
92
|
-
faq: faqData,
|
|
93
|
-
bibliography,
|
|
94
|
-
howTo: howToData,
|
|
95
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
-
seo: [
|
|
97
|
-
{
|
|
98
|
-
type: 'title',
|
|
99
|
-
text: 'Der definitive Leitfaden zur Schnittoptimierung',
|
|
100
|
-
level: 2,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
type: 'paragraph',
|
|
104
|
-
html: 'Die Schnittoptimierung, technisch bekannt als das <strong>Zuschnittproblem (Cutting Stock Problem)</strong>, ist eine der faszinierendsten logistischen Herausforderungen in der Industrietechnik. Bei einem Projekt mit 20 Teilen und 5 Lagerstäben gibt es Millionen möglicher Kombinationen. Ein Computer-Algorithmus kann die optimale Lösung in Millisekunden finden und den üblichen Verschnitt von 15 % auf weniger als 5 % reduzieren.',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
type: 'title',
|
|
108
|
-
text: 'Linearer 1D-Schnitt und 2D-Plattenschnitt',
|
|
109
|
-
level: 3,
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
type: 'card',
|
|
113
|
-
icon: 'mdi:arrow-expand-horizontal',
|
|
114
|
-
title: 'Linearschnitt für Leisten und Profile',
|
|
115
|
-
html: '<p>Beim <strong>linearen Schnitt (1D)</strong> erfolgt die Optimierung in nur einer Dimension: der Länge. Die Breite des Materials wird als konstant angenommen. Ideal für Bauholz (Leisten, Balken), Metall- und Aluminiumprofile, PVC- oder Kupferrohre und Gewindestangen.</p>',
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'card',
|
|
119
|
-
icon: 'mdi:view-grid',
|
|
120
|
-
title: 'Plattenschnitt für Platten und Bleche',
|
|
121
|
-
html: '<p>Beim <strong>Plattenschnitt (2D)</strong> werden zwei Dimensionen verwaltet: Breite und Länge. Das Tool verwendet Guillotine-Algorithmen, bei denen jeder Schnitt von Kante zu Kante verläuft. Ideal für Plattenwerkstoffe (MDF, Spanplatten), Sperrholz, Glas, Acrylglas und Metallbleche.</p>',
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
type: 'title',
|
|
125
|
-
text: 'Der kritische Faktor: Die Schnittbreite (Kerf)',
|
|
126
|
-
level: 3,
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
type: 'paragraph',
|
|
130
|
-
html: 'Der <strong>Kerf</strong> ist das Material, das bei jedem Schnitt entfernt wird. Ein Standard-Tischkreissägeblatt verbraucht zwischen 3,0 mm und 3,2 mm pro Schnitt. Eine Handkreissäge verbraucht 1,5 bis 2,5 mm. Ein Laserschnitt in Acrylglas verbraucht kaum 0,1 bis 0,3 mm. Das Ignorieren der Schnittbreite in einem Projekt mit 10 Schnitten an 2400-mm-Leisten kann dazu führen, dass Sie zwischen 30 mm und 32 mm nutzbares Material verlieren.',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'title',
|
|
134
|
-
text: 'Der Best-Fit-Decreasing-Algorithmus',
|
|
135
|
-
level: 3,
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
type: 'card',
|
|
139
|
-
icon: 'mdi:chip',
|
|
140
|
-
title: 'Wie der Optimierer intern funktioniert',
|
|
141
|
-
html: '<p>Der Kern des Optimierers nutzt die Strategie <strong>Best Fit Decreasing (BFD)</strong>: Zuerst werden alle Teile von der größten zur kleinsten Länge sortiert (große Teile sind schwieriger einzupassen). Dann wird für jedes Teil der vorhandene Rest gesucht, in den es mit dem geringsten verbleibenden Rest passt. Nur wenn es in keinen Rest passt, wird ein neuer Rohstab angebrochen. Dieser Prozess reduziert den Verschnitt um eine Größenordnung im Vergleich zur zufälligen Auswahl.</p>',
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
ui: {
|
|
145
|
-
modeLinearLabel: 'Linear (Stäbe)',
|
|
146
|
-
modePanelLabel: 'Platten',
|
|
147
|
-
configTitle: 'Materialkonfiguration',
|
|
148
|
-
labelStockLength: 'Materiallänge (mm)',
|
|
149
|
-
labelStockWidth: 'Materialbreite (mm)',
|
|
150
|
-
labelKerf: 'Schnittbreite / Kerf (mm)',
|
|
151
|
-
cutsTitle: 'Schnittliste',
|
|
152
|
-
placeholderLength: 'Länge',
|
|
153
|
-
placeholderWidth: 'Breite',
|
|
154
|
-
placeholderQty: 'Anz.',
|
|
155
|
-
btnRemoveTitle: 'Löschen',
|
|
156
|
-
statStockUsed: 'Material benutzt',
|
|
157
|
-
statTotalCuts: 'Gesamtschnitte',
|
|
158
|
-
statWaste: 'Gesamtverschnitt',
|
|
159
|
-
statEfficiency: 'Effizienz',
|
|
160
|
-
vizTitle: 'Schnittvisualisierung',
|
|
161
|
-
emptyState: 'Fügen Sie Schnitte hinzu und klicken Sie auf Berechnen, um den Schnittplan zu sehen.',
|
|
162
|
-
noValidCuts: 'Es konnten keine gültigen Schnitte generiert werden. Überprüfen Sie die Maße.',
|
|
163
|
-
noValidPanels: 'Es konnten keine gültigen Platten generiert werden. Prüfen Sie, ob die Teile auf die Platte passen.',
|
|
164
|
-
stockLabel: 'Material',
|
|
165
|
-
panelLabel: 'Platte',
|
|
166
|
-
wasteLabel: 'Verschnitt:',
|
|
167
|
-
effLabel: 'Eff:',
|
|
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 = 'schnittoptimierung';
|
|
7
|
+
const title = 'Schnittoptimierung für Leisten und Platten';
|
|
8
|
+
const description =
|
|
9
|
+
'Kostenloser Rechner zur Schnittoptimierung für Holz, Metall oder Rohre. Minimieren Sie den Verschnitt mit dem 1D- und 2D-Bin-Packing-Algorithmus. Ideal für Tischlerei und Metallbau.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Was ist ein 1D-Schnittoptimierer?',
|
|
14
|
+
answer:
|
|
15
|
+
'Es ist ein Werkzeug, das mathematische Algorithmen (wie das Bin-Packing-Problem) verwendet, um zu bestimmen, wie kleinere Teile aus einem standardmäßigen Langstück (Leiste, Profil, Rohr) mit möglichst wenig Verschnitt geschnitten werden können.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Warum muss die Schnittbreite (Kerf) berücksichtigt werden?',
|
|
19
|
+
answer:
|
|
20
|
+
'Jedes Mal, wenn die Säge durch das Material schneidet, gehen einige Millimeter verloren (normalerweise zwischen 2 mm und 4 mm, je nach Sägeblatt). Wenn dieser Platz nicht eingerechnet wird, werden die letzten Teile auf Ihrer Liste kürzer als geplant.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Kann ich Teile verschiedener Längen mischen?',
|
|
24
|
+
answer:
|
|
25
|
+
'Ja, unser Rechner akzeptiert jede Kombination von Längen und Mengen. Der Algorithmus bewertet alle möglichen Kombinationen und priorisiert die maximale Ausnutzung des Lagermaterials.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Wie speichere ich meinen Schnittplan?',
|
|
29
|
+
answer:
|
|
30
|
+
'Nach der Optimierung können Sie die Seite ausdrucken oder einen Screenshot des visuellen Schemas machen. Dies dient als physische Anleitung in der Werkstatt, um die Reihenfolge der Schnitte nicht zu verwechseln.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Basismaterial definieren (Stock)',
|
|
37
|
+
text: 'Geben Sie die Gesamtlänge der verfügbaren Leiste oder des Profils an (z. B. 2400 mm oder 6000 mm).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Sägeblattdicke konfigurieren (Kerf)',
|
|
41
|
+
text: 'Stellen Sie die Millimeter ein, die die Säge bei jedem Schnitt entfernt, damit die Berechnung millimetergenau ist.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Gewünschte Teile auflisten',
|
|
45
|
+
text: 'Geben Sie die Länge und Anzahl jedes Teils ein, das Sie für Ihr Projekt benötigen.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Optimierung ausführen',
|
|
49
|
+
text: 'Erhalten Sie das effizienteste Schnittschema und den exakten Prozentsatz des erzeugten Verschnitts.',
|
|
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: 'de',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
92
|
+
faq: faqData,
|
|
93
|
+
bibliography,
|
|
94
|
+
howTo: howToData,
|
|
95
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
+
seo: [
|
|
97
|
+
{
|
|
98
|
+
type: 'title',
|
|
99
|
+
text: 'Der definitive Leitfaden zur Schnittoptimierung',
|
|
100
|
+
level: 2,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'paragraph',
|
|
104
|
+
html: 'Die Schnittoptimierung, technisch bekannt als das <strong>Zuschnittproblem (Cutting Stock Problem)</strong>, ist eine der faszinierendsten logistischen Herausforderungen in der Industrietechnik. Bei einem Projekt mit 20 Teilen und 5 Lagerstäben gibt es Millionen möglicher Kombinationen. Ein Computer-Algorithmus kann die optimale Lösung in Millisekunden finden und den üblichen Verschnitt von 15 % auf weniger als 5 % reduzieren.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: 'Linearer 1D-Schnitt und 2D-Plattenschnitt',
|
|
109
|
+
level: 3,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'card',
|
|
113
|
+
icon: 'mdi:arrow-expand-horizontal',
|
|
114
|
+
title: 'Linearschnitt für Leisten und Profile',
|
|
115
|
+
html: '<p>Beim <strong>linearen Schnitt (1D)</strong> erfolgt die Optimierung in nur einer Dimension: der Länge. Die Breite des Materials wird als konstant angenommen. Ideal für Bauholz (Leisten, Balken), Metall- und Aluminiumprofile, PVC- oder Kupferrohre und Gewindestangen.</p>',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'card',
|
|
119
|
+
icon: 'mdi:view-grid',
|
|
120
|
+
title: 'Plattenschnitt für Platten und Bleche',
|
|
121
|
+
html: '<p>Beim <strong>Plattenschnitt (2D)</strong> werden zwei Dimensionen verwaltet: Breite und Länge. Das Tool verwendet Guillotine-Algorithmen, bei denen jeder Schnitt von Kante zu Kante verläuft. Ideal für Plattenwerkstoffe (MDF, Spanplatten), Sperrholz, Glas, Acrylglas und Metallbleche.</p>',
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'title',
|
|
125
|
+
text: 'Der kritische Faktor: Die Schnittbreite (Kerf)',
|
|
126
|
+
level: 3,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'paragraph',
|
|
130
|
+
html: 'Der <strong>Kerf</strong> ist das Material, das bei jedem Schnitt entfernt wird. Ein Standard-Tischkreissägeblatt verbraucht zwischen 3,0 mm und 3,2 mm pro Schnitt. Eine Handkreissäge verbraucht 1,5 bis 2,5 mm. Ein Laserschnitt in Acrylglas verbraucht kaum 0,1 bis 0,3 mm. Das Ignorieren der Schnittbreite in einem Projekt mit 10 Schnitten an 2400-mm-Leisten kann dazu führen, dass Sie zwischen 30 mm und 32 mm nutzbares Material verlieren.',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'title',
|
|
134
|
+
text: 'Der Best-Fit-Decreasing-Algorithmus',
|
|
135
|
+
level: 3,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'card',
|
|
139
|
+
icon: 'mdi:chip',
|
|
140
|
+
title: 'Wie der Optimierer intern funktioniert',
|
|
141
|
+
html: '<p>Der Kern des Optimierers nutzt die Strategie <strong>Best Fit Decreasing (BFD)</strong>: Zuerst werden alle Teile von der größten zur kleinsten Länge sortiert (große Teile sind schwieriger einzupassen). Dann wird für jedes Teil der vorhandene Rest gesucht, in den es mit dem geringsten verbleibenden Rest passt. Nur wenn es in keinen Rest passt, wird ein neuer Rohstab angebrochen. Dieser Prozess reduziert den Verschnitt um eine Größenordnung im Vergleich zur zufälligen Auswahl.</p>',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
ui: {
|
|
145
|
+
modeLinearLabel: 'Linear (Stäbe)',
|
|
146
|
+
modePanelLabel: 'Platten',
|
|
147
|
+
configTitle: 'Materialkonfiguration',
|
|
148
|
+
labelStockLength: 'Materiallänge (mm)',
|
|
149
|
+
labelStockWidth: 'Materialbreite (mm)',
|
|
150
|
+
labelKerf: 'Schnittbreite / Kerf (mm)',
|
|
151
|
+
cutsTitle: 'Schnittliste',
|
|
152
|
+
placeholderLength: 'Länge',
|
|
153
|
+
placeholderWidth: 'Breite',
|
|
154
|
+
placeholderQty: 'Anz.',
|
|
155
|
+
btnRemoveTitle: 'Löschen',
|
|
156
|
+
statStockUsed: 'Material benutzt',
|
|
157
|
+
statTotalCuts: 'Gesamtschnitte',
|
|
158
|
+
statWaste: 'Gesamtverschnitt',
|
|
159
|
+
statEfficiency: 'Effizienz',
|
|
160
|
+
vizTitle: 'Schnittvisualisierung',
|
|
161
|
+
emptyState: 'Fügen Sie Schnitte hinzu und klicken Sie auf Berechnen, um den Schnittplan zu sehen.',
|
|
162
|
+
noValidCuts: 'Es konnten keine gültigen Schnitte generiert werden. Überprüfen Sie die Maße.',
|
|
163
|
+
noValidPanels: 'Es konnten keine gültigen Platten generiert werden. Prüfen Sie, ob die Teile auf die Platte passen.',
|
|
164
|
+
stockLabel: 'Material',
|
|
165
|
+
panelLabel: 'Platte',
|
|
166
|
+
wasteLabel: 'Verschnitt:',
|
|
167
|
+
effLabel: 'Eff:',
|
|
168
|
+
},
|
|
169
|
+
};
|