diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html
index 777a7a3..9e541d3 100644
--- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html
+++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html
@@ -3,10 +3,16 @@
@if (selectedFile()) {
-
-
+ @if (isStepFile(selectedFile())) {
+
+
{{ 'CALC.STEP_WARNING' | translate }}
+
+ } @else {
+
+
+ }
}
diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss
index 3331860..b7a5d77 100644
--- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss
+++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss
@@ -202,6 +202,18 @@
.progress-fill {
height: 100%;
background: var(--color-brand);
- width: 0%;
- transition: width 0.2s ease-out;
+}
+
+.step-warning {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 300px;
+ background: var(--color-neutral-100);
+ border: 1px dashed var(--color-border);
+ border-radius: var(--radius-md);
+ padding: var(--space-4);
+ text-align: center;
+ color: var(--color-text-muted);
+ font-weight: 500;
}
diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts
index 917284c..f222937 100644
--- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts
+++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts
@@ -61,7 +61,13 @@ export class UploadFormComponent implements OnInit {
}
}
- acceptedFormats = '.stl,.3mf,.step,.stp,.obj,.amf,.ply,.igs,.iges';
+ acceptedFormats = '.stl,.3mf,.step,.stp';
+
+ isStepFile(file: File | null): boolean {
+ if (!file) return false;
+ const name = file.name.toLowerCase();
+ return name.endsWith('.step') || name.endsWith('.stp');
+ }
constructor() {
this.form = this.fb.group({
diff --git a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html
index 86a2335..9793ba8 100644
--- a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html
+++ b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html
@@ -51,7 +51,7 @@
diff --git a/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts b/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts
index fd1e563..fbfc442 100644
--- a/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts
+++ b/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts
@@ -10,8 +10,8 @@ import { CommonModule } from '@angular/common';
})
export class AppDropzoneComponent {
label = input
('Drop files here or click to upload');
- subtext = input('Supports .stl, .obj');
- accept = input('.stl,.obj');
+ subtext = input('Supports .stl, .3mf, .step');
+ accept = input('.stl,.3mf,.step,.stp');
multiple = input(true);
filesDropped = output();
diff --git a/frontend/src/assets/i18n/en.json b/frontend/src/assets/i18n/en.json
index bb9f7a1..3397f0e 100644
--- a/frontend/src/assets/i18n/en.json
+++ b/frontend/src/assets/i18n/en.json
@@ -43,7 +43,7 @@
"MODE_EASY": "Quick",
"MODE_ADVANCED": "Advanced",
"UPLOAD_LABEL": "Drag your 3D file here",
- "UPLOAD_SUB": "Supports STL, 3MF, STEP, OBJ up to 50MB",
+ "UPLOAD_SUB": "Supports STL, 3MF, STEP up to 50MB",
"MATERIAL": "Material",
"QUALITY": "Quality",
"QUANTITY": "Quantity",
@@ -68,7 +68,8 @@
"BENEFITS_1": "Automatic quote with instant cost and time",
"BENEFITS_2": "Selected materials and quality control",
"BENEFITS_3": "CAD consultation if file needs modifications",
- "ERR_FILE_REQUIRED": "File is required."
+ "ERR_FILE_REQUIRED": "File is required.",
+ "STEP_WARNING": "3D preview is not available for STEP files, but the calculator works perfectly. You can proceed with the quotation."
},
"SHOP": {
"TITLE": "Technical solutions",
@@ -140,7 +141,7 @@
"COMPANY_NAME": "Company Name",
"REF_PERSON": "Reference Person",
"UPLOAD_LABEL": "Attachments",
- "UPLOAD_HINT": "Max 15 files. Supported: Images, PDF, STL, STEP, 3MF, OBJ",
+ "UPLOAD_HINT": "Max 15 files. Supported: Images, PDF, STL, STEP, 3MF",
"DROP_FILES": "Drop files here or click to upload",
"PLACEHOLDER_NAME": "Your Name",
"PLACEHOLDER_EMAIL": "your@email.com",
diff --git a/frontend/src/assets/i18n/it.json b/frontend/src/assets/i18n/it.json
index a7655a1..1d0e946 100644
--- a/frontend/src/assets/i18n/it.json
+++ b/frontend/src/assets/i18n/it.json
@@ -58,14 +58,14 @@
},
"CALC": {
"TITLE": "Calcola Preventivo 3D",
- "SUBTITLE": "Carica il tuo file 3D (STL, 3MF, STEP...) e ricevi una stima immediata di costi e tempi di stampa.",
+ "SUBTITLE": "Carica il tuo file 3D (STL, 3MF, STEP), imposta la qualtà, colore e calcola immediatamente prezzo e tempi.",
"CTA_START": "Inizia Ora",
"BUSINESS": "Aziende",
"PRIVATE": "Privati",
"MODE_EASY": "Base",
"MODE_ADVANCED": "Avanzata",
"UPLOAD_LABEL": "Trascina il tuo file 3D qui",
- "UPLOAD_SUB": "Supportiamo STL, 3MF, STEP, OBJ fino a 50MB",
+ "UPLOAD_SUB": "Supportiamo STL, 3MF, STEP fino a 50MB",
"MATERIAL": "Materiale",
"QUALITY": "Qualità",
"PRINT_SPEED": "Velocità di Stampa",
@@ -101,7 +101,8 @@
"UPLOADING": "Caricamento...",
"PROCESSING": "Elaborazione...",
"NOTES_PLACEHOLDER": "Istruzioni specifiche...",
- "SETUP_NOTE": "* Include {{cost}} Costo di Setup"
+ "SETUP_NOTE": "* Include {{cost}} Costo di Setup",
+ "STEP_WARNING": "La visualizzazione 3D non è compatibile con i file STEP, ma il calcolatore funziona."
},
"QUOTE": {
"PROCEED_ORDER": "Procedi con l'ordine",
@@ -203,7 +204,7 @@
"COMPANY_NAME": "Ragione Sociale",
"REF_PERSON": "Persona di Riferimento",
"UPLOAD_LABEL": "Allegati",
- "UPLOAD_HINT": "Max 15 file. Supportati: Immagini, PDF, STL, STEP, 3MF, OBJ",
+ "UPLOAD_HINT": "Max 15 file. Supportati: Immagini, PDF, STL, STEP, 3MF",
"DROP_FILES": "Trascina qui i file o clicca per caricare",
"PLACEHOLDER_NAME": "Il tuo nome",
"PLACEHOLDER_EMAIL": "tuo@email.com",