@jjlmoya/utils-diy 1.3.0 → 1.5.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 -1
- package/src/category/i18n/de.ts +12 -0
- package/src/category/i18n/id.ts +12 -0
- package/src/category/i18n/it.ts +12 -0
- package/src/category/i18n/ja.ts +12 -0
- package/src/category/i18n/ko.ts +12 -0
- package/src/category/i18n/nl.ts +12 -0
- package/src/category/i18n/pl.ts +12 -0
- package/src/category/i18n/pt.ts +12 -0
- package/src/category/i18n/ru.ts +12 -0
- package/src/category/i18n/sv.ts +12 -0
- package/src/category/i18n/tr.ts +12 -0
- package/src/category/i18n/zh.ts +12 -0
- package/src/category/index.ts +13 -1
- package/src/index.ts +1 -1
- package/src/tests/category_validation.test.ts +18 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/seo_length.test.ts +3 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tool/balusterCalculator/i18n/de.ts +264 -0
- package/src/tool/balusterCalculator/i18n/id.ts +264 -0
- package/src/tool/balusterCalculator/i18n/it.ts +264 -0
- package/src/tool/balusterCalculator/i18n/ja.ts +264 -0
- package/src/tool/balusterCalculator/i18n/ko.ts +264 -0
- package/src/tool/balusterCalculator/i18n/nl.ts +264 -0
- package/src/tool/balusterCalculator/i18n/pl.ts +264 -0
- package/src/tool/balusterCalculator/i18n/pt.ts +264 -0
- package/src/tool/balusterCalculator/i18n/ru.ts +264 -0
- package/src/tool/balusterCalculator/i18n/sv.ts +264 -0
- package/src/tool/balusterCalculator/i18n/tr.ts +264 -0
- package/src/tool/balusterCalculator/i18n/zh.ts +264 -0
- package/src/tool/balusterCalculator/index.ts +15 -7
- package/src/tool/clayCalculator/i18n/de.ts +183 -0
- package/src/tool/clayCalculator/i18n/id.ts +183 -0
- package/src/tool/clayCalculator/i18n/it.ts +183 -0
- package/src/tool/clayCalculator/i18n/ja.ts +182 -0
- package/src/tool/clayCalculator/i18n/ko.ts +183 -0
- package/src/tool/clayCalculator/i18n/nl.ts +183 -0
- package/src/tool/clayCalculator/i18n/pl.ts +183 -0
- package/src/tool/clayCalculator/i18n/pt.ts +183 -0
- package/src/tool/clayCalculator/i18n/ru.ts +183 -0
- package/src/tool/clayCalculator/i18n/sv.ts +183 -0
- package/src/tool/clayCalculator/i18n/tr.ts +183 -0
- package/src/tool/clayCalculator/i18n/zh.ts +183 -0
- package/src/tool/clayCalculator/index.ts +15 -7
- package/src/tool/concreteCalculator/i18n/de.ts +201 -0
- package/src/tool/concreteCalculator/i18n/id.ts +201 -0
- package/src/tool/concreteCalculator/i18n/it.ts +201 -0
- package/src/tool/concreteCalculator/i18n/ja.ts +201 -0
- package/src/tool/concreteCalculator/i18n/ko.ts +201 -0
- package/src/tool/concreteCalculator/i18n/nl.ts +201 -0
- package/src/tool/concreteCalculator/i18n/pl.ts +201 -0
- package/src/tool/concreteCalculator/i18n/pt.ts +201 -0
- package/src/tool/concreteCalculator/i18n/ru.ts +201 -0
- package/src/tool/concreteCalculator/i18n/sv.ts +201 -0
- package/src/tool/concreteCalculator/i18n/tr.ts +201 -0
- package/src/tool/concreteCalculator/i18n/zh.ts +201 -0
- package/src/tool/concreteCalculator/index.ts +17 -5
- package/src/tool/cutOptimizer/i18n/de.ts +178 -0
- package/src/tool/cutOptimizer/i18n/id.ts +178 -0
- package/src/tool/cutOptimizer/i18n/it.ts +178 -0
- package/src/tool/cutOptimizer/i18n/ja.ts +178 -0
- package/src/tool/cutOptimizer/i18n/ko.ts +178 -0
- package/src/tool/cutOptimizer/i18n/nl.ts +178 -0
- package/src/tool/cutOptimizer/i18n/pl.ts +178 -0
- package/src/tool/cutOptimizer/i18n/pt.ts +178 -0
- package/src/tool/cutOptimizer/i18n/ru.ts +178 -0
- package/src/tool/cutOptimizer/i18n/sv.ts +178 -0
- package/src/tool/cutOptimizer/i18n/tr.ts +178 -0
- package/src/tool/cutOptimizer/i18n/zh.ts +178 -0
- package/src/tool/cutOptimizer/index.ts +17 -5
- package/src/tool/drillCalculator/i18n/de.ts +137 -0
- package/src/tool/drillCalculator/i18n/id.ts +137 -0
- package/src/tool/drillCalculator/i18n/it.ts +137 -0
- package/src/tool/drillCalculator/i18n/ja.ts +137 -0
- package/src/tool/drillCalculator/i18n/ko.ts +137 -0
- package/src/tool/drillCalculator/i18n/nl.ts +137 -0
- package/src/tool/drillCalculator/i18n/pl.ts +137 -0
- package/src/tool/drillCalculator/i18n/pt.ts +137 -0
- package/src/tool/drillCalculator/i18n/ru.ts +137 -0
- package/src/tool/drillCalculator/i18n/sv.ts +137 -0
- package/src/tool/drillCalculator/i18n/tr.ts +137 -0
- package/src/tool/drillCalculator/i18n/zh.ts +137 -0
- package/src/tool/drillCalculator/index.ts +17 -5
- package/src/tool/drillSharpener/i18n/de.ts +120 -0
- package/src/tool/drillSharpener/i18n/id.ts +120 -0
- package/src/tool/drillSharpener/i18n/it.ts +120 -0
- package/src/tool/drillSharpener/i18n/ja.ts +120 -0
- package/src/tool/drillSharpener/i18n/ko.ts +120 -0
- package/src/tool/drillSharpener/i18n/nl.ts +120 -0
- package/src/tool/drillSharpener/i18n/pl.ts +120 -0
- package/src/tool/drillSharpener/i18n/pt.ts +120 -0
- package/src/tool/drillSharpener/i18n/ru.ts +120 -0
- package/src/tool/drillSharpener/i18n/sv.ts +120 -0
- package/src/tool/drillSharpener/i18n/tr.ts +120 -0
- package/src/tool/drillSharpener/i18n/zh.ts +120 -0
- package/src/tool/drillSharpener/index.ts +17 -5
- package/src/tool/epoxyCalculator/i18n/de.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/id.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/it.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/ja.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/ko.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/nl.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/pl.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/pt.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/ru.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/sv.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/tr.ts +118 -0
- package/src/tool/epoxyCalculator/i18n/zh.ts +118 -0
- package/src/tool/epoxyCalculator/index.ts +15 -7
- package/src/tool/furnitureFit/i18n/de.ts +113 -0
- package/src/tool/furnitureFit/i18n/id.ts +113 -0
- package/src/tool/furnitureFit/i18n/it.ts +113 -0
- package/src/tool/furnitureFit/i18n/ja.ts +113 -0
- package/src/tool/furnitureFit/i18n/ko.ts +113 -0
- package/src/tool/furnitureFit/i18n/nl.ts +113 -0
- package/src/tool/furnitureFit/i18n/pl.ts +113 -0
- package/src/tool/furnitureFit/i18n/pt.ts +113 -0
- package/src/tool/furnitureFit/i18n/ru.ts +113 -0
- package/src/tool/furnitureFit/i18n/sv.ts +113 -0
- package/src/tool/furnitureFit/i18n/tr.ts +113 -0
- package/src/tool/furnitureFit/i18n/zh.ts +113 -0
- package/src/tool/furnitureFit/index.ts +17 -5
- package/src/tool/mortarCalculator/i18n/de.ts +129 -0
- package/src/tool/mortarCalculator/i18n/id.ts +129 -0
- package/src/tool/mortarCalculator/i18n/it.ts +129 -0
- package/src/tool/mortarCalculator/i18n/ja.ts +129 -0
- package/src/tool/mortarCalculator/i18n/ko.ts +129 -0
- package/src/tool/mortarCalculator/i18n/nl.ts +129 -0
- package/src/tool/mortarCalculator/i18n/pl.ts +129 -0
- package/src/tool/mortarCalculator/i18n/pt.ts +129 -0
- package/src/tool/mortarCalculator/i18n/ru.ts +129 -0
- package/src/tool/mortarCalculator/i18n/sv.ts +129 -0
- package/src/tool/mortarCalculator/i18n/tr.ts +129 -0
- package/src/tool/mortarCalculator/i18n/zh.ts +129 -0
- package/src/tool/mortarCalculator/index.ts +17 -5
- package/src/tool/passepartoutCalculator/i18n/de.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/id.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/it.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/ja.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/ko.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/nl.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/pl.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/pt.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/ru.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/sv.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/tr.ts +108 -0
- package/src/tool/passepartoutCalculator/i18n/zh.ts +108 -0
- package/src/tool/passepartoutCalculator/index.ts +17 -5
- package/src/tool/stairCalculator/i18n/de.ts +144 -0
- package/src/tool/stairCalculator/i18n/id.ts +144 -0
- package/src/tool/stairCalculator/i18n/it.ts +144 -0
- package/src/tool/stairCalculator/i18n/ja.ts +144 -0
- package/src/tool/stairCalculator/i18n/ko.ts +144 -0
- package/src/tool/stairCalculator/i18n/nl.ts +144 -0
- package/src/tool/stairCalculator/i18n/pl.ts +144 -0
- package/src/tool/stairCalculator/i18n/pt.ts +144 -0
- package/src/tool/stairCalculator/i18n/ru.ts +144 -0
- package/src/tool/stairCalculator/i18n/sv.ts +144 -0
- package/src/tool/stairCalculator/i18n/tr.ts +144 -0
- package/src/tool/stairCalculator/i18n/zh.ts +144 -0
- package/src/tool/stairCalculator/index.ts +17 -5
- package/src/tool/thermalExpansionCalculator/i18n/de.ts +132 -0
- package/src/tool/thermalExpansionCalculator/i18n/id.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/it.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/ja.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/ko.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/nl.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/pl.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/pt.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/ru.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/sv.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/tr.ts +130 -0
- package/src/tool/thermalExpansionCalculator/i18n/zh.ts +130 -0
- package/src/tool/thermalExpansionCalculator/index.ts +17 -5
- package/src/tool/voltageDropCalculator/i18n/de.ts +112 -0
- package/src/tool/voltageDropCalculator/i18n/id.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/it.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/ja.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/ko.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/nl.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/pl.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/pt.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/ru.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/sv.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/tr.ts +110 -0
- package/src/tool/voltageDropCalculator/i18n/zh.ts +110 -0
- package/src/tool/voltageDropCalculator/index.ts +17 -5
- package/src/tools.ts +2 -0
- package/src/types.ts +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CutOptimizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'schnittoptimierung';
|
|
6
|
+
const title = 'Schnittoptimierung für Leisten und Platten';
|
|
7
|
+
const description =
|
|
8
|
+
'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.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Was ist ein 1D-Schnittoptimierer?',
|
|
13
|
+
answer:
|
|
14
|
+
'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.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Warum muss die Schnittbreite (Kerf) berücksichtigt werden?',
|
|
18
|
+
answer:
|
|
19
|
+
'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.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Kann ich Teile verschiedener Längen mischen?',
|
|
23
|
+
answer:
|
|
24
|
+
'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.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Wie speichere ich meinen Schnittplan?',
|
|
28
|
+
answer:
|
|
29
|
+
'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.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Basismaterial definieren (Stock)',
|
|
36
|
+
text: 'Geben Sie die Gesamtlänge der verfügbaren Leiste oder des Profils an (z. B. 2400 mm oder 6000 mm).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Sägeblattdicke konfigurieren (Kerf)',
|
|
40
|
+
text: 'Stellen Sie die Millimeter ein, die die Säge bei jedem Schnitt entfernt, damit die Berechnung millimetergenau ist.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Gewünschte Teile auflisten',
|
|
44
|
+
text: 'Geben Sie die Länge und Anzahl jedes Teils ein, das Sie für Ihr Projekt benötigen.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Optimierung ausführen',
|
|
48
|
+
text: 'Erhalten Sie das effizienteste Schnittschema und den exakten Prozentsatz des erzeugten Verschnitts.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'de',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Technische Referenzen',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Cutting Stock Problem: Wikipedia',
|
|
96
|
+
url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Bin Packing Problem: Wolfram MathWorld',
|
|
100
|
+
url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: 'Der definitive Leitfaden zur Schnittoptimierung',
|
|
109
|
+
level: 2,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
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.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'title',
|
|
117
|
+
text: 'Linearer 1D-Schnitt und 2D-Plattenschnitt',
|
|
118
|
+
level: 3,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'card',
|
|
122
|
+
icon: 'mdi:arrow-expand-horizontal',
|
|
123
|
+
title: 'Linearschnitt für Leisten und Profile',
|
|
124
|
+
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>',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'card',
|
|
128
|
+
icon: 'mdi:view-grid',
|
|
129
|
+
title: 'Plattenschnitt für Platten und Bleche',
|
|
130
|
+
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>',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'title',
|
|
134
|
+
text: 'Der kritische Faktor: Die Schnittbreite (Kerf)',
|
|
135
|
+
level: 3,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
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.',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'title',
|
|
143
|
+
text: 'Der Best-Fit-Decreasing-Algorithmus',
|
|
144
|
+
level: 3,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'card',
|
|
148
|
+
icon: 'mdi:chip',
|
|
149
|
+
title: 'Wie der Optimierer intern funktioniert',
|
|
150
|
+
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>',
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
ui: {
|
|
154
|
+
modeLinearLabel: 'Linear (Stäbe)',
|
|
155
|
+
modePanelLabel: 'Platten',
|
|
156
|
+
configTitle: 'Materialkonfiguration',
|
|
157
|
+
labelStockLength: 'Materiallänge (mm)',
|
|
158
|
+
labelStockWidth: 'Materialbreite (mm)',
|
|
159
|
+
labelKerf: 'Schnittbreite / Kerf (mm)',
|
|
160
|
+
cutsTitle: 'Schnittliste',
|
|
161
|
+
placeholderLength: 'Länge',
|
|
162
|
+
placeholderWidth: 'Breite',
|
|
163
|
+
placeholderQty: 'Anz.',
|
|
164
|
+
btnRemoveTitle: 'Löschen',
|
|
165
|
+
statStockUsed: 'Material benutzt',
|
|
166
|
+
statTotalCuts: 'Gesamtschnitte',
|
|
167
|
+
statWaste: 'Gesamtverschnitt',
|
|
168
|
+
statEfficiency: 'Effizienz',
|
|
169
|
+
vizTitle: 'Schnittvisualisierung',
|
|
170
|
+
emptyState: 'Fügen Sie Schnitte hinzu und klicken Sie auf Berechnen, um den Schnittplan zu sehen.',
|
|
171
|
+
noValidCuts: 'Es konnten keine gültigen Schnitte generiert werden. Überprüfen Sie die Maße.',
|
|
172
|
+
noValidPanels: 'Es konnten keine gültigen Platten generiert werden. Prüfen Sie, ob die Teile auf die Platte passen.',
|
|
173
|
+
stockLabel: 'Material',
|
|
174
|
+
panelLabel: 'Platte',
|
|
175
|
+
wasteLabel: 'Verschnitt:',
|
|
176
|
+
effLabel: 'Eff:',
|
|
177
|
+
},
|
|
178
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CutOptimizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'pengoptimal-potongan';
|
|
6
|
+
const title = 'Pengoptimal Potongan Kayu dan Papan';
|
|
7
|
+
const description =
|
|
8
|
+
'Kalkulator gratis untuk mengoptimalkan potongan kayu, logam, atau pipa. Minimalkan sisa dengan algoritma Bin Packing 1D dan 2D. Ideal untuk bengkel kayu, metalurgi, dan renovasi.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Apa itu pengoptimal potongan 1D?',
|
|
13
|
+
answer:
|
|
14
|
+
'Ini adalah alat yang menggunakan algoritma matematika (seperti Bin Packing Problem) untuk menentukan cara memotong bagian yang lebih kecil dari bagian panjang standar (balok, profil, pipa) dengan sisa sesedikit mungkin.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Mengapa harus memasukkan ketebalan potongan (Kerf)?',
|
|
18
|
+
answer:
|
|
19
|
+
'Setiap kali gergaji memotong material, beberapa milimeter akan terbuang (biasanya antara 2mm hingga 4mm tergantung pisaunya). Jika Anda tidak menghitung ruang ini, bagian terakhir dari daftar Anda akan menjadi lebih pendek dari yang direncanakan.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Dapatkah saya mencampur bagian dengan panjang yang berbeda?',
|
|
23
|
+
answer:
|
|
24
|
+
'Ya, kalkulator kami menerima kombinasi panjang dan jumlah berapa pun. Algoritma akan mengevaluasi semua kombinasi yang mungkin dan memprioritaskan pemanfaatan maksimal dari material stok.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Bagaimana cara menyimpan rencana pemotongan saya?',
|
|
28
|
+
answer:
|
|
29
|
+
'Setelah dioptimalkan, Anda dapat mencetak halaman tersebut atau mengambil tangkapan layar dari skema visual. Ini akan berfungsi sebagai panduan fisik di bengkel agar urutan potongan tidak tertukar.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Tentukan material dasar (Stock)',
|
|
36
|
+
text: 'Masukkan total panjang balok atau profil yang tersedia (misalnya 2400mm atau 6000mm).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Atur ketebalan pisau (Kerf)',
|
|
40
|
+
text: 'Sesuaikan milimeter yang dihilangkan gergaji pada setiap langkah agar perhitungannya akurat secara milimetrik.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Daftar bagian yang diinginkan',
|
|
44
|
+
text: 'Tulis panjang dan jumlah setiap bagian yang Anda butuhkan untuk proyek Anda.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Jalankan optimasi',
|
|
48
|
+
text: 'Dapatkan skema pemotongan paling efisien dan persentase tepat dari sisa yang dihasilkan.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'id',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Pertanyaan Umum',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Referensi Teknis',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Cutting Stock Problem: Wikipedia',
|
|
96
|
+
url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Bin Packing Problem: Wolfram MathWorld',
|
|
100
|
+
url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: 'Panduan Definitif Optimasi Pemotongan',
|
|
109
|
+
level: 2,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'Optimasi pemotongan, yang secara teknis dikenal sebagai <strong>Masalah Pemotongan Stok (Cutting Stock Problem)</strong>, adalah salah satu tantangan logistik paling menarik dalam teknik industri. Untuk proyek dengan 20 bagian dan 5 batang stok, ada jutaan kemungkinan kombinasi. Algoritma komputer dapat menemukan solusi optimal dalam hitungan milidetik, mengurangi sisa yang biasanya 15% menjadi kurang dari 5%.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'title',
|
|
117
|
+
text: 'Pemotongan Linear 1D dan Pemotongan Panel 2D',
|
|
118
|
+
level: 3,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'card',
|
|
122
|
+
icon: 'mdi:arrow-expand-horizontal',
|
|
123
|
+
title: 'Pemotongan Linear untuk Batang dan Profil',
|
|
124
|
+
html: '<p>Dalam <strong>pemotongan linear (1D)</strong>, optimasi terjadi hanya dalam satu dimensi: panjang. Lebar material dianggap konstan. Sangat ideal untuk kayu dimensional (balok, gelagar), profil logam dan aluminium, pipa PVC atau tembaga, dan batang berulir.</p>',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'card',
|
|
128
|
+
icon: 'mdi:view-grid',
|
|
129
|
+
title: 'Pemotongan Panel untuk Papan dan Lembaran',
|
|
130
|
+
html: '<p>Dalam <strong>pemotongan panel (2D)</strong>, dua dimensi dikelola: lebar dan panjang. Alat ini menggunakan algoritma tipe guillotine, di mana setiap potongan dilakukan dari tepi ke tepi. Ideal untuk papan turunan (MDF, partikel), kayu lapis, kaca, metakrilat, dan lembaran logam.</p>',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'title',
|
|
134
|
+
text: 'Faktor Kritis: Ketebalan Potongan (Kerf)',
|
|
135
|
+
level: 3,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: '<strong>Kerf</strong> adalah material yang hilang pada setiap potongan. Pisau gergaji meja standar menghabiskan antara 3,0mm hingga 3,2mm per potongan. Gergaji sirkuler genggam menghabiskan 1,5 hingga 2,5mm. Potongan laser pada metakrilat hanya 0,1 hingga 0,3mm. Mengabaikan kerf dalam proyek dengan 10 potongan pada balok sepanjang 2400mm dapat membuat Anda kehilangan antara 30mm hingga 32mm material yang berguna.',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'title',
|
|
143
|
+
text: 'Algoritma Best Fit Decreasing',
|
|
144
|
+
level: 3,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'card',
|
|
148
|
+
icon: 'mdi:chip',
|
|
149
|
+
title: 'Cara Kerja Pengoptimal Secara Internal',
|
|
150
|
+
html: '<p>Inti dari pengoptimal menggunakan strategi <strong>Best Fit Decreasing (BFD)</strong>: pertama-tama mengurutkan semua bagian dari panjang terbesar ke terkecil (bagian besar lebih sulit untuk dicocokkan). Kemudian, untuk setiap bagian, ia mencari sisa yang ada di mana ia dapat masuk dengan meninggalkan sisa sesedikit mungkin. Hanya jika tidak muat di sisa mana pun, ia akan membuka batang baru. Proses ini mengurangi sisa secara signifikan dibandingkan dengan pemilihan acak.</p>',
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
ui: {
|
|
154
|
+
modeLinearLabel: 'Linear (Batang)',
|
|
155
|
+
modePanelLabel: 'Panel (Papan)',
|
|
156
|
+
configTitle: 'Konfigurasi Material',
|
|
157
|
+
labelStockLength: 'Panjang Material (mm)',
|
|
158
|
+
labelStockWidth: 'Lebar Material (mm)',
|
|
159
|
+
labelKerf: 'Ketebalan Pisau / Kerf (mm)',
|
|
160
|
+
cutsTitle: 'Daftar Potongan',
|
|
161
|
+
placeholderLength: 'Panjang',
|
|
162
|
+
placeholderWidth: 'Lebar',
|
|
163
|
+
placeholderQty: 'Jml.',
|
|
164
|
+
btnRemoveTitle: 'Hapus',
|
|
165
|
+
statStockUsed: 'Material Terpakai',
|
|
166
|
+
statTotalCuts: 'Total Potongan',
|
|
167
|
+
statWaste: 'Total Sisa',
|
|
168
|
+
statEfficiency: 'Efisiensi',
|
|
169
|
+
vizTitle: 'Visualisasi Potongan',
|
|
170
|
+
emptyState: 'Tambahkan potongan dan tekan hitung untuk melihat rencana potongan.',
|
|
171
|
+
noValidCuts: 'Tidak dapat menghasilkan potongan yang valid. Periksa ukurannya.',
|
|
172
|
+
noValidPanels: 'Tidak dapat menghasilkan panel yang valid. Pastikan bagian-bagian tersebut muat di papan.',
|
|
173
|
+
stockLabel: 'Material',
|
|
174
|
+
panelLabel: 'Panel',
|
|
175
|
+
wasteLabel: 'Sisa:',
|
|
176
|
+
effLabel: 'Efis:',
|
|
177
|
+
},
|
|
178
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CutOptimizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'ottimizzatore-taglio';
|
|
6
|
+
const title = 'Ottimizzatore di Taglio per Listelli e Pannelli';
|
|
7
|
+
const description =
|
|
8
|
+
'Calcolatrice gratuita per ottimizzare i tagli di legno, metallo o tubi. Minimizza lo scarto con algoritmi Bin Packing 1D e 2D. Ideale per falegnameria e carpenteria.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Cos\'è un ottimizzatore di taglio 1D?',
|
|
13
|
+
answer:
|
|
14
|
+
'È uno strumento che utilizza algoritmi matematici (come il Bin Packing Problem) per determinare come tagliare pezzi più piccoli da un pezzo lungo standard (listello, profilo, tubo) con il minimo scarto possibile.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Perché includere lo spessore del taglio (Kerf)?',
|
|
18
|
+
answer:
|
|
19
|
+
'Ogni volta che la sega taglia il materiale, vengono consumati alcuni millimetri (normalmente tra 2mm e 4mm a seconda del disco). Se non calcoli questo spazio, gli ultimi pezzi della tua lista risulteranno più corti del previsto.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Posso mischiare pezzi di lunghezze diverse?',
|
|
23
|
+
answer:
|
|
24
|
+
'Sì, la nostra calcolatrice accetta qualsiasi combinazione di lunghezze e quantità. L\'algoritmo valuterà tutte le combinazioni possibili e darà priorità al massimo sfruttamento del materiale di stock.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Come salvo il mio piano di taglio?',
|
|
28
|
+
answer:
|
|
29
|
+
'Una volta ottimizzato, puoi stampare la pagina o fare uno screenshot dello schema visivo. Questo ti servirà da guida fisica in officina per non confondere l\'ordine dei tagli.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Definire il materiale base (Stock)',
|
|
36
|
+
text: 'Inserisci la lunghezza totale del listello o profilo disponibile (es. 2400mm o 6000mm).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Configurare lo spessore del disco (Kerf)',
|
|
40
|
+
text: 'Imposta i millimetri che la sega elimina ad ogni passaggio affinché il calcolo sia millimetrico.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Elencare i pezzi desiderati',
|
|
44
|
+
text: 'Scrivi la lunghezza e la quantità di ogni pezzo di cui hai bisogno per il tuo progetto.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Eseguire l\'ottimizzazione',
|
|
48
|
+
text: 'Ottieni lo schema di taglio più efficiente e la percentuale esatta di scarto generato.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'it',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<CutOptimizerUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Domande Frequenti',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Riferimenti Tecnici',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Cutting Stock Problem: Wikipedia',
|
|
96
|
+
url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Bin Packing Problem: Wolfram MathWorld',
|
|
100
|
+
url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: 'Guida Definitiva all\'Ottimizzazione del Taglio',
|
|
109
|
+
level: 2,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'L\'ottimizzazione del taglio, nota tecnicamente come il <strong>Problema del Taglio dello Stock (Cutting Stock Problem)</strong>, è una delle sfide logistiche più affascinanti nell\'ingegneria industriale. Per un progetto con 20 pezzi e 5 barre di stock, esistono milioni di combinazioni possibili. Un algoritmo computazionale può trovare la soluzione ottimale in millisecondi, riducendo lo scarto abituale del 15% a meno del 5%.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'title',
|
|
117
|
+
text: 'Taglio Lineare 1D e Taglio di Pannelli 2D',
|
|
118
|
+
level: 3,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'card',
|
|
122
|
+
icon: 'mdi:arrow-expand-horizontal',
|
|
123
|
+
title: 'Taglio Lineare per Listelli e Profili',
|
|
124
|
+
html: '<p>Nel <strong>taglio lineare (1D)</strong>, l\'ottimizzazione avviene in una sola dimensione: la lunghezza. La larghezza del materiale è assunta costante. È ideale per legno dimensionale (listelli, travi), profilati metallici e di alluminio, tubi in PVC o rame, e barre filettate.</p>',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'card',
|
|
128
|
+
icon: 'mdi:view-grid',
|
|
129
|
+
title: 'Taglio di Pannelli per Tavole e Lamiere',
|
|
130
|
+
html: '<p>Nel <strong>taglio di pannelli (2D)</strong>, si gestiscono due dimensioni: larghezza e lunghezza. Lo strumento utilizza algoritmi di tipo ghigliottina, dove ogni taglio va da bordo a bordo. Ideale per pannelli derivati (MDF, truciolato), compensato, vetro, metacrilato e lamiere metalliche.</p>',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'title',
|
|
134
|
+
text: 'Il Fattore Critico: Lo Spessore del Taglio (Kerf)',
|
|
135
|
+
level: 3,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Il <strong>Kerf</strong> è il materiale che viene eliminato ad ogni taglio. Un disco di sega circolare standard da banco consuma tra 3,0mm e 3,2mm per taglio. Una sega circolare a mano ne consuma da 1,5 a 2,5mm. Un taglio laser sul metacrilato appena 0,1-0,3mm. Ignorare il kerf in un progetto con 10 tagli su listelli da 2400mm può farti perdere tra 30mm e 32mm di materiale utile.',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'title',
|
|
143
|
+
text: 'L\'Algoritmo Best Fit Decreasing',
|
|
144
|
+
level: 3,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'card',
|
|
148
|
+
icon: 'mdi:chip',
|
|
149
|
+
title: 'Come Funziona l\'Ottimizzatore Internamente',
|
|
150
|
+
html: '<p>Il cuore dell\'ottimizzatore utilizza la strategia <strong>Best Fit Decreasing (BFD)</strong>: prima ordina tutti i pezzi dalla lunghezza maggiore alla minore (i pezzi grandi sono più difficili da incastrare). Poi, per ogni pezzo, cerca il resto esistente dove possa entrare lasciando il minor avanzo possibile. Solo se non entra in nessun resto, apre una nuova barra vergine. Questo processo riduce lo scarto di un ordine di grandezza rispetto alla selezione casuale.</p>',
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
ui: {
|
|
154
|
+
modeLinearLabel: 'Lineare (Barre)',
|
|
155
|
+
modePanelLabel: 'Pannello (Tavole)',
|
|
156
|
+
configTitle: 'Configurazione Materiale',
|
|
157
|
+
labelStockLength: 'Lunghezza Materiale (mm)',
|
|
158
|
+
labelStockWidth: 'Larghezza Materiale (mm)',
|
|
159
|
+
labelKerf: 'Spessore Lama / Kerf (mm)',
|
|
160
|
+
cutsTitle: 'Lista Tagli',
|
|
161
|
+
placeholderLength: 'Lunghezza',
|
|
162
|
+
placeholderWidth: 'Larghezza',
|
|
163
|
+
placeholderQty: 'Qtà',
|
|
164
|
+
btnRemoveTitle: 'Elimina',
|
|
165
|
+
statStockUsed: 'Materiale Usato',
|
|
166
|
+
statTotalCuts: 'Tagli Totali',
|
|
167
|
+
statWaste: 'Scarto Totale',
|
|
168
|
+
statEfficiency: 'Efficienza',
|
|
169
|
+
vizTitle: 'Visualizzazione Taglio',
|
|
170
|
+
emptyState: 'Aggiungi i tagli e premi calcola per vedere il piano di taglio.',
|
|
171
|
+
noValidCuts: 'Impossibile generare tagli validi. Verifica le misure.',
|
|
172
|
+
noValidPanels: 'Impossibile generare pannelli validi. Verifica che i pezzi entrino nella tavola.',
|
|
173
|
+
stockLabel: 'Materiale',
|
|
174
|
+
panelLabel: 'Pannello',
|
|
175
|
+
wasteLabel: 'Scarto:',
|
|
176
|
+
effLabel: 'Effic:',
|
|
177
|
+
},
|
|
178
|
+
};
|