@jjlmoya/utils-diy 1.1.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 +60 -0
- package/src/category/i18n/en.ts +110 -0
- package/src/category/i18n/es.ts +110 -0
- package/src/category/i18n/fr.ts +101 -0
- package/src/category/index.ts +25 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +11 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +57 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +146 -0
- package/src/pages/[locale].astro +251 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/balusterCalculator/bibliography.astro +14 -0
- package/src/tool/balusterCalculator/component.astro +605 -0
- package/src/tool/balusterCalculator/i18n/en.ts +264 -0
- package/src/tool/balusterCalculator/i18n/es.ts +264 -0
- package/src/tool/balusterCalculator/i18n/fr.ts +264 -0
- package/src/tool/balusterCalculator/index.ts +33 -0
- package/src/tool/balusterCalculator/seo.astro +15 -0
- package/src/tool/balusterCalculator/ui.ts +15 -0
- package/src/tool/clayCalculator/bibliography.astro +14 -0
- package/src/tool/clayCalculator/component.astro +731 -0
- package/src/tool/clayCalculator/i18n/en.ts +183 -0
- package/src/tool/clayCalculator/i18n/es.ts +183 -0
- package/src/tool/clayCalculator/i18n/fr.ts +183 -0
- package/src/tool/clayCalculator/index.ts +33 -0
- package/src/tool/clayCalculator/seo.astro +15 -0
- package/src/tool/clayCalculator/ui.ts +19 -0
- package/src/tool/concreteCalculator/bibliography.astro +13 -0
- package/src/tool/concreteCalculator/component.astro +1089 -0
- package/src/tool/concreteCalculator/i18n/en.ts +201 -0
- package/src/tool/concreteCalculator/i18n/es.ts +201 -0
- package/src/tool/concreteCalculator/i18n/fr.ts +201 -0
- package/src/tool/concreteCalculator/index.ts +28 -0
- package/src/tool/concreteCalculator/seo.astro +14 -0
- package/src/tool/concreteCalculator/ui.ts +35 -0
- package/src/tool/cutOptimizer/bibliography.astro +13 -0
- package/src/tool/cutOptimizer/component.astro +825 -0
- package/src/tool/cutOptimizer/i18n/en.ts +178 -0
- package/src/tool/cutOptimizer/i18n/es.ts +178 -0
- package/src/tool/cutOptimizer/i18n/fr.ts +178 -0
- package/src/tool/cutOptimizer/index.ts +28 -0
- package/src/tool/cutOptimizer/optimizer.ts +199 -0
- package/src/tool/cutOptimizer/seo.astro +14 -0
- package/src/tool/cutOptimizer/ui.ts +25 -0
- package/src/tool/drillCalculator/bibliography.astro +13 -0
- package/src/tool/drillCalculator/component.astro +1210 -0
- package/src/tool/drillCalculator/engine.ts +63 -0
- package/src/tool/drillCalculator/i18n/en.ts +137 -0
- package/src/tool/drillCalculator/i18n/es.ts +137 -0
- package/src/tool/drillCalculator/i18n/fr.ts +137 -0
- package/src/tool/drillCalculator/index.ts +28 -0
- package/src/tool/drillCalculator/seo.astro +14 -0
- package/src/tool/drillCalculator/ui.ts +41 -0
- package/src/tool/drillSharpener/bibliography.astro +13 -0
- package/src/tool/drillSharpener/component.astro +712 -0
- package/src/tool/drillSharpener/engine.ts +42 -0
- package/src/tool/drillSharpener/i18n/en.ts +121 -0
- package/src/tool/drillSharpener/i18n/es.ts +121 -0
- package/src/tool/drillSharpener/i18n/fr.ts +121 -0
- package/src/tool/drillSharpener/index.ts +31 -0
- package/src/tool/drillSharpener/seo.astro +14 -0
- package/src/tool/drillSharpener/ui.ts +53 -0
- package/src/tool/epoxyCalculator/bibliography.astro +14 -0
- package/src/tool/epoxyCalculator/component.astro +888 -0
- package/src/tool/epoxyCalculator/i18n/en.ts +195 -0
- package/src/tool/epoxyCalculator/i18n/es.ts +195 -0
- package/src/tool/epoxyCalculator/i18n/fr.ts +195 -0
- package/src/tool/epoxyCalculator/index.ts +33 -0
- package/src/tool/epoxyCalculator/seo.astro +15 -0
- package/src/tool/epoxyCalculator/ui.ts +22 -0
- package/src/tool/furnitureFit/bibliography.astro +13 -0
- package/src/tool/furnitureFit/component.astro +552 -0
- package/src/tool/furnitureFit/engine.ts +51 -0
- package/src/tool/furnitureFit/i18n/en.ts +152 -0
- package/src/tool/furnitureFit/i18n/es.ts +152 -0
- package/src/tool/furnitureFit/i18n/fr.ts +152 -0
- package/src/tool/furnitureFit/index.ts +28 -0
- package/src/tool/furnitureFit/seo.astro +14 -0
- package/src/tool/furnitureFit/ui.ts +21 -0
- package/src/tool/mortarCalculator/bibliography.astro +13 -0
- package/src/tool/mortarCalculator/component.astro +1139 -0
- package/src/tool/mortarCalculator/i18n/en.ts +219 -0
- package/src/tool/mortarCalculator/i18n/es.ts +205 -0
- package/src/tool/mortarCalculator/i18n/fr.ts +220 -0
- package/src/tool/mortarCalculator/index.ts +24 -0
- package/src/tool/mortarCalculator/seo.astro +14 -0
- package/src/tool/mortarCalculator/ui.ts +37 -0
- package/src/tool/passepartoutCalculator/bibliography.astro +13 -0
- package/src/tool/passepartoutCalculator/component.astro +741 -0
- package/src/tool/passepartoutCalculator/i18n/en.ts +178 -0
- package/src/tool/passepartoutCalculator/i18n/es.ts +178 -0
- package/src/tool/passepartoutCalculator/i18n/fr.ts +178 -0
- package/src/tool/passepartoutCalculator/index.ts +28 -0
- package/src/tool/passepartoutCalculator/seo.astro +14 -0
- package/src/tool/passepartoutCalculator/ui.ts +17 -0
- package/src/tool/stairCalculator/bibliography.astro +52 -0
- package/src/tool/stairCalculator/component.astro +766 -0
- package/src/tool/stairCalculator/engine.ts +128 -0
- package/src/tool/stairCalculator/i18n/en.ts +149 -0
- package/src/tool/stairCalculator/i18n/es.ts +149 -0
- package/src/tool/stairCalculator/i18n/fr.ts +149 -0
- package/src/tool/stairCalculator/index.ts +31 -0
- package/src/tool/stairCalculator/seo.astro +211 -0
- package/src/tool/stairCalculator/ui.ts +109 -0
- package/src/tool/thermalExpansionCalculator/bibliography.astro +13 -0
- package/src/tool/thermalExpansionCalculator/component.astro +771 -0
- package/src/tool/thermalExpansionCalculator/engine.ts +23 -0
- package/src/tool/thermalExpansionCalculator/i18n/en.ts +174 -0
- package/src/tool/thermalExpansionCalculator/i18n/es.ts +174 -0
- package/src/tool/thermalExpansionCalculator/i18n/fr.ts +174 -0
- package/src/tool/thermalExpansionCalculator/index.ts +28 -0
- package/src/tool/thermalExpansionCalculator/seo.astro +14 -0
- package/src/tool/thermalExpansionCalculator/ui.ts +41 -0
- package/src/tool/voltageDropCalculator/bibliography.astro +13 -0
- package/src/tool/voltageDropCalculator/component.astro +1022 -0
- package/src/tool/voltageDropCalculator/i18n/en.ts +155 -0
- package/src/tool/voltageDropCalculator/i18n/es.ts +155 -0
- package/src/tool/voltageDropCalculator/i18n/fr.ts +148 -0
- package/src/tool/voltageDropCalculator/index.ts +28 -0
- package/src/tool/voltageDropCalculator/seo.astro +14 -0
- package/src/tool/voltageDropCalculator/ui.ts +22 -0
- package/src/tools.ts +16 -0
- package/src/types.ts +72 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface DrillMaterial {
|
|
2
|
+
id: string;
|
|
3
|
+
angle: number;
|
|
4
|
+
vc: number;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface SharpenerResult {
|
|
9
|
+
angle: number;
|
|
10
|
+
vc: number;
|
|
11
|
+
diameter: number;
|
|
12
|
+
rpm: number;
|
|
13
|
+
cooling: string;
|
|
14
|
+
material: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const MATERIALS: DrillMaterial[] = [
|
|
18
|
+
{ id: 'steel', angle: 118, vc: 25, label: 'Acero / Hierro' },
|
|
19
|
+
{ id: 'inox', angle: 135, vc: 12, label: 'Inoxidable' },
|
|
20
|
+
{ id: 'hard', angle: 140, vc: 8, label: 'Aceros Duros' },
|
|
21
|
+
{ id: 'brass', angle: 90, vc: 40, label: 'Latón / Cobre' },
|
|
22
|
+
{ id: 'plastic', angle: 60, vc: 60, label: 'Plásticos' },
|
|
23
|
+
{ id: 'wood', angle: 80, vc: 35, label: 'Madera' }
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
export function calculateSharpener(materialId: string, diameter: number): SharpenerResult {
|
|
27
|
+
const material = MATERIALS.find(m => m.id === materialId) || MATERIALS[0];
|
|
28
|
+
const rpm = Math.round((material.vc * 1000) / (Math.PI * (diameter || 1)));
|
|
29
|
+
|
|
30
|
+
let cooling = 'TALADRINA';
|
|
31
|
+
if (material.angle >= 135) cooling = 'ACEITE CORTE';
|
|
32
|
+
else if (material.angle <= 70) cooling = 'AIRE / AGUA';
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
angle: material.angle,
|
|
36
|
+
vc: material.vc,
|
|
37
|
+
diameter,
|
|
38
|
+
rpm,
|
|
39
|
+
cooling,
|
|
40
|
+
material: material.label
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { DrillSharpenerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'drill-sharpening-master';
|
|
6
|
+
const title = 'Drill Sharpening Master: Precision Gauge';
|
|
7
|
+
const description = 'Interactive guide to sharpen HSS drill bits. Digital gauge on screen to verify 118° and 135° angles. Calculate RPM and diagnose cutting errors.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Can I place the drill bit directly on the screen?',
|
|
12
|
+
answer: 'Yes, the tool is designed for you to rest the drill bit axis on the center line of the digital gauge and verify the symmetry of the lips directly.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'How do I know if the clearance angle is correct?',
|
|
16
|
+
answer: 'When you rotate the drill bit, the back of the cutting edge should visibly drop lower. If the metal shines equally across the tip, you need more clearance.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'What RPM should I use after sharpening?',
|
|
20
|
+
answer: 'It depends on the diameter. Our integrated calculator will give you the exact value based on the material you selected.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'What is the difference between HSS and Carbide?',
|
|
24
|
+
answer: 'HSS (High Speed Steel) is more economical and impact-resistant. Carbide supports higher speeds but is more brittle. For manual sharpening, HSS is standard.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Do I need special equipment to sharpen?',
|
|
28
|
+
answer: 'A rotating grinding stone with medium grit (120-150) is sufficient. The important thing is to keep the stone balanced and flat for consistent results.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Select Material', text: 'Choose the metal or material you will drill to set the target angle and cutting speed.' },
|
|
34
|
+
{ name: 'Verify Symmetry', text: 'Place the drill bit on the screen and ensure both cutting edges align with the blue guide lines.' },
|
|
35
|
+
{ name: 'Check Clearance', text: 'Visually verify that the back of the cutting edge does not contact the workpiece (clearance angle).' },
|
|
36
|
+
{ name: 'Calculate RPM', text: 'Enter the diameter and set your drill to the recommended speed for the selected material.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((step, i) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
position: i + 1,
|
|
57
|
+
name: step.name,
|
|
58
|
+
text: step.text,
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
applicationCategory: 'UtilityApplication',
|
|
68
|
+
operatingSystem: 'All',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'en',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<DrillSharpenerUI> = {
|
|
74
|
+
slug,
|
|
75
|
+
title,
|
|
76
|
+
description,
|
|
77
|
+
faqTitle: 'Frequently Asked Questions',
|
|
78
|
+
faq: faqData,
|
|
79
|
+
bibliographyTitle: 'Technical References',
|
|
80
|
+
bibliography: [
|
|
81
|
+
{ name: 'Workshop Manual - Drill Bit Sharpening (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
|
|
82
|
+
{ name: 'Metal Technology - Drill Angles', url: 'https://en.wikipedia.org/wiki/Drill_bit' },
|
|
83
|
+
{ name: 'Mechanical Workshop Sharpening Standards', url: 'https://www.iso.org/' },
|
|
84
|
+
],
|
|
85
|
+
howTo: howToData,
|
|
86
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
87
|
+
seo: [
|
|
88
|
+
{ type: 'title', text: 'Drill Sharpening Master: Professional Technique', level: 2 },
|
|
89
|
+
{ type: 'paragraph', html: 'Drill bit sharpening is one of the most valuable skills in any workshop. A properly sharpened drill bit improves hole quality, extends tool life, and ensures operator safety.' },
|
|
90
|
+
{ type: 'title', text: 'The Fundamentals: Point Angle', level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: 'The point angle defines how the drill attacks the material. Standard angles are 118° for mild steel, 135° for stainless steel, and 140° for hard steels. Each material requires a different angle to maximize penetration without compromising edge strength.' },
|
|
92
|
+
{ type: 'title', text: 'The Overlooked Factor: Clearance Angle', level: 3 },
|
|
93
|
+
{ type: 'paragraph', html: 'The most common mistake is ignoring the clearance angle. If the surface behind the cutting edge is flat, the drill will simply rub, generating extreme heat. The solution is to slightly reduce the back of the cutting edge.' },
|
|
94
|
+
],
|
|
95
|
+
ui: {
|
|
96
|
+
labelMaterial: 'Work Material',
|
|
97
|
+
matSteel: 'Steel',
|
|
98
|
+
matInox: 'Stainless',
|
|
99
|
+
matHard: 'Hard',
|
|
100
|
+
matBrass: 'Brass',
|
|
101
|
+
matPlastic: 'Plastic',
|
|
102
|
+
matWood: 'Wood',
|
|
103
|
+
labelDiameter: 'Drill Diameter (mm)',
|
|
104
|
+
unitMm: 'mm',
|
|
105
|
+
btnMinus: '-',
|
|
106
|
+
btnPlus: '+',
|
|
107
|
+
labelVelocity: 'Speed',
|
|
108
|
+
unitRpm: 'RPM',
|
|
109
|
+
labelCooling: 'Cooling',
|
|
110
|
+
btnDiagnosis: 'Not cutting well? Diagnose',
|
|
111
|
+
diagTitle: 'Failure Diagnosis',
|
|
112
|
+
diagClose: 'Close',
|
|
113
|
+
diagIssue1: '1. Smokes but does not penetrate',
|
|
114
|
+
diagIssue1Desc: 'Missing clearance angle. The metal behind the edge rubs the workpiece. Reduce the back of the edge so the lip is highest.',
|
|
115
|
+
diagIssue2: '2. Hole is eccentric or oversized',
|
|
116
|
+
diagIssue2Desc: 'The tip is not centered. The cutting edges have different lengths. Ensure the tip touches the exact center of the gauge.',
|
|
117
|
+
diagIssue3: '3. Burned edges (Blue)',
|
|
118
|
+
diagIssue3Desc: 'Excessive speed. Check the RPM calculation for this diameter and material.',
|
|
119
|
+
gaugeInstruction: 'REST THE AXIS ON THE VERTICAL LINE',
|
|
120
|
+
},
|
|
121
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { DrillSharpenerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'afilador-maestro-brocas';
|
|
6
|
+
const title = 'Afilador Maestro de Brocas: Galga de Precisión';
|
|
7
|
+
const description = 'Guía interactiva para afilar brocas HSS. Galga digital en pantalla para verificar ángulos de 118° y 135°. Calcula RPM y diagnostica errores de corte.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '¿Puedo poner la broca directamente sobre la pantalla?',
|
|
12
|
+
answer: 'Sí, la herramienta está diseñada para que apoyes el eje de la broca sobre la línea central de la galga digital y verifiques la simetría de los labios directamente.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '¿Cómo sé si el ángulo de incidencia es correcto?',
|
|
16
|
+
answer: 'Al girar la broca, la parte trasera del filo debe quedar visiblemente más baja. Si ves que el metal brilla por igual en toda la punta, es que te falta destalonar.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '¿Qué revoluciones debo usar tras afilar?',
|
|
20
|
+
answer: 'Depende del diámetro; nuestra calculadora integrada te dará el dato exacto según el material que hayas seleccionado en el primer paso.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '¿Cuál es la diferencia entre HSS y Metal Duro?',
|
|
24
|
+
answer: 'El HSS (Acero Rápido) es más económico y resistente a golpes. El Metal Duro soporta mayores velocidades pero es más frágil. Para afilado manual, HSS es lo estándar.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '¿Necesito equipo especial para afilar?',
|
|
28
|
+
answer: 'Una piedra de esmeril rotatoria de grano medio (120-150) es suficiente. Lo importante es mantener la piedra equilibrada y plana para conseguir resultados consistentes.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Seleccionar Material', text: 'Elige el metal o material que vas a taladrar para fijar el ángulo objetivo y velocidad de corte.' },
|
|
34
|
+
{ name: 'Verificar Simetría', text: 'Apoya la broca en la pantalla y asegúrate de que ambos labios coincidan con las líneas azules.' },
|
|
35
|
+
{ name: 'Comprobar el Talón', text: 'Revisa visualmente que la parte trasera del filo no roce la pieza de trabajo (ángulo de incidencia).' },
|
|
36
|
+
{ name: 'Calcular RPM', text: 'Introduce el diámetro y ajusta tu taladro a la velocidad recomendada para el material seleccionado.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((step, i) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
position: i + 1,
|
|
57
|
+
name: step.name,
|
|
58
|
+
text: step.text,
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
applicationCategory: 'UtilityApplication',
|
|
68
|
+
operatingSystem: 'All',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'es',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<DrillSharpenerUI> = {
|
|
74
|
+
slug,
|
|
75
|
+
title,
|
|
76
|
+
description,
|
|
77
|
+
faqTitle: 'Preguntas Frecuentes',
|
|
78
|
+
faq: faqData,
|
|
79
|
+
bibliographyTitle: 'Referencias Técnicas',
|
|
80
|
+
bibliography: [
|
|
81
|
+
{ name: 'Manual de Taller - Afilado de Brocas (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
|
|
82
|
+
{ name: 'Tecnología de los Metales - Ángulos de Broca', url: 'https://es.wikipedia.org/wiki/Broca' },
|
|
83
|
+
{ name: 'Normas de Afilado en Taller Mecánico', url: 'https://www.inem.es/' },
|
|
84
|
+
],
|
|
85
|
+
howTo: howToData,
|
|
86
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
87
|
+
seo: [
|
|
88
|
+
{ type: 'title', text: 'Afilado Maestro de Brocas: Técnica Profesional', level: 2 },
|
|
89
|
+
{ type: 'paragraph', html: 'El afilado de brocas es una de las habilidades más valiosas en cualquier taller. Una broca correctamente afilada mejora la calidad del orificio, protege la vida útil de tus herramientas eléctricas y garantiza la seguridad del operario.' },
|
|
90
|
+
{ type: 'title', text: 'Los Pilares del Afilado: Ángulo de Punta', level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: 'El ángulo de punta define cómo la broca ataca el material. Los ángulos estándar son 118° para aceros suave, 135° para inoxidable y 140° para aceros duros. Cada material requiere un ángulo diferente para maximizar penetración sin comprometer resistencia.' },
|
|
92
|
+
{ type: 'title', text: 'El Gran Olvidado: Ángulo de Incidencia', level: 3 },
|
|
93
|
+
{ type: 'paragraph', html: 'El error más común es ignorar el ángulo de incidencia o destalonado. Si la cara trasera del filo está plana, la broca simplemente rozará generando calor extremo. La solución es rebajar ligeramente la parte trasera del labio.' },
|
|
94
|
+
],
|
|
95
|
+
ui: {
|
|
96
|
+
labelMaterial: 'Material del trabajo',
|
|
97
|
+
matSteel: 'Acero',
|
|
98
|
+
matInox: 'Inox',
|
|
99
|
+
matHard: 'Duros',
|
|
100
|
+
matBrass: 'Latón',
|
|
101
|
+
matPlastic: 'Plástico',
|
|
102
|
+
matWood: 'Madera',
|
|
103
|
+
labelDiameter: 'Diámetro de broca (mm)',
|
|
104
|
+
unitMm: 'mm',
|
|
105
|
+
btnMinus: '-',
|
|
106
|
+
btnPlus: '+',
|
|
107
|
+
labelVelocity: 'Velocidad',
|
|
108
|
+
unitRpm: 'RPM',
|
|
109
|
+
labelCooling: 'Corte',
|
|
110
|
+
btnDiagnosis: '¿No corta bien? Diagnóstico',
|
|
111
|
+
diagTitle: 'Diagnóstico de Fallos',
|
|
112
|
+
diagClose: 'Cerrar',
|
|
113
|
+
diagIssue1: '1. Saca humo y no atraviesa',
|
|
114
|
+
diagIssue1Desc: 'Falta Ángulo de Incidencia. El metal detrás del filo roza la pieza. Rebaja la parte trasera para que el labio sea lo más alto.',
|
|
115
|
+
diagIssue2: '2. Agujero excéntrico o mayor',
|
|
116
|
+
diagIssue2Desc: 'La Punta no está centrada. Los labios tienen longitudes diferentes. Asegura que la punta toque el centro exacto de la galga.',
|
|
117
|
+
diagIssue3: '3. Filos quemados (Azules)',
|
|
118
|
+
diagIssue3Desc: 'Velocidad excesiva. Revisa el cálculo de RPM de la herramienta para este diámetro y material.',
|
|
119
|
+
gaugeInstruction: 'APOYA EL EJE EN LA LÍNEA VERTICAL',
|
|
120
|
+
},
|
|
121
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { DrillSharpenerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'affuteur-maitrise-forets';
|
|
6
|
+
const title = 'Affûteur Maître de Forets: Jauge de Précision';
|
|
7
|
+
const description = 'Guide interactif pour affûter les forets HSS. Jauge numérique sur écran pour vérifier les angles de 118° et 135°. Calculez RPM et diagnostiquez les erreurs de coupe.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Puis-je placer le foret directement sur l\'écran?',
|
|
12
|
+
answer: 'Oui, l\'outil est conçu pour que vous reposiez l\'axe du foret sur la ligne centrale de la jauge numérique et vérifiez la symétrie des lèvres directement.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Comment sais-je si l\'angle de dépouille est correct?',
|
|
16
|
+
answer: 'Lorsque vous faites tourner le foret, l\'arrière de l\'arête tranchante doit être visiblement plus bas. Si le métal brille également sur toute la pointe, vous avez besoin de plus de dépouille.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Quel RPM dois-je utiliser après affûtage?',
|
|
20
|
+
answer: 'Cela dépend du diamètre. Notre calculatrice intégrée vous donnera la valeur exacte en fonction du matériau que vous avez sélectionné.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Quelle est la différence entre HSS et carbure?',
|
|
24
|
+
answer: 'L\'HSS (Acier rapide) est plus économique et résistant aux chocs. Le carbure supporte des vitesses plus élevées mais est plus fragile. Pour l\'affûtage manuel, l\'HSS est standard.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Ai-je besoin d\'un équipement spécial pour affûter?',
|
|
28
|
+
answer: 'Une meule rotative avec granulométrie moyenne (120-150) est suffisante. L\'important est de garder la pierre équilibrée et plate pour des résultats constants.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Sélectionner le matériau', text: 'Choisissez le métal ou le matériau que vous allez percer pour définir l\'angle cible et la vitesse de coupe.' },
|
|
34
|
+
{ name: 'Vérifier la symétrie', text: 'Placez le foret sur l\'écran et assurez-vous que les deux arêtes tranchantes s\'alignent avec les lignes bleues de guide.' },
|
|
35
|
+
{ name: 'Vérifier la dépouille', text: 'Vérifiez visuellement que l\'arrière de l\'arête tranchante ne contacte pas la pièce (angle de dépouille).' },
|
|
36
|
+
{ name: 'Calculer RPM', text: 'Entrez le diamètre et réglez votre perceuse à la vitesse recommandée pour le matériau sélectionné.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((step, i) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
position: i + 1,
|
|
57
|
+
name: step.name,
|
|
58
|
+
text: step.text,
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
applicationCategory: 'UtilityApplication',
|
|
68
|
+
operatingSystem: 'All',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'fr',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<DrillSharpenerUI> = {
|
|
74
|
+
slug,
|
|
75
|
+
title,
|
|
76
|
+
description,
|
|
77
|
+
faqTitle: 'Questions Fréquentes',
|
|
78
|
+
faq: faqData,
|
|
79
|
+
bibliographyTitle: 'Références Techniques',
|
|
80
|
+
bibliography: [
|
|
81
|
+
{ name: 'Manuel d\'atelier - Affûtage des forets (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
|
|
82
|
+
{ name: 'Technologie des métaux - Angles de forets', url: 'https://fr.wikipedia.org/wiki/Foret_%28outil%29' },
|
|
83
|
+
{ name: 'Normes d\'affûtage en atelier mécanique', url: 'https://www.iso.org/' },
|
|
84
|
+
],
|
|
85
|
+
howTo: howToData,
|
|
86
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
87
|
+
seo: [
|
|
88
|
+
{ type: 'title', text: 'Affûteur Maître de Forets: Technique Professionnelle', level: 2 },
|
|
89
|
+
{ type: 'paragraph', html: 'L\'affûtage des forets est l\'une des compétences les plus précieuses dans n\'importe quel atelier. Un foret correctement affûté améliore la qualité du trou, prolonge la durée de vie de vos outils et assure la sécurité de l\'opérateur.' },
|
|
90
|
+
{ type: 'title', text: 'Les Fondamentaux: Angle de Pointe', level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: 'L\'angle de pointe définit comment le foret attaque le matériau. Les angles standards sont 118° pour l\'acier doux, 135° pour l\'inoxydable et 140° pour les aciers durs. Chaque matériau nécessite un angle différent pour maximiser la pénétration sans compromettre la résistance de l\'arête.' },
|
|
92
|
+
{ type: 'title', text: 'Le Facteur Oublié: Angle de Dépouille', level: 3 },
|
|
93
|
+
{ type: 'paragraph', html: 'L\'erreur la plus courante est d\'ignorer l\'angle de dépouille. Si la surface derrière l\'arête tranchante est plate, le foret glissera simplement, générant une chaleur extrême. La solution est de réduire légèrement l\'arrière de l\'arête tranchante.' },
|
|
94
|
+
],
|
|
95
|
+
ui: {
|
|
96
|
+
labelMaterial: 'Matériau du travail',
|
|
97
|
+
matSteel: 'Acier',
|
|
98
|
+
matInox: 'Inox',
|
|
99
|
+
matHard: 'Durs',
|
|
100
|
+
matBrass: 'Laiton',
|
|
101
|
+
matPlastic: 'Plastique',
|
|
102
|
+
matWood: 'Bois',
|
|
103
|
+
labelDiameter: 'Diamètre du foret (mm)',
|
|
104
|
+
unitMm: 'mm',
|
|
105
|
+
btnMinus: '-',
|
|
106
|
+
btnPlus: '+',
|
|
107
|
+
labelVelocity: 'Vitesse',
|
|
108
|
+
unitRpm: 'RPM',
|
|
109
|
+
labelCooling: 'Coupe',
|
|
110
|
+
btnDiagnosis: 'Ne coupe pas bien? Diagnostique',
|
|
111
|
+
diagTitle: 'Diagnostic des Défaillances',
|
|
112
|
+
diagClose: 'Fermer',
|
|
113
|
+
diagIssue1: '1. Fume mais ne traverse pas',
|
|
114
|
+
diagIssue1Desc: 'Manque d\'angle de dépouille. Le métal derrière l\'arête frotte la pièce. Réduisez l\'arrière de l\'arête pour que la lèvre soit la plus haute.',
|
|
115
|
+
diagIssue2: '2. Trou excentrique ou surdimensionné',
|
|
116
|
+
diagIssue2Desc: 'La pointe n\'est pas centrée. Les arêtes tranchantes ont des longueurs différentes. Assurez-vous que la pointe touche le centre exact de la jauge.',
|
|
117
|
+
diagIssue3: '3. Arêtes brûlées (Bleues)',
|
|
118
|
+
diagIssue3Desc: 'Vitesse excessive. Vérifiez le calcul RPM pour ce diamètre et ce matériau.',
|
|
119
|
+
gaugeInstruction: 'REPOSEZ L\'AXE SUR LA LIGNE VERTICALE',
|
|
120
|
+
},
|
|
121
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import DrillSharpenerComponent from './component.astro';
|
|
2
|
+
import DrillSharpenerSEO from './seo.astro';
|
|
3
|
+
import DrillSharpenerBibliography from './bibliography.astro';
|
|
4
|
+
import type { DiyToolEntry, ToolDefinition } from '../../types';
|
|
5
|
+
import type { DrillSharpenerUI } from './ui';
|
|
6
|
+
import { drillSharpenerUI } from './ui';
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
DrillSharpenerComponent,
|
|
10
|
+
DrillSharpenerSEO,
|
|
11
|
+
DrillSharpenerBibliography,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const es = async () => (await import('./i18n/es')).content;
|
|
15
|
+
const en = async () => (await import('./i18n/en')).content;
|
|
16
|
+
const fr = async () => (await import('./i18n/fr')).content;
|
|
17
|
+
|
|
18
|
+
export const drillSharpener: DiyToolEntry<DrillSharpenerUI> = {
|
|
19
|
+
id: 'drill-sharpener',
|
|
20
|
+
icons: { bg: 'mdi:tools', fg: 'mdi:speedometer' },
|
|
21
|
+
i18n: { es, en, fr },
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const DRILL_SHARPENER_TOOL: ToolDefinition = {
|
|
25
|
+
entry: drillSharpener,
|
|
26
|
+
Component: DrillSharpenerComponent,
|
|
27
|
+
SEOComponent: DrillSharpenerSEO,
|
|
28
|
+
BibliographyComponent: DrillSharpenerBibliography,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { drillSharpenerUI };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { drillSharpener } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
const { locale = 'es' } = Astro.props;
|
|
10
|
+
const content = await drillSharpener.i18n[locale]?.();
|
|
11
|
+
if (!content) return null;
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<SEORenderer content={{ locale: locale as string, sections: content.seo }} />
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface DrillSharpenerUI {
|
|
2
|
+
labelMaterial: string;
|
|
3
|
+
matSteel: string;
|
|
4
|
+
matInox: string;
|
|
5
|
+
matHard: string;
|
|
6
|
+
matBrass: string;
|
|
7
|
+
matPlastic: string;
|
|
8
|
+
matWood: string;
|
|
9
|
+
labelDiameter: string;
|
|
10
|
+
unitMm: string;
|
|
11
|
+
btnMinus: string;
|
|
12
|
+
btnPlus: string;
|
|
13
|
+
labelVelocity: string;
|
|
14
|
+
unitRpm: string;
|
|
15
|
+
labelCooling: string;
|
|
16
|
+
btnDiagnosis: string;
|
|
17
|
+
diagTitle: string;
|
|
18
|
+
diagClose: string;
|
|
19
|
+
diagIssue1: string;
|
|
20
|
+
diagIssue1Desc: string;
|
|
21
|
+
diagIssue2: string;
|
|
22
|
+
diagIssue2Desc: string;
|
|
23
|
+
diagIssue3: string;
|
|
24
|
+
diagIssue3Desc: string;
|
|
25
|
+
gaugeInstruction: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const drillSharpenerUI: DrillSharpenerUI = {
|
|
29
|
+
labelMaterial: 'Material del trabajo',
|
|
30
|
+
matSteel: 'Acero',
|
|
31
|
+
matInox: 'Inox',
|
|
32
|
+
matHard: 'Duros',
|
|
33
|
+
matBrass: 'Latón',
|
|
34
|
+
matPlastic: 'Plástico',
|
|
35
|
+
matWood: 'Madera',
|
|
36
|
+
labelDiameter: 'Diámetro de broca (mm)',
|
|
37
|
+
unitMm: 'mm',
|
|
38
|
+
btnMinus: '-',
|
|
39
|
+
btnPlus: '+',
|
|
40
|
+
labelVelocity: 'Velocidad',
|
|
41
|
+
unitRpm: 'RPM',
|
|
42
|
+
labelCooling: 'Corte',
|
|
43
|
+
btnDiagnosis: '¿No corta bien? Diagnóstico',
|
|
44
|
+
diagTitle: 'Diagnóstico de Fallos',
|
|
45
|
+
diagClose: 'Cerrar',
|
|
46
|
+
diagIssue1: '1. Saca humo y no atraviesa',
|
|
47
|
+
diagIssue1Desc: 'Falta Ángulo de Incidencia. El metal detrás del filo roza la pieza. Rebaja la parte trasera para que el labio sea lo más alto.',
|
|
48
|
+
diagIssue2: '2. Agujero excéntrico o mayor',
|
|
49
|
+
diagIssue2Desc: 'La Punta no está centrada. Los labios tienen longitudes diferentes. Asegura que la punta toque el centro exacto de la galga.',
|
|
50
|
+
diagIssue3: '3. Filos quemados (Azules)',
|
|
51
|
+
diagIssue3Desc: 'Velocidad excesiva. Revisa el cálculo de RPM de la herramienta para este diámetro y material.',
|
|
52
|
+
gaugeInstruction: 'APOYA EL EJE EN LA LÍNEA VERTICAL'
|
|
53
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { epoxyCalculator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await epoxyCalculator.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SharedBibliography links={content.bibliography} />}
|