Files
OrcaSlicer/tests/compare_analyzer
denis svinarchuk 6a584c7c79 test: add compare_analyzer tools for G-code slice comparison
Add two standalone Python tools for deep comparison and analysis of .3mf
slicing project files:

- compare_slices.py: comprehensive slice comparison with filament usage,
  nozzle mapping, tool change sequences, prime tower analysis, temperature
  timeline, and automatic critical discrepancy detection
- show_temp_plot.py: interactive HTML temperature timeline plotter for
  visualizing heater profiles during multi-nozzle prints

Both tools use only Python stdlib (no external dependencies).
Primary use case: regression testing H2C carousel purge volumes and
BBS compatibility verification.
2026-07-16 15:22:26 +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