Compare commits

...

75 Commits

Author SHA1 Message Date
Ian Chua
fd1c5d826c Merge branch 'main' into refactor/printer-agent-interface 2026-08-07 18:37:56 +08:00
Ian Chua
58be7f4861 feat: abstract remaining gcode commands in devicemanager 2026-08-07 18:36:38 +08:00
Kiss Lorand
f444176df8 Fix Windows crash after using "Replace all with 3D files" (#15102)
Fix Windows crash in Replace all with 3D file

Keep the replacement result message as wxString and substitute the volume
name directly.

On Windows, wxString::ToStdString() cannot encode the Unicode status icon
through the active ANSI code page and returns an empty string. Passing that
empty string to boost::format with a volume-name argument throws
boost::too_many_args and exits OrcaSlicer.
2026-08-07 17:13:25 +08:00
Ian Bassi
a684c6daf6 Bump Creality (#15157)
To apply https://github.com/OrcaSlicer/OrcaSlicer/pull/14654
2026-08-06 18:44:40 -03:00
TheLegendTubaGuy
7f10c73dce Fix redundant QIDI startup tool changes (#15096)
* Fix redundant QIDI startup tool changes

Guard Q2, X-Max 4, and X-Plus 4 filament-change G-code so same-tool startup selections do not run the full cut, unload, and purge sequence.

* Guard Q2C against redundant startup tool changes

Skip the complete filament-change sequence when the requested tool is already selected during startup.

* Bump Qidi profile version
2026-08-06 18:26:42 -03:00
yw4z
945520b827 QOL Add parent preset information next to detach preset checkbox and match checkbox style on Save Preset dialog (#15076)
init
2026-08-06 22:58:39 +08:00
Kiss Lorand
b281c91b99 Fix ignored filament-specific ironing speed override (#15082)
Fix overridden ironing speed

Use filament_ironing_speed for the active filament when configured, falling back to the process setting when unset.
2026-08-06 22:54:11 +08:00
Ian Bassi
b57d7a67e2 Regression version for Bug report (#15139) 2026-08-06 22:43:37 +08:00
SoftFever
18ca06ec6b Size the prime tower from the actual flush volumes (#15149)
# 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?
-->

The prime tower reserved its footprint from the prime volume alone,
ignoring the flush volumes it actually has to hold, so on a multi-colour
print the tower shown in Prepare and the space kept clear for it during
arrange could be far smaller than the tower that gets sliced — leaving
it overlapping objects or running off the plate. This sizes the estimate
from the configured flush volumes instead, for rib walls as well as
rectangle and cone, applies the same height-based minimum depth the
prime-volume estimate already used, and reads the flush matrix correctly
on multi-nozzle printers, where it holds one block per nozzle.

Only the pre-slice estimate changes: the generated tower is untouched,
and prints that do not purge into the prime tower keep their existing
size.

# 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-08-06 18:17:05 +08:00
SoftFever
32a4e0fb37 Size the prime tower from the actual flush volumes
Prime towers reserved depth from the prime volume alone, ignoring the flush
matrix: rib-wall towers in both the engine and the preview, and rectangle and
cone towers in the preview, which never carried the flush-aware estimate the
engine already used. The preview also read the print preset, which does not
carry the printer- and filament-scope keys the estimate needs and so silently
fell back to defaults. On multi-nozzle printers the flush matrix, which holds
one block per nozzle, was additionally read as a single block. The tower could
come out too small for the purge it has to hold.

The flush-based estimate also skipped the height-based minimum depth that the
prime-volume one applies, so low-flush prints could estimate a tower shallower
than the one that actually gets built.
2026-08-06 17:58:41 +08:00
Ian Chua
4031b00915 Merge branch 'main' into refactor/printer-agent-interface 2026-08-06 16:27:57 +08:00
SoftFever
f9ed5843c0 Keep the prime tower and its approach travel on non-rectangular beds (#15146)
# 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?
-->

On delta, circular and custom bed shapes — and on multi-nozzle printers
where each carriage only reaches part of the plate — the prime tower was
positioned and clamped against the bed's bounding box, so it could be
parked in a corner the bed does not actually have. Neither the default
placement nor dragging the tower would pull it back onto the bed, and
slicing went ahead without complaint. The tower's default position, its
drag clamp and the slice-time validation now all follow the real
printable outline, and a tower that genuinely does not fit is reported
as "Prime Tower is partially outside the printable area" instead of
being sliced into a print that cannot be produced.

The travel that approaches the tower is planned against that same
outline. Previously the router gave up whenever its clearance box fell
outside the bed and drove the nozzle straight across the tower; a tower
parked near the bed edge now keeps its detour and enters through the
wall opening as intended.

This also corrects the footprint the prime tower validation uses for a
rotated tower, which was being rotated by the wrong amount and about the
wrong point, so proximity warnings and exclusion-area errors for rotated
towers were being computed against the wrong shape.

Prime tower placement on rectangular beds is unchanged. The new
printable-area validation and the tower-approach routing fix apply to
every bed shape.

# 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.
-->

Added unit coverage for the placement clamp against a non-rectangular
outline (a regular hexagon standing in for the shipped delta beds),
covering the rectangular-bed path, single-axis clamping while dragging,
a footprint already inside the outline, one sitting in the bounding-box
corner but off the bed, an unresolved auto brim width arriving as a
negative margin, and a footprint too large for the bed. The `fff_print`
suite passes.

<!--
> 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-08-06 16:09:56 +08:00
SoftFever
7c73739e1a Keep the prime tower and its approach travel on non-rectangular beds
The placement clamps and the tower-approach router both stood in the bed's
bounding box for the bed itself, so on a delta or hexagonal bed the prime tower
could be parked in a corner that does not exist and the nozzle could be routed
across it. Both now test the real printable outline, slicing reports a tower
that does not fit instead of printing it off the bed, and a tower parked near an
edge is routed along the clamped side rather than falling back to a straight
line across the tower.

Also fixes the placement validation rotating the tower hull by degrees read as
radians about the plate origin, and never rotating the generated tower footprint
at all.
2026-08-06 15:48:40 +08:00
SoftFever
aa4e28b2b5 Feature: Wait for the toolchange temperature on the wipe tower (#15144)
# 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?
-->

Adds **Wait for temperature on wipe tower**, a printer option for
multi-extruder
machines using a Type 2 wipe tower. With it on, the new tool is picked
up without a
blocking temperature wait; the printer travels to the wipe tower and
waits there
right before purging, parked beside the tower so the ooze from the
heat-up lands
next to it rather than on the model. The incoming filament's target is
raised ahead
of the tool change, so the heat-up overlaps both the change itself and
the travel to
the tower.

The benefit is less oozing and less dead time. The tool no longer sits
at full print
temperature while it waits to be picked up or right after it undocks —
it heats on
the move and only reaches temperature once it is over the tower, so
there is far less
hot-and-idle time, and what does ooze ends up beside the tower. This
matters most on
tool changer printers with long docking and attaching cycles, such as
Tapchanger and
StealthChanger machines, where that wait is otherwise pure stall time
spent dripping.

The firmware or tool change macro must not wait for the temperature
itself. The
option is off by default and only shown for multi-extruder printers on a
Type 2 wipe
tower, and it is enabled by default for the generic toolchanger profile.

# 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.
-->

New Catch2 cases in `tests/fff_print/test_multifilament.cpp`: the wait
moves to the
tower when enabled, priming pre-heats to the first layer temperature,
the park side
is regenerated when the tower is moved or rotated, and a regression test
pinning the
unchanged (option-off) toolchange temperature commands against a
recorded trace
(`tests/data/wipe_tower_temperature_trace_main.txt`).

<!--
> 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-08-06 13:32:35 +08:00
SoftFever
408db4b3b0 Wait for the toolchange temperature on the wipe tower
Adds a printer option that picks up the new tool without a blocking temperature
wait, travels to the wipe tower, and waits there right before purging, parked
beside the tower so the ooze from the heat-up lands next to it rather than on the
model. The incoming filament's target is raised ahead of the tool change, so the
heat-up overlaps both the change itself and the travel to the tower.

Off by default, and only offered for multi-extruder printers using a Type 2 wipe
tower; the generic toolchanger profile enables it.
2026-08-06 12:24:00 +08:00
Alexander Haibl
b97ca3c0ac disable arc_fitting for K1 potato mcu (#14654) 2026-08-05 16:25:34 -03:00
Dipl.-Ing. Raoul Rubien, BSc
f73566dd2b Fixes 1 Technical Debt and 3 Compiler Warnings [-Wclass-memaccess] (#10707)
* fixes: memcpy(...) writing to an object of type OrientParams with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]

* review result: replaces anonymous namespace with static
2026-08-05 21:45:48 +08:00
Dipl.-Ing. Raoul Rubien, BSc
7fbfb7ba87 Fixes 14 Compiler Warnings [-Wmaybe-uninitialized] (#10778)
* fixes: may be used uninitialized [-Wmaybe-uninitialized]

* fixes: may be used uninitialized [-Wmaybe-uninitialized]

* fixes: may be used uninitialized [-Wmaybe-uninitialized]

* fixes: may be used uninitialized [-Wmaybe-uninitialized]

* reverts {} initializer to = to keep code style consistent
2026-08-05 21:42:15 +08:00
Dipl.-Ing. Raoul Rubien, BSc
23bd320076 Fixes 2 Bugs and 13 Compiler Warnings (#10670)
* fixes: %g directive writing between 1 and 13 bytes into a region of size between 6 and 18 [-Wformat-overflow=]

* fixes: %5s directive writing between 5 and 63 bytes into a region of size 58 [-Wformat-overflow=]

* fixes: catching polymorphic type by value [-Wcatch-value=]

* fixes: [-Wcomment]; removes whitespaces

* increases buffer size from 71B to 90B to avoid potential ovfl.
2026-08-05 21:41:04 +08:00
Ian Chua
b2e05d0683 Merge remote-tracking branch 'origin/refactor/access-codes' into refactor/printer-agent-interface 2026-08-05 20:37:57 +08:00
Ian Chua
ae27a09ffe Merge remote-tracking branch 'origin/refactor/access-codes' into refactor/printer-agent-interface 2026-08-05 20:02:23 +08:00
Ian Chua
cd33f589dc Merge branch 'main' into refactor/printer-agent-interface 2026-08-05 20:02:02 +08:00
Ian Chua
9ee736fe27 Merge branch 'main' into refactor/access-codes 2026-08-05 19:57:07 +08:00
Ian Chua
ced1058b31 fix: naming and print host propagation 2026-08-05 19:52:51 +08:00
Ian Chua
aae83220f1 fix: merge duplicated access code and allow empty access code in UI 2026-08-05 19:30:26 +08:00
SoftFever
a10d9e77cf Make the wipe tower's planner flush and dwell work on Klipper (#15133)
# Description

On Klipper the wipe tower's motion-queue synchronization silently did
nothing. Klipper acts on commands the moment it parses them, and its
`G4` reads only `P` in milliseconds — it ignores `S` — so the `G4 S0`
the tower used to flush the queue before a temperature change never
synchronized anything, and the cooling delay after a filament's cooling
moves passed instantly instead of waiting. The tower now emits `M400`
for the flush and `G4 P<ms>` for the dwell when the flavor is Klipper.

Only `gcode_flavor = klipper` is affected; G-code for every other flavor
is byte-identical, so no shipped profile or existing project file
changes.

# 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-08-05 18:21:05 +08:00
SoftFever
1d023216f2 clean up 2026-08-05 18:09:36 +08:00
SoftFever
dc2796209f feat: printer agent UI (#15111)
# Description

Changes the device tab to render native wxWidgets UI and route the UI
via printer agents.

When the flag introduced in #15110 is enabled, the tab bar will show
both the native wxWidgets device tab and webview tab under the name
device (legacy)

This is a prerequisite for implementing the printer agent workflow.

<img width="3377" height="1378" alt="image"
src="https://github.com/user-attachments/assets/d72b646b-e6c6-4e10-b5d4-fc989debfca8"
/>
<img width="3377" height="1378" alt="image"
src="https://github.com/user-attachments/assets/2356c0f8-bffe-4cd5-bf4d-31f4b5c7706e"
/>

<!--
> 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-08-05 17:25:23 +08:00
SoftFever
194ef34080 Wait in the wipe tower with a millisecond dwell on Klipper
The wipe tower's "Delay after unloading" never happened on Klipper. It was
emitted as G4 S<seconds>, and Klipper's G4 reads only the P parameter, in
milliseconds, so the pause was silently skipped. The option now produces a
dwell Klipper actually performs.

Also corrects the planner flush rationale, which cited an extruder position
reset that Klipper resolves at parse time and does not need synchronized, and
adds end-to-end coverage that slices a two-filament print and checks the
emitted wipe tower G-code on both a Klipper and a non-Klipper flavor.

No change to any other firmware flavor's output, and no shipped profile sets a
non-zero delay, so no shipped profile's output moves either.
2026-08-05 17:15:35 +08:00
SoftFever
4e1caa39eb Flush the wipe tower planner queue with M400 on Klipper
The wipe tower emitted G4 S0 to make the firmware finish its queued moves
before commands that must not take effect early. Klipper's G4 reads only the
P parameter, so that flush never happened there and a temperature change could
land seconds ahead of the moves it was meant to follow. Klipper now gets M400
instead, through one helper shared by both wipe tower implementations.

No change to any other firmware flavor's output, so no shipped profile or saved
project is affected.
2026-08-05 17:15:35 +08:00
Ian Chua
38f5c84e7f fix: regression error 2026-08-05 16:20:58 +08:00
Ian Chua
4d8ce0e8a7 Merge branch 'main' into feat/printer-agent-ui 2026-08-05 13:40:20 +08:00
Ian Chua
38cb1ae8d1 Add developer flag for printer agents (#15110) 2026-08-05 13:40:05 +08:00
Ian Chua
f3f44bffcb Merge branch 'feat/printer-agent-ui' of https://github.com/OrcaSlicer/OrcaSlicer into refactor/printer-agent-interface 2026-08-05 13:20:18 +08:00
Ian Chua
2d3e911efa Merge branch 'main' into refactor/printer-agent-interface 2026-08-05 13:16:47 +08:00
Ian Chua
32f82b64e7 fix: enable both device tabs 2026-08-05 13:07:32 +08:00
Ian Chua
e56d7aeb80 Merge branch 'feat/printer-agent-ui' of https://github.com/OrcaSlicer/OrcaSlicer into feat/printer-agent-ui 2026-08-05 13:07:08 +08:00
Ian Chua
4758dc6c68 Merge branch 'main' into feat/printer-agent-ui 2026-08-05 13:06:47 +08:00
Ian Chua
596cbb8b2d Keep printer-agent error codes available to UI workflow 2026-08-05 11:39:37 +08:00
SoftFever
6312caaf13 Add filament_retract_length_toolchange/filament_retract_restart_extra_toolchange config and update tool changer printer's profiles (#15039)
* update snapmaker profiles. largely ported for Snapmaker Orca fork

* update prime volume

* set precise_outer_wall to 1

* Update per-material multi-tool ramming to the filament library

* Add per-filament overrides for toolchange retraction

* Set toolchange retraction per filament for Snapmaker U1

* set default support type to tree

* format snapmaker profiles
2026-08-05 00:13:27 +08:00
SoftFever
0051768206 Smooth out the spiral lift when arc fitting is disabled (#15118)
The linear approximation used a heuristic segment count clamped to 4..16, so the
lift ran as a coarse polygon. Every vertex is a direction change large enough to
hit the firmware's jerk limit, forcing a decelerate/accelerate at each corner —
the lift micro-stutters instead of running at speed. The segment count now comes
from the chord deviation against the slicing resolution, reusing
Geometry::ArcWelder::arc_discretization_steps, which keeps the turn at each
vertex shallow enough for the firmware to carry speed through the whole move.

Points are emitted through GCodeG1Formatter so they carry the same quantization
as the rest of the G-code, and the move comment now trails the feedrate line to
match _travel_to_z and the G2/G3 branch. No change when arc fitting is enabled.
2026-08-05 00:09:46 +08:00
Ian Bassi
1d078e005a Mouse ear Wiki redirect (#15115)
Based in https://github.com/OrcaSlicer/OrcaSlicer/pull/15015 and https://github.com/OrcaSlicer/OrcaSlicer_WIKI/pull/323
2026-08-04 11:37:05 -03:00
Kris Austin
82759d3899 fix: make the error dialog caret point at the character it's blaming (#14886)
* fix: make the error dialog caret point at the character it's blaming

Custom G-code parse errors print the offending line with a '^' under the
character that broke, positioned with spaces so it only lines up in a
fixed-width font. Since v2.3.2 these dialogs rendered entirely in the
proportional UI font, so the caret drifted left of its column and landed
on unrelated text.

Render only the code excerpts (the offending source line and its caret) in
the fixed-width face, leaving the surrounding prose in the UI font, and
reserve the horizontal scrollbar's height so a long line does not clip.
Rename the flag to has_code_excerpts to match what it now means.

Fixes #14869

* refactor(GUI): use <code> instead of <tt> for error excerpts

wxHTML maps <tt>, <code>, <kbd> and <samp> to the same fixed-width
handler, so this renders identically. <code> is the non-deprecated
tag and matches what the original code used.

* fix(GUI): align the error caret with real spaces, not &nbsp;

The caret line was padded with &nbsp; so its spaces would survive inline
HTML. wxHTML measures every glyph by its font extent, so where the fixed
font lacks a U+00A0 glyph the fallback renders it about twice as wide, and
the all-&nbsp; caret line outran the source, drifting the ^ to the right.

Wrap the excerpts in a small <excerpt> tag, registered on the dialog's own
parser, that switches on wxHTML literal-whitespace mode so the caret uses
real spaces that match the source column in any font. It sits inside <code>
for the fixed face; <pre> would do both but forces a blank line above it.

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-08-04 22:01:45 +08:00
Ian Bassi
59155f26ac Build Arch Fix (#15107)
Arch Fix
2026-08-04 21:56:15 +08:00
Ian Chua
56236f56a8 Add unsupported-command feedback to the device UI 2026-08-04 21:26:56 +08:00
Ian Chua
79dcace1ac Add unsupported-command feedback to the device UI 2026-08-04 21:26:50 +08:00
Ian Chua
df5a08517a Keep printer-agent error codes with the interface 2026-08-04 19:44:39 +08:00
Andrew
5d953f915a Keep Bambu AMS dialect out of the agent waist
M620 is Bambu firmware dialect, not a
neutral command. Composing it in
MachineObject let non-Bambu agents
(Moonraker/Klipper) forward it and
report success on firmware that
cannot run it.

Agents now own the dialect: the
default refusal on IPrinterAgent
returns not-supported so the UI
can say so; BBLPrinterAgent keeps
the byte-identical composition.
2026-08-04 18:12:20 +08:00
Andrew
dd2cb92685 Gate agent mode behind use_printer_agents toggle
Replace per-printer auto-activation
(is_current_printer_agent_plugin)
with a global experimental AppConfig
toggle, default off: legacy
print-host behavior is unchanged
until the user opts in. The toggle
drives device-tab routing, print
button defaults, connect-button
visibility and sidebar layout, and
dedups machine-select dialog opens.
2026-08-04 18:12:20 +08:00
Andrew
b2f08c3ff8 Reset device selection on agent swap or unload (#124)
set_live_printer_agent centralizes
the swap: deselect the machine,
clear stale sidebar state and the
previous agent's Other Devices, then
install the new agent (or null when
its provider vanished). Plugin
load/unload callbacks refresh the
dropdown and re-run agent selection.
load_last_machine no longer falls
back to the first available machine.
2026-08-04 18:12:19 +08:00
Andrew
75a2460649 Replace fake-enum printer agent dropdown (#121)
A dedicated PrinterAgentChoice field
reads rows straight from the live
agent registry and stores the agent
id string, replacing the fake-coEnum
index mapping. The field moves to
TabPrinter and registers with the
searcher so UnsavedChanges renders
it; the PhysicalPrinterDialog copy
and its update hook are removed
(#125). switch_printer_agent now
resolves ids via
resolve_printer_agent_id.
2026-08-04 18:12:19 +08:00
Ian Chua
01493d4e3a Add developer flag for printer agents 2026-08-04 18:12:19 +08:00
Andrew
8dfc7a14b9 Gate agent mode behind use_printer_agents toggle
Replace per-printer auto-activation
(is_current_printer_agent_plugin)
with a global experimental AppConfig
toggle, default off: legacy
print-host behavior is unchanged
until the user opts in. The toggle
drives device-tab routing, print
button defaults, connect-button
visibility and sidebar layout, and
dedups machine-select dialog opens.
2026-08-04 18:12:11 +08:00
Andrew
1534268183 Reset device selection on agent swap or unload (#124)
set_live_printer_agent centralizes
the swap: deselect the machine,
clear stale sidebar state and the
previous agent's Other Devices, then
install the new agent (or null when
its provider vanished). Plugin
load/unload callbacks refresh the
dropdown and re-run agent selection.
load_last_machine no longer falls
back to the first available machine.
2026-08-04 18:12:11 +08:00
Andrew
501af81ba9 Replace fake-enum printer agent dropdown (#121)
A dedicated PrinterAgentChoice field
reads rows straight from the live
agent registry and stores the agent
id string, replacing the fake-coEnum
index mapping. The field moves to
TabPrinter and registers with the
searcher so UnsavedChanges renders
it; the PhysicalPrinterDialog copy
and its update hook are removed
(#125). switch_printer_agent now
resolves ids via
resolve_printer_agent_id.
2026-08-04 18:12:10 +08:00
Ian Chua
16c44940d2 Add developer flag for printer agents 2026-08-04 18:12:10 +08:00
yw4z
40eab797c6 match em_unit value for on_dpi_change for linux (#15043)
* Update GUI_Utils.hpp

* Update GUI_Utils.hpp
2026-08-04 08:45:31 +08:00
Kiss Lorand
ca7fbfb007 Fix missing overhang wall when no partial counterbore bridge is generated (#15100) 2026-08-03 18:02:48 -03:00
Mikhail f. Shiryaev
7b404596e9 Add Skip G-code config block to exclude the config comments from G-code files (#12455)
Add feature to skip CONFIG_BLOCK in G-code files
2026-08-03 15:10:01 -03:00
Kris Austin
06ef58bad8 test: replace the disabled convex_hull_2d test (#14892)
test(libslic3r): replace the disabled convex_hull_2d test, closing #11269

The last "failing libslic3r test" from #11269 was the disabled
SCENARIO("2D convex hull of sinking object", "[3mf][.]") in test_3mf.cpp.
It checked ModelObject::convex_hull_2d for a sinking object against
PrusaSlicer's reference hull, but Orca's convex_hull_2d does not clip
geometry below the bed the way PrusaSlicer's its_convex_hull_2d_above does,
so the reference never matched. The test also wrote a debug mesh to a
hardcoded /tmp path and its comparison loop was inverted.

Remove it and add tests/libslic3r/test_model.cpp characterizing
convex_hull_2d on non-sinking transforms (identity and scale+offset),
where the projected footprint is unambiguous. Homed in a Model test file
since it exercises ModelObject, not 3MF.
2026-08-03 22:29:00 +08:00
SoftFever
74c4a7e450 Support printer specific filament profiles in the OrcaFilamentLibrary (#15101)
* Support printer specific filament profiles in the Orca Filament Library
2026-08-03 22:25:50 +08:00
Noisyfox
dbb991bf07 Fix gizmo being closed after releasing mouse outside the gizmo floating window (#15095)
* Fix gizmo being closed after releasing mouse outside the gizmo floating window

The left up event of a drag started on the gizmo floating window (e.g.
selecting text in an input field) and released over the bed was treated
as a click on the plate, which deselected the objects and closed the
active gizmo. Add the ignore_left_up guard to the plate select branch,
matching the deselect branch above.

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Emboss gizmo being closed after releasing mouse outside its floating window

The Emboss gizmo has its own close-on-click-away handler
(on_mouse_change_selection) that was not protected against left up events
originating from ImGui windows, so the gizmo was still closed when a drag
started on its floating window (e.g. selecting text in the input field)
ended over the 3D scene. Expose the canvas's ignore_left_up state to
gizmos and skip the close check for such releases.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 18:34:15 +08:00
Noisyfox
66d3f3f9c3 imgui: Clamp mouse y-coordinate in multi-line click/drag to text bounds (#15052)
* imgui: Clamp mouse y-coordinate in multi-line click/drag to text bounds

In single-line mode, click and drag already clamped y to the line's
y-coordinate so the cursor would continue to follow the x-position when
the mouse went off the top or bottom of the text.  Multi-line mode did
not clamp, so stb_text_locate_coord() would return 0 (above) or n
(below), snapping the cursor to the very start or end of text and
ignoring the x-coordinate entirely.

Now both modes walk the row layout to compute the top of the first row
(y_min) and bottom of the last row (y_max, minus half a line height to
add tolerance for rounding), then clamp y to that range before passing
it to stb_text_locate_coord().  This means dragging or clicking above
the text now places the cursor on the first line at the x-coordinate,
and dragging/clicking below places it on the last line at the
x-coordinate, matching the single-line precedent.

* Fix issue that cursor cannot be placed at the last empty line
2026-08-03 18:34:05 +08:00
Ryan Hartman
6b5c8af1c8 Pin OpenSSL libdir so the bundled Python finds it (#15047)
On Linux the bundled CPython silently links the system OpenSSL instead of
the one built in deps/, and the dependency build then fails:

  install: cannot stat 'Modules/_ssl.cpython-312-x86_64-linux-gnu.so':
           No such file or directory

The chain:

  * OpenSSL's linux-x86_64 target sets multilib=64, so 'make install_sw'
    installs the static libs to <prefix>/lib64 while every other dependency
    in the prefix uses <prefix>/lib.
  * CPython's --with-openssl=<dir> only ever emits -L<dir>/lib. It does not
    look in lib64, so -lssl resolves to the system OpenSSL.
  * gcc -shared does not error on unresolved symbols, so the link appears to
    succeed. _ssl.c was compiled against the bundled 1.1.1w headers, which
    map SSL_get1_peer_certificate onto the pre-3.0 SSL_get_peer_certificate
    -- a symbol OpenSSL 3.x removed. The module then fails to import:

      _ssl failed to import: undefined symbol: SSL_get_peer_certificate
      Could not build the ssl module!

  * With no _ssl built, 'make install' cannot stat it and the build stops.

Passing --libdir=lib keeps the prefix single-layout, so CPython's -L<dir>/lib
finds the bundled static libraries and links against the headers it was
compiled with.

CMake-based dependencies were unaffected throughout, because CMake's
FindOpenSSL searches lib64 on its own; only CPython's autoconf path is
sensitive to this.

Affects any distribution where OpenSSL selects the lib64 layout, which is the
Fedora, openSUSE and Arch families. Debian and Ubuntu are unaffected, which is
why CI has not seen it.

Verified on Arch (GCC 16.1.1, CMake 4.4.2): the dependency build completes and
the bundled interpreter reports the bundled OpenSSL rather than the system one:

  $ deps/build/OrcaSlicer_dep/usr/local/libpython/bin/python3.12 \
      -c 'import ssl; print(ssl.OPENSSL_VERSION)'
  OpenSSL 1.1.1w  11 Sep 2023

Not verified on macOS or Windows. The flag is accepted by OpenSSL's Configure
on all platforms and Darwin targets do not set multilib, so it should be a
no-op there, but CI is the check.
2026-08-03 11:03:59 +08:00
yw4z
e72a3a65b2 QOL Continue to capture mouse position while dragging ImGui controls and mouse position goes to outside of window (#14999)
* Update GLCanvas3D.cpp

* support navigation cube

* capture events for transform widgets

* camera rotation and pan

* selection frame

* object drag

* fix navigation cube stealing drag events

* fix lag on navigation cuve

* variable layer height

* fix plates toolbar scrollbar

* Update GLCanvas3D.cpp

* Fix issue that mouse button state is wrong in certain macOS mouse events

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-08-02 18:59:53 +08:00
Misterff1
1b71835337 Fixed some desktop environments showing title bar on splash screen when running on Wayland (#15019)
* Remove titlebar from splash screen on Wayland

* Broadly check for window decorations and added explanatory description

* Fixed hiding title bar on Wayland for all desktop environments

* Update format

---------

Co-authored-by: noisyfox <timemanager.rick@gmail.com>
2026-08-02 18:58:49 +08:00
Dipl.-Ing. Raoul Rubien, BSc
f9fa1c117f Define WXINSPECTOR_DISABLE globally to prevent include-order-dependent class layout (#15063)
fix: define WXINSPECTOR_DISABLE globally to prevent include-order-dependent class layouts
2026-08-02 18:20:35 +08:00
Kiss Lorand
6f3ca7d1b9 Fix preview speeds and time estimates after firmware retract commands (#15066) 2026-08-02 00:01:19 -03:00
maddavo
13ae3a1c90 Add outer-only mouse ears and align ear radius controls (#15015)
Improve mouse ear brim controls
2026-08-02 10:54:16 +08:00
Valerii Bokhan
fb36d5e73b Feature: Smooth Factor for the Hilbert Curve sparse infill (#14969) 2026-08-01 17:58:04 -03:00
GlauTech
abb2ab8d3f Update OrcaSlicer_tr.po (#15060) 2026-08-01 23:26:26 +03:00
Dipl.-Ing. Raoul Rubien, BSc
95b781745d Fixes 4 Compiler Warnings (#10727)
* fixes: may be used uninitialized [-Wmaybe-uninitialized]

* fixes: arc_len_next may be used uninitialized [-Wmaybe-uninitialized]

* review result: reverts {} initializer with = to keep code style consistent
2026-08-01 18:07:15 +08:00
Kenneth Raplee
80e64f80a6 Fix 32-bit build in LayerResult::make_nop_layer_result (#15036)
LayerResult's second field is typed size_t, so std::numeric_limits::max
should also use size_t and not something related to coordinates for the
layer_id.
2026-08-01 11:49:28 +08:00
yw4z
477208a969 Remove borders and paddings from native controls on Linux (#14873)
* init

* update

* Update SpinInput.cpp

* possible fix for em_unit

* button alignment

* match titlebar height

* revert em_value for macOS and Windows

* Update GUI_Utils.hpp

* Merge branch 'main' into linux-black-borders-2

* Revert "button alignment"

This reverts commit 3fc7461071.

* Revert "match titlebar height"

This reverts commit c4aa1d9f1e.

* revert dpi changes

* match platform tags

* remove radio box borders

* Fix code indent
2026-08-01 11:28:07 +08:00
Rodrigo Faselli
2e08b19d6b Outline MSAA (#14835)
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-07-31 20:51:48 -03:00
399 changed files with 14954 additions and 2930 deletions

View File

@@ -32,9 +32,17 @@ body:
attributes:
label: OrcaSlicer Version
description: Which version of Orca Slicer are you running? You can see the full version in `Help` -> `About Orca Slicer`.
placeholder: e.g. 1.9.0
placeholder: e.g. 2.5.0
validations:
required: true
- type: input
id: working_version
attributes:
label: Regression compared to a previous version
description: Did it work in a previous version?
placeholder: e.g. 2.3.2
validations:
required: false
- type: dropdown
id: os_type
attributes:

View File

@@ -80,8 +80,12 @@ endif()
if (DEFINED BBL_RELEASE_TO_PUBLIC)
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=${BBL_RELEASE_TO_PUBLIC}")
if (BBL_RELEASE_TO_PUBLIC)
add_compile_definitions(WXINSPECTOR_DISABLE)
endif ()
else ()
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=$<CONFIG:Release>")
add_compile_definitions("$<$<CONFIG:Release>:WXINSPECTOR_DISABLE>")
endif ()
find_package(Git)

View File

@@ -52,6 +52,14 @@ ExternalProject_Add(dep_OpenSSL
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
"--openssldir=${DESTDIR}"
"--prefix=${DESTDIR}"
# OpenSSL's linux-x86_64 target sets multilib=64, so it installs to
# <prefix>/lib64 while every other dep uses <prefix>/lib. CPython's
# --with-openssl only ever emits -L<dir>/lib, so it misses the bundled
# static libs and silently links the system OpenSSL instead -- which,
# against 1.1.1w headers, leaves _ssl.so with an undefined
# SSL_get_peer_certificate (removed in OpenSSL 3.x). Pin libdir so the
# prefix stays single-layout.
"--libdir=lib"
${_cross_comp_prefix_line}
no-shared
no-asm

View File

@@ -465,6 +465,57 @@ static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *stat
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
y = r.ymin;
}
else
{
// In multi-line mode, clamp y to stay within the text vertical bounds.
// This lets the click still land at a valid location if the mouse is slightly
// above or below the text.
StbTexteditRow r;
int n = STB_TEXTEDIT_STRINGLEN(str);
int i = 0;
float base_y = 0, y_min, y_max;
// Get the first row to establish y_min and start the iteration
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
if (r.num_chars <= 0)
{
state->cursor = 0;
state->select_start = state->cursor;
state->select_end = state->cursor;
state->has_preferred_x = 0;
return;
}
y_min = r.ymin;
y_max = base_y + r.ymax;
i = r.num_chars;
base_y += r.baseline_y_delta;
// Walk the remaining rows to find the bottom of the last row
while (i < n)
{
STB_TEXTEDIT_LAYOUTROW(&r, str, i);
if (r.num_chars <= 0)
break;
y_max = base_y + r.ymax;
i += r.num_chars;
base_y += r.baseline_y_delta;
}
// If the text ends with a newline, account for the empty trailing line
// so the cursor can be placed on it
if (n > 0 && STB_TEXTEDIT_GETCHAR(str, n - 1) == STB_TEXTEDIT_NEWLINE)
{
STB_TEXTEDIT_LAYOUTROW(&r, str, n);
y_max = base_y + r.ymax;
}
// Subtract half the last line height to avoid rounding issues when the mouse
// is just barely below the last line (keep cursor on the last line, not after the text)
y_max -= (r.ymax - r.ymin) * 0.5f;
if (y < y_min) y = y_min;
if (y > y_max) y = y_max;
}
state->cursor = stb_text_locate_coord(str, x, y);
state->select_start = state->cursor;
@@ -485,6 +536,50 @@ static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
y = r.ymin;
}
else
{
// In multi-line mode, clamp y to stay within the text vertical bounds.
// This lets the drag keep working if the mouse goes off the top or bottom of the text.
StbTexteditRow r;
int n = STB_TEXTEDIT_STRINGLEN(str);
int i = 0;
float base_y = 0, y_min, y_max;
// Get the first row to establish y_min and start the iteration
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
if (r.num_chars <= 0)
return;
y_min = r.ymin;
y_max = base_y + r.ymax;
i = r.num_chars;
base_y += r.baseline_y_delta;
// Walk the remaining rows to find the bottom of the last row
while (i < n)
{
STB_TEXTEDIT_LAYOUTROW(&r, str, i);
if (r.num_chars <= 0)
break;
y_max = base_y + r.ymax;
i += r.num_chars;
base_y += r.baseline_y_delta;
}
// If the text ends with a newline, account for the empty trailing line
// so the cursor can be placed on it
if (n > 0 && STB_TEXTEDIT_GETCHAR(str, n - 1) == STB_TEXTEDIT_NEWLINE)
{
STB_TEXTEDIT_LAYOUTROW(&r, str, n);
y_max = base_y + r.ymax;
}
// Subtract half the last line height to avoid rounding issues when the mouse
// is just barely below the last line (keep cursor on the last line, not after the text)
y_max -= (r.ymax - r.ymin) * 0.5f;
if (y < y_min) y = y_min;
if (y > y_max) y = y_max;
}
if (state->select_start == state->select_end)
state->select_start = state->cursor;

View File

@@ -7781,19 +7781,19 @@ msgid "Replaced with 3D files from directory:\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: same file.\n"
msgid "✖ Skipped %s: same file.\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgid "✖ Skipped %s: file does not exist.\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgid "✖ Skipped %s: failed to replace.\n"
msgstr ""
#, possible-boost-format
msgid "✔ Replaced %1%.\n"
msgid "✔ Replaced %s.\n"
msgstr ""
msgid "Replaced volumes"

View File

@@ -8361,21 +8361,21 @@ msgstr "No s'ha seleccionat el directori per a la substitució"
msgid "Replaced with 3D files from directory:\n"
msgstr "Substituït amb fitxers 3D del directori:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Omès %1%: mateix fitxer.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Omès %s: mateix fitxer.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Omès %1%: el fitxer no existeix.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Omès %s: el fitxer no existeix.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Omès %1%: la substitució ha fallat.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Omès %s: la substitució ha fallat.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Substituït %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Substituït %s.\n"
msgid "Replaced volumes"
msgstr "Volums substituïts"

View File

@@ -8320,21 +8320,21 @@ msgstr "Nebyla vybrána složka pro nahrazení"
msgid "Replaced with 3D files from directory:\n"
msgstr "Nahrazeno 3D soubory ze složky:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Přeskočeno %1%: stejný soubor.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Přeskočeno %s: stejný soubor.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Přeskočeno %1%: soubor neexistuje.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Přeskočeno %s: soubor neexistuje.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Přeskočeno %1%: nahrazení se nezdařilo.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Přeskočeno %s: nahrazení se nezdařilo.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Nahrazeno %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Nahrazeno %s.\n"
msgid "Replaced volumes"
msgstr "Nahrazené objemy"

View File

@@ -8191,21 +8191,21 @@ msgstr "Verzeichnis um daraus zu ersetzen wurde nicht ausgewählt"
msgid "Replaced with 3D files from directory:\n"
msgstr "Ersetzt durch 3D-Dateien aus Verzeichnis:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Übersprungen %1%: gleiche Datei.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Übersprungen %s: gleiche Datei.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Übersprungen %1%: Datei existiert nicht.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Übersprungen %s: Datei existiert nicht.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Übersprungen %1%: Ersetzen fehlgeschlagen.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Übersprungen %s: Ersetzen fehlgeschlagen.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Ersetzt %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Ersetzt %s.\n"
msgid "Replaced volumes"
msgstr "Ersetzte Volumen"

View File

@@ -7776,20 +7776,20 @@ msgstr ""
msgid "Replaced with 3D files from directory:\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr ""
#, boost-format
msgid "✔ Replaced %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr ""
msgid "Replaced volumes"

View File

@@ -7997,21 +7997,21 @@ msgstr "No se seleccionó el directorio para el reemplazo"
msgid "Replaced with 3D files from directory:\n"
msgstr "Reemplazado con archivos 3D desde el directorio:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Omitido %1%: mismo archivo.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Omitido %s: mismo archivo.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Omitido %1%: el archivo no existe.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Omitido %s: el archivo no existe.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Omitido %1%: fallo al reemplazar.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Omitido %s: fallo al reemplazar.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Reemplazado %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Reemplazado %s.\n"
msgid "Replaced volumes"
msgstr "Volúmenes reemplazados"

View File

@@ -8064,21 +8064,21 @@ msgstr "Ez da ordezkatzeko direktoriorik hautatu"
msgid "Replaced with 3D files from directory:\n"
msgstr "Direktorio honetako 3D fitxategiekin ordeztuta:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ %1% saltatu da: fitxategi bera.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ %s saltatu da: fitxategi bera.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ %1% saltatu da: fitxategia ez da existitzen.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ %s saltatu da: fitxategia ez da existitzen.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ %1% saltatu da: ezin izan da ordeztu.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ %s saltatu da: ezin izan da ordeztu.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ %1% ordezkatu da.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ %s ordezkatu da.\n"
msgid "Replaced volumes"
msgstr "Ordeztutako bolumenak"

View File

@@ -8120,21 +8120,21 @@ msgstr "Le répertoire pour le remplacement n'a pas été sélectionné"
msgid "Replaced with 3D files from directory:\n"
msgstr "Remplacé par des fichiers 3D depuis le répertoire :\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Ignoré %1% : même fichier.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Ignoré %s : même fichier.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Ignoré %1% : le fichier n'existe pas.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Ignoré %s : le fichier n'existe pas.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Ignoré %1% : échec du remplacement.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Ignoré %s : échec du remplacement.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Remplacé %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Remplacé %s.\n"
msgid "Replaced volumes"
msgstr "Volumes remplacés"

View File

@@ -8244,21 +8244,21 @@ msgstr "A cseréhez nem lett mappa kiválasztva"
msgid "Replaced with 3D files from directory:\n"
msgstr "Cserélve a mappából származó 3D fájlokra:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Kihagyva %1%: azonos fájl.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ %s kihagyva: azonos fájl.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Kihagyva %1%: a fájl nem létezik.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ %s kihagyva: a fájl nem létezik.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Kihagyva %1%: a csere sikertelen.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ %s kihagyva: a csere sikertelen.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Lecserélve: %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔%s lecserélve.\n"
msgid "Replaced volumes"
msgstr "Lecserélt térfogatok"

View File

@@ -8244,21 +8244,21 @@ msgstr "La directory per la sostituzione non è stata selezionata"
msgid "Replaced with 3D files from directory:\n"
msgstr "Sostituito con file 3D dalla directory:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Saltato %1%: stesso file.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Saltato %s: stesso file.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Saltato %1%: il file non esiste.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Saltato %s: il file non esiste.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Saltato %1%: sostituzione fallita.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Saltato %s: sostituzione fallita.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Sostituito %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Sostituito %s.\n"
msgid "Replaced volumes"
msgstr "Volumi sostituiti"

View File

@@ -8262,21 +8262,21 @@ msgstr "置換用のディレクトリが選択されていません"
msgid "Replaced with 3D files from directory:\n"
msgstr "ディレクトリの3Dファイルで置換しました:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ スキップ %1%: 同一ファイル。\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ スキップ %s: 同一ファイル。\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ スキップ %1%: ファイルが存在しません。\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ スキップ %s: ファイルが存在しません。\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ スキップ %1%: 置換に失敗しました。\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ スキップ %s: 置換に失敗しました。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 置換しました %1%。\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 置換しました %s。\n"
msgid "Replaced volumes"
msgstr "置換されたボリューム"

View File

@@ -8288,24 +8288,24 @@ msgid "Replaced with 3D files from directory:\n"
msgstr "다음 디렉터리의 3D 파일로 교체했습니다:\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ 건너뜀 %1%: 동일한 파일입니다.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ 건너뜀 %s: 동일한 파일입니다.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ 건너뜀 %1%: 파일이 존재하지 않습니다.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ 건너뜀 %s: 파일이 존재하지 않습니다.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ 건너뜀 %1%: 교체하지 못했습니다.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 건너뜀 %s: 교체하지 못했습니다.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ %1%을(를) 교체했습니다.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ %s을(를) 교체했습니다.\n"
# AI Translated
msgid "Replaced volumes"

View File

@@ -8239,21 +8239,21 @@ msgstr ""
"Pakeista 3D failais iš katalogo:\n"
"\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Praleistas %1%: tas pats failas.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Praleistas %s: tas pats failas.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Praleistas %1%: failas neegzistuoja.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Praleistas %s: failas neegzistuoja.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Praleistas %1%: nepavyko pakeisti.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Praleistas %s: nepavyko pakeisti.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Pakeistas %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Pakeistas %s.\n"
msgid "Replaced volumes"
msgstr "Pakeisti tūriai"

View File

@@ -8999,24 +8999,24 @@ msgid "Replaced with 3D files from directory:\n"
msgstr "Vervangen door 3D-bestanden uit de map:\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Overgeslagen %1%: hetzelfde bestand.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Overgeslagen %s: hetzelfde bestand.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Overgeslagen %1%: bestand bestaat niet.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Overgeslagen %s: bestand bestaat niet.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Overgeslagen %1%: vervangen is mislukt.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Overgeslagen %s: vervangen is mislukt.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Vervangen %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Vervangen %s.\n"
# AI Translated
msgid "Replaced volumes"

View File

@@ -8444,24 +8444,24 @@ msgid "Replaced with 3D files from directory:\n"
msgstr "Zastąpiono plikami 3D z katalogu:\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Pominięto %1%: ten sam plik.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Pominięto %s: ten sam plik.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Pominięto %1%: plik nie istnieje.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Pominięto %s: plik nie istnieje.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Pominięto %1%: nie udało się zastąpić.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Pominięto %s: nie udało się zastąpić.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Zastąpiono %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Zastąpiono %s.\n"
# AI Translated
msgid "Replaced volumes"

View File

@@ -8026,21 +8026,21 @@ msgstr "Diretório para substituição não foi selecionado"
msgid "Replaced with 3D files from directory:\n"
msgstr "Substituído por arquivos 3D do diretório:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ %1% Ignorados: mesmo arquivo.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ %s Ignorados: mesmo arquivo.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ %1% Ignorados: arquivo não existe.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ %s Ignorados: arquivo não existe.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ %1% Ignorados: falha ao substituir.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ %s Ignorados: falha ao substituir.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ %1% Substituídos.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ %s Substituídos.\n"
msgid "Replaced volumes"
msgstr "Volumes substiruídos"

View File

@@ -8413,21 +8413,21 @@ msgstr "Расположение для замены не указано"
msgid "Replaced with 3D files from directory:\n"
msgstr "Заменено файлами из расположения:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Пропущен %1%: идентичный файл.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Пропущен %s: идентичный файл.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Пропущен %1%: файл не существует.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Пропущен %s: файл не существует.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Пропущен %1%: не удалось заменить.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Пропущен %s: не удалось заменить.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Заменён %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Заменён %s.\n"
msgid "Replaced volumes"
msgstr "Модели заменены"

View File

@@ -9088,24 +9088,24 @@ msgid "Replaced with 3D files from directory:\n"
msgstr "Ersatt med 3D-filer från mappen:\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Hoppade över %1%: samma fil.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Hoppade över %s: samma fil.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Hoppade över %1%: filen finns inte.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Hoppade över %s: filen finns inte.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Hoppade över %1%: det gick inte att ersätta.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Hoppade över %s: det gick inte att ersätta.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Ersatte %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Ersatte %s.\n"
# AI Translated
msgid "Replaced volumes"

View File

@@ -8199,21 +8199,21 @@ msgstr "ไม่ได้เลือกไดเรกทอรีสำหร
msgid "Replaced with 3D files from directory:\n"
msgstr "แทนที่ด้วยไฟล์ 3D จากไดเรกทอรี:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ ข้าม %1%: ไฟล์เดียวกัน\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ ข้าม %s: ไฟล์เดียวกัน\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ ข้าม %1%: ไม่มีไฟล์อยู่\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ ข้าม %s: ไม่มีไฟล์อยู่\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ ข้าม %1%: ไม่สามารถแทนที่ได้\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ ข้าม %s: ไม่สามารถแทนที่ได้\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔แทนที่ %1%\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔แทนที่ %s\n"
msgid "Replaced volumes"
msgstr "ปริมาณที่ถูกแทนที่"

File diff suppressed because it is too large Load Diff

View File

@@ -8306,21 +8306,21 @@ msgstr "Каталог для заміни не вибрано"
msgid "Replaced with 3D files from directory:\n"
msgstr "Замінено 3D-файлами з каталогу:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Пропущено %1%: той самий файл.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Пропущено %s: той самий файл.\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Пропущено %1%: файл не існує.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Пропущено %s: файл не існує.\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Пропущено %1%: не вдалося замінити.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Пропущено %s: не вдалося замінити.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Замінено %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Замінено %s.\n"
msgid "Replaced volumes"
msgstr "Замінені обʼєми"

View File

@@ -8721,24 +8721,24 @@ msgid "Replaced with 3D files from directory:\n"
msgstr "Đã thay thế bằng file 3D từ thư mục:\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ Đã bỏ qua %1%: cùng một file.\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ Đã bỏ qua %s: cùng một file.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ Đã bỏ qua %1%: file không tồn tại.\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ Đã bỏ qua %s: file không tồn tại.\n"
# AI Translated
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ Đã bỏ qua %1%: thay thế thất bại.\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Đã bỏ qua %s: thay thế thất bại.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Đã thay thế %1%.\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Đã thay thế %s.\n"
# AI Translated
msgid "Replaced volumes"

View File

@@ -8028,21 +8028,21 @@ msgstr "未选择替换目录"
msgid "Replaced with 3D files from directory:\n"
msgstr "替换为目录中的 3D 文件:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ 跳过 %1%:同一文件。\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ 跳过 %s:同一文件。\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ 跳过%1%:文件不存在。\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ 跳过%s:文件不存在。\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ 跳过%1%:替换失败。\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 跳过%s:替换失败。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 替换了 %1%。\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 替换了 %s。\n"
msgid "Replaced volumes"
msgstr "替换的卷"

View File

@@ -8193,21 +8193,21 @@ msgstr "未選擇替換的目錄"
msgid "Replaced with 3D files from directory:\n"
msgstr "已從目錄替換為 3D 檔案:\n"
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
msgstr "✖ 已跳過 %1%:相同檔案。\n"
#, c-format
msgid "✖ Skipped %s: same file.\n"
msgstr "✖ 已跳過 %s:相同檔案。\n"
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
msgstr "✖ 已跳過 %1%:檔案不存在。\n"
#, c-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr "✖ 已跳過 %s:檔案不存在。\n"
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
msgstr "✖ 已跳過 %1%:無法替換。\n"
#, c-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 已跳過 %s:無法替換。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 已替換 %1%。\n"
#, c-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 已替換 %s。\n"
msgid "Replaced volumes"
msgstr "已替換體積"

View File

@@ -1,6 +1,6 @@
{
"name": "Creality",
"version": "02.03.02.75",
"version": "02.03.02.76",
"force_update": "0",
"description": "Creality configurations",
"machine_model_list": [

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -128,7 +128,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -124,7 +124,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -128,7 +128,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -128,7 +128,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -39,7 +39,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "1",
"enable_support": "0",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -38,7 +38,7 @@
"draft_shield": "disabled",
"elefant_foot_compensation": "0.15",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enable_prime_tower": "0",
"enable_support": "0",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -126,7 +126,7 @@
"detect_narrow_internal_solid_infill": "1",
"dont_filter_internal_bridges": "disabled",
"elefant_foot_compensation_layers": "1",
"enable_arc_fitting": "1",
"enable_arc_fitting": "0",
"enable_overhang_speed": "1",
"enforce_support_layers": "0",
"ensure_vertical_shell_thickness": "ensure_all",

View File

@@ -1,6 +1,6 @@
{
"name": "Custom Printer",
"version": "02.04.00.01",
"version": "02.04.00.03",
"force_update": "0",
"description": "My configurations",
"machine_model_list": [

View File

@@ -24,12 +24,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -24,12 +24,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -24,12 +24,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -24,12 +24,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -25,12 +25,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -25,12 +25,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -25,12 +25,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -25,12 +25,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -25,12 +25,6 @@
"filament_loading_speed_start": [
"50"
],
"filament_multitool_ramming": [
"1"
],
"filament_multitool_ramming_flow": [
"40"
],
"filament_stamping_distance": [
"45"
],

View File

@@ -116,7 +116,7 @@
"deretraction_speed": [
"30"
],
"z_hop_types": "Normal Lift",
"z_hop_types": "Slope Lift",
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",

View File

@@ -118,7 +118,7 @@
"deretraction_speed": [
"30"
],
"z_hop_types": "Normal Lift",
"z_hop_types": "Slope Lift",
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",

View File

@@ -116,7 +116,7 @@
"deretraction_speed": [
"30"
],
"z_hop_types": "Normal Lift",
"z_hop_types": "Slope Lift",
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",

View File

@@ -6,6 +6,7 @@
"instantiation": "false",
"gcode_flavor": "klipper",
"single_extruder_multi_material": "0",
"wait_for_temp_on_wipe_tower": "1",
"default_filament_profile": [
"Generic PLA @MyToolChanger"
],
@@ -172,11 +173,11 @@
"0.4"
],
"z_hop_types": [
"Normal Lift",
"Normal Lift",
"Normal Lift",
"Normal Lift",
"Normal Lift"
"Slope Lift",
"Slope Lift",
"Slope Lift",
"Slope Lift",
"Slope Lift"
],
"purge_in_prime_tower": "0",
"machine_pause_gcode": "M601",

View File

@@ -1,6 +1,6 @@
{
"name": "OrcaFilamentLibrary",
"version": "02.04.00.03",
"version": "02.04.00.04",
"force_update": "0",
"description": "Orca Filament Library",
"filament_list": [

View File

@@ -36,6 +36,9 @@
"filament_max_volumetric_speed": [
"8"
],
"filament_multitool_ramming_flow": [
"8"
],
"filament_type": [
"PET-CF"
],

View File

@@ -39,6 +39,9 @@
"filament_max_volumetric_speed": [
"8"
],
"filament_multitool_ramming_flow": [
"8"
],
"filament_vendor": [
"Bambu Lab"
],

View File

@@ -39,6 +39,9 @@
"filament_max_volumetric_speed": [
"6"
],
"filament_multitool_ramming_flow": [
"6"
],
"filament_vendor": [
"Bambu Lab"
],

View File

@@ -21,6 +21,9 @@
"filament_max_volumetric_speed": [
"6"
],
"filament_multitool_ramming_flow": [
"6"
],
"filament_type": [
"PLA-AERO"
],

View File

@@ -27,6 +27,9 @@
"filament_max_volumetric_speed": [
"6"
],
"filament_multitool_ramming_flow": [
"6"
],
"filament_scarf_seam_type": [
"none"
],

View File

@@ -21,6 +21,9 @@
"filament_max_volumetric_speed": [
"6"
],
"filament_multitool_ramming_flow": [
"6"
],
"filament_vendor": [
"Bambu Lab"
],

View File

@@ -36,6 +36,9 @@
"filament_max_volumetric_speed": [
"1"
],
"filament_multitool_ramming_flow": [
"1"
],
"filament_retraction_minimum_travel": [
"3"
],

View File

@@ -72,15 +72,6 @@
"fan_min_speed": [
"10"
],
"filament_cooling_final_speed": [
"0"
],
"filament_cooling_initial_speed": [
"0"
],
"filament_cooling_moves": [
"0"
],
"filament_cost": [
"599"
],
@@ -99,30 +90,12 @@
"filament_is_support": [
"0"
],
"filament_loading_speed": [
"0"
],
"filament_loading_speed_start": [
"0"
],
"filament_long_retractions_when_cut": [
"nil"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_minimal_purge_on_wipe_tower": [
"0"
],
"filament_multitool_ramming": [
"0"
],
"filament_multitool_ramming_flow": [
"10"
],
"filament_multitool_ramming_volume": [
"10"
],
"filament_notes": [
""
],
@@ -165,21 +138,6 @@
"filament_soluble": [
"0"
],
"filament_stamping_distance": [
"0"
],
"filament_stamping_loading_speed": [
"0"
],
"filament_toolchange_delay": [
"0"
],
"filament_unloading_speed": [
"0"
],
"filament_unloading_speed_start": [
"0"
],
"filament_vendor": [
"Elas"
],

View File

@@ -42,15 +42,6 @@
"fan_min_speed": [
"20"
],
"filament_cooling_final_speed": [
"0"
],
"filament_cooling_initial_speed": [
"0"
],
"filament_cooling_moves": [
"0"
],
"filament_cost": [
"445"
],
@@ -69,30 +60,12 @@
"filament_is_support": [
"0"
],
"filament_loading_speed": [
"0"
],
"filament_loading_speed_start": [
"0"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_max_volumetric_speed": [
"18"
],
"filament_minimal_purge_on_wipe_tower": [
"0"
],
"filament_multitool_ramming": [
"0"
],
"filament_multitool_ramming_flow": [
"10"
],
"filament_multitool_ramming_volume": [
"10"
],
"filament_notes": [
""
],
@@ -135,21 +108,6 @@
"filament_soluble": [
"0"
],
"filament_stamping_distance": [
"0"
],
"filament_stamping_loading_speed": [
"0"
],
"filament_toolchange_delay": [
"0"
],
"filament_unloading_speed": [
"0"
],
"filament_unloading_speed_start": [
"0"
],
"filament_wipe": [
"nil"
],

View File

@@ -71,15 +71,6 @@
"fan_min_speed": [
"60"
],
"filament_cooling_final_speed": [
"0"
],
"filament_cooling_initial_speed": [
"0"
],
"filament_cooling_moves": [
"0"
],
"filament_cost": [
"449.5"
],
@@ -98,30 +89,12 @@
"filament_is_support": [
"0"
],
"filament_loading_speed": [
"0"
],
"filament_loading_speed_start": [
"0"
],
"filament_long_retractions_when_cut": [
"nil"
],
"filament_max_volumetric_speed": [
"25"
],
"filament_minimal_purge_on_wipe_tower": [
"0"
],
"filament_multitool_ramming": [
"0"
],
"filament_multitool_ramming_flow": [
"10"
],
"filament_multitool_ramming_volume": [
"10"
],
"filament_notes": [
""
],
@@ -164,21 +137,6 @@
"filament_soluble": [
"0"
],
"filament_stamping_distance": [
"0"
],
"filament_stamping_loading_speed": [
"0"
],
"filament_toolchange_delay": [
"0"
],
"filament_unloading_speed": [
"0"
],
"filament_unloading_speed_start": [
"0"
],
"filament_vendor": [
"Elas"
],

View File

@@ -71,15 +71,6 @@
"fan_min_speed": [
"100"
],
"filament_cooling_final_speed": [
"0"
],
"filament_cooling_initial_speed": [
"0"
],
"filament_cooling_moves": [
"0"
],
"filament_cost": [
"500"
],
@@ -98,30 +89,12 @@
"filament_is_support": [
"0"
],
"filament_loading_speed": [
"0"
],
"filament_loading_speed_start": [
"0"
],
"filament_long_retractions_when_cut": [
"nil"
],
"filament_max_volumetric_speed": [
"18"
],
"filament_minimal_purge_on_wipe_tower": [
"0"
],
"filament_multitool_ramming": [
"0"
],
"filament_multitool_ramming_flow": [
"10"
],
"filament_multitool_ramming_volume": [
"10"
],
"filament_notes": [
""
],
@@ -164,21 +137,6 @@
"filament_soluble": [
"0"
],
"filament_stamping_distance": [
"0"
],
"filament_stamping_loading_speed": [
"0"
],
"filament_toolchange_delay": [
"0"
],
"filament_unloading_speed": [
"0"
],
"filament_unloading_speed_start": [
"0"
],
"filament_vendor": [
"Elas"
],

View File

@@ -24,6 +24,9 @@
"filament_max_volumetric_speed": [
"6"
],
"filament_multitool_ramming_flow": [
"6"
],
"nozzle_temperature": [
"290"
],

View File

@@ -35,6 +35,9 @@
"filament_max_volumetric_speed": [
"8"
],
"filament_multitool_ramming_flow": [
"8"
],
"filament_vendor": [
"Elegoo"
],

View File

@@ -12,6 +12,9 @@
"filament_max_volumetric_speed": [
"10"
],
"filament_multitool_ramming_flow": [
"10"
],
"nozzle_temperature": [
"220"
],

View File

@@ -44,5 +44,8 @@
],
"filament_max_volumetric_speed": [
"10"
],
"filament_multitool_ramming_flow": [
"10"
]
}

View File

@@ -44,5 +44,8 @@
],
"filament_max_volumetric_speed": [
"8"
],
"filament_multitool_ramming_flow": [
"8"
]
}

View File

@@ -10,5 +10,8 @@
"filament_type": [
"PA-CF"
],
"filament_multitool_ramming_flow": [
"8"
],
"compatible_printers": []
}

View File

@@ -8,5 +8,8 @@
"filament_max_volumetric_speed": [
"20"
],
"filament_multitool_ramming_flow": [
"20"
],
"compatible_printers": []
}

View File

@@ -17,6 +17,9 @@
"filament_max_volumetric_speed": [
"11.5"
],
"filament_multitool_ramming_flow": [
"13"
],
"overhang_fan_speed": [
"100"
],

Some files were not shown because too many files have changed in this diff Show More