@jjlmoya/utils-diy 1.26.0 → 1.28.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 +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/locale_completeness.test.ts +2 -3
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/drywallCalculator/i18n/de.ts +1 -1
- package/src/tool/drywallCalculator/i18n/id.ts +2 -2
- package/src/tool/drywallCalculator/i18n/it.ts +2 -2
- package/src/tool/drywallCalculator/i18n/ja.ts +1 -1
- package/src/tool/drywallCalculator/i18n/ko.ts +1 -1
- package/src/tool/drywallCalculator/i18n/nl.ts +2 -2
- package/src/tool/drywallCalculator/i18n/pl.ts +3 -3
- package/src/tool/drywallCalculator/i18n/pt.ts +3 -3
- package/src/tool/drywallCalculator/i18n/ru.ts +2 -2
- package/src/tool/drywallCalculator/i18n/sv.ts +3 -3
- package/src/tool/drywallCalculator/i18n/tr.ts +3 -3
- package/src/tool/drywallCalculator/i18n/zh.ts +3 -3
- package/src/tool/drywallCalculator/seo.astro +12 -11
- package/src/tool/excavationVolumeCalculator/bibliography.astro +6 -0
- package/src/tool/excavationVolumeCalculator/bibliography.ts +12 -0
- package/src/tool/excavationVolumeCalculator/component.astro +80 -0
- package/src/tool/excavationVolumeCalculator/controller.ts +69 -0
- package/src/tool/excavationVolumeCalculator/dom-views.ts +63 -0
- package/src/tool/excavationVolumeCalculator/entry.ts +26 -0
- package/src/tool/excavationVolumeCalculator/evaluator.ts +21 -0
- package/src/tool/excavationVolumeCalculator/excavation-volume-calculator.css +442 -0
- package/src/tool/excavationVolumeCalculator/i18n/de.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/en.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/es.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/fr.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/id.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/it.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/ja.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/ko.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/nl.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/pl.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/pt.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/ru.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/sv.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/tr.ts +120 -0
- package/src/tool/excavationVolumeCalculator/i18n/zh.ts +120 -0
- package/src/tool/excavationVolumeCalculator/index.ts +11 -0
- package/src/tool/excavationVolumeCalculator/logic.test.ts +29 -0
- package/src/tool/excavationVolumeCalculator/logic.ts +35 -0
- package/src/tool/excavationVolumeCalculator/seo.astro +15 -0
- package/src/tool/excavationVolumeCalculator/storage.ts +28 -0
- package/src/tool/excavationVolumeCalculator/ui.ts +66 -0
- package/src/tools.ts +2 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ExcavationCalculatorUI } from '../ui';
|
|
4
|
+
import { excavationVolumeCalculatorBibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'calculadora-volume-escavacao-empolamento-solo';
|
|
7
|
+
const title = 'Calculadora de Volume de Escavação e Empolamento do Solo';
|
|
8
|
+
const description = 'Calcule o volume no banco (em estado natural) de uma escavação e estime o volume solto após escavar com uma faixa para areia, terra vegetal, argila e cascalho.';
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Qual é a diferença entre volume no banco (in situ) e volume solto?',
|
|
13
|
+
answer: 'O volume no banco é o volume do solo em estado natural antes de ser escavado. O volume solto é o espaço estimado que a terra ocupará após a escavação considerando o empolamento.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Como se calcula o volume de uma escavação?',
|
|
17
|
+
answer: 'Multiplique o comprimento pela largura e pela profundidade. Por exemplo, uma vala de 4m por 3m com 0,5m de profundidade tem um volume no banco de 6 metros cúbicos.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Por que a argila exige uma faixa de empolamento maior?',
|
|
21
|
+
answer: 'O comportamento da argila varia muito conforme a humidade e a densidade. A calculadora aplica uma faixa mais ampla para refletir essa variação volumétrica.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Esta calculadora substitui um estudo geotécnico?',
|
|
25
|
+
answer: 'Não. O resultado é uma estimativa para planeamento de transporte e caçambas. Para fundações ou muros de suporte, consulte um engenheiro geotécnico.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howTo = [
|
|
30
|
+
{ name: 'Inserir as dimensões da escavação', text: 'Insira o comprimento, a largura e a profundidade da escavação.' },
|
|
31
|
+
{ name: 'Selecionar o tipo de solo', text: 'Escolha areia, terra vegetal, argila ou cascalho para aplicar a taxa de empolamento correspondente.' },
|
|
32
|
+
{ name: 'Planear a logística de transporte', text: 'Utilize o volume no banco para a escavação e a faixa de volume solto para dimensionar camiões e caçambas.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const howToSchema: WithContext<HowTo> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'HowTo',
|
|
44
|
+
name: title,
|
|
45
|
+
description,
|
|
46
|
+
step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'SoftwareApplication',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
applicationCategory: 'UtilityApplication',
|
|
55
|
+
operatingSystem: 'All',
|
|
56
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
57
|
+
inLanguage: 'pt',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
|
|
61
|
+
slug,
|
|
62
|
+
title,
|
|
63
|
+
description,
|
|
64
|
+
faqTitle: 'Perguntas Frequentes',
|
|
65
|
+
faq,
|
|
66
|
+
bibliographyTitle: 'Fontes e notas técnicas',
|
|
67
|
+
bibliography: excavationVolumeCalculatorBibliography,
|
|
68
|
+
howTo,
|
|
69
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
70
|
+
seo: [
|
|
71
|
+
{ type: 'title', text: 'Dois volumes para duas necessidades de obra', level: 2 },
|
|
72
|
+
{ type: 'paragraph', html: 'O <strong>volume no banco</strong> (em estado in situ) representa a geometria exata da escavação em solo não alterado: comprimento multiplicado pela largura e pela profundidade. O <strong>volume solto</strong> representa o espaço real que o material escavado ocupará nos camiões, caçambas ou acopios temporários. Manter estes dois valores estritamente separados evita erros no planeamento de transporte e remoção de terras.' },
|
|
73
|
+
{ type: 'title', text: 'Usar a faixa solta para o planeamento de transporte', level: 3 },
|
|
74
|
+
{ type: 'paragraph', html: 'Selecione o perfil do solo mais representativo na calculadora e compare os limites inferior e superior do volume solto com a capacidade útil dos camiões e caçambas disponíveis. A faixa de valores é exibida intencionalmente porque o método de escavação, a humidade e a densidade do terreno alteram significativamente o resultado.' },
|
|
75
|
+
{ type: 'tip', title: 'O fator de empolamento não substitui o ensaio geotécnico', html: 'A humidade, o nível freático e o grau de compactação alteram o empolamento real do solo. Para obras de fundação, muros de suporte e gestão de terras contaminadas exige-se estudo de solos oficial.' },
|
|
76
|
+
{ type: 'title', text: 'Verificar hipóteses antes da contratação', level: 3 },
|
|
77
|
+
{ type: 'paragraph', html: 'Em solos heterogéneos ou incertos, faça a simulação com dois perfis plausíveis e dimensione a logística pelo valor mais conservador até dispor de medições no local.' },
|
|
78
|
+
],
|
|
79
|
+
ui: {
|
|
80
|
+
unitSystemLabel: 'Sistema de medição',
|
|
81
|
+
unitMetric: 'Métrico',
|
|
82
|
+
unitImperial: 'Imperial',
|
|
83
|
+
onboarding: 'Insira as dimensões da escavação, selecione o solo e use os dois volumes para planear a obra e o transporte.',
|
|
84
|
+
dimensionLabel: 'Dimensões da escavação',
|
|
85
|
+
lengthLabel: 'Comprimento',
|
|
86
|
+
widthLabel: 'Largura',
|
|
87
|
+
depthLabel: 'Profundidade',
|
|
88
|
+
soilLabel: 'Perfil do solo',
|
|
89
|
+
soilSand: 'Areia',
|
|
90
|
+
soilTopsoil: 'Terra vegetal',
|
|
91
|
+
soilClay: 'Argila',
|
|
92
|
+
soilGravel: 'Cascalho / Brita',
|
|
93
|
+
soilSandBand: 'Empolamento de 10 a 15%',
|
|
94
|
+
soilTopsoilBand: 'Empolamento de 15 a 25%',
|
|
95
|
+
soilClayBand: 'Empolamento de 25 a 40%',
|
|
96
|
+
soilGravelBand: 'Empolamento de 15 a 25%',
|
|
97
|
+
bankVolumeLabel: 'Volume no banco',
|
|
98
|
+
bankVolumeHelp: 'Solo in situ em estado natural',
|
|
99
|
+
looseVolumeLabel: 'Volume solto',
|
|
100
|
+
looseVolumeHelp: 'Faixa estimada após escavação',
|
|
101
|
+
expansionLabel: 'Empolamento aplicado',
|
|
102
|
+
expansionHelp: 'Faixa utilizada para o solo',
|
|
103
|
+
sceneTitle: 'Da escavação ao bota-fora',
|
|
104
|
+
sceneBank: 'no banco',
|
|
105
|
+
sceneLoose: 'material solto',
|
|
106
|
+
sceneGround: 'cota do terreno',
|
|
107
|
+
sceneCut: 'vala escavada',
|
|
108
|
+
interpretationTitle: 'Como interpretar os números.',
|
|
109
|
+
interpretationText: 'O primeiro valor indica o volume da vala. A faixa solta indica o volume extra que a terra ocupará no transporte.',
|
|
110
|
+
warning: 'Estimativa para planeamento logístico. Humidade e método de escavação alteram o volume solto real.',
|
|
111
|
+
unitLengthMetric: 'm',
|
|
112
|
+
unitLengthImperial: 'ft',
|
|
113
|
+
unitVolumeMetric: 'm³',
|
|
114
|
+
unitVolumeImperial: 'ft³',
|
|
115
|
+
soilStatusLow: 'empolamento baixo',
|
|
116
|
+
soilStatusMedium: 'empolamento moderado',
|
|
117
|
+
soilStatusHigh: 'empolamento elevado',
|
|
118
|
+
soilStatusLabel: 'Faixa de planeamento',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ExcavationCalculatorUI } from '../ui';
|
|
4
|
+
import { excavationVolumeCalculatorBibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'kalkulyator-obema-kotlovana-koeffitsienta-razryhleniya';
|
|
7
|
+
const title = 'Калькулятор Объема Котлована и Коэффициента Разрыхления Грунта';
|
|
8
|
+
const description = 'Рассчитайте объем грунта в плотном теле (в котловане) и оцените объем разрыхленного грунта с учетом коэффициента разрыхления для песка, растительного грунта, глины и гравия.';
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{
|
|
12
|
+
question: 'В чем разница между объемом в плотном теле и объемом в разрыхленном состоянии?',
|
|
13
|
+
answer: 'Объем в плотном теле - это геометрический объем котлована до выемки. Объем в разрыхленном состоянии - это объем, который вынятый грунт займет при транспортировке и складировании с учетом коэффициента разрыхления.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Как рассчитывается объем выемки грунта?',
|
|
17
|
+
answer: 'Умножьте длину котлована на ширину и глубину. Например, выемка 4 м на 3 м и глубиной 0,5 м дает объем в плотном теле 6 кубических метров.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Почему для глины используется более широкий диапазон разрыхления?',
|
|
21
|
+
answer: 'Свойства глины сильно зависят от влажности, плотности и состава. Инструмент использует более широкий диапазон, так как разрыхление глины варьируется сильнее.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Может ли этот калькулятор заменить инженерно-геологические изыскания?',
|
|
25
|
+
answer: 'Нет. Расчет является ориентировочным для планирования вывоза грунта и заказа самосвалов. Для фундаментов требуется геологическое заключение.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howTo = [
|
|
30
|
+
{ name: 'Введите размеры выемки', text: 'Укажите длину, ширину и глубину котлована.' },
|
|
31
|
+
{ name: 'Выберите тип грунта', text: 'Выберите песок, растительный грунт, глину или гравий для применения коэффициента разрыхления.' },
|
|
32
|
+
{ name: 'Спланируйте вывоз грунта', text: 'Используйте объем в плотном теле для выемки, а разрыхленный объем - для расчета самосвалов и контейнеров.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const howToSchema: WithContext<HowTo> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'HowTo',
|
|
44
|
+
name: title,
|
|
45
|
+
description,
|
|
46
|
+
step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'SoftwareApplication',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
applicationCategory: 'UtilityApplication',
|
|
55
|
+
operatingSystem: 'All',
|
|
56
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
57
|
+
inLanguage: 'ru',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
|
|
61
|
+
slug,
|
|
62
|
+
title,
|
|
63
|
+
description,
|
|
64
|
+
faqTitle: 'Часто Задаваемые Вопросы',
|
|
65
|
+
faq,
|
|
66
|
+
bibliographyTitle: 'Источники и технические примечания',
|
|
67
|
+
bibliography: excavationVolumeCalculatorBibliography,
|
|
68
|
+
howTo,
|
|
69
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
70
|
+
seo: [
|
|
71
|
+
{ type: 'title', text: 'Два объема для решения двух задач на стройплощадке', level: 2 },
|
|
72
|
+
{ type: 'paragraph', html: '<strong>Объем в плотном теле</strong> (также называемый естественным объемом) - это геометрия ненарушенного массива грунта: длина, умноженная на ширину и глубину выемки. <strong>Объем в разрыхленном состоянии</strong> - это объем, который грунт реально займет в кузове самосвала, контейнере или временном отвале после выемки. Четкое разделение этих двух показателей предотвращает ошибки при планировании вывоза грунта и заказе строительной техники.' },
|
|
73
|
+
{ type: 'title', text: 'Использование разрыхленного объема для логистики', level: 3 },
|
|
74
|
+
{ type: 'paragraph', html: 'Выберите наиболее соответствующий тип грунта в калькуляторе и сравните нижнюю и верхнюю границы разрыхленного объема с полезной вместимостью самосвалов, контейнеров и площадью складирования. Диапазон значений отображается преднамеренно, так как влажность, способ выемки и плотность грунта существенно влияют на конечный результат.' },
|
|
75
|
+
{ type: 'tip', title: 'Коэффициент разрыхления не заменяет изыскания', html: 'Влажность грунта, уровень грунтовых вод и степень естественного уплотнения влияют на реальный объем. Для фундаментов, подпорных стен и транспортировки зараженного грунта необходимы официальные инженерно-геологические изыскания.' },
|
|
76
|
+
{ type: 'title', text: 'Проверка до заказа техники', level: 3 },
|
|
77
|
+
{ type: 'paragraph', html: 'При неоднородном или неопределенном грунте выполните расчет для двух возможных типов и ориентируйтесь на больший объем вывоза до получения точных полевых замеров.' },
|
|
78
|
+
],
|
|
79
|
+
ui: {
|
|
80
|
+
unitSystemLabel: 'Система измерения',
|
|
81
|
+
unitMetric: 'Метрическая',
|
|
82
|
+
unitImperial: 'Имперская',
|
|
83
|
+
onboarding: 'Введите размеры котлована, выберите тип грунта и используйте оба объема для планирования работ и вывоза.',
|
|
84
|
+
dimensionLabel: 'Размеры котлована',
|
|
85
|
+
lengthLabel: 'Длина',
|
|
86
|
+
widthLabel: 'Ширина',
|
|
87
|
+
depthLabel: 'Глубина',
|
|
88
|
+
soilLabel: 'Тип грунта',
|
|
89
|
+
soilSand: 'Песок',
|
|
90
|
+
soilTopsoil: 'Растительный грунт',
|
|
91
|
+
soilClay: 'Глина / Суглинок',
|
|
92
|
+
soilGravel: 'Гравий',
|
|
93
|
+
soilSandBand: 'Разрыхление от 10 до 15%',
|
|
94
|
+
soilTopsoilBand: 'Разрыхление от 15 до 25%',
|
|
95
|
+
soilClayBand: 'Разрыхление от 25 до 40%',
|
|
96
|
+
soilGravelBand: 'Разрыхление от 15 до 25%',
|
|
97
|
+
bankVolumeLabel: 'Объем в плотном теле',
|
|
98
|
+
bankVolumeHelp: 'Ненарушенный грунт в котловане',
|
|
99
|
+
looseVolumeLabel: 'Объем в разрыхленном состоянии',
|
|
100
|
+
looseVolumeHelp: 'Оценка объема после выемки',
|
|
101
|
+
expansionLabel: 'Примененное разрыхление',
|
|
102
|
+
expansionHelp: 'Диапазон для выбранного грунта',
|
|
103
|
+
sceneTitle: 'От котлована до отвала',
|
|
104
|
+
sceneBank: 'в плотном теле',
|
|
105
|
+
sceneLoose: 'разрыхленный грунт',
|
|
106
|
+
sceneGround: 'уровень земли',
|
|
107
|
+
sceneCut: 'вырытый котлован',
|
|
108
|
+
interpretationTitle: 'Как использовать результаты.',
|
|
109
|
+
interpretationText: 'Первое число показывает объем котлована. Диапазон показывает объем разрыхленного грунта для вывоза.',
|
|
110
|
+
warning: 'Ориентировочный расчет для логистики. Влажность и метод выемки меняют реальный разрыхленный объем.',
|
|
111
|
+
unitLengthMetric: 'м',
|
|
112
|
+
unitLengthImperial: 'фут',
|
|
113
|
+
unitVolumeMetric: 'м³',
|
|
114
|
+
unitVolumeImperial: 'фут³',
|
|
115
|
+
soilStatusLow: 'низкое разрыхление',
|
|
116
|
+
soilStatusMedium: 'умеренное разрыхление',
|
|
117
|
+
soilStatusHigh: 'высокое разрыхление',
|
|
118
|
+
soilStatusLabel: 'Диапазон расчета',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ExcavationCalculatorUI } from '../ui';
|
|
4
|
+
import { excavationVolumeCalculatorBibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'schaktvolymberaknare-volymokning-jord';
|
|
7
|
+
const title = 'Schaktvolymberäknare och Volymökning Jord';
|
|
8
|
+
const description = 'Beräkna schaktvolym i fast mått (i marken) och uppskatta lösvolym efter grävning med svällningsintervall för sand, matjord, lera och grus.';
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Vad är skillnaden mellan fast mått (fast volym) och lösvolym?',
|
|
13
|
+
answer: 'Fast mått är jordens volym i opåverkat tillstånd i marken. Lösvolym är den volym jorden intar efter grävning då den sväller och blir luftig.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Hur beräknas schaktvolymen?',
|
|
17
|
+
answer: 'Multiplicera längd, bredd och djup. En schakt som är 4 meter lång, 3 meter bred och 0,5 meter djup har en fast volym på 6 kubikmeter.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Varför har lera ett bredare svällningsintervall?',
|
|
21
|
+
answer: 'Lerans egenskaper beror starkt på fukthalt och densitet. Verktyget använder ett bredare intervall eftersom lerans volymökning varierar mer.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Ersätter denna beräknare en geoteknisk undersökning?',
|
|
25
|
+
answer: 'Nej. Resultatet är en uppskattning för transport och containerplanering. Anlita en geotekniker vid grundläggning eller schaktning nära byggnader.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howTo = [
|
|
30
|
+
{ name: 'Ange schaktmått', text: 'Fyll i längd, bredd och djup för schaktningen.' },
|
|
31
|
+
{ name: 'Välj jordart', text: 'Välj sand, matjord, lera eller grus för att applicera svällningsfaktorn.' },
|
|
32
|
+
{ name: 'Planera borttransport', text: 'Använd fast mått för grävningen och lösvolym för att beräkna antal containers eller lastbilar.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const howToSchema: WithContext<HowTo> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'HowTo',
|
|
44
|
+
name: title,
|
|
45
|
+
description,
|
|
46
|
+
step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'SoftwareApplication',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
applicationCategory: 'UtilityApplication',
|
|
55
|
+
operatingSystem: 'All',
|
|
56
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
57
|
+
inLanguage: 'sv',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
|
|
61
|
+
slug,
|
|
62
|
+
title,
|
|
63
|
+
description,
|
|
64
|
+
faqTitle: 'Vanliga Frågor',
|
|
65
|
+
faq,
|
|
66
|
+
bibliographyTitle: 'Källor och tekniska anteckningar',
|
|
67
|
+
bibliography: excavationVolumeCalculatorBibliography,
|
|
68
|
+
howTo,
|
|
69
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
70
|
+
seo: [
|
|
71
|
+
{ type: 'title', text: 'Två volymer för två behov på byggarbetsplatsen', level: 2 },
|
|
72
|
+
{ type: 'paragraph', html: '<strong>Fast mått</strong> (även kallat bank volume) beskriver gropens exakta geometriska volym i orörd mark: längd gånger bredd gånger djup. <strong>Lösvolym</strong> beskriver den verkliga volym som den uppgrävda jorden tar upp på lastbilsflaket, i avfallscontainern eller på det tillfälliga upplaget efter svällning. Att hålla dessa två volymmått strikt åtskilda förhindrar felaktiga transport- och logistikberäkningar.' },
|
|
73
|
+
{ type: 'title', text: 'Använd lösvolymsintervallet för logistikplanering', level: 3 },
|
|
74
|
+
{ type: 'paragraph', html: 'Välj den jordart som bäst motsvarar markförhållandena i beräknaren och jämför det nedre och övre lösvolymsvärdet med flakkapacitet, containerstorlek och tillgänglig upplagsyta. Intervallet visas avsiktligt eftersom grävmetod, fukthalt och markens packningsgrad påverkar det slutliga resultatet avsevärt.' },
|
|
75
|
+
{ type: 'tip', title: 'Schaktsvallning ersätter inte markundersökning', html: 'Fukthalt, grundvattennivå och packningsgrad påverkar den faktiska volymökningen. Vid grundläggning, stödmurar och hantering av förorenade massor krävs alltid en formell geoteknisk markundersökning.' },
|
|
76
|
+
{ type: 'title', text: 'Kontrollera antaganden före beställning', level: 3 },
|
|
77
|
+
{ type: 'paragraph', html: 'Vid osäkerhet om den exakta jordarten på platsen är det säkrast att göra en provberäkning med två sannolika profiler och planera för den högre transportvolymen tills exakta mätningar har utförts.' },
|
|
78
|
+
],
|
|
79
|
+
ui: {
|
|
80
|
+
unitSystemLabel: 'Måttsystem',
|
|
81
|
+
unitMetric: 'Metrisk',
|
|
82
|
+
unitImperial: 'Imperial',
|
|
83
|
+
onboarding: 'Fyll i schaktens mått, välj jordart och använd båda volymvärdena för planering och borttransport.',
|
|
84
|
+
dimensionLabel: 'Schaktens mått',
|
|
85
|
+
lengthLabel: 'Längd',
|
|
86
|
+
widthLabel: 'Bredd',
|
|
87
|
+
depthLabel: 'Djup',
|
|
88
|
+
soilLabel: 'Jordart',
|
|
89
|
+
soilSand: 'Sand',
|
|
90
|
+
soilTopsoil: 'Matjord',
|
|
91
|
+
soilClay: 'Lera',
|
|
92
|
+
soilGravel: 'Grus',
|
|
93
|
+
soilSandBand: '10 till 15% svällning',
|
|
94
|
+
soilTopsoilBand: '15 till 25% svällning',
|
|
95
|
+
soilClayBand: '25 till 40% svällning',
|
|
96
|
+
soilGravelBand: '15 till 25% svällning',
|
|
97
|
+
bankVolumeLabel: 'Fast mått',
|
|
98
|
+
bankVolumeHelp: 'Orörd jord i marken',
|
|
99
|
+
looseVolumeLabel: 'Lösvolym',
|
|
100
|
+
looseVolumeHelp: 'Uppskattat intervall efter grävning',
|
|
101
|
+
expansionLabel: 'Tillämpad svällning',
|
|
102
|
+
expansionHelp: 'Intervall för vald jordart',
|
|
103
|
+
sceneTitle: 'Från schakt till upplag',
|
|
104
|
+
sceneBank: 'i marken',
|
|
105
|
+
sceneLoose: 'lösa massor',
|
|
106
|
+
sceneGround: 'marknivå',
|
|
107
|
+
sceneCut: 'utgrävd schakt',
|
|
108
|
+
interpretationTitle: 'Hur du använder resultaten.',
|
|
109
|
+
interpretationText: 'Det första talet visar gropens volym. Intervallet visar den extra volym som massorna tar upp vid borttransport.',
|
|
110
|
+
warning: 'Endast för logistikplanering. Fukt och grävmetod påverkar den faktiska lösvolymen.',
|
|
111
|
+
unitLengthMetric: 'm',
|
|
112
|
+
unitLengthImperial: 'ft',
|
|
113
|
+
unitVolumeMetric: 'm³',
|
|
114
|
+
unitVolumeImperial: 'ft³',
|
|
115
|
+
soilStatusLow: 'låg svällning',
|
|
116
|
+
soilStatusMedium: 'måttlig svällning',
|
|
117
|
+
soilStatusHigh: 'hög svällning',
|
|
118
|
+
soilStatusLabel: 'Planeringsintervall',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ExcavationCalculatorUI } from '../ui';
|
|
4
|
+
import { excavationVolumeCalculatorBibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'kazi-hacmi-toprak-kabarma-hesaplama';
|
|
7
|
+
const title = 'Kazı Hacmi Hesaplama ve Toprak Kabarma Miktarı';
|
|
8
|
+
const description = 'Kazı öncesi doğal zemin hacmini hesaplayın ve kum, bahçe toprağı, kil ve çakıl için kabarma oranı ile gevşek toprak hacmini tahmin edin.';
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Doğal zemin hacmi (sıkışık hacim) ile gevşek hacim arasındaki fark nedir?',
|
|
13
|
+
answer: 'Doğal zemin hacmi, kazı yapılmadan önce toprağın yerindeki hacmidir. Gevşek hacim ise kazı sonrasında toprağın kabarmasıyla kaplayacağı tahmini hacimdir.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Kazı hacmi nasıl hesaplanır?',
|
|
17
|
+
answer: 'Uzunluk, genişlik ve derinlik değerlerini birbiriyle çarpın. Örneğin 4 m uzunluğunda, 3 m genişliğinde ve 0.5 m derinliğinde bir kazının kabarma öncesi doğal hacmi 6 metreküptür.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Kil neden daha geniş bir kabarma oranına sahiptir?',
|
|
21
|
+
answer: 'Kilin yapısı nem oranına ve yoğunluğa oldukça duyarlıdır. Bu nedenle hesaplayıcı killi topraklar için daha geniş bir tahmin aralığı sunar.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Bu hesaplayıcı jeoteknik zemin etüdünün yerine geçer mi?',
|
|
25
|
+
answer: 'Hayır. Bu araç hafriyat nakliyesi ve konteyner planlaması için ön tahminde bulunur. Temel ve istinat duvarı projelerinde jeoteknik rapor zorunludur.',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howTo = [
|
|
30
|
+
{ name: 'Kazı ölçülerini girin', text: 'Kazılacak alanın uzunluk, genişlik ve derinliğini girin.' },
|
|
31
|
+
{ name: 'Toprak tipini seçin', text: 'Kum, bahçe toprağı, kil veya çakıl seçeneklerinden uygun olanı belirleyin.' },
|
|
32
|
+
{ name: 'Nakliye planlamasını yapın', text: 'Zemin hacmini kazı alanı için, gevşek hacmi ise hafriyat kamyonu sayısını belirlemek için kullanın.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const howToSchema: WithContext<HowTo> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'HowTo',
|
|
44
|
+
name: title,
|
|
45
|
+
description,
|
|
46
|
+
step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'SoftwareApplication',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
applicationCategory: 'UtilityApplication',
|
|
55
|
+
operatingSystem: 'All',
|
|
56
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
57
|
+
inLanguage: 'tr',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
|
|
61
|
+
slug,
|
|
62
|
+
title,
|
|
63
|
+
description,
|
|
64
|
+
faqTitle: 'Sıkça Sorulan Sorular',
|
|
65
|
+
faq,
|
|
66
|
+
bibliographyTitle: 'Kaynaklar ve teknik notlar',
|
|
67
|
+
bibliography: excavationVolumeCalculatorBibliography,
|
|
68
|
+
howTo,
|
|
69
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
70
|
+
seo: [
|
|
71
|
+
{ type: 'title', text: 'Şantiyedeki İki Farklı Hacim İhtiyacı', level: 2 },
|
|
72
|
+
{ type: 'paragraph', html: '<strong>Doğal zemin hacmi</strong> (sıkışık zemin hacmi olarak da bilinir), kazılacak çukurun bozulmamış haldeki geometrik ölçüsüdür: uzunluk × genişlik × derinlik. <strong>Gevşek hacim</strong> ise kazılan toprağın kabarması sonucu hafriyat kamyonlarında, konteynerlerde veya geçici döküm sahalarında kaplayacağı gerçek hacimdir. Bu iki farklı hacim değerini ayrı tutmak, lojistik ve nakliye hesaplamalarının yanlış zemin durumuna göre yapılmasını engeller.' },
|
|
73
|
+
{ type: 'title', text: 'Nakliye ve Hafriyat Planlamasında Kullanım', level: 3 },
|
|
74
|
+
{ type: 'paragraph', html: 'Hesaplayıcıda şantiyenize en uygun toprak türünü seçin ve tahmin edilen gevşek hacim alt ve üst sınırlarını mevcut hafriyat kamyonu kasası kapasiteleri, konteyner boyutları ve geçici depolama alanı ile karşılaştırın. Aralık şeklinde gösterilmesinin sebebi, kazı yöntemi, toprağın nem oranı ve sıkışma derecesinin sonucu önemli ölçüde değiştirmesidir.' },
|
|
75
|
+
{ type: 'tip', title: 'Kabarma oranı zemin etüdü yerine geçmez', html: 'Nem oranı, yeraltı su seviyesi ve doğal sıkışma miktarı gerçek kabarmayı değiştirir. Yapı temelleri, istinat duvarları ve kontamine toprak nakliyesi projelerinde resmi jeoteknik zemin etüt raporu alınması zorunludur.' },
|
|
76
|
+
{ type: 'title', text: 'Kamyon Siparişinden Önce Değerlendirin', level: 3 },
|
|
77
|
+
{ type: 'paragraph', html: 'Zemin türünden emin değilseniz daha yüksek kabarma oranına sahip iki olası zemin profili ile deneme hesabı yapın ve saha içi kesin ölçümler yapılana kadar en yüksek nakliye ihtiyacını esas alarak planlama yapın.' },
|
|
78
|
+
],
|
|
79
|
+
ui: {
|
|
80
|
+
unitSystemLabel: 'Ölçü sistemi',
|
|
81
|
+
unitMetric: 'Metrik',
|
|
82
|
+
unitImperial: 'İngiliz (Imperial)',
|
|
83
|
+
onboarding: 'Kazı ölçülerini girin, toprak türünü seçin ve hafriyat ile nakliye planlaması için iki hacim değerini kullanın.',
|
|
84
|
+
dimensionLabel: 'Kazı ölçüleri',
|
|
85
|
+
lengthLabel: 'Uzunluk',
|
|
86
|
+
widthLabel: 'Genişlik',
|
|
87
|
+
depthLabel: 'Derinlik',
|
|
88
|
+
soilLabel: 'Toprak türü',
|
|
89
|
+
soilSand: 'Kum',
|
|
90
|
+
soilTopsoil: 'Bahçe toprağı / Bitkisel toprak',
|
|
91
|
+
soilClay: 'Kil / Kil karışımı',
|
|
92
|
+
soilGravel: 'Çakıl',
|
|
93
|
+
soilSandBand: '%10 - %15 kabarma',
|
|
94
|
+
soilTopsoilBand: '%15 - %25 kabarma',
|
|
95
|
+
soilClayBand: '%25 - %40 kabarma',
|
|
96
|
+
soilGravelBand: '%15 - %25 kabarma',
|
|
97
|
+
bankVolumeLabel: 'Doğal zemin hacmi',
|
|
98
|
+
bankVolumeHelp: 'Kazı öncesi yerindeki toprak',
|
|
99
|
+
looseVolumeLabel: 'Gevşek toprak hacmi',
|
|
100
|
+
looseVolumeHelp: 'Kazı sonrası tahmini hacim aralığı',
|
|
101
|
+
expansionLabel: 'Uygulanan kabarma oranı',
|
|
102
|
+
expansionHelp: 'Seçilen toprak için kullanılan aralık',
|
|
103
|
+
sceneTitle: 'Kazı alanından döküm sahasına',
|
|
104
|
+
sceneBank: 'doğal zeminde',
|
|
105
|
+
sceneLoose: 'gevşek toprak',
|
|
106
|
+
sceneGround: 'zemin seviyesi',
|
|
107
|
+
sceneCut: 'açılan kazı çukuru',
|
|
108
|
+
interpretationTitle: 'Sonuçlar nasıl kullanılır?',
|
|
109
|
+
interpretationText: 'İlk sayı açılacak çukurun hacmidir. Aralıklı sayı ise kazılan toprağın nakliyede kaplayacağı hacimdir.',
|
|
110
|
+
warning: 'Nakliye planlaması için tahmini değerdir. Nem ve kazı yöntemi gerçek hacmi etkileyebilir.',
|
|
111
|
+
unitLengthMetric: 'm',
|
|
112
|
+
unitLengthImperial: 'ft',
|
|
113
|
+
unitVolumeMetric: 'm³',
|
|
114
|
+
unitVolumeImperial: 'ft³',
|
|
115
|
+
soilStatusLow: 'düşük kabarma',
|
|
116
|
+
soilStatusMedium: 'orta kabarma',
|
|
117
|
+
soilStatusHigh: 'yüksek kabarma',
|
|
118
|
+
soilStatusLabel: 'Planlama aralığı',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ExcavationCalculatorUI } from '../ui';
|
|
4
|
+
import { excavationVolumeCalculatorBibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'excavation-volume-soil-swell-calculator';
|
|
7
|
+
const title = '土方开挖量计算器与土方松散膨胀率估算';
|
|
8
|
+
const description = '计算开挖前的天然密实土方量(天然体方),并根据砂土、表土、粘土和碎石的松散膨胀系数,估算开挖后的松方体积范围。';
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{
|
|
12
|
+
question: '天然体方(Bank Volume)与松方(Loose Volume)有什么区别?',
|
|
13
|
+
answer: '天然体方是指开挖前未受扰动状态下的土壤体积,由开挖长度、宽度和深度直接相乘计算。松方是指开挖后土壤受到扰动、孔隙率增加后的预计堆积体积。',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: '如何计算土方开挖量?',
|
|
17
|
+
answer: '将开挖长度乘以宽度和深度。例如,长4米、宽3米、深0.5米的基坑开挖,在未考虑土壤松散膨胀时的天然体方为6立方米。',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: '为什么粘土需要设置更宽的松散膨胀率范围?',
|
|
21
|
+
answer: '粘土的物理特性受含水量、密实度和矿物成分影响极大。因此本工具为粘土设置了更宽的规划区间,以适应其多变的体积膨胀响应。',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: '本计算器可以替代岩土工程勘察报告吗?',
|
|
25
|
+
answer: '不能。本计算器结果仅作为土方运输、渣土车安排和临时堆场规划的参考估算。涉及到建筑物基础、挡土墙或污染土方处置时,必须进行专业的岩土工程勘察。',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howTo = [
|
|
30
|
+
{ name: '输入开挖尺寸', text: '输入基坑或沟槽的长度、宽度和深度。可根据需要切换公制或英制单位。' },
|
|
31
|
+
{ name: '选择最接近的土壤类型', text: '选择砂土、表土、粘土或碎石,以应用对应的松散膨胀系数区间。' },
|
|
32
|
+
{ name: '规划土方运输与堆放', text: '使用天然体方评估开挖工作量,使用松方体积区间安排渣土车车次、清运容器或临时堆场面积。' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const howToSchema: WithContext<HowTo> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'HowTo',
|
|
44
|
+
name: title,
|
|
45
|
+
description,
|
|
46
|
+
step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'SoftwareApplication',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
applicationCategory: 'UtilityApplication',
|
|
55
|
+
operatingSystem: 'All',
|
|
56
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
57
|
+
inLanguage: 'zh',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
|
|
61
|
+
slug,
|
|
62
|
+
title,
|
|
63
|
+
description,
|
|
64
|
+
faqTitle: '常见问题解答',
|
|
65
|
+
faq,
|
|
66
|
+
bibliographyTitle: '参考来源与技术说明',
|
|
67
|
+
bibliography: excavationVolumeCalculatorBibliography,
|
|
68
|
+
howTo,
|
|
69
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
70
|
+
seo: [
|
|
71
|
+
{ type: 'title', text: '两个体积指标解决施工现场的两大核心问题', level: 2 },
|
|
72
|
+
{ type: 'paragraph', html: '<strong>天然体方</strong>代表未扰动地基的开挖几何体积:长度乘以宽度再乘以深度。<strong>松方体积</strong>则代表挖掘出来的土方在装车或堆放时所占据的空间。区分这两个概念可以防止按错误状态估算渣土车车次或堆场面积。' },
|
|
73
|
+
{ type: 'title', text: '利用松方区间合理规划物流与运输', level: 3 },
|
|
74
|
+
{ type: 'paragraph', html: '选择最符合现场的土壤类型,并将估算的松方区间上下限与渣土车载重、容器容量及临时堆场面积进行对比。显示区间范围是因为开挖方式和土壤含水量都会改变实际松散率。' },
|
|
75
|
+
{ type: 'tip', title: '经验膨胀系数不能替代土工试验', html: '粘土矿物、地下水和含水量可能会导致实际膨胀率超出经验范围。基础工程、挡土结构和受污染土方必须经过正式的岩土工程检测。' },
|
|
76
|
+
{ type: 'title', text: '在安排运力前核对估算假设', level: 3 },
|
|
77
|
+
{ type: 'paragraph', html: '如果土质不够明确,建议使用两种可能的土壤类型分别计算,并在现场实测前按较大估算值准备运输能力,以确保施工安全。' },
|
|
78
|
+
],
|
|
79
|
+
ui: {
|
|
80
|
+
unitSystemLabel: '计量单位体系',
|
|
81
|
+
unitMetric: '公制',
|
|
82
|
+
unitImperial: '英制',
|
|
83
|
+
onboarding: '请输入开挖尺寸并选择土壤类型,利用天然体方和松方体积结果规划施工与清运。',
|
|
84
|
+
dimensionLabel: '开挖几何尺寸',
|
|
85
|
+
lengthLabel: '长度',
|
|
86
|
+
widthLabel: '宽度',
|
|
87
|
+
depthLabel: '深度',
|
|
88
|
+
soilLabel: '土壤类型',
|
|
89
|
+
soilSand: '砂土',
|
|
90
|
+
soilTopsoil: '表土 / 耕作土',
|
|
91
|
+
soilClay: '粘土 / 粘性土',
|
|
92
|
+
soilGravel: '碎石 / 砾石',
|
|
93
|
+
soilSandBand: '膨胀率 10% 至 15%',
|
|
94
|
+
soilTopsoilBand: '膨胀率 15% 至 25%',
|
|
95
|
+
soilClayBand: '膨胀率 25% 至 40%',
|
|
96
|
+
soilGravelBand: '膨胀率 15% 至 25%',
|
|
97
|
+
bankVolumeLabel: '天然体方 (天然密实)',
|
|
98
|
+
bankVolumeHelp: '开挖前地基未扰动土方量',
|
|
99
|
+
looseVolumeLabel: '松方体积 (开挖后)',
|
|
100
|
+
looseVolumeHelp: '开挖后堆积或运输预计体积',
|
|
101
|
+
expansionLabel: '应用土壤膨胀率',
|
|
102
|
+
expansionHelp: '针对所选土壤类型的系数范围',
|
|
103
|
+
sceneTitle: '从地基开挖到堆场运输',
|
|
104
|
+
sceneBank: '天然地基',
|
|
105
|
+
sceneLoose: '松散土方',
|
|
106
|
+
sceneGround: '地面标高',
|
|
107
|
+
sceneCut: '开挖基坑断面',
|
|
108
|
+
interpretationTitle: '如何解读计算结果',
|
|
109
|
+
interpretationText: '第一个数值代表挖出基坑的尺寸。范围数值代表挖出的松散土方所占用的空间。',
|
|
110
|
+
warning: '本结果仅用于施工物流规划估算。含水量、密实度和挖掘方式均会改变实际松散体积,不能替代岩土工程勘察报告。',
|
|
111
|
+
unitLengthMetric: 'm',
|
|
112
|
+
unitLengthImperial: 'ft',
|
|
113
|
+
unitVolumeMetric: 'm³',
|
|
114
|
+
unitVolumeImperial: 'ft³',
|
|
115
|
+
soilStatusLow: '低膨胀率区间',
|
|
116
|
+
soilStatusMedium: '中度膨胀率区间',
|
|
117
|
+
soilStatusHigh: '高膨胀率区间',
|
|
118
|
+
soilStatusLabel: '规划参考区间',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../../types';
|
|
2
|
+
import { excavationVolumeCalculator } from './entry';
|
|
3
|
+
|
|
4
|
+
export * from './entry';
|
|
5
|
+
|
|
6
|
+
export const EXCAVATION_VOLUME_CALCULATOR_TOOL: ToolDefinition = {
|
|
7
|
+
entry: excavationVolumeCalculator,
|
|
8
|
+
Component: () => import('./component.astro'),
|
|
9
|
+
SEOComponent: () => import('./seo.astro'),
|
|
10
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
11
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { calculateExcavation, convertDimension, convertVolume, getSoilBand } from './logic';
|
|
3
|
+
|
|
4
|
+
describe('calculateExcavation', () => {
|
|
5
|
+
it('calculates bank and loose volume for a sand excavation', () => {
|
|
6
|
+
const result = calculateExcavation({ unitSystem: 'metric', length: 4, width: 3, depth: 0.5, soil: 'sand' });
|
|
7
|
+
expect(result.bankVolume).toBe(6);
|
|
8
|
+
expect(result.looseLow).toBeCloseTo(6.6);
|
|
9
|
+
expect(result.looseHigh).toBeCloseTo(6.9);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('clamps negative dimensions and returns the clay band', () => {
|
|
13
|
+
const result = calculateExcavation({ unitSystem: 'metric', length: -2, width: 3, depth: 1, soil: 'clay' });
|
|
14
|
+
expect(result.bankVolume).toBe(0);
|
|
15
|
+
expect(result.soilBand).toEqual({ low: 0.25, high: 0.4 });
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('exposes the documented band for each soil profile', () => {
|
|
19
|
+
expect(getSoilBand('topsoil')).toEqual({ low: 0.15, high: 0.25 });
|
|
20
|
+
expect(getSoilBand('gravel')).toEqual({ low: 0.15, high: 0.25 });
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('unit conversion', () => {
|
|
25
|
+
it('round-trips dimensions and converts cubic metres to cubic feet', () => {
|
|
26
|
+
expect(convertDimension(convertDimension(2, 'metric', 'imperial'), 'imperial', 'metric')).toBeCloseTo(2);
|
|
27
|
+
expect(convertVolume(1, 'imperial')).toBeCloseTo(35.3147, 3);
|
|
28
|
+
});
|
|
29
|
+
});
|