Commit Graph
31176 Commits
Author SHA1 Message Date
ExPikaPaka 970598ea31 Give an empty patch an upright frame
texture_displacement_patch_frame picks the world axis least aligned with
the patch's average normal. With no patch there is no normal either, and
the axis came out of the +Z fallback for it - so it was +X, while its
test asked for the upright frame the fallback is meant to give. An empty
patch now answers +Z outright.
2026-09-23 18:01:46 +02:00
ExPikaPaka a8b44278e6 Include what the new code uses
The Windows build stopped on test_kdtree.cpp: it calls std::iota without
including <numeric>, which libstdc++ happens to pull in anyway. Added
there, and the same for <limits> and <algorithm>/<cmath> where the
recent changes rely on them being included by something else.
2026-09-23 16:16:46 +02:00
ExPikaPaka fc312fbb31 Fix the Windows build: near and far are macros there
bridge_over_infill's helper for splitting polygons by proximity named
its locals near and far. The Windows headers define both as macros that
expand to nothing, so "Polygons near;" declared nothing and the uses of
it did not compile. Renamed; no behaviour change.
2026-09-23 14:51:07 +02:00
ExPikaPaka 6bbacc15ba Merge branch 'feature/texture_displacement' of https://github.com/OrcaSlicer/OrcaSlicer into feature/texture_displacement 2026-09-23 14:08:47 +02:00
ExPikaPaka d85a876250 Wrap the budget warning, count triangles in thousands
Unwrapped, it ran past the edge of the panel and pulled the layout with
it. Counts under a million now read in thousands, so a 119 k budget is
no longer shown as 0.1 M.
2026-09-23 13:22:57 +02:00
ExPikaPaka 587c6db1ac Rewrite the texture displacement tooltips
They described the implementation, and a few no longer matched the code.
Each now says what the control does and in what units; five controls that
had no tooltip have one. The catalogs need regenerating.
2026-09-23 13:16:56 +02:00
ExPikaPaka 887fbfc397 Simplify flat faces even when a bake fits its budget
Nothing removed the even mesh over a texture's flat parts unless the
budget was lowered until simplification had to run. Collapses stay under
a thirty-second of the resolution: on the test map 387584 -> 369876
triangles, with the print unchanged (0.02% of the extrusion).

An earlier attempt was reverted for a 21% heavier result. That was the
colour despeckle switching itself off, not the collapsing: it keyed off
the face parent map, which any collapse empties.
2026-09-23 12:19:58 +02:00
ExPikaPaka 8ce05c03ec Give each bake its own budget, and warn when it is short
Relief preserved from an earlier bake is counted on top of the budget
instead of eating into it: baking a second area went from ~214 k
triangles to the ~1000 k it was given.

