diff --git a/app.py b/app.py
index 812073b..2a34303 100644
--- a/app.py
+++ b/app.py
@@ -286,8 +286,9 @@ def parse_3mf(file_stream):
Retourne un dict avec :
- plates : liste de plaques [{index, weight_g, print_time_s, filaments:[{type,color,used_g}]}]
- fallback : {weight_g, hours, minutes} si slice_info absent
+ - warning : message si le fichier n'a pas été slicé
"""
- result = {'plates': [], 'weight_g': None, 'hours': None, 'minutes': None}
+ result = {'plates': [], 'weight_g': None, 'hours': None, 'minutes': None, 'warning': None}
try:
with zipfile.ZipFile(file_stream) as z:
names = z.namelist()
@@ -368,6 +369,14 @@ def parse_3mf(file_stream):
pass
except Exception:
pass
+ # Si aucune donnée trouvée, ajouter un avertissement
+ if not result['plates'] and result['weight_g'] is None:
+ result['warning'] = (
+ "Aucune donnée de découpe dans ce fichier. "
+ "Dans Bambu Studio : slicez vos plateaux puis utilisez "
+ "Fichier → Exporter → Exporter le fichier découpé (pas Sauvegarder le projet). "
+ "Le fichier exporté contiendra poids, temps et consommation filament."
+ )
return result
def calc(weight_g, print_time_s, design_mult, gross_margin_pct, discount_pct,
@@ -1556,7 +1565,10 @@ def api_parse_3mf():
if not f.filename.lower().endswith('.3mf'):
return jsonify({'error': 'Format .3mf requis'}), 400
result = parse_3mf(f.stream)
- result['filename'] = os.path.splitext(f.filename)[0]
+ # Nettoyer .gcode.3mf ou .3mf du nom
+ clean = re.sub(r'\.gcode\.3mf$', '', f.filename, flags=re.IGNORECASE)
+ clean = re.sub(r'\.3mf$', '', clean, flags=re.IGNORECASE)
+ result['filename'] = clean
# Si une seule plaque, pré-sélectionner automatiquement
if result['plates'] and len(result['plates']) == 1:
p = result['plates'][0]
@@ -1833,7 +1845,14 @@ def _parse_propfind(xml_bytes, base_url, username, current_path):
name = rel.split('/')[-1] or rel
# Filtrer : dossiers ou extensions 3D
- ext = name.rsplit('.', 1)[-1].lower() if '.' in name else ''
+ # Gérer .gcode.3mf avant le split simple
+ name_lower = name.lower()
+ if name_lower.endswith('.gcode.3mf'):
+ ext = '3mf'
+ elif '.' in name:
+ ext = name.rsplit('.', 1)[-1].lower()
+ else:
+ ext = ''
if not is_dir and ext not in ('3mf', 'stl', 'step', 'stp', 'obj', 'gcode'):
continue
diff --git a/templates/job_detail.html b/templates/job_detail.html
index 8d3b800..ba29608 100644
--- a/templates/job_detail.html
+++ b/templates/job_detail.html
@@ -277,6 +277,8 @@
{% endblock %}
{% block scripts %}
+
+