Files
OrcaSlicer/tests/compare_analyzer
denis svinarchuk fc705612a4 show_temp_plot: fix M620 timeline weight for accurate toolchange duration
The M620→M621 firmware toolchange block weight (500x) was only applied
to sparse track sample lines. Hundreds of G1 moves between samples
inside the M620 block got weight=1, causing firmware toolchange to
appear compressed on the timeline plot.

Build continuous M620→M621 line ranges from track samples and apply
weight=500 to ALL lines within those ranges. This makes toolchange
and wipe tower zones proportionally accurate on the timeline.
2026-07-16 18:59:34 +01:00
..

Compare Analyzer — G-code Slicing Comparison Tools

Tools for deep comparison and analysis of .3mf slicing project files, designed for verifying multi-nozzle (H2C carousel) and multi-extruder slicing correctness.

Tools

compare_slices.py — Slice Comparison Analyzer

Deep comparison of two .3mf files (OrcaSlicer, BambuStudio, or any compatible slicer). Generates a comprehensive Markdown report covering:

  • Filament usage — per-filament weight/length with color mapping
  • Nozzle/extruder mapping — Vortek carousel slot assignments
  • Tool change sequences — T-code ordering and count
  • Prime tower analysis — tower entries, G-code line count
  • Temperature timeline — pre-heat lead times, target temperatures per tool change
  • Retract parameters — M620.11 analysis during nozzle switches
  • Filament change G-code blocks — line-by-line diff of change_filament_gcode
  • Control command diff — timeline of M/G-code differences
  • Critical discrepancy detection — automatic flagging of weight/time anomalies

Usage

# Compare two slice files
python3 compare_slices.py file1.3mf file2.3mf

# With custom labels
python3 compare_slices.py file1.3mf file2.3mf --labels "Upstream" "Fixed"

Output

Markdown report saved to mp_reports/compare_report_YYYYMMDD_HHMMSS.md

Example: Detecting H2C purge regression

⚠️ CRITICAL DISCREPANCY: Huge difference in part weight:
  OrcaSlicer 60.90 g vs BambuStudio 17.47 g (difference 43.43 g or 71.3%).
  The reason is incorrect nozzle mapping, causing huge AMS flushing.

show_temp_plot.py — Temperature Timeline Plotter

Generates interactive HTML temperature plots for analyzing thermal profiles during multi-nozzle prints. Visualizes heater temperature commands (M104/M109) per tool change, showing pre-heat timing and temperature convergence.

Architecture

  • H2C dual-extruder layout with Vortek carousel nozzles
  • Physical heaters mapped dynamically:
    • Heater 0: Extruder 2 (right nozzle slot, T0/T2/T3/T4)
    • Heater 1: Extruder 1 (left nozzle slot, T1)
  • Active heater mapping derived from G-code temperature signals

Usage

# Single file analysis
python3 show_temp_plot.py file.3mf

# Side-by-side comparison of two files
python3 show_temp_plot.py file1.3mf file2.3mf

Output

Interactive HTML report saved to Desktop as temp_plot_v3.html


Requirements

  • Python 3.8+
  • No external dependencies — uses only Python standard library (json, zipfile, xml.etree.ElementTree, difflib, webbrowser)

Use Cases

  1. Regression testing — compare slices before/after code changes to verify no unintended differences in purge volumes, tool ordering, or temperature timing
  2. BBS compatibility verification — compare OrcaSlicer output against BambuStudio reference slices to ensure behavioral parity
  3. H2C carousel validation — verify per-slot nozzle tracking produces correct purge volumes (not collapsed per-extruder)
  4. Temperature protocol analysis — verify pre-heat lead times and cooling temperatures during nozzle changes match expected profiles