When the resolution needs more triangles than the budget allows, it is
said before the bake under Resolution and again afterwards.
2026-09-23 10:26:24 +02:00
ExPikaPaka cd5a156e6e Block undo and redo while a background job runs
A job is queued against the model as it stands, so undoing underneath it
left the bake landing on geometry it was never computed for.
2026-09-23 09:51:17 +02:00
ExPikaPaka 62a45befac Rename the fast preview to the shaded preview
Its shader files, the name they are registered under, its members and
the panel text now match what it does: shading only, no geometry.
2026-09-23 09:51:08 +02:00
ExPikaPaka d89c6add98 Visit seam candidates as the search finds them
Collecting every candidate within the radius into a vector cost more
than the search itself. Same order, so the seams are unchanged;
align_seam_points ~19.6 s at 0.1 mm / 2000k, was ~21.
2026-09-23 02:04:49 +02:00
ExPikaPaka ec29903e4c Run a layer's regions in parallel where they are independent
detect_surfaces_type, process_external_surfaces and the vertical shells
each waited on their own heaviest layer in turn. The LOTR map plate
slices in ~10.5 min at 0.1 mm / 2000k, was ~11.5; ~87 s at normal
settings, was ~97.
2026-09-22 22:14:39 +02:00
ExPikaPaka 2c8296a9bc Move polygons instead of copying them on move
MultiPoint had no rvalue constructor, so the derived move constructors
bound to the const reference and copied; append reserved exactly, so
collecting pieces one by one was quadratic. Colour segmentation ~3 s at
0.1 mm / 2000k, was ~40, and ordinary prints gain too.
2026-09-22 19:19:54 +02:00
ExPikaPaka 71c13f0546 Project painted faces onto the shell layers per tile
Only the slices within the deepest shell offset decide the result, so
the work is done per tile of the face. Top and bottom segmentation
~130 s at 0.1 mm / 2000k, was ~180.
2026-09-22 19:19:54 +02:00
ExPikaPaka 69be77d859 Tile the booleans on layers of many pieces
ClipperLib slows down with the number of edges on a scan line, and a
layer cut through a fine relief has tens of thousands of pieces.
detect_surfaces_type ~50 s at 0.1 mm / 2000k, was ~145.
2026-09-22 18:06:54 +02:00
ExPikaPaka 0e9d390a1c Merge colour and top/bottom regions per island
The merge took anything from 3 to 38 minutes at 0.1 mm / 2000k, now
~2.5. Every region is grouped with the islands it overlaps, so the
result is the same.
2026-09-22 16:43:53 +02:00
ExPikaPaka 1468eb0d8e Slice fine texture relief without stalling
A colour texture baked at 0.1 mm / 2000k made the top layers thousands
of islands and slicing never finished. Colour segmentation runs per
island, the merge subtracts piece by piece, the support check tests only
nearby islands, and the travel ordering finds crossings through a grid.
2026-09-22 13:06:44 +02:00
SoftFever fd1bfe55f7 Merge branch 'main' into feature/texture_displacement 2026-09-22 14:46:36 +08:00
Lam Wei Lun f769a39b7f Remove duplicated Open speed dial option in menubar in macOS (#15817) 2026-09-22 14:46:25 +08:00
Lam Wei Lun adbeefd424 Merge branch 'main' into feat/speed_dial_macos_fix 2026-09-22 14:17:50 +08:00
Lam Wei Lun 423e7b1dbd Remove duplicated speed dial menu on macOS 2026-09-22 14:16:48 +08:00
b0ee2cbbef Add PlastAR (PLA) and Printalot (ABS) filament vendors (#14825)
* Add PlastAR and Printalot filament vendors

Two Argentine brands from Printalot: PlastAR (budget PLA) and Printalot
(ABS). Each has a tuned @base plus per-color presets covering the
manufacturer's color lineup.

PlastAR PLA: flow 0.98, 1.75 mm, nozzle 220 C (190-230), bed 60 C; 14 colors.
Printalot ABS: flow 0.94, density 1.05, retraction 0.2 mm, max volumetric
18 mm3/s, nozzle 250 C (240-270), bed 100 C; 14 colors.

Per-color presets inherit their @base (no per-color parameter changes).
Passes scripts/orca_extra_profile_check.py.

* Ship PlastAR and Printalot as a single Printalot filament vendor

Place both Argentine lines in one OrcaFilamentLibrary/Printalot bundle and follow the library's brand shape: a non-selectable @base plus one all-printer @System per product, which is where a library preset meant for every printer belongs. The former per-color presets are dropped, leaving PlastAR PLA and Printalot ABS with their PLA and 250 C ABS material values. setting_ids are minted by the tooling; filament_ids resolve through the @base roots.

---------

Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-09-22 14:15:34 +08:00
55a0b51ae2 Add Polymaker PLA Pro filament profile (#15046)
* Add Polymaker PLA Pro filament profile

Polymaker PLA Pro is present in the tree only as printer-scoped variants
under Snapmaker U1 and Anycubic Kobra S1, so it is invisible to every other
printer. This adds it to the Orca Filament Library as OGFPM020 so it is
selectable generally.

Values are taken from the manufacturer's published print settings and
cross-checked against the two existing vendor profiles:

  density 1.23 g/cm3       both existing profiles agree
  softening 55 C           both existing profiles agree
  nozzle 220 C (210-230)   manufacturer's stated range
  max volumetric speed 15  Snapmaker 15, Anycubic 16

Flow ratio is set to 0.96, matching the Snapmaker profile. Worth noting for
review: the two existing profiles disagree here -- Snapmaker 0.96, Anycubic
0.85 -- because flow ratio depends on the extruder as much as the filament.
Any single value in a vendor-neutral preset is a starting point users should
calibrate; 0.96 is closer to the generic PLA baseline than 0.85 is.

setting_id assigned by scripts/assign_vendor_setting_ids.py.
OrcaFilamentLibrary version bumped 02.04.00.03 -> 02.04.00.04.

* fix errors

---------

Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-09-22 13:42:01 +08:00
Lam Wei Lun 9e42f59022 Remove ellipses and update translations (#15814)
# Description
- Remove ellipses from "Open speed dial" menu item
- Update translation files
2026-09-22 13:19:18 +08:00
Lam Wei Lun 5caa3372bc Remove ellipses and update translations 2026-09-22 12:39:53 +08:00
Kris Austin 824b216f18 feat(gui): assignable keyboard shortcuts (#15706) 2026-09-21 17:36:04 -03:00
Ian Bassi bfe458507b Add X-Ray view mode to 3D viewport (#15770) 2026-09-21 14:23:32 -03:00
Tim Schneiderandyw4z b6bb1b92c9 Add Meltingplot vendor profiles (CHX 350 + MBL series) (#14756)
* Add Meltingplot vendor profiles (CHX 350 + MBL series)

Adds the Meltingplot vendor bundle with 5 printer models:
- CHX 350 (880x422x943, RepRapFirmware/Duet)
- MBL 133/136/308/480 (RepRapFirmware/Duet)

Each model ships 0.4/0.6/0.8/1.0/1.2 nozzle variants. Layer height
presets span 40-60% of the nozzle diameter and deliberately avoid
heights that divide the Z screw lead evenly (CHX: 1204 ball screw,
4 mm lead; MBL: TR4x2 trapezoidal screw, 8 mm lead) so periodic
screw error does not repeat as banding.

All printers use 2.85 mm filament, so the bundle carries its own
filament library (PLA, StoneFil, ABS, TitanX, ASA, PETG, PA6 CF HT,
STYX 12, PP 9-2, PET-CF15, Extrudr PLA NX2 Matt, Igus iglidur J260)
with the 2.85 mm diameter pinned once in the vendor-local
fdm_filament_common base.

Machine limits mirror the printers' firmware configuration; machine
limit emission is disabled so the values only feed the time estimator.

* Add per-nozzle volumetric flow limits and nozzle size in filename

Cap filament volumetric speed per nozzle (0.4: 14, 0.6: 20, 0.8: 26,
1.0: 30, 1.2: 40 mm3/s). Filaments whose limit exceeds a nozzle's
capability get a nozzle-scoped child profile that only lowers
filament_max_volumetric_speed; filament_id is inherited so all nozzle
variants remain the same material.

Also include layer height and nozzle diameter in the g-code filename.

* Set CHX 350 machine time cost to 5 EUR/h

* Inherit Meltingplot filaments from OrcaFilamentLibrary generics

Per the profile creation guide, vendor filament profiles now inherit
from Generic * @System instead of vendor-local fdm_filament_* copies.
Each profile carries only Meltingplot-specific deviations plus the
2.85 mm filament diameter; the seven local fdm_filament_* base files
are removed.

Deliberate pins where the library default would change tuned behavior:
- PLA/ABS/TitanX keep filament_max_volumetric_speed 20 (0.6 nozzle cap)
- ABS/PET-CF15 keep close_fan_the_first_x_layers 1
- STYX 12 sets required_nozzle_HRC 0 (unfilled PA12, density 1.02)

* Remove Meltingplot StoneFil filament profile

* Meltingplot ABS: use library fan settings

* Meltingplot TitanX/ABS: use library fan and nozzle temperature settings

* Remove STYX 12, PP 9-2 and Igus iglidur J260 filament profiles

* Meltingplot ASA: use library fan_max_speed

* Derive per-nozzle volumetric speed caps from physical limit formula

Caps now follow V = 34*d * m / S: the 34*d limit line calibrated on
Micro Swiss Volcano plated copper at 2.85 mm, material factor m from
the OrcaFilamentLibrary generic ratios (PLA/ABS/ASA 1.0, PETG 10/12,
PETG-CF 11.5/12, PA-CF 8/12, PLA Matte 11/12), safety factor S = 1.25
covering batch/moisture/wear/diameter tolerances.

Each material base now serves the 1.2 nozzle at its maximum cap;
children @0.4-@1.0 lower the cap per nozzle. Machine variant
default_filament_profile entries point at the matching preset.

* Scale slow_down_layer_time per nozzle from bead cross-section

Minimum layer time follows the derived cooling rule: heat per layer
scales with bead cross-section (layer height x line width), so the
0.8-nozzle-tuned values are scaled by q(d)/q(0.8) using each nozzle's
standard preset geometry. Bases carry the 1.2 value, children @0.4-@1.0
their nozzle-specific value.

* Meltingplot: lift Z above the print before the end macro

Add a G90 / G1 Z{min(max_layer_z + 5, printable_height)} F600 move at the
start of machine_end_gcode, before M98 print_end shuts the printer down and
parks it. Besides clearing the part, the explicit Z coordinate lets the Duet
file-info parser pick up the object height.

* Meltingplot: cap default layer height at 40% of outer wall width

A 45 deg slope shifts each bead outward by exactly one layer height. With
the Slic3r bead model (rectangle (w-h) x h plus half-circles of diameter h)
the flat contact band to the layer below is w - 2h, so the maximum
self-supporting angle is atan((w-h)/h). Support cannot compensate: the
stair tread at 45 deg is only h wide, far below one support line width, so
no support line ever fits underneath a single step.

All ten machine variants defaulted to h/w = 0.455..0.524, i.e. at or past
the h/w = 0.5 point where the flat contact vanishes. The 0.8 nozzle default
(0.44 mm at w = 0.84) reached atan(0.4/0.44) = 42.3 deg and failed on 45 deg
slopes even with support.

Default presets now satisfy h <= 0.40 * outer_wall_line_width, which leaves
one third of the bead's flat underside in contact at 45 deg and puts the
geometric limit at 56.3 deg. To keep the defaults on sensible ladder rungs,
outer wall width is widened where it was the binding constraint:
chx_small 110 -> 115%, chx_large 105 -> 110%, mbl_04 105 -> 115%.

Ladders are unchanged; the thicker rungs stay available for parts without
steep overhangs.

* Meltingplot PLA: raise slow_down_layer_time by calibration factor 1.5

Print feedback on CHX 350 with a 0.8 nozzle at 0.44 mm layer height showed
curling at the retraction points with the derived value of 25 s. There is no
cooling headroom left to trade: fdm_filament_pla pins fan_min_speed =
fan_max_speed = 100, and additional_cooling_fan_speed is inert because no
Meltingplot machine enables auxiliary_fan. Minimum layer time is the only
remaining lever; 35 s prints cleanly at that geometry.

The cross-section rule only fixes the ratios between nozzle sizes, so this
is a calibration of the PLA anchor itself: both PLA ladders are scaled by
1.5 (Extrudr 9/20/38/56/83 s, Meltingplot PLA 8/17/30/45/66 s for
0.4/0.6/0.8/1.0/1.2). The Extrudr base fan_cooling_layer_time goes 60 -> 100
so the 1.2-nozzle value stays below it.

Other materials are left unchanged - only the PLA anchor has a real
counter-example so far.

* Meltingplot: drop layer heights that cannot print 45 degree walls

A preset whose layer height exceeds ~45% of the outer wall line width has
less than ~6 degrees of reserve on a 45 degree wall (max self-supporting
angle atan((w-h)/h)), and support cannot compensate because the 45 degree
stair tread is only h wide - far below one support line. Those presets are
not usable in practice, so shipping them only invites failed prints.

Removes the 22 rungs above h/w = 0.45 and prunes them from the vendor
index. What remains per nozzle (default first):

  CHX 350   0.4: 0.18 | 0.6: 0.24 0.28 | 0.8: 0.32 0.36
            1.0: 0.44 0.48 | 1.2: 0.48 0.56
  MBL       0.4: 0.18 | 0.6: 0.24 0.28 | 0.8: 0.36 0.34
            1.0: 0.44 0.48 | 1.2: 0.48 0.56

The 0.4 nozzle keeps a single rung: 0.20 mm would qualify (h/w = 0.435) but
divides both screw leads evenly (4/0.20, 8/0.20) and stays excluded by the
Z-artifact rule, and 0.22 is already at 0.478.

Also corrects the MBL 0.8 default to 0.36 mm, which at w = 0.92 sits at
h/w = 0.391 and therefore still satisfies the stricter 40% default rule.

* Meltingplot: require 5 degrees of reserve on 45 degree walls

Replaces the two separate thresholds (h <= 0.40 * outer wall width for
defaults, 0.45 for ladder rungs) with a single requirement stated on the
design constraint itself: every shipped preset must reach

  a_max = atan((w - h) / h) >= 50 deg

i.e. 5 degrees of reserve on a 45 degree wall, equivalent to
h <= 0.456 * outer_wall_line_width. The default is simply the thickest rung
that passes.

The 11 degrees the 40% rule produced were more margin than the failure mode
warrants, and cost throughput for no return. For calibration: across 940
machine defaults from 60 vendor bundles in this repo, the median reserve is
+1.8 deg, 71% ship less than 5 deg, and 8% cannot geometrically produce a
45 deg wall at all.

Adds the rungs the relaxed threshold makes available - 0.30 (0.6 nozzle,
both series) and 0.38 (0.8 nozzle, both series) - and restores the 0.30 mm
MBL preset removed in 5b4862b3 with its original setting_id. 0.20 mm on the
0.4 nozzle and 0.50 mm on the 1.0 nozzle would also qualify but stay
excluded because they divide both screw leads evenly.

Defaults are now (0.4/0.6/0.8/1.0/1.2) 0.18/0.30/0.38/0.48/0.56 for both
series, at 50.2 to 57.3 deg. The 1.2 nozzle deliberately keeps 0.56 rather
than the 0.60 the rule would allow: solidification time scales with h^2 and
bead weight with h*w, so the largest nozzle is the one that should not sit
on the minimum.

* Meltingplot: disable precise wall by default

Precise wall was inheriting OrcaSlicer's global default of true. Disable it
bundle-wide in the vendor process root so it applies to CHX 350 and all MBL
models. Note it was already ignored on the CHX small-nozzle branch, which
uses the inner-outer-inner wall sequence.

* Meltingplot CHX: raise max extruding acceleration to 6000

The 4000 limit silently clamped the profiles' 6000 values for default and
inner wall acceleration, since GCodeWriter caps print acceleration against
machine_max_acceleration_extruding regardless of emit_machine_limits_to_gcode.
Raising it to 6000 matches the X/Y limits so the configured values are emitted
as-is. The firmware's own M201 still governs what is actually driven.

* Meltingplot PA6 CF HT: raise part cooling floor to 40%

Sharp 90 degree corners were washing out layer by layer while straight walls
and overhangs printed cleanly. Overhangs are fine because overhang_fan_speed
forces 100% regardless of layer time; everything else fell back to
fan_min_speed, since at the layer times seen in practice neither branch of the
layer-time fan interpolation applies.

Raise fan_min_speed to 40% and set reduce_fan_stop_start_freq so that floor is
actually applied instead of dropping to zero. Also lower the auxiliary fan to
40% and raise the overhang cooling threshold to 95%, matching the values
validated on the print.

* Meltingplot: re-mint filament ids with orca_id_tool

Upstream now requires every filament_id to be a minted "OF" id derived
from the (filament_vendor, filament_type, name) triple and recorded in
scripts/filament_id_snapshot.json. The hand-made ids this bundle shipped
with (MPFPLA0, EXTNX2M, ...) were rejected by orca_extra_profile_check.

Regenerate them with "orca_id_tool.py --generate --vendor Meltingplot"
and record the result with --update-snapshot. No setting_id changed, and
the ids were never released, so no existing project file refers to them.

* Meltingplot: normalize bundle for updated profile checks

Drop obsolete keys (silent_mode, adaptive_layer_height, tree_support_with_infill) and rebuild the vendor index in canonical order, as orca_profile_tool.py normalize / update-index write them.

* Meltingplot: list per-nozzle filaments in default_materials

The unsuffixed filament presets only cover the 1.2 mm variants, so the 0.4-1.0 mm printer presets had no compatible entry in their model's default_materials. The validator's check_printer_default_materials rejects that, and load_installed_filaments would auto-install no filament for those variants on first run. Name the @0.4/0.6/0.8/1.0 nozzle presets alongside the base ones for PLA, PETG, ABS and ASA.

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-09-22 00:14:33 +08:00
61dbe5572f Add Flashforge Adventurer A5 printer profiles (#14733)
* Add Flashforge Adventurer A5 printer profiles

Adds system profiles for the Flashforge Adventurer A5 to the existing
Flashforge vendor: the machine model with 0.25/0.4/0.6/0.8 mm nozzle variants,
14 process presets, and 43 filament presets, plus the printer cover image.

All presets inherit from existing Flashforge bases already in-tree
(Adventurer 5M Pro nozzle profiles, AD5M Pro process/filament presets,
Flashforge generics); no new base assets are introduced (the A5 reuses the
existing 5M-series bed/hotend models and buildplate texture). Every inherits
reference and sub_path was validated to resolve.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Assign setting_id to Adventurer A5 presets (fix profile check)

The new A5 filament and process presets were missing the deterministic
setting_id required by OrcaSlicer's profile validator. Generated via
scripts/assign_vendor_setting_ids.py (61 instantiated presets). Verified with
scripts/orca_extra_profile_check.py: 0 errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Fix Flashforge Adventurer A5 profiles so the bundle loads and validates

The new A5 presets were not in canonical form, several filaments resolved
no or the wrong filament_id, and the model and machines pointed at
non-existent or AD5M Pro defaults. Run the standard profile tooling
(normalize, update-index, generate-id), give the branded filaments the ids
of their existing Flashforge products, and repoint the defaults at
A5-compatible filaments and processes. Bump the Flashforge bundle version.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-09-21 23:19:41 +08:00
ExPikaPaka 5e6cf9619b Generate walls and split solid infill in parallel
Same output, ~2.2 min for the LOTR map plate, was ~2.6.
2026-09-21 16:40:22 +02:00
2adb631d6f RH3D new printer and print profiles update (#14707)
* Update 0.25mm Standard @E3NG v1.2S.json

* Create 0.20mm Fast @Virtu E3.json

* Update 0.20mm Fast Virtu E3.json

* Create 0.20mm SLOW Virtu E3.json

* Update and rename 0.20mm Fast @Virtu E3.json to 0.20mm FAST @Virtu E3.json

* Update and rename 0.20mm Fast @E3NG v1.2S.json to 0.20mm FAST @E3NG v1.2S.json

* Update and rename 0.20mm Slow @E3NG v1.2S.json to 0.20mm SLOW @E3NG v1.2S.json

* Update and rename 0.20mm Standard @E3NG v1.2S.json to 0.20mm STANDARD @E3NG v1.2S.json

* Create 0.20mm STANDARD @VIRTU E3

* Update and rename 0.20mm FAST Virtu E3.json to 0.20mm FAST VIRTU E3.json

* Rename 0.20mm SLOW Virtu E3.json to 0.20mm SLOW VIRTU E3.json

* Update 0.20mm STANDARD @VIRTU E3

* Update 0.20mm STANDARD VIRTU E3

* Update and rename 0.25mm Fast @E3NG v1.2S.json to 0.25mm FAST @E3NG v1.2S.json

* Create 0.25mm FAST VIRTU E3

* Update and rename 0.15mm Standard @E3NG v1.2S.json to 0.15mm STANDARD @E3NG v1.2S.json

* Update and rename 0.10mm Standard @E3NG v1.2S.json to 0.10mm STANDARD @E3NG v1.2S.json

* Create 0.15mm STANDARD VIRTU E3

* Create 0.10mm STANDARD VIRTU E3.json

* Rename 0.15mm STANDARD @VIRTU E3 to 0.15mm STANDARD @VIRTU E3.json

* Update 0.15mm STANDARD VIRTU E3.json

* Update 0.20mm STANDARD VIRTU E3

* Update and rename 0.25mm FAST VIRTU E3 to 0.25mm FAST VIRTU E3.json

* Rename 0.20mm STANDARD VIRTU E3 to 0.20mm STANDARD VIRTU E3.json

* Update 0.15mm STANDARD VIRTU E3.json

* Update and rename 0.25mm Standard @E3NG v1.2S.json to 0.25mm STANDARD @E3NG v1.2S.json

* Create 0.25mm STANDARD VIRTU E3.json

* Create process_common_VIRTU E3.json

* Create process_FAST_VIRTU E3.json

* Update 0.20mm FAST VIRTU E3.json

* Update 0.25mm FAST VIRTU E3.json

* Create process_SLOW_VIRTU E3.json

* Update 0.20mm SLOW @VIRTU E3.json

* Update 0.20mm SLOW VIRTU E3.json

* Update and rename process_common_VIRTU E3.json to process_STANDARD_VIRTU E3.json

* Update 0.10mm STANDARD VIRTU E3.json

* Update 0.15mm STANDARD VIRTU E3.json

* Update 0.20mm STANDARD VIRTU E3.json

* Update 0.25mm STANDARD @VIRTU E3.json

* Update process_STANDARD_VIRTU E3.json

* Update 0.25mm STANDARD VIRTU E3.json

* Update 0.20mm STANDARD VIRTU E3.json

* Update 0.15mm STANDARD @VIRTU E3.json

* Update 0.10mm STANDARD VIRTU E3.json

* Update 0.15mm STANDARD VIRTU E3.json

* Update 0.20mm SLOW VIRTU E3.json

* Update RH3D.json

* Update RH3D.json

* Create VIRTU E3 - 0.2 nozzle.json

* Create VIRTU E3 - 0.3 nozzle.json

* Create VIRTU E3 - 0.4 nozzle.json

* Create VIRTU E3 - 0.5 nozzle.json

* Create VIRTU E3 - 0.6 nozzle.json

* Create VIRTU E3,json

* Update fdm_common_E3NG v1.2S.json

* Update fdm_machine_common.json

* Create fdm_common_VIRTU E3.json

* Create Generic ABS VIRTU E3.json

* Create Generic ASA @VIRTU E3.json

* Update Generic ASA VIRTU E3.json

* Create Generic PCCF VIRTU E3.json

* Create Generic PETG @VIRTU E3.json

* Create Generic PLA VIRTU E3.json

* Create Generic TPU VIRTU E3.json

* Update Generic ASA VIRTU E3.json

* Update Generic PETG VIRTU E3.json

* Update 0.20mm SLOW VIRTU E3.json

* Update 0.15mm STANDARD VIRTU E3.json

* Rename VIRTU E3,json to VIRTU E3.json

* Add files via upload

* Update VIRTU E3 - 0.2 nozzle.json

* Update E3NG v1.2S - 0.2 nozzle.json

* Update E3NG v1.2S - 0.3 nozzle.json

* Update E3NG v1.2S - 0.4 nozzle.json

* Update E3NG v1.2S - 0.5 nozzle.json

* Update E3NG v1.2S - 0.6 nozzle.json

* Update 0.10mm STANDARD @E3NG v1.2S.json

* Update 0.15mm STANDARD @E3NG v1.2S.json

* Update 0.20mm STANDARD @E3NG v1.2S.json

* Update 0.25mm STANDARD @E3NG v1.2S.json

* Delete resources/profiles/RH3D/VIRTU-bed.stl

* Update fdm_common_VIRTU E3.json

* Add files via upload

* Delete resources/profiles/RH3D/E3NG-bed-texture.svg

* Add files via upload

* Delete resources/profiles/RH3D/VIRTU E3_cover.png

* Add files via upload

* Add files via upload

* Create process_STANDARD_E3NG.json

* Create process_SLOW_E3NG.json

* Update and rename process_STANDARD_E3NG.json to process_STANDARD_E3NG v1.2S.json

* Update and rename process_SLOW_E3NG.json to process_SLOW_E3NG v1.2S.json

* Create process_FAST_E3NG v1.2S.json

* Update 0.25mm STANDARD @E3NG v1.2S.json

* Update 0.20mm STANDARD @E3NG v1.2S.json

* Update 0.15mm STANDARD @E3NG v1.2S.json

* Update 0.10mm STANDARD @E3NG v1.2S.json

* Update 0.20mm SLOW @E3NG v1.2S.json

* Update 0.20mm FAST @E3NG v1.2S.json

* Update 0.25mm FAST @E3NG v1.2S.json

* Update 0.20mm STANDARD @E3NG v1.2S.json

* Update 0.20mm STANDARD VIRTU E3.json

* Delete resources/profiles/RH3D/process/process_common_E3NG v1.2S.json

* Update RH3D.json

* Update fdm_process_common.json

* Update fdm_filament_common.json

* Update fdm_filament_abs.json

* Update fdm_filament_abs.json

* Update fdm_filament_asa.json

* Update fdm_filament_pccf.json

* Update fdm_filament_petg.json

* Update fdm_filament_pla.json

* Update fdm_process_common.json

* Update fdm_common_VIRTU E3.json

update speeds

* Update fdm_common_E3NG v1.2S.json

update speeds

* Update fdm_process_common.json

fix accel_to_decel

* Update fdm_machine_common.json

fix speed profile output

* Create 0.10mm SLOW @E3NG v1.2S.json

* Create 0.10mm FAST @E3NG v1.2S.json

* Create 0.15mm FAST @E3NG v1.2S.json

* Create 0.15mm SLOW @E3NG v1.2S.json

* Create 0.25mm SLOW @E3NG v1.2S.json

* Create 0.10mm SLOW VIRTU E3.json

* Create 0.10mm FAST VIRTU E3.json

* Create 0.15mm SLOW VIRTU E3.json

* Create 0.15mm FAST VIRTU E3.json

* Create 0.25mm SLOW VIRTU E3.json

* Update RH3D.json

add more slow and fast profiles

* Update 0.20mm FAST @E3NG v1.2S.json

* Update 0.20mm SLOW @E3NG v1.2S.json

* Update 0.20mm FAST @VIRTU E3.json

* Update 0.20mm SLOW @VIRTU E3.json

* Update fdm_process_common.json

* Update fdm_process_common.json

* Update Generic ABS @VIRTU E3.json

* Update Generic ABS VIRTU E3.json

* Update Generic PCCF VIRTU E3.json

* Update Generic PETG VIRTU E3.json

* Update Generic PLA VIRTU E3.json

* Update Generic ASA VIRTU E3.json

* Update Generic TPU VIRTU E3.json

* Update 0.20mm SLOW @E3NG v1.2S.json

* Update 0.25mm SLOW @E3NG v1.2S.json

* Update 0.15mm FAST @VIRTU E3.json

* Update 0.20mm FAST VIRTU E3.json

* Update 0.20mm STANDARD @E3NG v1.2S.json

* Update 0.15mm SLOW @E3NG v1.2S.json

* Update 0.25mm STANDARD @VIRTU E3.json

* Update 0.20mm STANDARD VIRTU E3.json

* Update 0.20mm FAST @E3NG v1.2S.json

* Update 0.25mm FAST VIRTU E3.json

* Update 0.10mm FAST VIRTU E3.json

* Update 0.10mm SLOW VIRTU E3.json

* Update 0.15mm SLOW VIRTU E3.json

* Update 0.20mm SLOW VIRTU E3.json

* Update 0.25mm FAST @E3NG v1.2S.json

* Update 0.10mm SLOW @E3NG v1.2S.json

* Update 0.10mm STANDARD @E3NG v1.2S.json

* Update 0.15mm STANDARD @VIRTU E3.json

* Update 0.25mm STANDARD @E3NG v1.2S.json

* Update 0.15mm STANDARD @E3NG v1.2S.json

* Update 0.25mm SLOW @VIRTU E3.json

* Update 0.10mm STANDARD VIRTU E3.json

* Update 0.15mm FAST @E3NG v1.2S.json

* Update 0.10mm FAST @E3NG v1.2S.json

* Update VIRTU E3 - 0.4 nozzle.json

* Update VIRTU E3 - 0.5 nozzle.json

* Update VIRTU E3 - 0.6 nozzle.json

* Update VIRTU E3 - 0.3 nozzle.json

* Update VIRTU E3 - 0.2 nozzle.json

* Replace cover PNGs for edge to edge images

* Update 0.10mm STANDARD @E3NG v1.2S.json

added alias with previous name

* Update 0.10mm STANDARD @E3NG v1.2S.json

update aliases

* Update and rename 0.10mm STANDARD @E3NG v1.2S.json to 0.10mm Standard @E3NG v1.2S.json

* Update RH3D.json

update naming

* Update and rename 0.10mm FAST @E3NG v1.2S.json to 0.10mm Fast @E3NG v1.2S.json

* Update and rename 0.10mm FAST VIRTU E3.json to 0.10mm Fast VIRTU E3.json

* Update and rename 0.15mm FAST @E3NG v1.2S.json to 0.15mm Fast @E3NG v1.2S.json

* Update and rename 0.15mm FAST VIRTU E3.json to 0.15mm Fast VIRTU E3.json

* Update and rename 0.20mm FAST @E3NG v1.2S.json to 0.20mm Fast @E3NG v1.2S.json

* Update and rename 0.20mm FAST VIRTU E3.json to 0.20mm Fast VIRTU E3.json

* Update and rename 0.25mm FAST @E3NG v1.2S.json to 0.25mm Fast @E3NG v1.2S.json

* Update and rename 0.25mm FAST @VIRTU E3.json to 0.25mm Fast @VIRTU E3.json

* Update and rename process_FAST_E3NG v1.2S.json to process_Fast_E3NG v1.2S.json

* Update and rename process_FAST_VIRTU E3.json to process_Fast_VIRTU E3.json

* Update and rename 0.10mm SLOW @E3NG v1.2S.json to 0.10mm Slow @E3NG v1.2S.json

* Update and rename 0.10mm SLOW @VIRTU E3.json to 0.10mm Slow @VIRTU E3.json

* Update and rename 0.15mm SLOW @E3NG v1.2S.json to 0.15mm Slow @E3NG v1.2S.json

* Update and rename 0.20mm SLOW @E3NG v1.2S.json to 0.20mm Slow @E3NG v1.2S.json

* Update and rename 0.15mm SLOW VIRTU E3.json to 0.15mm Slow VIRTU E3.json

* Update and rename 0.20mm SLOW @VIRTU E3.json to 0.20mm Slow @VIRTU E3.json

* Update and rename 0.25mm SLOW @E3NG v1.2S.json to 0.25mm Slow @E3NG v1.2S.json

* Update and rename 0.25mm SLOW @VIRTU E3.json to 0.25mm Slow @VIRTU E3.json

* Update and rename process_SLOW_E3NG v1.2S.json to process_Slow_E3NG v1.2S.json

* Update and rename process_SLOW_VIRTU E3.json to process_Slow_VIRTU E3.json

* Update and rename 0.10mm STANDARD @VIRTU E3.json to 0.10mm Standard @VIRTU E3.json

* Update and rename 0.15mm STANDARD @E3NG v1.2S.json to 0.15mm Standard @E3NG v1.2S.json

* Update and rename 0.20mm STANDARD @E3NG v1.2S.json to 0.20mm Standard @E3NG v1.2S.json

* Update and rename 0.15mm STANDARD @VIRTU E3.json to 0.15mm Standard @VIRTU E3.json

* Update and rename 0.20mm STANDARD @VIRTU E3.json to 0.20mm Standard @VIRTU E3.json

* Update and rename 0.25mm STANDARD @E3NG v1.2S.json to 0.25mm Standard @E3NG v1.2S.json

* Update and rename 0.25mm STANDARD VIRTU E3.json to 0.25mm Standard VIRTU E3.json

* Update and rename process_STANDARD_E3NG v1.2S.json to process_Standard_E3NG v1.2S.json

* Update and rename process_STANDARD_VIRTU E3.json to process_Standard_VIRTU E3.json

* Update E3NG v1.2S - 0.2 nozzle.json

* Update E3NG v1.2S - 0.3 nozzle.json

* Update E3NG v1.2S - 0.4 nozzle.json

* Update E3NG v1.2S - 0.5 nozzle.json

* Update E3NG v1.2S - 0.6 nozzle.json

* Update VIRTU E3 - 0.2 nozzle.json

* Update VIRTU E3 - 0.3 nozzle.json

* Update VIRTU E3 - 0.4 nozzle.json

* Update VIRTU E3 - 0.5 nozzle.json

* Update VIRTU E3 - 0.6 nozzle.json

* Update 0.15mm Slow @E3NG v1.2S.json

* Update 0.10mm Fast VIRTU E3.json

* Update 0.20mm Slow VIRTU E3.json

* Update 0.10mm Standard @E3NG v1.2S.json

* Update 0.10mm Fast @E3NG v1.2S.json

* Update 0.25mm Standard @E3NG v1.2S.json

* Update 0.15mm Standard @E3NG v1.2S.json

* Update 0.15mm Standard VIRTU E3.json

* Update 0.20mm Standard VIRTU E3.json

* Update 0.20mm Standard @E3NG v1.2S.json

* Update 0.25mm Slow VIRTU E3.json

* Update 0.25mm Fast @E3NG v1.2S.json

* Update 0.20mm Slow @E3NG v1.2S.json

* Update 0.10mm Slow VIRTU E3.json

* Update 0.25mm Slow @E3NG v1.2S.json

* Update 0.25mm Standard VIRTU E3.json

* Update 0.10mm Standard VIRTU E3.json

* Update 0.20mm Fast @E3NG v1.2S.json

* Update 0.10mm Slow @E3NG v1.2S.json

* Update 0.15mm Fast @E3NG v1.2S.json

* Update 0.15mm Fast VIRTU E3.json

* Update 0.15mm Slow VIRTU E3.json

* Update 0.20mm Fast VIRTU E3.json

* Update 0.25mm Fast VIRTU E3.json

* Update fdm_machine_common.json

* Profile verification/fix

Fixing profiles with orca_profile_tool.py

* bump version

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-09-21 22:02:31 +08:00
ExPikaPaka 67cbf31e8b Run colour segmentation and vertical shells in parallel
Same output, ~2.6 min for the LOTR map plate, was ~2.9.
2026-09-21 15:22:36 +02:00
ExPikaPaka 817d73c0e5 Faster slicing of colour-painted layers, texture panel tools row
A layer split into ~1000 colour fragments (a colour texture baked over a
large top face) made several per-fragment loops redo whole-layer ClipperLib
work, so slicing took ~33 min; it now takes ~3 min with the same output.

- make_fills: clip the layer's no-overlap area to each expolygon's box
  before intersecting
- discover_vertical_shells: small-piece filter compares only against the
  nearby part of the layer
- bridge_over_infill: whole-layer union/diff/intersections restricted to the
  candidate's neighbourhood; fill boundary expanded once per spacing; anchor
  tree built only from lines crossing the scan range; bbox pre-check in the
  collision test; limiting outline taken directly instead of through
  expand(..., 0.3 * flow.spacing()), which offsets by 0.135 scaled units
  (flow.spacing() is in mm) and only cost a whole-layer pass per candidate
- Bake job: include GUI.hpp for show_error()
- Texture panel: select/erase whole model next to the paint tools, brush
  size slider back on the same row
2026-09-21 14:55:39 +02:00
İlker Kara 1e038bfc53 fix(linux): build deps on older GCC and Ubuntu 22.04 (#15151)
- GMP: name the parameters in the configure probe from
  0001-GMP_GCC15.patch. Unnamed parameters are a hard error on GCC 10
  and older, so configure failed there.
- TBB: turn off the automatic hwloc search so a system libhwloc-dev is
  not picked up.
- scripts/linux.d/debian: run apt update before checking which
  webkit2gtk package exists, and prefer webkit2gtk-4.1 since the build
  requires it. Add automake, which MPFR's autoreconf needs.
2026-09-21 09:36:55 -03:00
barmanr cdcef47e3d test: bump OrcaArena profile version for OTA retry (#15798)
Merged by /bot merge on behalf of @barmanr (id 281100727).
Grants: resources/profiles/OrcaArena, resources/profiles/OrcaArena.json
Head: 32113de7fd
2026-09-21 11:10:10 +00:00
Ian Chua 4f8a31e9db fix: run post_merge_profiles.yml after bot merges PR. (#15797)
# Description

<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
  > * What issue does this PR address or fix?
  > * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
When a PR is merged using the bot with `/bot merge`, it doesn't invoke
`post_merge_profiles.yml` because post_merge_profiles.yml only starts on
a push or manual dispatch.

# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->

## Tests

<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-21 18:33:35 +08:00
Ian Chua ced4a31cdb Merge branch 'main' into fix/run-profiles-ci-after-bot-merge 2026-09-21 18:32:58 +08:00
peachismomo 8581df4a8a fix: update pr-merge-bot.yml to run post_merge_profiles.yml after merge 2026-09-21 18:30:25 +08:00
Byeon Ho cheol. 162cf7fd4c Update Cubicon profiles: filament/process tuning and xCeler-Mini compatibility (#14660) 2026-09-21 18:18:57 +08:00
peachismomo 09d67b1bb4 fix: remove some logging 2026-09-21 18:17:15 +08:00
barmanr 64cad00569 fix: update OrcaArena product URL (#15796)
Merged by /bot merge on behalf of @barmanr (id 281100727).
Grants: resources/profiles/OrcaArena, resources/profiles/OrcaArena.json
Head: 794db5d30d
2026-09-21 09:53:13 +00:00
SoftFever 45940a573d Grant pull-requests write so profile PR labels and the partner notice actually post 2026-09-21 17:13:44 +08:00
HanifKoh 8b63628cf9 Restore Plugin HTML After a WebKit Reload (#15737)
Plugin dialog content is injected with SetPage, so on the WebKit backends a
reload (context menu, keyboard shortcut or location.reload()) re-fetches the
SetPage base URL instead of the injected document, and the plugin UI is gone
for good: load_plugin_content() returned early once m_content_loaded was set.

Re-inject the plugin HTML when a main-frame load after the initial swap is
neither that swap nor a page the plugin linked to. m_own_page_load marks the
load our own SetPage caused, and the URL test recognises the reload: the
injected document and the directory a reload re-fetches both report the base
URL, so a load of any other URL is left alone. The test ignores a fragment the
page navigated to, and undoes the escaping the web view applies to what the
resources path holds.

A load reaching the base URL is not enough on its own, because WebKitGTK reports
a navigation that never committed against the document that stayed and then
finishes that document again: a link to a missing file therefore arrives as a
load of the base URL and reads exactly like a reload. So the re-injection also
requires a navigation to the base URL to have committed, which a reload always
does and a failure never does.

A bootstrap page that cannot be loaded is still not recovered from: WebKitGTK
substitutes a stock error page for it, and that load supersedes the swap
whichever way the swap is ordered around it. The file ships, so this is a
broken-install path; nothing here makes it worse than it already was.

No separate MSW path is needed: wxWebViewEdge ignores the SetPage base URL, so
its documents report about:blank and the test never matches there, and WebView2
reloads NavigateToString content from its own history entry anyway.
2026-09-21 17:09:05 +08:00
dremc c8bfd2ad3e Fix instantiation on DREMC Filament (#14659) 2026-09-21 16:53:16 +08:00
Alexander Haibl 3eae4c6997 fix-start-gcode for many creality printers (#14652) 2026-09-21 16:22:32 +08:00
gyarros 83eaf3bcfc FilAr PLA-mate: lower bed temperature to 50 C (#14489) 2026-09-21 16:07:49 +08:00
Davide Garberi 454ef1571b Update generic filament profiles for Creality SPARKX i7 (#14388) 2026-09-21 16:01:14 +08:00
ExPikaPaka 8abd9b44d3 Merge remote-tracking branch 'origin/feature/texture_displacement' into feature/texture_displacement
# Conflicts:
#	src/libslic3r/TextureDisplacement.cpp
2026-09-21 09:00:18 +02:00
ExPikaPaka be6c67758a Texture displacement: per-layer bake, UV pane redesign, unwrap and layer view fixes
- Bake: each layer is sampled only on its own painted area; analytic
  projections used to stack every layer over every painted region, so the
  top layer's texture showed on all of them (colour sampler too)
- Auto resolution follows the texture's texel size and sharpness again
- Unwrap: charts cut by each face's own normal (a cube gives 6 islands, not
  12 triangles); non-disk charts (tubes, closed shells) are split until they
  flatten; connected nets test real triangle overlap, grow from the largest
  chart and are packed side by side
- UV edits are stored per unwrapped copy, so dragging a seam vertex no
  longer moves its copies in neighbouring islands
- UV pane: tool strip with unwrap settings moved in from the panel, sharp
  HiDPI icons, clearer island/edge/selection drawing with hover, texture
  picker from the thumbnail, texture no longer lost on reopen (GL state
  from the 3D view, background upload retries)
- Panel: whole-model select/erase as icons in the tools row; inactive
  layers' paint shown muted; colour textures shown in colour in the picker
- Built-in displacement texture library
- Tests for unwrap segmentation, connected nets, UV edits and per-layer
  sampling
2026-09-21 08:59:26 +02:00
Grant Harkness a5d3aaefd3 Creality K1-family CFS support (K1 SE) — follow-up to #13752 (#14089) 2026-09-21 11:37:50 +08:00