Compare commits

..

227 Commits

Author SHA1 Message Date
SoftFever
f23e5875d5 filament_id v4.2b: re-mint the Qidi QD_* island (plan v4 SS4)
All 264 QD_* declarations re-derive from their family triples via
--remint Qidi. Only 8 family ids are new: most QIDI-brand products already
carried v3.2-minted ids on older printer series, so the QD-series
declarations converge onto them (QD_0..4_1_1 -> OFKIQO2W "QIDI PLA
Rapido"), and the six Generic families converge onto the shared generic
ids (Generic PLA -> OFDSrzZ8 etc.) by triple math -- no inherits or
compatible_printers changes anywhere.

--update-snapshot retires all 204 QD_* ids with mode-rule successors.
Audit: 204/204 non-null successors, every chain ends at a live id; the
four ids hardcoded in QidiPrinterAgent's non-numeric-series fallback
resolve to the OFL generics (QD_1_0_1 -> OFDSrzZ8, ...). The v4.1 agent
hook translates device-composed QD_* ids through these entries at
runtime, so box behavior is preserved on updated clients.

Known accepted residue (plan v4 SS4): three case/spelling family splits
keep distinct ids for one product line each -- QIDI PC-ABS-FR (series
1-2) vs QIDI PC/ABS-FR (series 3-4) vs Qidi PC-ABS-FR (X-Plus 4), and
QIDI TPU 95A-HF vs Qidi TPU 95A-HF. Renames are ruled out; the ledger's
per-series successors keep each device slot resolving to the right
presets, and a future upstream name unification self-heals through
content addressing.

The code<->ledger lockstep test is now active (un-skipped).

Gates: --check 0; orca_extra_profile_check 0/0; 117 script tests OK
(0 skipped); validator base, -f tree-wide, -v Qidi all exit 0;
libslic3r_tests green; Qidi profile diff is filament_id-value-only.
Qidi.json version bumped.
2026-08-21 18:36:28 +08:00
SoftFever
8d83414d09 filament_id v4.2a: dissolve the QD_* island in the tooling (plan v4 SS3)
- is_island_declaration: only BBL remains an island; Qidi QD_* declarations
  now enter the triple bookkeeping (checks 3 and 8, --remint's domain).
- reserved_space_owner: QD_* stays reserved but ownerless -- no vendor may
  declare it, --update-snapshot refuses new QD_* ids outright, and vanished
  QD_* ids take the retired-with-successor path instead of the island
  release-with-hint path. New reserved_space_desc() names the space in
  check 6 / sanction-gate messages.
- Check 1 drops the vendor-Qidi QD_* format exemption; --add-hint now
  refuses QD_* keys (island space is GF* only); docstrings updated.
- Snapshot regenerated: the 204 QD_* declarer triples are now recorded
  (declared triples 1113 -> 1317); ids/claims unchanged.
- Tests updated for the flip; new (skipped until v4.2b) lockstep test
  asserting the QidiPrinterAgent fallback QD_* literals stay retired
  ledger keys chaining to live ids.

Tree state is untouched: presets still declare their QD_* ids, all
grandfathered by the snapshot. --check exit 0; 117 script tests OK.
2026-08-21 18:34:20 +08:00
SoftFever
1c405f8a2c filament_id v4.1: resolve retired QD_* ids in the Qidi box miss path
QidiPrinterAgent composes QD_<series>_<vendor>_<typeidx> setting ids from
device enums and previously degraded any slot whose id matched no visible
preset to generic-by-type. Plan v4.2 retires every QD_* preset id to the
succession ledger, so insert the ledger walk between the direct match and
the generic fallback: a composed QD_* id now forwards to its family's
minted OF* successor exactly like every other retired id.

Behavior-neutral until the ids are actually retired (the ledger holds no
QD_* keys yet, and live QD_* presets still match directly).

Also documents the code<->ledger lockstep on the hardcoded non-numeric-
series fallback table (QD_1_0_1/_11/_41/_50) and adds a C++ test pinning
that the succession walk is key-format agnostic.

Gates: libslic3r_tests [filament_id] 14 assertions green; libslic3r_gui
compiles.
2026-08-21 18:34:20 +08:00
SoftFever
58d1a3b093 filament_id v4.0: re-converge post-merge drift (Qidi/Snapmaker/re3D)
The 2026-08 main merge brought upstream vendor updates in pre-v3 style;
assign_filament_ids.py --check reported 243 errors. Re-converged per plan
v4 SS1(A)/SS4:

- Qidi X5: 12 brand presets had copied BBL catalog ids (GFB99/GFG99/GFL99);
  re-minted to their product triples (PolyLite PLA converges onto OF5CgdDq).
- Snapmaker U1: fixed empty/lowercase/wrong filament_vendor on 5 bases
  (triple inputs, W3-style); re-minted 24 declarations, resurrecting no
  retired ids (11813638720/141703112701/1417031127011/OGFL99 all re-minted
  away; base2 duplicates converge onto their families' v3.2 ids).
- re3D: rPETG had copied GFG01 (BBL space); re-minted to OFmCOW2Y. The
  GreenGate3D bundle was removed upstream with its product relocated here;
  retired OFSTCno1 -> OFmCOW2Y so shipped references keep resolving.
- validator -f: resolved 34 AMS-match ambiguities using the v3 mechanisms:
  salt-1 ids on the 5 re3D root presets and Snapmaker PLA-CF @U1 0.4
  (duplicate presets of one product; deletion forbidden), own minted ids
  for the 4 cross-family riders (Polymaker General/Silk/Tough PLA Family,
  Snapmaker PLA Full Spectrum).
- Snapshot re-sanctioned (+92 ids incl. 44 new QD_4_* island ids and BBL
  addnorth GF_AN*); ledger +1 entry (OFSTCno1).

Gates: --check 0; orca_extra_profile_check 0/0; 116 script tests OK;
validator base + -f exit 0. Vendor versions bumped (Qidi, Snapmaker, re3D).
2026-08-21 18:13:18 +08:00
SoftFever
71563cc6c6 Add filament_id plan v4: dissolve the Qidi QD_* island 2026-08-21 18:13:18 +08:00
SoftFever
f3fa3a34bd Merge branch 'main' into feature/filament_id 2026-08-21 17:30:12 +08:00
ExPikaPaka
5ed56eb876 Cache system presets to eliminate startup and wizard load times (#14217)
* Add caching system for presets

* Removing user\bundle serialization and keeping it only for system presets

* Integrate caching into WebGuideDialog which speeds up time of SetupWizzard and PrinterSelection dialog

* Add CI\CD step to prepare cache file in ahead of time so user does not need to wait

* Add partial cache generation when only one of the vendros is changed to speed up recalculation time

* Handle corrupted files

* Add cache to GuideDialog as previos version didn't work as expected

* Add inspecting tool and fix CI cache generation

* Generate cache per vendor

* Simplify code by mergin it in PresetBundle

* Simplify code a bit more

* Add cereal serialize() to VendorProfile, PrinterModel, Preset, and Semver

* Remove CachedPrinterModel/VendorProfile/Preset mirror structs from VendorCache

* Fix use-after-free in CallAfter lambda; replace raw thread pointer with unique_ptr

* Use get_vendor_cache_key() to match cache keys written by the app

* Remove BOM added by VSC

* Skip invalid vendors

* Remove leftover cache file

* Fix build for windows arm64

* Revert json cache back

* Update check for stale cache

* Serealize all value fields for Preset class to minimize regression later

* Minimize field duplication by moving Cache thing into PresetBundle

* Add tests for Cache system

* Add a bit more tests

* Merge branch 'main' into feature/cache_profiles_and_optimize_loading_speed

* Rvert from per-verndor to single cache file

Replace N per-vendor .cache files with a single system_presets.cache
that holds all vendors and presets in one serialized blob.

Cache load is now all-or-nothing: on hit all vendors are applied from
the bundle (sub-second); on miss all vendors are parsed from JSON and
a fresh bundle is written to the user cache dir.

Invalidation is driven by bundle_key - a sorted concatenation of all
vendor JSON version strings. Any vendor update invalidates the whole
cache and triggers re-parse on next launch.

Guide wizard (WebGuideDialog) loads the bundled cache into a plain
PresetBundle instead of a separate VendorGuideData struct, removing
the duplicate data model.

generate_system_cache simplified from a per-vendor loop to a single
save_system_presets_cache() call producing one output file.

* Transfer all Preset fields from cache via move assignmet

apply_vendor_preset_group was copying fields manually and missed
bundle_id, user_id, base_id, sync_info, updated_time, key_values,
ini_str. Replace field-by-field copy with move assignment of the
fully-deserialized Preset, then restore the vendor pointer which
is excluded from serialization.

* Ignore cache for future

* Remove not used files

* Ship one preset cache per vendor in place of the profile JSONs

Each vendor's system presets serialize into a single <vendor>.opc built at
package time, and a shipped build carries that file alone — the profile JSON
and its sub-file tree are pruned. The vendor loader, the setup wizard's profile
list and the resource installer all read a vendor through its cache, falling
back to parsing whenever one is absent, stale or unreadable, so the cache stays
an optimization and never a source of truth. Caches hold presets in source form
and resolve inheritance at load, through the same code the JSON path uses.

* Make the preset cache self-describing and load each vendor from the system folder alone

The cached DynamicPrintConfig is keyed by name, through a per-file dictionary of the
distinct opt_keys, the type each was written as, and the distinct enum value names,
instead of by serialization_key_ordinal — a position assigned by declaration order at
static init, where inserting one option shifts every later ordinal and the lookup then
succeeds on the wrong option. Because a name-keyed payload drops the options this build
cannot place rather than being rejected wholesale, the schema fingerprint goes, and with
it the two fallbacks that existed only because an installed cache died on every app
upgrade: the second lookup tier into resources/profiles and the parse fallback to the
same place. A vendor is loaded from <data_dir>/system/ and nowhere else, as on main —
which is what makes the app write its .opc files there again.

* Simplify the preset cache internals after review

* Use the shared temp-dir helper in the preset bundle loading test

* Bound stamp string reads in the preset cache

* Speed up the setup wizard with a profile-data cache

The wizard's per-vendor fast path threw on vendors present only in
resources, falling back to a ~29 s raw JSON scan on every open. Each
vendor now loads from the directory it was found in, and the derived
model/machine/filament/process catalog is cached whole in
<data_dir>/cache/wizard_profile_data.json, stamped by each vendor's
name and version - a fresh cache makes an open one file read, with no
bundle built and no presets installed (~0.2 s vs ~2 s).

* Remove debug SVG dump from a geometry test

* Move the per-vendor cache file format into PresetCacheFormat

* Move the vendor install helpers from PresetBundle into Utils

* rename

* fix flatpak

* change cache version to 1

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-08-21 16:56:52 +08:00
Rodrigo Faselli
6ef02a67db Revert "Fix unstable contours from triangulated planar faces" (#15315) 2026-08-20 22:35:28 -03:00
Ian Bassi
ca65f0fd8e Normalize the junction direction vector over XYZE (#15308)
* Normalize the junction direction vector over XYZE

calc_vmax_junction_deviation() treats the dot product of two jd_unit_vec as a
cosine, but the vectors were scaled by 1 / block.distance, which is the XYZ
length. On an extruding move the E component then pushes the 4D norm above 1 and
the dot product below -1, so the corner reads as straighter than it is and is
planned too fast -- the more so the higher the flow. Measured on a 6 degree
corner at scv 5: 86.9mm/s with no extrusion, 94.4mm/s at 0.029mm/mm, 150.0mm/s
at 0.1mm/mm.

Neither firmware does that. Marlin normalizes over XYZE for any extruding move
(planner.cpp: `if (... || esteps > 0) normalize_junction_vector(unit_vec)`) and
Klipper leaves E out of the cosine entirely, dotting only axes_r[0..2]
(toolhead.py::Move.calc_junction). Normalizing satisfies both: with E normalized
in, the cosine differs from the XYZ-only one by ~1e-5 at printing flow rates.

This is a deliberate divergence from PrusaSlicer, which still scales by
1 / distance -- it carries an older Marlin's behaviour.

Travel moves are unaffected, their vector was already unit length.

Reported by Copilot in review of #15304.

* Test that extrusion rate does not change corner planning

The junction deviation tests were all travel-only, which is exactly why the E
component of the junction vector went unchecked. Cover it: the same corner has
to be planned the same whether nothing, an ordinary 0.42 x 0.2 line, or a fat
large-nozzle line is extruded through it, on both Klipper and Marlin 2.

Reported by Copilot in review of #15304.
2026-08-20 18:50:23 -03:00
Valerii Bokhan
87ca2bc42e Fix unstable contours from triangulated planar faces (#15313) 2026-08-20 18:03:38 -03:00
pbannykh
aa233a82a5 fix: pass douglas_peucker tolerance in scaled units so the cancel-object outline is actually simplified (#15291)
Co-authored-by: bannykh <baza182@proton.me>
2026-08-20 17:47:38 -03:00
Ian Bassi
aaa8e98bb0 Time estimator fixes (#15304)
* Plan corners with junction deviation where the firmware uses it

The time estimator only ever had the classic per-axis jerk model, which limits a
corner by the largest single-axis component of the velocity change. That is
anisotropic: the same corner is allowed sqrt(2) more speed on a diagonal than on
an axis, which paints a four-lobed ripple around every circular wall in the
actual speed and actual flow views, worst on small parts whose walls are made of
short segments.

Klipper has no classic jerk at all and Marlin 2 has none while M205 J is in use;
both plan corners with junction deviation, which sees only the corner angle. Add
that model and use it for those machines:

  - Klipper: derived from the square corner velocity, as the firmware does
    (jd = scv^2 * (sqrt(2) - 1) / max_accel), reading the scv from
    machine_max_jerk_x, where process_SET_VELOCITY_LIMIT() already stores
    SQUARE_CORNER_VELOCITY.
  - Marlin 2: machine_max_junction_deviation, which was already loaded into the
    machine limits but never reached the planner.
  - Every other flavor keeps the classic jerk path unchanged.

The model has no per-axis jerk floor, so this also drops the hard slow spot the
estimator drew at the start of every loop from machine_max_jerk_e.

Toolpaths are unaffected: on a full export the only lines that change are M73.

The junction deviation maths, including Marlin's JD_HANDLE_SMALL_SEGMENTS arc
approximation, is ported from PrusaSlicer's src/libslic3r/GCode/GCodeProcessor.cpp.
The Klipper mapping is not in PrusaSlicer, which ignores SET_VELOCITY_LIMIT.

* Add tests for junction deviation corner planning

Cover the three properties the change rests on:

  - a right angle on Klipper is planned at exactly the square corner velocity,
    the identity that makes the scv to junction deviation mapping correct, and a
    shallow corner is planned far faster than per-axis jerk allows;
  - junction deviation gives the same speed whatever the corner's orientation,
    while classic jerk keeps its sqrt(2) spread, which is the four-lobed ripple;
  - machines that do not plan with junction deviation are provably untouched,
    including a Marlin 2 printer that has it disabled.
2026-08-20 09:16:02 -03:00
Ian Chua
dc75ce6811 feat: printer agent isolation across devices (#15147)
# Description

Printers discovered/bound under one printer agent (e.g. built-in BBL)
were leaking into another, independent agent's "My Device"/"Other
Device" lists and inheriting its saved access code, since neither the
device list nor bind state was ever scoped by which agent found them.

- Add printer_agent_id to MachineObject/BBLocalMachine, stamped at
  discovery/bind time; filter get_my_machine_list(),
  get_my_cloud_machine_list(), and update_other_devices() by it.
- clear_other_devices() now drops entries stamped by the outgoing
  agent on swap, so the incoming agent's own discovery re-inserts and
  re-stamps them fresh instead of leaving them stale-tagged forever.
- Scope access_code by (dev_id, printer_agent_id) on BBLocalMachine
  (LAN only since cloud's userMachineList is always refreshed live from
  the account API, so it isn't at risk the same way), with a
  BBL-only legacy fallback to the old flat access_code/user_access_code
  keys so existing bindings keep working.

# 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-20 16:08:17 +08:00
Rodrigo Faselli
ba22973919 Revert "Fix assembly parts omitted by height range modifiers" (#15301) 2026-08-19 16:34:12 -03:00
Ian Bassi
f5f3d2221d AI Translation update (#15300) 2026-08-19 14:47:34 -03:00
Kris Austin
8047141981 test: fix the flaky multiline lightning smoothing assertion (#15294) 2026-08-19 11:28:58 -03:00
SoftFever
872c660cb3 feat: Plugin pages (#14992)
# Description

This PR introduces native tabs as plugins.

The pages are webViews, and function similar to the existing plugin html
dialogs.
One per-requesite of this is to refactor the existing tab/notebook
architecture to be string based rather than index based.
The current implementation is still in early development stages and are
more meant for showcasing the vision rather than a final product.

The plugins used in the screenshots below:

[orca_pages_showcase_plugin_any.py](https://github.com/user-attachments/files/30459615/orca_pages_showcase_plugin_any.py)

[orca_pages_plugin_example_any.py](https://github.com/user-attachments/files/30459616/orca_pages_plugin_example_any.py)


# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
<img width="3384" height="1431" alt="image"
src="https://github.com/user-attachments/assets/68cd7a00-25fc-4e0e-91d7-c9b287f32b81"
/>
<img width="3384" height="1431" alt="image"
src="https://github.com/user-attachments/assets/81474441-e00a-4dea-b961-89dcdc462d55"
/>
<img width="3384" height="1431" alt="image"
src="https://github.com/user-attachments/assets/9504c5d7-25f7-47ed-9c77-b2cdc5507a87"
/>

## 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-19 14:31:57 +08:00
SoftFever
35db2cd89b Merge branch 'main' into feat/plugin-pages 2026-08-19 14:08:59 +08:00
SoftFever
1e87d56482 Micro-refactor 2026-08-19 14:08:19 +08:00
Ian Chua
1c90ba78a5 fix: recursive include between HMS.hpp and GUI_App.hpp (#15285)
# Description

Break the recursive include dependency by moving GUI_App.hpp from
HMS.hpp into HMS.cpp. Add the required standard headers and use explicit
std/nlohmann types to remove reliance on transitive includes.

This prevents recursive header inclusion while preserving HMS
functionality.

# 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-19 13:01:19 +08:00
Ian Chua
bb1e68aa94 Merge branch 'main' into fix/recursive_include 2026-08-19 13:01:02 +08:00
Ian Chua
02f148123d Add clang-cl (LLVM) build support on Windows (#14375)
# Description

This PR enables building OrcaSlicer on Windows with the **clang-cl
(LLVM)**
toolchain and the **Ninja** generator, in addition to the existing MSVC
path.
Clang is already supported on Linux with this codebase, so this extends
that
support to Windows.

The changes fall into three categories. All are either no-ops on the
existing
MSVC/Visual Studio path or Windows/clang-cl-specific, so the standard
build is
not affected.

### 1. C++ conformance fixes
clang-cl is stricter than MSVC and rejects several constructs that
cl.exe
silently accepted. Each of these is non-conforming code that MSVC
tolerated:

* **Explicit template instantiation in `BoundingBox.cpp`** — clang-cl
does not
instantiate `BoundingBoxBase<Point, Points>::construct` through the same
  transitive path MSVC uses; added the explicit instantiation.
* **Eigen cast materialization in `AABBTreeLines.hpp`** — `.cast<T>()`
returns a
lazy `CwiseUnaryOp`, not a concrete `Matrix`; materialized it before
passing to
  `distance_to_squared`, which expects a concrete type.
* **`LabelItemType` underlying type in `PresetComboBoxes.hpp`** — gave
the enum
the same `std::size_t` underlying type as `Marker` to resolve a
narrowing
  conversion in a switch.
* **`T2A_` cast in `BaseException.cpp`** — explicit `static_cast<const
char*>` on
  the ATL conversion helper result.
* **Wide string literals in `GUI_App.cpp`** — used `L""` literals where
  concatenated with a `std::wstring` (`url_prefix`).

### 2. Build system / dependencies
* **Exclude clang-cl from MSVC-only CMake guards** — `if(MSVC)` is true
for
  clang-cl, so blocks applying cl.exe-only flags now exclude Clang.
* **Disable TBB LTCG** — oneTBB enables MSVC IPO/LTCG by default,
emitting
proprietary `/GL` bitcode objects that `lld-link` cannot consume.
Disabling IPO
produces native COFF, linkable by both `link.exe` and `lld-link`. TBB is
threading infrastructure, so the runtime impact of disabling LTCG is
negligible.
* **wxWidgets target path** — clang-cl uses the MSVC frontend variant on
Windows
but reports compiler id `Clang`, so wxWidgets looked under
`clang_x64_lib`
  instead of the `vc_x64_lib` layout the deps are built with.

### 3. Ninja generator support
* **Runtime DLL copy** — the DLL copy step was nested under
`CMAKE_CONFIGURATION_TYPES` (multi-config only), so single-config Ninja
skipped
copying OCCT/GMP/MPFR/WebView2/freetype DLLs next to the executable. Now
runs
  for both generator styles, guarded by `if(WIN32)`.
* **`build_release_vs.bat` Ninja target** — `ALL_BUILD` is a Visual
Studio
  target; Ninja uses `all`. The script failed with
  `ninja: error: unknown target 'ALL_BUILD'` when invoked with `-x`.

## Tests

Built from a clean checkout on Windows with:
* clang-cl 22 (LLVM toolchain bundled with Visual Studio 18)
* Ninja Multi-Config generator
* lld-link as the linker

The full build (deps + slicer) compiles, `OrcaSlicer.dll` links with
`lld-link`,
and `orca-slicer.exe` runs. Verified end-to-end by loading a model,
slicing it,
and generating valid G-code (screenshot below).

The existing MSVC / Visual Studio build path is unaffected — all changes
are
guarded by compiler/generator/platform checks or are conformance fixes
that
compile identically under MSVC.

# Screenshots
<img width="1919" height="1079" alt="image"
src="https://github.com/user-attachments/assets/02082437-db36-4696-a91a-d9acf57d4a52"
/>
2026-08-19 13:00:46 +08:00
SoftFever
7c55b07736 Merge branch 'main' into feat/plugin-pages 2026-08-19 11:15:20 +08:00
Ian Chua
156e096a9b Merge branch 'main' into fix/recursive_include 2026-08-19 03:37:06 +08:00
peachismomo
050ebbb1f4 Merge branch 'main' into fix/clang-cl-windows-support 2026-08-19 03:14:10 +08:00
peachismomo
e840187edc fix: clang-cl arm64 wxWidgets path and plater desctructor before merging main 2026-08-19 03:12:56 +08:00
SoftFever
5be1f8f209 fix crash on Mac 2026-08-19 01:37:23 +08:00
SoftFever
02736fee16 Restore the web Device tab URL load on tab selection
Selecting the web Device tab loaded the printer's web UI from the selected discovered machine
when the preset carried no host. That arm was lost merging main into this branch — two of the
three Plater.cpp hunks from #15134 survived, this one did not — leaving the tab blank, since
PrinterWebView starts on an empty URL and nothing else navigates it.
2026-08-19 00:27:48 +08:00
SoftFever
ffee402494 Give the printer-agents web Device tab its own page id
In printer-agents mode the legacy web page was appended under Notebook::PAGE_MONITOR, which
resolves to the same "monitor" id as the native Device tab. FindPageByName returns the first
match, so PluginPages::relayout() — which saves the selection by name and restores it after
rebuilding the tab strip — moved the user off the web tab onto the native one. The tab also
disagreed with its own label, being created as "Device (legacy)" and renamed to "Device (Web)"
on the next show_device() call.
2026-08-19 00:27:48 +08:00
Ian Bassi
4fd7fdb3fa Move smooth factor wiki link (#15287) 2026-08-18 12:25:59 -03:00
Ian Bassi
322dc9b6a6 Smooth more patterns (#15205) 2026-08-18 12:19:27 -03:00
SoftFever
6c0f5eee55 Clarify icon rescaling condition in Button::Rescale method 2026-08-18 22:17:59 +08:00
GlauTech
6a52ea1818 Update OrcaSlicer_tr.po (#15119)
* Update OrcaSlicer_tr.po

* Update OrcaSlicer_tr.po

Fixed inaccurate AI-generated text and updated missing translations.

* REmoive # AI Translated

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-08-18 10:51:40 -03:00
peachismomo
b6e4f52c05 fix: recursive include between HMS.hpp and GUI_App.hpp 2026-08-18 19:00:53 +08:00
SoftFever
ba22a87a0b Add /bot merge for delegated vendor profile maintainers (#15279)
* Add /bot merge for delegated vendor profile maintainers

Vendor profile PRs no longer need a maintainer with repository write access: an
account listed in the FOLDER_MERGERS variable can squash-merge a PR confined to
the folders it owns by commenting /bot merge on it. Anything reaching outside
that grant, targeting a branch other than main or release/*, or missing a green
Check profiles run is declined with a comment naming the offending files.
Grants live in the merge-delegation environment, so only an admin can change who
may merge, and MERGE_BOT_DRY_RUN stops all merging without a code change.

Check profiles now also runs on release/* pull requests; nothing else changes
for existing contributors.

* Add profile version bump to the code review checklist

Without the bump in resources/profiles/<Vendor>.json, a preset change never
reaches existing installs over the air.
2026-08-18 00:42:03 +08:00
jimmy-brightz
542cd18d19 Fix prime tower rotation angle setting not working (#15227) 2026-08-17 14:34:41 +08:00
SoftFever
57092d5abd Reorder network initialization calls 2026-08-17 13:31:30 +08:00
Robert J Audas
f529692ac0 Fix slowdown for caged external overhangs (#14735)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-08-16 23:40:50 -03:00
Alexandre Folle de Menezes
728cf63c3d Verify and improve AI pt_BR translations (#15261) 2026-08-15 12:54:00 -03:00
Ian Chua
9d37ee4709 removed changes that are out of scope 2026-08-14 15:12:18 +08:00
Ian Chua
7580d8ef8c Merge branch 'main' into feat/plugin-pages 2026-08-14 12:20:34 +08:00
Manzari
d5dbd96dd6 Skip filament_colour_type in G-code config block to fix Anycubic Kobra 3 parse crash (#13507)
Co-authored-by: manzari <mail@manzari.dev>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-08-13 21:52:52 -03:00
TheLegendTubaGuy
0225cadff0 Fix PLA/PETG warning wiki link (#15172) 2026-08-13 18:57:08 -03:00
TheLegendTubaGuy
c5aedd1cea Enable Snapmaker U1 bed type selector (#15174) 2026-08-13 18:25:52 -03:00
Robert J Audas
78eef79ffe Fix flushing-volume warning for single-filament plates (#14704)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-08-13 17:50:55 -03:00
Kiss Lorand
56d2c527cb Fix crashes from object-level small perimeter speed overrides (#15232) 2026-08-13 17:28:31 -03:00
Kiss Lorand
fd23b74b99 Fix single-value object overrides on multi-nozzle printers (#15221) 2026-08-13 17:09:10 -03:00
Ian Chua
b10c91cf11 Merge branch 'main' into feat/printer-agent-isolation 2026-08-13 16:49:23 +08:00
Ian Chua
50dfcff031 fix: plugin pages removing calibration tab 2026-08-13 14:54:46 +08:00
Kiss Lorand
d322b1a156 Fix assembly parts omitted by height range modifiers (#15225) 2026-08-12 15:42:21 -03:00
Kiss Lorand
ee6613a4b8 Fix stale flush matrix after enabling SEMM (#15223) 2026-08-12 15:18:00 -03:00
Ian Chua
e9d421050e refactor: access codes and device tab (#15134) 2026-08-12 18:50:49 +08:00
Ian Chua
5e6895ddd2 Merge branch 'main' into feat/plugin-pages 2026-08-12 14:14:00 +08:00
Terasit Juntarasombut
6dbdb1d07e l10n: Fix contextual and technical translation errors in Thai (th) (#15213)
* l10n: Fix contextual and technical translation errors in Thai (th)

* l10n(th): standardize technical terms and sync localization glossary (#15213)

* l10n(th): remove localization_glossary.tsv from PR (#15213)
2026-08-11 16:56:59 -03:00
Kiss Lorand
117ed0060d Fix Celsius symbol rendering in Preview (#15202) 2026-08-11 16:25:09 -03:00
Ian Bassi
c5d2944ee0 Euskera update (#15215)
Based in https://github.com/OrcaSlicer/OrcaSlicer/pull/14970#issuecomment-5145928650
2026-08-11 09:54:37 -03:00
Ian Chua
5005ecc88b Merge branch 'main' into feat/plugin-pages 2026-08-11 17:51:18 +08:00
Ian Chua
7be7f07551 feat: UI for dropdown to select which plugin to show past max visible pages 2026-08-11 17:50:49 +08:00
Ian Chua
54fe28ab08 feat: add max visible pages to app config under Preferences -> General -> Plugins 2026-08-11 17:50:20 +08:00
Anson Liu
b422636740 Move Generic vendor above Bambu vendor in AMS material setting. (#11306)
* Move Generic vendor above Bambu vendor in AMS material setting.

* Remove hardcoded sorted_names. Alphabetically sort Bambu with all vendors

* Fix sorting with case insensitive comparison

* Use arithmetic to get rank distance because priorities are stored in a vector. This lets us remove the <interator> include.
2026-08-11 14:51:25 +08:00
Ian Chua
5d6008eed2 Merge branch 'main' into feat/printer-agent-isolation 2026-08-11 12:20:21 +08:00
Anson Liu
c806a09c7c Show current filaments at top of AMS filament dropdown (#11293)
* Move currently active filaments added to the Prepare sidebar to the top of the AMS Material Selection combo box.

It is likely the user wants to set the material to the currently active filament.

* Reduce logging verbosity.

* Refactor current active preset filament finding to find nested preset inheritance.

* Initialize pointer to null before usage.

* Remove old commit code

* Remove new line

---------

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-08-10 11:04:17 +08:00
yw4z
1a8f39c5f7 Fix emboss gizmo font preview of style not rendering properly (#14612) 2026-08-09 13:24:04 +08:00
TheLegendTubaGuy
9421e7fa9b Fix detached copies of system presets (#15173)
* Fix detached copies of system presets

* Clarify detached preset compatibility

* Show unique preset state in save dialog

* Update SavePresetDialog.cpp

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-08-09 02:08:54 +03:00
SoftFever
1a62a25d36 Merge branch 'main' into feature/filament_id
Brings in 560 commits (merge base 2026-07-04 .. origin/main af9fd10d7a).
19 conflicts resolved; the other 138 touched files auto-merged.

Conflict resolutions
- Snapmaker/Polymaker (7): main normalised JSON key order in #15039 while this
  branch inserted filament_id/filament_vendor. Took main's key order and kept
  this branch's values, inserting a single filament_id key rather than letting
  git's line merge leave duplicate "from"/"instantiation" keys.
- re3D rPETG @0.8/@1.75 nozzle (2): main renamed these from "re3D Greengate
  rPETG @*" and re-vendored GreenGate3D -> re3D (#15169). Git's rename-aware
  merge produced a file with two filament_vendor keys; took main's version
  wholesale instead. The id is reconciled by the tooling, not by hand.
- re3D rPP (1): kept main's inherits change (fdm_filament_pet -> fdm_filament_pp,
  local filament_type override dropped) and its widened compatible_printers.
  The flattened type is still PP, so the product triple and id OFfHGM1D are
  unchanged.
- re3D Greengate rPETG.json, Afinia {ABS+,ABS,PLA,TPU,Value ABS,Value PLA}.json
  (7 modify/delete): accepted main's deletions. The Afinia ids are not orphaned
  - the surviving @HS presets resolve the same triple and already carry the
  same ids, so nothing is retired.
- .github/workflows/check_profiles.yml: kept both main's new "validate slice"
  step and this branch's tree-wide filament-subtype check.
- tests/libslic3r/CMakeLists.txt: kept both test_filament_id_succession.cpp and
  main's test_preset_diff.cpp.

Verified
- No conflict markers; all 12795 profile JSONs parse with no duplicate keys.
- All branch artifacts (tooling, snapshot, ledger, doc, tests) intact and
  unmodified by the merge.
- The succession-ledger C++ call sites survived main's refactors; audited
  Preset.{cpp,hpp}, PresetBundle.cpp, DeviceManager.cpp, PresetComboBoxes.cpp,
  CaliHistoryDialog.cpp, MoonrakerPrinterAgent.cpp against base/ours/theirs.
- scripts/tests: 115/116 pass.

Known follow-up: assign_filament_ids.py --check reports 243 errors, all from
filament data main added in the last month (BBL/addnorth, Qidi X5/Plus 5,
Snapmaker U1, re3D). The single failing unit test is the live-tree conformance
test asserting that count is zero. Reconciliation lands separately.
2026-08-08 02:05:37 +08:00
Mitchell Mashburn
af9fd10d7a re:3D profile updates. (#15169)
* re:3D profile updates.

- Replace vendor-specific "re3D Greengate rPETG" filament with a generic "re3D rPETG" (base + @0.8/@1.75 nozzle variants), matching the naming convention used for rPLA/rPETG elsewhere in the re:3D vendor
  pack.
- Add fdm_filament_pp as a proper filament-type parent and switch re3D rPP to inherit from it instead of overriding filament_type on top of fdm_filament_pet.
- Added filament_type to the specific printer JSON file and removed from the base printer JSON file [fixes Issue#14693]
- Updates to speeds and accelerations for re:3D profiles, moved from common to machine processes [closed: PR#14259]
- Updates to fdm profile filename format so that it lists the filename and extruder number in the sliced .gcode file

* Fix setting IDs

* Add rename from for changed material names.
2026-08-08 01:07:03 +08:00
Kris Austin
74aed7a2bb test: finish the temp-file cleanup (#14976)
Follow-up to #14785. Routes the tests that still hand-rolled temp paths through
the shared helpers and unifies the temp guards.

- Add ScopedTemporaryDir and a shared ScopedTemporaryPath base under it and
  ScopedTemporaryFile.
- Move test_3mf's round-trip .3mf output out of the TEST_DATA_DIR source tree
  (a fixed-name leak) and test_toolordering's fixed-name temp .gcode (a sharding
  collision) onto ScopedTemporaryFile.
- Move test_config, test_slicing_pipeline_bindings, the test_3mf backup dirs, and
  test_preset_bundle_loading onto the guards.
- Make slic3rutils ScopedDataDir compose ScopedTemporaryDir; dedupe
  test_network_versions' fixture and delete test_plugin_lifecycle's duplicate.
2026-08-07 13:33:37 -03:00
Kris Austin
8bff9aaf32 fix(GUI): honor "Ignore" when layer height exceeds the configured maximum (#14369)
* fix(GUI): honor "Ignore" when layer height exceeds the configured maximum

Entering a layer height above the printer's max_layer_height on the Print
Settings tab fired two guards in sequence. Tab::on_value_change prompts
"...Adjust to the set range automatically?" with an Adjust/Ignore choice, and
ConfigManipulation::update_print_fff_config then showed an OK-only "Too large
layer height. Reset to X" dialog whose result was never checked, so it always
reset the value. The second guard overrode the user's "Ignore", resetting the
layer height regardless.

Changes:
- Extract the shared Adjust/Ignore dialog into
  ConfigManipulation::layer_height_out_of_range_dialog, reused by the tab
  (Tab::on_value_change) and the per-object/part settings panels. The dialog now
  names the value it will clamp to and reads correctly for too-low as well as
  too-high.
- The tab/plate path is already covered by Tab::on_value_change, so the
  duplicate reset is dropped from update_print_fff_config.
- The per-object/part panels have no on_value_change hook, so add
  ConfigManipulation::check_object_layer_height and call it from the object
  settings update paths, gated on the edited option (changed_opt_key ==
  "layer_height"). It prompts once per layer-height edit and does not re-prompt
  when unrelated object settings change after the user chose "Ignore".

Fixes #14214

* refactor(GUI): unify the layer-height range check across tab and object panels

Copilot review of #14369 noted that the per-object check only guarded the
max at extruder 0 and skipped the too-low case, diverging from the tab.

Move the whole range check into ConfigManipulation::check_layer_height,
used by both Tab::on_value_change and the per-object/part panels. It takes
the widest [min, max] window across the printer's extruders, offers
Adjust/Ignore in both directions, and resets a near-zero value. The tab's
inline block collapses to one call, dropping the duplicated limit logic.

* fix(GUI): only enforce layer-height limits that are actually set

max_layer_height defaults to 0 (unset), so the unconditional range check
offered to clamp any layer height to 0 on presets that don't define it.
Guard each branch (near-zero, too-high, too-low) so an unset limit disables
that direction; the slice-time nozzle-diameter check still applies.

Also run check_layer_height before update_print_fff_config in the object
panels so a near-zero per-object value prompts the same way the tab does,
with update_print_fff_config's fallback still covering the no-minimum case.
2026-08-07 13:31:04 -03:00
Kris Austin
83723e2a7b fix: Slice all crash on a multi-plate project with an uninitialized toolbar (#15117)
_update_select_plate_toolbar_stats_item(true) runs from
on_action_slice_all before the select-plate toolbar has necessarily been
initialized. m_all_plates_stats_item is only assigned in
_init_select_plate_toolbar, so slicing a multi-plate project shortly
after startup (before the Preview tab has rendered) leaves the pointer
null while show_stats_item is true, and the branch dereferences it,
crashing with SIGSEGV.

Every other dereference of this pointer already null-checks it. Add the
same check here so the all-plates stats item is left unselected until the
toolbar is initialized instead of crashing.

Fixes #15116
2026-08-07 13:28:54 -03:00
Kris Austin
e2fd46f82c fix: default-initialize WallToolPathsParams fields (#15138)
min_length_factor and is_top_or_bottom_layer had no default initializers, and the FillConcentric/FillConcentricInternal callers never set them, so WallToolPaths::removeSmallLines() thresholded on stack garbage. Which short extrusion lines it dropped then depended on memory layout, so concentric solid-infill output was nondeterministic between runs and across machines. Give every member a default, matching the adjacent FillParams. The perimeter path was already fine because it builds the struct via make_paths_params().
2026-08-07 13:22:26 -03:00
TheLegendTubaGuy
b216813bf0 Add the Qidi Plus 5 (#15163)
* Add the Qidi Plus 5

* Remove ignored profiles

Qidi didn't register these, so they are essentially dead weight.

* Set Qidi profile version to 02.04.00.10
2026-08-07 13:07:27 -03:00
Felix14_v2
b3296fa199 Review AI changes in Russian localization (#15092)
* Review AI changes

* Part 2

* Part 3

* Part 4

God bless Ian Alexis

* Part 5

* Final part!

* Catches by Gemma

This 6-minute check probably saved me a week

* Tweak

* Update OrcaSlicer_ru.po
2026-08-07 12:03:53 -03:00
Surfoo
6d9a9eeb04 i18n(fr): improve French localization quality and consistency. (#15106) 2026-08-07 09:31:57 -03:00
Clifford
8e243faa3a Fix Linux unit test failure in the wipe tower temperature trace comparison (#15161)
## Problem

`Toolchange temperature commands are unchanged when the wipe tower wait
is off`
(added in #15144) fails on both Linux runners and passes on Windows and
macOS.
It is the only failing test in the suite, and it has been failing on
main since
that PR merged.

| Job | Result |
| --- | --- |
| Windows x64 / Unit Tests | pass |
| Windows arm64 / Unit Tests | pass |
| macOS arm64 / Unit Tests | pass |
| Linux x86_64 / Unit Tests | **fail** |
| Linux aarch64 / Unit Tests | **fail** |

From the merge commit
([Linux
x86_64](https://github.com/OrcaSlicer/OrcaSlicer/actions/runs/31072382258/job/92531704095),
[Linux
aarch64](https://github.com/OrcaSlicer/OrcaSlicer/actions/runs/31072382258/job/92531704075)),
still reproducing on current main:

```
first difference at trace entry 29
  main:   M104 S240 T0 ; preheat T0 time: 31s	lead 30.9s
  branch: M104 S240 T0 ; preheat T0 time: 30s	lead 30.3s
```

## Cause

Each preheat entry records the same quantity twice: `lead` at one
decimal, and
`time:` inside the command text as that value rounded to a whole second.

`split_lead` already compares `lead` with a 0.5s tolerance and explains
why the
estimate moves. `time:` sits in the exactly-compared command text, so it
never
got that tolerance — and being rounded, it flips on a drift far below
0.5s
(30.4 and 30.6 render as `30s` and `31s`). Entry 29 is the only entry in
the
163-entry golden whose lead rounds up; every other preheat sits at
30.0–30.4 and
rounds down, which is why it is the only one that fails.

The variation is per-toolchain, not run to run. Both Linux arches
produce
exactly `lead 30.3s`; Windows x64/arm64 and macOS arm64 all produce
exactly
`30.9s`. Repeated local runs are byte-identical. macOS arm64 passing
while Linux
aarch64 fails rules out the ISA — it is floating-point accumulation over
a few
thousand move durations under GCC vs Clang vs MSVC.

The mechanism makes it discrete rather than gradual: the backtrace parks
the
preheat at the first exported line at least `preheat_time` before the
tool
change, so `lead` is `preheat_time` plus the leftover of whichever move
that
landed on. A sub-tenth difference selects the neighbouring move and
`lead` steps
by that move's whole duration.

Entries 1–28 match exactly, including five earlier preheats whose leads
fall
inside the existing tolerance, so the toolpaths themselves are
identical. I also
reverted the two prime-tower commits that landed between the golden's
capture
point and now, rebuilt, and got a byte-identical trace — this is not
behavioural
drift.

That also rules out regenerating the golden: no single capture satisfies
all
three toolchains, and recapturing on Linux would turn the three
currently-green
runners red.

## Fix

Test-only.

- `lead` keeps a tolerance, widened to 1.5s (measured drift 0.6s; a
preheat
actually leaving its backtrace position would move by tens of seconds).
- `time:` is **not** compared across runs at all. Being a rounding of
`lead`, it
carries nothing the tolerance does not already cover, and comparing it
across
runs can only reproduce the flake. It is instead checked against its own
  entry's `lead` — a correct rounding keeps `|time - lead| <= 0.5`.

That second point matters: simply tolerating `time:` numerically would
have made
the test blind to a real change, because drift and a wrong rounding both
move it
by 1. The self-consistency check keeps that coverage. I verified it by
changing
`(int) std::round(time_diffs[0])` to `(int) time_diffs[0]` in
`GCodeProcessor::export_lines` — the test fails with
`"time:" is not its entry's "lead" rounded to a whole second`, where a
plain
tolerance would have passed silently.

Everything else is still compared exactly: all M104/M109 values, tool
ids,
block markers, ordering, entry count, and the annotation text including
its
trailing `s`. The other 138 entries remain byte-exact.

No production code, no golden regeneration. The golden file and these
helpers
are used by this one test and nothing else, and the tolerance only
widens, so
Windows and macOS keep passing unchanged. A note is added to the
golden's header
so the next mismatch in those fields is not "fixed" by recapturing.

## How to verify

Before, on Linux:

```bash
git checkout main && ./build_linux.sh -t
ctest --test-dir build/tests -R "Toolchange temperature commands are unchanged" --output-on-failure
# fails at trace entry 29
```

After:

```bash
cmake --build build --config Release --target fff_print_tests
ctest --test-dir build/tests --output-on-failure     # 463/463
```
2026-08-07 20:26:18 +08:00
Alexandre Folle de Menezes
b5412221b6 Verify and improve AI pt_BR translations (#15080) 2026-08-07 09:22:42 -03: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
6345d57512 fix: use get_current_printer_agent_id 2026-08-06 16:26:39 +08:00
Ian Chua
159e577543 feat: Isolate devices across different printer agents 2026-08-06 16:11:44 +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
peachismomo
169189498e fix regression after merge 2026-08-06 07:56:37 +08:00
peachismomo
72784cfe91 Merge branch 'main' into feat/plugin-pages 2026-08-06 06:16:28 +08:00
peachismomo
ef4815b26c fix: crash on windows 2026-08-06 06:08:02 +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
SoftFever
ea7117b7ca Fix stringing between the model and the wipe tower (#15038)
# Description

On multi-tool printers using the type 2 wipe tower, the travel to the
tower ignored the configured Z hop type and always used a plain vertical
hop, so the nozzle rose in place over the part and oozed instead of
lifting away with the travel. It now follows the filament's Z hop
setting, matching what the type 1 tower already does.
Only toolchange travels to a type 2 tower change. Normal Lift and z_hop
= 0 are unaffected, and no extrusion moves change in any mode.

# Screenshots/Recordings/Graphs


## 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-07-31 18:26:48 +08:00
SoftFever
603a8f9c8f Fix stringing between the model and the wipe tower
The tower travel took retract()'s default vertical Z hop instead of the
configured one, so the nozzle rose in place over the part and oozed
rather than departing with the travel. Pass the filament's z_hop_types
through, mapping Auto to a spiral lift as append_tcr does.
2026-07-31 18:16:06 +08:00
SoftFever
6a2a57bdf4 Bring the rib wall and skip-points prime tower to all printers (#15035)
* Sync WipeTower from BambuStudio(through ca1881761)

* Fix post-slice self-invalidation on custom multi-extruder printers

* Complete the rib wipe tower port in WipeTower2

The rib tower is now always square (prime_tower_width is ignored, as the
GUI already implies), carries the rib origin offset like the BBL tower so
the rib tips sit inside the configured position, clamps the rib length to
the tower diagonal, and extends the ribs for short towers.

* Use the squared rib tower size in arrange estimates

estimate_wipe_tower_polygon reserved the arrange footprint and clamped the
tower X position with the raw prime_tower_width, under-reserving space
whenever the rib wall squares the tower to a different width.

* Print the WipeTower2 shell with a non-support, non-soluble filament

Like the BBL tower: the layer's sparse infill, wall, and brim go to the
first toolchange to a non-support/non-soluble filament, or are printed
with the incoming filament before any toolchange. The minimal-purge
clamp now also covers toolchanges that get no finish-layer saving.
Output is unchanged when no support/soluble filament is used.

* Port the skip-points gap wall to WipeTower2

prime_tower_skip_points was stubbed for Type2 towers: the wall call
hard-coded skip_points=false, the gap cutter received an empty vector,
and append_tcr2 never routed the entry travel. Now the toolchange entry
positions are precomputed from the finalized plan, the wall is cut open
at each entry, and the entry travel approaches around the tower bounding
box through the opening when it starts outside the tower. The geometry
helpers are re-synced with the BBL versions (add_extra_point guards,
per-point side selection). The cone wall keeps its separate path, where
the option stays inert.

Behavior change: non-BBL towers now honor the (default-on) checkbox with
gap walls and routed entries; with the option off the output is
unchanged, and the BBL tower path is untouched.

* Route the in-place toolchange tower entry through the skip-point gap

On multi-tool printers without ramming the tool changes away from the
tower and the entry travel is the tcr's own positioning move, which went
straight across the printed wall. Append the avoid-perimeter path to the
change-filament gcode instead, so the head approaches around the tower
and enters through the wall opening (append_tcr parity).

* Iron the purge start out through the skip-point gap in WipeTower2

Port the BBL tower's entry line ironing: extrude the first 3 mm of the
purge, retract, drag the nozzle 1.5x back out through the wall gap at
F600, creep back at F240 and unretract, so the toolchange start blob
ends up in the gap instead of on the wall. Fires only when the purge
starts at the left-edge entry heading right (in-place toolchangers);
SEMM ram/cooling wipes start mid-box and the priming line has no wall,
so both keep their previous output.

* Reserve WipeTower2 toolchange depth to match the printed purge

The planner reserved ramming rows gated only on enable_filament_ramming and
sized them with the SEMM 0.25s time step, while toolchange_Unload rams on
(semm && enable_filament_ramming) || filament_multitool_ramming with the
multitool time step. Disabling multitool ramming therefore left ~3 unprinted
rows per toolchange as blank bands in the tower. Without ramming the first
wipe line also needs reserved depth of its own (it no longer rides the last
ramming row), plus the y_step/2 offset the wipe start inherits from the
ramming start position - otherwise the tightened boxes truncate the ordered
purge at the box edge.

* Tile WipeTower2 purge rows contiguously across toolchange blocks

Without ramming, each purge block reserved one wipe pitch more than its
rows occupy (ceil+1 rounding plus the ram-geometry start offset), and the
wipe began a full pitch inside the block, leaving a blank band of exactly
two pitches between adjacent blocks. Plan the block as whole wipe rows,
start the first row so the row lattice continues across the block
boundary, and fill the reserved box instead of stopping at the ordered
volume, mirroring how the BBL WipeTower keeps planned depth identical to
printed rows. Ram-printing toolchanges (SEMM with ramming enabled,
multitool ramming) are unchanged.

* Scrub the WipeTower2 toolchange entry with the BBL flat-ironing spiral

The entry scrub now matches the BBL tower's toolchange_wipe_new sequence:
after the ironing drag the retracted nozzle runs a dry expanding-square
spiral centred on the wall-gap entry point before resuming the purge row.
The spiral runs whenever the gap wall is on (disable per filament via
filament_tower_ironing_area = 0); WipeTower2 no longer reads
prime_tower_flat_ironing.

* Restart the WipeTower2 wipe at the box boundary after multitool ramming

With the gap wall on a multi-tool printer, quantize the ram band up to its
whole reserved rows (as the BBL tower does for the old-tool purge) and start
CP TOOLCHANGE WIPE at the left-edge boundary on a fresh row below it instead
of continuing from wherever the ram serpentine ended. The entry scrub then
runs at the wall gap on ram toolchanges too, and the wipe box is whole rows,
so it is filled completely like the no-ram case. SEMM and skip-points-off
behavior is unchanged.

* Move the WipeTower2 wall gap to the wipe start row for ram toolchanges

* code cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix typo

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-31 18:08:55 +08:00
SoftFever
c8aacea176 fix typo 2026-07-31 18:07:46 +08:00
SoftFever
4824a171f1 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-31 15:34:04 +08:00
Ian Chua
101f43b2d8 fix: resolve plugins that are missing locally (physical file deleted) (#14861)
* fix: resolve plugins that are missing locally (physical file deleted)

* fix: don't treat file not found as an error
2026-07-31 14:15:51 +08:00
Ian Chua
e01ac1f0a6 fix: keep orphaned cloud plugins runnable (#14859)
* fix: keep orphaned cloud plugins runnable

* fix: tests
2026-07-31 14:15:22 +08:00
Ian Chua
b51db32bb5 fix: ota profile race (#14993)
# 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?
-->
This PR updates OTA vendor profile handling and fixes a Windows-only
startup race that could terminate OrcaSlicer silently.

## Changes
- Correct vendor profile version comparison logic.
- Trigger vendor profile synchronization after the startup printer
preset is restored.
- Remove duplicate vendor synchronization from the general startup
updater.
- Replace global temporary archive cleanup with targeted per-vendor
cleanup.
- Add updater-thread exception handling to prevent uncaught filesystem
errors from terminating the process.

# 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-07-31 14:14:34 +08:00
Ian Chua
603b02f0e7 Merge branch 'main' into fix/ota-profile-race 2026-07-31 14:14:23 +08:00
Kiss Lorand
54dc5a2f1d Hungarian localization overhaul (#15024) 2026-07-30 15:08:04 -03:00
Kris Austin
303be94262 feat(msix): add execution alias and web link associations to the Store package (#14799) 2026-07-30 10:02:44 -03:00
Ian Bassi
58bad17af9 AI translation update (#15018) 2026-07-29 18:09:32 -03:00
Nathan Schulte
ddce030322 add space after "Arranging" message (#15017) 2026-07-29 17:37:23 -03:00
Ian Bassi
2d4b431d5f Improve dimmed layers (#15001)
Co-authored-by: yw4z <yw4z@outlook.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-07-29 16:27:15 -03:00
Ian Chua
acb0be6ed9 Merge branch 'feat/plugin-pages' of https://github.com/OrcaSlicer/OrcaSlicer into feat/plugin-pages 2026-07-30 01:55:12 +08:00
Ian Chua
14b05a4d8e fix: regression after merge 2026-07-30 01:54:46 +08:00
Ian Chua
27c468754c feat(plugin): expose orca.host.app_language() for plugin localization (#14997)
# Description

Python plugins currently have no way to localize their own dialogs to
match the app: the UI language is stored in `OrcaSlicer.conf`, which the
plugin audit hook deny-lists by design (the file sits next to cloud
secrets), and the host API exposes no app info. As a result, localized
plugins have to guess the language from the OS locale, which does not
always match the slicer UI (and the embedded interpreter often gets no
`LANG` at all in GUI sessions).

This PR adds a minimal read-only accessor:

```python
orca.host.app_language()   # -> "en_US", "ru_RU", ...
```

It returns `GUI_App::current_language_code_safe()` — only the language
code string, nothing else from the config, so the audit-hook security
model is untouched.

No breaking changes; one file, +10 lines.

# Screenshots/Recordings/Graphs

(screenshots of the test dialog will be attached below)

## Tests

- Built on macOS (arm64, Ninja) with this change — compiles clean.
- Ran a minimal script-capability plugin calling
`orca.host.app_language()` on a system with Russian UI: the dialog shows
`'ru_RU'`.
- Guard before GUI init follows the same exception pattern as the
neighbouring `plater()`/`preset_bundle()` accessors.
<img width="903" height="826" alt="Снимок экрана 2026-07-28 в 23 10 48"
src="https://github.com/user-attachments/assets/27088265-b55d-4958-8602-7c3ab4993003"
/>
<img width="437" height="276" alt="Снимок экрана 2026-07-28 в 23 10 56"
src="https://github.com/user-attachments/assets/9845b401-dc8e-4353-aa24-5ace678270d6"
/>
2026-07-30 01:19:09 +08:00
SoftFever
3ab9cf53d0 code cleanup 2026-07-30 00:55:09 +08:00
Bartok
88632710d5 docs: add Microsoft Store install path for Windows (#15009)
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Signed-off-by: Bartok <danielrpike9@gmail.com>
2026-07-29 10:53:20 -03:00
Nathan Schulte
d434e35488 fix STEP progress message percent format (#14994) 2026-07-29 10:48:01 -03:00
yw4z
7bd53b1283 Fix cannot type values to spin control if first digit of desired value is less then min value (#15002) 2026-07-29 10:19:10 -03:00
SoftFever
252df70ec4 Move the WipeTower2 wall gap to the wipe start row for ram toolchanges 2026-07-29 20:58:21 +08:00
Ian Bassi
6489b4cad3 Fix: Only one wall top surfaces (#14929) 2026-07-29 09:23:35 -03:00
SoftFever
086bbf986b Restart the WipeTower2 wipe at the box boundary after multitool ramming
With the gap wall on a multi-tool printer, quantize the ram band up to its
whole reserved rows (as the BBL tower does for the old-tool purge) and start
CP TOOLCHANGE WIPE at the left-edge boundary on a fresh row below it instead
of continuing from wherever the ram serpentine ended. The entry scrub then
runs at the wall gap on ram toolchanges too, and the wipe box is whole rows,
so it is filled completely like the no-ram case. SEMM and skip-points-off
behavior is unchanged.
2026-07-29 19:59:33 +08:00
Ian Chua
71c4eebfc9 Merge branch 'main' into feat/plugin-pages 2026-07-29 19:42:04 +08:00
Ian Chua
00f558aa18 Merge branch 'main' into feat/plugin-pages 2026-07-29 19:40:40 +08:00
Ian Chua
3145f28bb7 feat: support tab icons 2026-07-29 19:37:17 +08:00
SoftFever
67e1ce03a6 Scrub the WipeTower2 toolchange entry with the BBL flat-ironing spiral
The entry scrub now matches the BBL tower's toolchange_wipe_new sequence:
after the ironing drag the retracted nozzle runs a dry expanding-square
spiral centred on the wall-gap entry point before resuming the purge row.
The spiral runs whenever the gap wall is on (disable per filament via
filament_tower_ironing_area = 0); WipeTower2 no longer reads
prime_tower_flat_ironing.
2026-07-29 18:48:10 +08:00
SoftFever
36bd453ac8 Tile WipeTower2 purge rows contiguously across toolchange blocks
Without ramming, each purge block reserved one wipe pitch more than its
rows occupy (ceil+1 rounding plus the ram-geometry start offset), and the
wipe began a full pitch inside the block, leaving a blank band of exactly
two pitches between adjacent blocks. Plan the block as whole wipe rows,
start the first row so the row lattice continues across the block
boundary, and fill the reserved box instead of stopping at the ordered
volume, mirroring how the BBL WipeTower keeps planned depth identical to
printed rows. Ram-printing toolchanges (SEMM with ramming enabled,
multitool ramming) are unchanged.
2026-07-29 16:37:06 +08:00
SoftFever
9292db2f9f Reserve WipeTower2 toolchange depth to match the printed purge
The planner reserved ramming rows gated only on enable_filament_ramming and
sized them with the SEMM 0.25s time step, while toolchange_Unload rams on
(semm && enable_filament_ramming) || filament_multitool_ramming with the
multitool time step. Disabling multitool ramming therefore left ~3 unprinted
rows per toolchange as blank bands in the tower. Without ramming the first
wipe line also needs reserved depth of its own (it no longer rides the last
ramming row), plus the y_step/2 offset the wipe start inherits from the
ramming start position - otherwise the tightened boxes truncate the ordered
purge at the box edge.
2026-07-29 13:23:29 +08:00
Kiss Lorand
29d4513694 Fix overlapping brims (#14991) 2026-07-28 17:46:14 -03:00
Ru
0dc14aa876 feat(plugin): expose orca.host.app_language() for plugin localization
Plugins have no way to localize their own dialogs: the UI language lives in
OrcaSlicer.conf, which the plugin audit hook deny-lists because the file sits
next to cloud secrets. Add a read-only host accessor that returns just the
language code (current_language_code_safe), so plugins can match the app
language without touching the config file.
2026-07-28 23:11:05 +03:00
SoftFever
bef47b2c70 Iron the purge start out through the skip-point gap in WipeTower2
Port the BBL tower's entry line ironing: extrude the first 3 mm of the
purge, retract, drag the nozzle 1.5x back out through the wall gap at
F600, creep back at F240 and unretract, so the toolchange start blob
ends up in the gap instead of on the wall. Fires only when the purge
starts at the left-edge entry heading right (in-place toolchangers);
SEMM ram/cooling wipes start mid-box and the priming line has no wall,
so both keep their previous output.
2026-07-28 21:21:50 +08:00
peachismomo
013a9452af fix: prevent Windows OTA vendor profile update race 2026-07-28 19:48:10 +08:00
Ian Chua
e00906a833 feat: plugin pages 2026-07-28 19:17:26 +08:00
Ian Chua
56c28fc102 feat: refactor notebook/tabs to be string based instead of fixed index based 2026-07-28 19:17:05 +08:00
SoftFever
5b475e5e98 Route the in-place toolchange tower entry through the skip-point gap
On multi-tool printers without ramming the tool changes away from the
tower and the entry travel is the tcr's own positioning move, which went
straight across the printed wall. Append the avoid-perimeter path to the
change-filament gcode instead, so the head approaches around the tower
and enters through the wall opening (append_tcr parity).
2026-07-28 00:15:59 +08:00
SoftFever
56810c8c7f Port the skip-points gap wall to WipeTower2
prime_tower_skip_points was stubbed for Type2 towers: the wall call
hard-coded skip_points=false, the gap cutter received an empty vector,
and append_tcr2 never routed the entry travel. Now the toolchange entry
positions are precomputed from the finalized plan, the wall is cut open
at each entry, and the entry travel approaches around the tower bounding
box through the opening when it starts outside the tower. The geometry
helpers are re-synced with the BBL versions (add_extra_point guards,
per-point side selection). The cone wall keeps its separate path, where
the option stays inert.

Behavior change: non-BBL towers now honor the (default-on) checkbox with
gap walls and routed entries; with the option off the output is
unchanged, and the BBL tower path is untouched.
2026-07-27 21:18:53 +08:00
SoftFever
c3c37e474a Print the WipeTower2 shell with a non-support, non-soluble filament
Like the BBL tower: the layer's sparse infill, wall, and brim go to the
first toolchange to a non-support/non-soluble filament, or are printed
with the incoming filament before any toolchange. The minimal-purge
clamp now also covers toolchanges that get no finish-layer saving.
Output is unchanged when no support/soluble filament is used.
2026-07-27 12:30:57 +08:00
SoftFever
1696d5ca39 Use the squared rib tower size in arrange estimates
estimate_wipe_tower_polygon reserved the arrange footprint and clamped the
tower X position with the raw prime_tower_width, under-reserving space
whenever the rib wall squares the tower to a different width.
2026-07-27 03:08:47 +08:00
SoftFever
466c36eaa3 Complete the rib wipe tower port in WipeTower2
The rib tower is now always square (prime_tower_width is ignored, as the
GUI already implies), carries the rib origin offset like the BBL tower so
the rib tips sit inside the configured position, clamps the rib length to
the tower diagonal, and extends the ribs for short towers.
2026-07-27 03:07:07 +08:00
SoftFever
5792fef805 Merge branch 'main' into feature/update_wipetower 2026-07-27 00:51:29 +08:00
SoftFever
bc016af1c9 Fix post-slice self-invalidation on custom multi-extruder printers 2026-07-27 00:49:08 +08:00
SoftFever
7a378d2fc4 Sync WipeTower from BambuStudio(through ca1881761) 2026-07-27 00:48:44 +08:00
Gabriel Monteiro
0013c1da34 Merge branch 'main' into fix/clang-cl-windows-support 2026-07-10 11:10:33 -03:00
SoftFever
f7c1b290fd v3.2: vendor-bundle re-mint under the product-triple rule
Every remaining legacy filament_id outside the BBL/QD_* islands re-derives
from its product triple (filament_vendor / filament_type / family name),
completing the content-addressed id model of filament_id_plan_v3.md:

- Relocation pre-step: 14 fdm_filament_* template forks (Cubicon x3,
  Prusa x6, RH3D x6 minus the pc fork already re-homed) stop declaring
  ids; the 16 presets that rode Prusa's forks now declare the id they
  already resolved (verified zero effective-id drift over all 5892
  instantiated presets).
- --drop-redundant-ids: 6 Custom/MyToolChanger generics drop copied GF
  ids and ride their OFL families.
- --remint over all 62 non-island vendors: 2647 declarations re-derived;
  identical products converge cross-bundle (showcase: PolyLite PLA is now
  OF5CgdDq in OrcaFilamentLibrary, Qidi, OrcaArena and Snapmaker).
- Prusament @XL completions surfaced by the relocation: filament_vendor
  ["Prusa Polymers"] on the 8 @XL declarers; Prusament PA-CF typed
  PA11-CF (the product is Prusament PA11CF) and PC-CF typed PC-CF
  (-CF family typed as base polymer); each family converges on one id.
- Succession: 331 ids retired with mode-rule successors, 355 never-shipped
  v1 mints forgotten with chain splicing, 151 GF-shaped ids released to
  the island space with hints, 27 curated BBL-generic -> OFL-generic
  hints (GFL99 -> OFDSrzZ8 class). New --retire "OLD=NEW" maintenance
  mode records lineage for OGFC99/OGFG99/OGFN99 (the shipped ids of OFL's
  Generic PC/PETG/PA in released versions, whose claims migrated in v3.1
  while Cubicon's inert fork declarations kept them alive).
- Retiring the P-hex system ids removes the last system ids from
  check_ams_filament_valid's destructive P-gate.
- AMS-ambiguity fixes surfaced by convergence (validator -f): 4 presets
  riding another family's id through inherits now declare their true
  family id (Elegoo Generic ASA-CF/PETG-CF, Snapmaker PolyLite Dual PLA /
  PolyLite J1 PLA); 9 Cubicon @base presets and Dremel Generic PLA, which
  duplicate their per-printer variants on the same printers, split onto
  the salt-1 iteration of their triple (sanctioned by the mint-conformance
  check; --remint now leaves salt-conformant declarations alone).

Gates: assign_filament_ids --check 0; orca_extra_profile_check 0;
116 python unit tests; config-equivalence over all 5892 instantiated
presets (byte-identical configs except the 14 sanctioned Prusament
vendor/type corrections; setting_id and compatible_printers unchanged;
per-family convergence and ledger conservation verified); profile
validator base/-f/-r(BBL)/-r(Qidi) all green; libslic3r_tests 48610
assertions; Moonraker OFL generic map check; custom-preset fixture
archives v1.9.0-v2.4.1.
2026-07-04 21:09:29 +08:00
SoftFever
e3ac835cc3 v3.2 data fixes: per-vendor (filament_vendor, filament_type) reconciliation
Reconcile every same-family triple divergence ahead of the v3.2 re-mint,
per the pinned decision rule (spool brand; "Generic"-named -> Generic;
brand-named -> that brand in every bundle; first-party lines -> printer
brand; web evidence beats names). All 32 grandfathered triple_exceptions
resolved plus swept same-class finds; every bundle re-verified split-free
by loader-faithful re-resolution and adversarially reviewed.

- Flashforge: 10 exceptions + swept Flashforge PLA; FusRock S-Multi/S-PAHT
  illegal types decided with product evidence (PA / PAHT); FusRock Generic
  roots -> Generic; 57 explicit Generic pins keep 14 uninvolved 0.25-nozzle
  families triple-identical.
- Prusa: Prusament vendor -> "Prusa Polymers"; Generic ASA -> Generic;
  Generic TPU/TPU HF type FLEX -> TPU; fdm_filament_pc re-home (sanctioned):
  Prusa Generic PC family = OF97ru74, Prusament PC Blend = OFvDbkFq on the
  @XL pair; transitional ids deleted from OFL and Prusa fdm_filament_pc.
- Anycubic: 8 first-party families -> Anycubic on fdm_filament_common
  leakers; Generic PETG outlier -> Generic.
- Creality: 5 Ender-5Max/K2 generics + swept Creality Generic PA -> Generic.
- Snapmaker: PolyLite PLA -> Polymaker; PLA Lite child aligned to root per
  Snapmaker/Orca_Presets evidence.
- Sovol/re3D: Polymaker PETG / SUNLU PETG -> brand; Greengate rPETG ->
  GreenGate3D per manufacturer evidence.

Snapshot/ledger intentionally untouched here: the central mechanical
commit regenerates them; --check is expected red between the two.
2026-07-04 20:20:03 +08:00
SoftFever
23386f6129 Merge branch 'main' into feature/filament_id 2026-07-04 19:41:38 +08:00
SoftFever
3ccc58a9fc fix 2026-07-04 19:21:19 +08:00
SoftFever
acd5dd0794 v3.1: OrcaFilamentLibrary re-mint under the product-triple rule
Phase v3.1 of filament_id_plan_v3.md: every OFL-declared filament_id
re-derives from its product triple; the succession ledger absorbs the old
ids. Config-equivalence verified: flattened effective configs differ ONLY
in filament_id (284 consistent old->new changes tree-wide, including every
vendor preset that rides an OFL family), zero config/compatible_printers/
setting_id drift.

Structural pre-step (id-value-neutral, verified): OFL generic family ids
move from the shared fdm_filament_* template bases onto the product-named
"Generic X @System" presets, so the v3 triple's family component is the
product name, not an internal file name (12 relocations; 2 dead duplicate
declarations on fdm_filament_pa/pet pruned; every consumer chain itemized
first - the +12 instantiated_with_id entries are this deliberate pattern,
matching the 11 generics that already declared on @System).
fdm_filament_pc keeps its declaration this phase: 7 Prusa presets (Prusa
Generic PC, Prusament PC Blend) inherit it directly and re-home in the
v3.2 Prusa worksheet; its transitional id is documented in the plan.

Re-mint: 301 declarations re-derived (e.g. Generic PLA OGFL99 ->
OFDSrzZ8 = mint("filament_product/Generic/PLA/Generic PLA")). Snapshot:
1477 ids (+300/-292). Ledger:
- 230 shipped ids retired with mode-rule successors (OGF* library ids,
  OFLSBS99, DREMC/FILAR/AliZ/eSUN/... legacy strings). DREMC010 had been
  shared by a PPA-CF and a TPU family - a data bug this split resolves;
  its successor follows its only shipped claim (DREMC PPA-CF).
- 25 GF-shaped ids OFL had copied from the Bambu catalog (GFOT00x
  Overture, GFSEP0xx) are RELEASED to the BBL island space with hints at
  the re-minted families - never retired, so a future legitimate BBL
  catalog addition is never blocked; plus an explicit GFOT001 ->
  OFxA1p01 hint (Overture PLA Pro, still live in BBL).
- 37 never-shipped v1 branch mints dropped from lineage
  (--forget-never-shipped; they exist in no release, no forwarding
  needed).
- OGFC99/OGFG99/OGFL96/OGFN99/OGFSNL08 stay live (still declared by
  vendor bundles); they retire in v3.2 when those declarers re-mint.

Gates: 106 unit tests OK; --check exit 0; orca_extra_profile_check exit 0;
validator -l 2 / -f tree-wide / -r BBL+Qidi exit 0; Moonraker OFL map
check resolves all 29 aliases against the re-minted presets; flatten
equivalence pre/post as above; snapshot regen idempotent.
2026-07-04 16:41:41 +08:00
SoftFever
2c0867619c v3.0: content-addressed mint tooling, succession runtime, W1 hardening
Implements phase v3.0 of filament_id_plan_v3.md - tooling and client
prerequisites. No filament_id values change in this commit.

Tooling (scripts/assign_filament_ids.py; 106 unit tests):
- The mint key becomes "filament_product/<filament_vendor>/<filament_type>/
  <family_name>", resolved loader-faithfully from the declarer's flattened
  config - bundle-independent and content-addressed; identity fixes re-id
  by design and are made safe by the succession ledger. --mint now takes
  the triple.
- The snapshot gains "triples" and "triple_exceptions" sections, folded
  into the equality gate: any vendor/type/name change surfaces as a
  reviewable snapshot diff. Check 3 rewritten to triple-mint conformance
  with (id, triple) grandfathering; check 5 generalized from OFL generics
  to every OFL-riding vendor preset; new check 8 (triple integrity) and
  check 9 (succession integrity).
- The retired ledger moves to resources/profiles/retired_filament_ids.json
  so it ships with the app; schema {claims, successor} plus cross-island
  "hints". The 14 v1 entries are migrated with mode-rule successors.
  Vanished ids in a foreign island's space (GF*/QD_*) are RELEASED with a
  hint instead of retired: the island catalog owns them and may
  legitimately (re)ship them, which check 4 must never block.
- New maintenance modes: --remint VENDOR, --drop-redundant-ids VENDOR,
  --add-hint "OLD=NEW", and --update-snapshot --forget-never-shipped FILE
  (never-shipped ids drop from lineage; chains splice through them).

Runtime (C++):
- Succession helpers in libslic3r/Preset (pure chain-follow + lazy ledger
  load from resources), consulted only on resolution miss in
  get_filament_by_filament_id, both AMS sync predicates,
  add_ams_filaments, setting_id_to_type, and the calibration-history
  lookup; behavior is byte-identical while the ledger has no matching
  entry. Catch2 coverage in tests/libslic3r.
- W1 hardening: check_ams_filament_valid no longer remote-wipes trays or
  rewrites temps for P-shaped ids that a system preset carries (ten such
  system ids ship today); the size==8 && [0]=='P' assert is relaxed; the
  unguarded filament_list find deref in the temp-equation check returns
  non-destructively on a miss.
- MoonrakerPrinterAgent: the 23 hardcoded OFL generic ids are replaced by
  a runtime lookup of "Generic <family> @System" (id-equivalent on
  today's shipped profiles, follows future re-mints automatically);
  scripts/test_moonraker_lane_data.py derives its expectations from the
  shipped profiles and gains --check-ofl-map.

Profile data (W3 - type is now a key component, so type bugs are fixed
before any re-mint):
- 17 same-name-different-type groups corrected across 50 files (OFL
  Generic PETG-CF/PE-CF/PP-CF; Flashforge ASA Basic/ASA-CF/ABS-CF/HIPS/
  PAHT-CF/PLA Silk; FusRock PAHT; Creality Generic PA6-CF; InfiMech PETG;
  Anycubic TPU 95A / TPU for ACE; Prusa Generic PA-CF/PLA-CF) - every
  value validated against MaterialType::all(); 3 Snapmaker U1 roots gain
  their missing filament_vendor. Flattened-config equivalence vs the
  previous commit: exactly the 54 intended diffs, zero BBL.
- doc/developer-reference/filament_id.md rewritten for the v3 rule.

Ambiguous type divergences (Prusa Generic TPU/TPU HF FLEX-vs-TPU, FusRock
S-Multi/S-PAHT) and all same-type vendor-tag divergences are deferred to
the v3.2 vendor worksheets, catalogued with analysis.
2026-07-04 16:28:56 +08:00
SoftFever
67406b24ba plan v3: OFL as the catalog, content-addressed product ids
Revises the v1 mint rule after the maintainer catch that its key scoped
families to the profile bundle (printer brand), fragmenting one commercial
product into N ids (PolyLite PLA: five bundles, all filament_vendor
"Polymaker", up to five ids).

Architecture: BBL and QD_* stay frozen islands; OrcaFilamentLibrary becomes
the single declaration point for every other material family; vendor
bundles carry only same-alias specializations (no filament_id key) that
shadow the OFL preset per printer and resolve its id through the loader
walk. New mint key: uuid5 over
"filament_product/<filament_vendor>/<filament_type>/<family_name>" from the
root's flattened config — bundle-independent (hoisting families into OFL is
id-stable), and the type component keeps the four known same-name-
different-type groups apart until their data bugs are fixed.

Content-addressing replaces "ids immutable once shipped": identity edits
re-id the family, made safe by turning retired_filament_ids.json into a
shipped succession ledger (old id -> successor, chains allowed,
cross-island hints permitted) consulted on resolution miss in the AMS sync
and lookup paths. The MoonrakerPrinterAgent hardcoded generic-id map is
replaced by a runtime preset lookup, removing the code/profile lockstep.

Migration: v3.0 tooling + W1 client hardening + W3 type fixes; v3.1 OFL
re-mint with succession entries; v3.2 vendor bundles (391 unshipped OF ids
re-derive without retirement; generic tunings re-point to OFL; ~800 shipped
legacy ids re-mint with succession, incl. the 57 multi-vendor GF residue
and the 10 P-hex system ids, which also exits them from the destructive
check_ams_filament_valid P-gate); v3.3 optional id-stable consolidation
into OFL. Gate battery unchanged plus succession-resolution tests.

filament_id_plan_v2.md gets a status note: its P+md5 verdict stands; its
work items are absorbed or superseded by v3.
2026-07-04 14:54:48 +08:00
SoftFever
a395701f29 plan: validate the P+md5 (get_filament_id) mint proposal; record verdict as plan v2
Examined minting system filament_ids with CreatePresetsDialog.cpp:487's
user-custom allocator (adopt-by-base-name, else "P"+md5(name)[0:7]) for
Bambu AMS-sync compatibility. Verdict: keep the OF* mint; capture the
proposal's value through bounded work items instead of a re-mint.

- The device path never validates id shape: tray_info_idx is an opaque
  string end-to-end (DeviceManager.cpp:1642; DevFilaSystem.cpp:512-514)
  and firmware persists arbitrary bytes (bambulab/BambuStudio#5436).
  Resolution is by value against the GF catalog plus the account's cloud
  custom cache; unknown ids show "?" regardless of shape, and system
  presets can never enter that cache (Preset.cpp:2071 gates upload on
  is_user()).
- The only id-shape dispatch in the tree is destructive for P-shaped ids:
  check_ams_filament_valid (DeviceManager.cpp:5335/5352/5395/5410) remotely
  clears an AMS tray (:5345) or rewrites its temps when a P-shaped tray id
  drops out of the user-root preset list — a state name-keyed minting
  creates by construction. GF* and OF* ids are structurally immune.
- The real value is captured without re-minting 391 unshipped ids across
  1327 files: the adopt step == curated GF adoption via the snapshot ledger
  (W4); the hash belongs to user presets (W5, cf. PR #13315); client
  hardening (W1) that the ten already-shipped P-hex system ids (Cubicon x8,
  Ginger, Artillery) need today anyway.

Method: 6 parallel evidence agents (generator semantics, AMS/device path,
exhaustive shape-dispatch sweep, upstream + online sources, tree-wide
dry-run over 5892 presets / 1148 base names, branch change inventory) into
a 3-judge panel (keep-OF* won 23/40 aggregate); the upstream generator was
verified byte-identical to BambuStudio master, and every load-bearing
file:line and number in the document was re-verified against the tree
before commit.
2026-07-03 10:12:21 +08:00
SoftFever
ac12dff1af CI: run the filament subtype check tree-wide
With every vendor's filament_id collisions fixed (356 collision groups /
1256 printer-level ambiguity errors across 30 vendors, plus the 16
library-internal ids and the 10 live library-cross groups), the
duplicate-filament-subtype validation no longer needs the BBL-only scope:
drop -v BBL from the -f step so any new ambiguity in any vendor fails CI.

Local verification of the full workflow against this branch:
- extra JSON check exit 0; validator -l 2 exit 0 (66 vendors);
  -f tree-wide exit 0 (with the library-aware extended validator, which is
  strictly stricter than the released binary CI downloads); -r exit 0 for
  BBL and Qidi.
- custom-preset fixture archives v1.9.0..v2.4.1 overlaid per the workflow:
  six pass outright; v2.3.1/v2.3.2/v2.4.0/v2.4.1 fail locally only on a
  pre-existing Windows-only validator limitation (a user preset with a
  non-ASCII filename reads as empty; reproduced byte-identically on the
  pre-migration base commit, and absent on CI's Linux runners where these
  archives validate green).
2026-07-03 01:10:54 +08:00
SoftFever
33923464ae Cubicon: keep @base presets selectable; mint the variant tier instead
The custom-preset fixture validation (check_profiles.yml step 5, run locally
against the v2.3.2/v2.4.0/v2.4.1 archives) caught a real regression in the
previous Cubicon fix: those archives contain user presets whose inherits
names the @base presets directly ("can not find parent Cubicon ABS @base").
A system preset with instantiation:false is not added to the preset
collection, so flipping the nine @bases was equivalent to deleting their
names - exactly the user-preset drop hazard the migration rules forbid.

Repair: restore all nine @bases byte-identically to their pre-flip state
(instantiated, setting_id, original P510cf* ids; Cubicon PC @base keeps its
minted OFnLnZQo from the copy-paste fix). The AMS ambiguity is instead
resolved Dremel-style: each family's three passthrough variants share one
fresh variant-tier mint as own keys, so on every printer the base and the
variant carry different ids. Zero preset-set change, zero config change,
user presets and fixtures resolve exactly as before the migration.

Verified: fixture archives v2.3.2/v2.4.0/v2.4.1 no longer report missing
parents; config-equivalence holds; orca_extra_profile_check.py exit 0;
assign_filament_ids.py --check exit 0; validator -l 2 exit 0; tree-wide
extended -f still exit 0.
2026-07-03 00:51:29 +08:00
SoftFever
55a3114ec9 Long-tail vendors: family filament_ids (17 vendors, 41 collision groups)
Phase 2 completion - Volumic, Ratrig, Chuanying, Afinia, Eryone, FLSun,
Tiertime, Blocks, CONSTRUCT3D, Co Print, CoLiDo, DeltaMaker, Ginger
Additive, OrcaArena, Peopoly, Wanhao France, iQ. All are P1 copy-paste or
small structural fixes; owners keep their ids by Bambu-catalog/OFL/historic-
introducer precedence, impostor families get fresh deterministic mints,
zero effective-config change:

- Volumic 10 mints (ABS/ASA/PP, PETG/PCTG/ESD, PLA/UNIVERSAL, PA/PPS lines);
  Ratrig 10 (BigNozzle/PunkFil lines off the Generic line's ids); Chuanying
  8 (plus 3 redundant own-id lines removed so parents' minted ids flow to
  the 0.25-nozzle variants); FLSun 4 (S1/T1 High Speed + Silk); Peopoly 4
  (Lancer lines off Generic PLA's GFL99); Afinia 3 (Value PLA/ABS+/Value ABS
  inside the frozen GFx##_## scheme); Co Print 3 (ABS/PETG/TPU off GFL99).
- Tiertime: Generic SBS had copy-pasted Generic PLA's ids on both printer
  lines - one family mint on both variants collapses the split. Eryone: PP
  copy-pasted PETG-CF's EFL43 (same introducing commit) - PP minted.
  Blocks: ASA-CF copy-pasted PLA-CF's BSFI010 - ASA-CF minted. CONSTRUCT3D:
  High Flow PETG minted off GFG99. CoLiDo: both claimants of the invented
  GFA99 re-minted. DeltaMaker: Brand PLA minted off GFL99. OrcaArena:
  Generic PLA Silk minted; the Bambu-clone Arena PLA Silk keeps GFA05
  (catalog precedence). iQ: Grauts HPP4GF25 minted off Fiberthree's IQM1.
- Ginger Additive (P5): the shared fdm_filament_common template carried
  P510eff9; moved onto the two pellet families (Generic PETG keeps it as
  first claimant, Generic PLA minted), template key removed after verifying
  every inheritor still resolves an id.
- Wanhao France (P4): YUMI PLA Bowden stops over-claiming the six
  direct-drive printers covered by YUMI PLA Direct Drive (trim only, no
  mints).

Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; and with all 30 vendor migrations
now applied, the extended validator's -f check is clean TREE-WIDE
(0 ambiguity errors, down from 1256 baseline / 16448 with the library-aware
extension); -r exit 0 for BBL and Qidi.
2026-07-03 00:16:01 +08:00
SoftFever
ee125975cf Snapmaker, FlyingBear, Sovol: family filament_ids
Phase 2 long-tail migrations (25 collision groups), zero effective-config
change:

Snapmaker (11 + the tree's one live library-cross group): three Benchy demo
presets coexisting via compatible_prints gating (invisible to the -f check)
get their own mints; the TPE/TPU-High-Flow lines riding shared bases get
family mints across the plain/U1/Dual/J1 variants; 'Snapmaker PLA Matte @U1'
minted; 'Snapmaker PET @Dual' unified onto its own family root id;
'Snapmaker PA-CF @U1' had its compatible_printers triple-duplicated
(self-collision) - deduplicated. The PolyTerra J1/Dual PLA presets that
re-exposed the library's PolyTerra PLA (alias rename) get family mints while
'PolyTerra PLA @0.2 nozzle' keeps the library id via inheritance. Fiberon
families keep their authentic byte-copied Bambu catalog ids (sanctioned
multi-vendor brand sharing, frozen in the snapshot).

FlyingBear (8): every preset carries an own-key Bambu generic id; owners
keep theirs, 15 impostor families (S1/Ghost7/Hyper lines) re-minted
family-atomically - '@S1' and '@Ghost7' siblings move together (20 edits).

Sovol (6): the GFL99 copy-paste epidemic. The five same-alias
'Generic * @Sovol SV08 MAX' tunings just DROP their wrong own-id lines so
the library family ids flow through inheritance (alias-shadow-verified);
Generic PLA Silk / SUNLU PETG adopt their library family ids as own keys
(their inherits point at other families, so deletion would collide); the 21
dedicated Sovol/Polymaker families get fresh mints (23 edits).
'Sovol SV07 PLA' keeps GFL99 unambiguously (sole claimant on SV07), frozen
in the snapshot.

Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; extended -f -v Snapmaker/FlyingBear/
Sovol all exit 0.
2026-07-03 00:14:27 +08:00
SoftFever
23b0aabb35 Cubicon, Dremel, Anycubic, Artillery, InfiMech, Creality: family filament_ids
Phase 2 long-tail migrations (56 collision groups across six vendors), zero
effective-config change except where stated:

Cubicon (17): 'Cubicon PC @base' verbatim-copied PA-CF's P510cfd0 at
introduction (90a6c53ad5; PC was the config-light stub) - the PC family gets
a fresh mint via its root. The other groups were all one shape: nine @base
presets instantiated on exactly the two printers their dedicated variants
cover with byte-identical passthrough configs, so no compatible_printers
trim exists that CI would accept (instantiated presets must claim a
printer). Fix: flip the nine @bases to instantiation:false and drop their
setting_ids (bases carry none by convention). Every printer keeps an
identical-config selectable preset per family - verified programmatically
before flipping; no machine default_materials references an @base name.

Dremel (3): 'Dremel Generic PLA' is deliberately selectable alongside its
per-printer variants (#6837 re-exposed it), and the variants carry real
overrides - a genuine AMS ambiguity with no config-neutral trim. The three
variants share the fresh family mint OFUYjPc4 as own keys; the root keeps
GFL99. A deliberate same-family id split (P8 shape): Dremel has no device
ecosystem consuming filament_id, and every alternative is a user-visible
regression of #6837. default_materials resolve unchanged.

Anycubic (14): copy-paste/generic-riding across three id eras; 2022-era
Anycubic Generic ABS/PETG/PLA/TPU keep the catalog ids, 13 families
re-minted atomically (72 edits incl. 48 forced same-family re-ids), retiring
the invented GFABS/GFL92/GFL93/GFPLA* space-containing ids.

Artillery (8): GFL99 umbrella + P-hex copy-pastes; Artillery Generic PLA
keeps GFL99, Artillery PLA keeps Pfcf9c4c, 17 families minted (52 edits),
P284941e retired.

InfiMech (14): pure verbatim Bambu-generic copy-paste; the six InfiMech
Generic owners keep their ids, 15 impostor families minted (34 edits).

Creality (8): HF generics copy-pasted GFL99 + id-less sub-brand lines riding
keeper families; owners keep their git-verified ids, 8 families minted (17
edits, own-key layout for members inheriting heterogeneous per-series
parents).

Verified per batch: config-equivalence gate zero unexpected diffs (the nine
Cubicon @base instantiation flips are the only preset-set changes, reviewed
above); orca_extra_profile_check.py exit 0; assign_filament_ids.py --check
exit 0; validator -l 2 exit 0; extended -f exit 0 for all six vendors
(-v Cubicon/Dremel/Anycubic/Artillery/InfiMech/Creality); 14 fully-vanished
ids appended to the retirement ledger.
2026-07-03 00:13:24 +08:00
SoftFever
095fd9fba4 Prusa: move filament_ids off shared templates onto family roots
Phase 2 of the filament_id cleanup (31 collision groups, all one mechanism:
material-class ids on shared fdm_filament_* templates collapsing HF/-CF/
Prusament lines onto one id, plus 3 overclaims). 18 new @base family roots
(owner generic keeps the legacy id, 12 impostor families get deterministic
mints), 72 config-neutral inherits repoints, 6 template filament_id keys
removed (only where every id-less inheritor is covered by a new root;
fdm_filament_asa/pc keep theirs for the frozen Prusament @XL riders),
3 compatible_printers trims on MINIIS printers covered by dedicated @MINIIS
variants. Frozen name-shaped and _NN per-variant ids stay byte-identical.

Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; extended -f -v Prusa exit 0 (was 31
groups / 1035 printer-level errors on the pre-apply copy).
2026-07-03 00:09:05 +08:00
SoftFever
674344b3c1 Elegoo: per-product-line roots and filament_ids
Phase 2 of the filament_id cleanup (37 collision groups; one systematic
mistake: every commercial line inherits the material-class @base and its
E<MAT>B00 id). 23 new per-line @base roots with fresh deterministic mints
(no per-line roots existed, contrary to the plan text), 155 inherits
repoints, 23 index entries inserted between the parent @base and the line's
members (load-bearing order), 6 in-place mints on single-member generic
derivatives.

The @base-owning families keep their ids (Elegoo PLA=EPLAB00 etc.); 2 forced
family-atomic re-ids outside collision groups (Elegoo Rapid TPU 95A @EN2
Series/@Elegoo Giga follow their family). Residual 2-family shares
(GPETGB00/GASAB00 with the Centauri -CF lines, pure-template ETPUB00/
EPAHTB00) are printer-disjoint, validator-clean, and frozen in the snapshot.

Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; extended -f -v Elegoo exit 0 (was 37
groups / 1332 printer-level errors on the pre-apply copy).
2026-07-03 00:08:08 +08:00
SoftFever
4fc964d293 Flashforge: re-mint umbrella and OFL-riding filament_ids per family
Phase 2 of the filament_id cleanup (69 within-vendor collision groups plus
the 9 live library-cross groups on Creator 5/5 Pro). 507 filament_id edits +
12 compatible_printers trims (G3U 0.6/0.8 bases and HS bases over-claiming
printers covered by dedicated variants):

- The FFG01 umbrella (~140 presets across many families) is broken up: the
  git-verified introducing family (Flashforge Generic PLA) keeps FFG01, and
  83 other families get fresh deterministic mints; the GFB99/GFG99/GFL99
  G3U-era block is resolved the same way.
- Flashforge-branded presets riding OrcaFilamentLibrary generic ids
  (OGFB99/OGFG99/OGFL98/OGFL99/OGFN96/OGFN98/OGFS98/OGFS99/OGFU99) get their
  own family mints; true generic tunings (Generic PLA / PLA Silk / BVOH)
  keep the library id with the library base name (alias-shadow-consistent).
- Layout deviation, signed off: minted ids are declared as own keys on every
  instantiated member instead of new @base roots, because these families
  inherit up to six heterogeneous per-era umbrella parents and
  config-preserving roots would add ~80 artificial files. The snapshot
  ledger records the resulting instantiated_with_id/id_overrides growth,
  which is exactly the ratchet mechanism for keeping such shapes visible.

Verified: config-equivalence gate zero unexpected diffs; extra check exit 0;
--check exit 0; validator -l 2 exit 0; extended -f -v Flashforge exit 0
(was 69 groups + 9 library-cross).
2026-07-03 00:07:30 +08:00
SoftFever
516267d869 Qidi: re-mint copy-pasted filament_ids per material family
Phase 2 of the filament_id cleanup, worst vendor first (97 collision groups,
the GFB99/GFG99/GFL99 copy-paste epidemic). 435 in-place filament_id edits +
5 compatible_printers trims (broader 0.2-nozzle PETG presets over-claiming
Qidi Q1 Pro 0.2 nozzle, covered by dedicated variants):

- The Bambu-catalog generic owners keep their ids byte-identical (Qidi
  Generic ABS/PETG/PLA/TPU/PA/PA-CF/PLA-CF); 6 stray members inside owner
  families are aligned to their family id.
- 64 brand/product-line families (Bambu/HATCHBOX/Overture/PolyLite/Tinmorry,
  QIDI-brand lines, PLA+/High Speed/TPU-95A) get fresh deterministic mints,
  the same id landing in every per-series root of a family
  (@Q2-Series/@Q2C-Series/@X-Max 4-Series bases are multi-root families).
- QD_* device-protocol ids untouched (frozen contract with QidiPrinterAgent).

Verified: config-equivalence gate zero unexpected diffs (5892 presets);
orca_extra_profile_check.py exit 0; assign_filament_ids.py --check exit 0;
validator -l 2 exit 0; extended -f -v Qidi exit 0 (was 97 groups);
-r -v Qidi exit 0 (all references still resolve).
2026-07-03 00:06:38 +08:00
SoftFever
ab60229311 OrcaFilamentLibrary: give every material family its own filament_id
Phase 1 of the filament_id cleanup (filament_id_plan.md section 5): resolve the
16 library-internal ids that covered several different materials at once and
were visible on every printer of every vendor (empty compatible_printers =
compatible with all).

- 7 existing @base roots get their copy-pasted id replaced with a fresh
  deterministic mint (Elas PLA/ASA copy-pastes of Bambu-mirror ids, eSUN
  copy-pastes incl. the OGFL06 eSUN PLA-Marble / Fiberon PETG-ESD polymer
  mismatch).
- 30 rootless families (23 Elegoo product lines riding the material-class
  E*B00 ids, Generic PETG HF / PETG-CF / PP-CF / PP-GF / PE-CF / PLA Matte
  riding their parent generic's template id, PolyLite Dual PLA) each get a new
  config-equivalent @base root carrying the minted id, inheriting the family's
  previous parent; members re-pointed; index entries inserted before the
  @System entries (loader's filament_id map is built in file order).
- Keepers by precedence stay byte-identical: Bambu-catalog mirrors
  (OGFA00/OGFB01/OGFG00, PolyLite/Overture/Fiberon lines), the OFL generics
  (OGFG99/OGFL99/OGFP97/OGFP99), and the Elegoo root-owning families.

Verified: config-equivalence gate — flattened effective configs of all 5892
instantiated presets are byte-identical to pre-migration except the prescribed
filament_id changes; orca_extra_profile_check.py exit 0;
assign_filament_ids.py --check exit 0; validator -l 2 exit 0 (66 vendors);
extended validator -f -v OrcaFilamentLibrary exit 0 (16 collision ids
resolved) and -f -v BBL exit 0 (all 26 BBL-shared ids are same-material
mirrors, alias-shadowed on every overlapping BBL printer — no BBL file
touched). Snapshot: +37 minted ids, id_overrides +30 (new roots override
their template parents by design).
2026-07-03 00:05:37 +08:00
SoftFever
1482fb81fd filament_id: deterministic mint rule, sanctioned-state ledger, validator hardening
Phase 0 of the filament_id cleanup (filament_id_plan.md):

- scripts/assign_filament_ids.py: mint OF-prefixed 8-char ids as
  uuid5(FILAMENT_ID_NAMESPACE, filament_family/<vendor>/<family>) in the
  base62 derivation of the setting_id precedent; loader-faithful effective-id
  resolver (vendor inherits chain + OrcaFilamentLibrary fallback); CLI:
  default assign run (idempotent no-op on a fully-idded tree),
  --mint Vendor/Family, --update-snapshot, --check.
- scripts/filament_id_snapshot.json: the sanctioned-state ledger (1092 ids,
  1965 family claims over the current tree). The tree must equal it exactly,
  both directions, so every id/claim change lands as a reviewable diff; a PR
  snapshot diff is the maintainer gate. scripts/retired_filament_ids.json is
  the append-only retirement ledger; --update-snapshot refuses to resurrect
  retired ids and to sanction new reserved-namespace claims (GF*/QD_*/P-hex/
  null) for non-owner vendors without --allow-shared-catalog.
- orca_extra_profile_check.py: runs check_filament_ids() tree-wide (format,
  snapshot equality, mint conformance, retired reuse, alias hygiene for tuned
  OFL generics, reserved namespaces, structure ratchet). The pre-existing
  check_filament_id() 8-char rule stays BBL/OFL-scoped: grandfathered longer
  ids exist elsewhere (e.g. Prusa's 36-char name ids) and are frozen via the
  snapshot instead.
- PresetBundle::check_duplicate_filament_subtypes now includes
  OrcaFilamentLibrary presets in every vendor's per-printer duplicate check;
  alias-shadowed library presets are excluded via the existing
  m_excluded_from population (verified live in the validator load path), so
  only genuinely visible duplicates are flagged. AMS tray-id resolution logs
  a warning when a filament_id matches 2+ compatible presets (pick unchanged).
- doc/developer-reference/filament_id.md: the authoring rule; PR template
  gains a no-hand-written-ids checkbox.
- scripts/tests/test_filament_id.py: 46 stdlib-unittest tests (mint vectors,
  resolver semantics, every check firing/silent, ledger round-trips, byte
  preservation, real-tree smoke).

Verified: python -m unittest discover -s scripts/tests (46 OK);
python scripts/orca_extra_profile_check.py exit 0 on the unmigrated tree;
assign run is a no-op; rebuilt OrcaSlicer_profile_validator -l 2 exit 0;
extended -f is strictly additive vs baseline (every baseline group preserved,
all new groups involve library presets, alias exclusion proven by BBL-mirror
absence on BBL printers).
2026-07-02 23:17:15 +08:00
SoftFever
051cdd4560 init 2026-07-02 21:57:56 +08:00
Gabriel
5afc6ae9b2 fix: wxWidgets target path for clang-cl on Windows
wxWidgets chooses target files based on the compiler id, which makes clang-cl
look under the clang_x64_lib layout.

The dependencies are built with MSVC naming/layout, and clang-cl uses the MSVC
frontend variant on Windows. Patch the generated wxWidgets config so clang-cl
loads the vc_x64_lib targets instead.
2026-06-24 00:37:00 -03:00
Gabriel
adb0ca3dc3 fix: use Ninja-compatible build target in build_release_vs.bat
ALL_BUILD is a Visual Studio generator target. Ninja uses `all`.

When building with -x (Ninja generator), the script fails with
"ninja: error: unknown target 'ALL_BUILD'". Use the correct target
name for each generator.
2026-06-24 00:36:59 -03:00
Gabriel
08128911e3 fix: copy runtime DLLs for Ninja generator on Windows
The runtime DLL copy was nested under CMAKE_CONFIGURATION_TYPES, so it only ran
for multi-config generators.

Ninja single-config leaves that variable empty, which skipped copying OCCT,
GMP, MPFR, WebView2, and freetype DLLs next to the executable. Run the copy
logic for both generator styles while keeping it Windows-only.
2026-06-24 00:36:59 -03:00
Gabriel
0a7ac3f2ac fix: disable TBB LTCG to allow linking with lld-link
oneTBB enables MSVC IPO/LTCG by default, which emits MSVC proprietary bitcode
objects when built with cl.exe.

lld-link cannot consume those /GL objects. Patch the TBB MSVC compiler settings
so IPO can be disabled and the dependency produces native COFF objects that both
link.exe and lld-link can consume.
2026-06-24 00:36:59 -03:00
Gabriel
d865e9e6e1 fix: exclude clang-cl from MSVC-only compiler guards in CMake
clang-cl defines MSVC in CMake, but some guarded blocks apply flags or behavior
that are specific to cl.exe and should not be passed to clang-cl.

Exclude Clang from those MSVC-only branches so clang-cl follows the compatible
compiler path instead of inheriting cl.exe-only settings.
2026-06-24 00:36:59 -03:00
Gabriel
7aaeea2bd2 fix: wide string literals for url_prefix concatenation on Windows
The Windows path builds url_prefix as a wide string.

MSVC accepts concatenating the narrow literals here, but clang-cl rejects the
mixed narrow/wide expression. Use wide literals so the concatenation type matches.
2026-06-24 00:36:42 -03:00
Gabriel
9e635925c8 fix: explicit cast T2A_ to const char* for clang-cl
clang-cl is stricter about converting the T2A_ helper result in this expression.

Cast the conversion helper result explicitly to const char* so the intended
string conversion is unambiguous across MSVC and clang-cl.
2026-06-24 00:36:42 -03:00
Gabriel
ec22a58c40 fix: LabelItemType underlying type to silence narrowing in clang-cl
LabelItemType values are used with Marker, which is std::size_t.

MSVC accepts the implicit narrowing in this path, but clang-cl diagnoses it more
strictly. Give the enum the same underlying type as Marker.
2026-06-24 00:36:42 -03:00
Gabriel
a636243ec0 fix: materialize Eigen cast expression before passing to distance_to_squared
Eigen's .cast<T>() returns a lazy CwiseUnaryOp expression, not a materialized
Matrix. The distance_to_squared overload taking a nearest_point output parameter
expects a concrete Eigen::Matrix, so template deduction fails on clang-cl.

Materialize the cast into a local Vec variable before passing it.
MSVC accepted the expression directly; clang-cl correctly rejects it.
2026-06-24 00:36:41 -03:00
Gabriel
b9e1db41a0 fix: explicit template instantiation for clang-cl in BoundingBox
clang-cl does not instantiate BoundingBoxBase<Point, Points>::construct for
Points::const_iterator through the same transitive path accepted by MSVC.

Add the explicit instantiation so the template definition is emitted where the
clang-cl build needs it.
2026-06-24 00:36:41 -03:00
4265 changed files with 76880 additions and 11994 deletions

5
.gitattributes vendored
View File

@@ -1,2 +1,7 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Shell scripts are run by Git Bash on Windows CI, which cannot read a script
# with CRLF line endings: it fails on the first line. Windows checkouts default
# to core.autocrlf=true, so keep these LF whatever the platform.
*.sh text eol=lf

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

@@ -20,6 +20,8 @@
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
- [ ] New filament/material profiles: I wrote **no** `filament_id` key by hand — I ran `python scripts/assign_filament_ids.py` and `--update-snapshot` and committed both diffs (see `doc/developer-reference/filament_id.md`)
<!--
> A guide for users on how to download the artifacts from this PR.
-->

View File

@@ -14,6 +14,7 @@ on:
- 'localization/**'
- 'resources/**'
- ".github/workflows/build_*.yml"
- 'scripts/build_preset_cache.*'
- 'scripts/flatpak/**'
- 'scripts/msix/**'
- 'tests/**'
@@ -33,6 +34,7 @@ on:
- 'build_release_vs.bat'
- 'build_release_vs2022.bat'
- 'build_release_macos.sh'
- 'scripts/build_preset_cache.*'
- 'scripts/flatpak/**'
- 'scripts/msix/**'
- 'tests/**'

View File

@@ -162,6 +162,14 @@ jobs:
retention-days: 5
if-no-files-found: error
- name: Build system preset cache (macOS)
if: runner.os == 'macOS' && !inputs.macos-combine-only
working-directory: ${{ github.workspace }}
shell: bash
# The bundle was already packed from resources/, so the caches have to be
# installed into it here; the source tree keeps its JSONs for later jobs.
run: ./scripts/build_preset_cache.sh -b build/${{ inputs.arch }} build/${{ inputs.arch }}/OrcaSlicer/OrcaSlicer.app/Contents/Resources/profiles
- name: Pack macOS app bundle ${{ inputs.arch }}
if: runner.os == 'macOS' && !inputs.macos-combine-only
working-directory: ${{ github.workspace }}
@@ -390,6 +398,13 @@ jobs:
if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 tests } else { .\build_release_vs.bat slicer tests }
shell: pwsh
- name: Build system preset cache (Windows)
if: runner.os == 'Windows'
shell: cmd
# Shipped into both the already-installed tree (portable zip, MSIX) and
# the checkout cpack re-installs from when it builds the NSIS installer.
run: scripts\build_preset_cache.bat --prune-source "%BUILD_DIR%" "resources\profiles" "%BUILD_DIR%\OrcaSlicer\resources\profiles"
- name: Pack unit tests Win
if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}
@@ -539,6 +554,20 @@ jobs:
retention-days: 5
if-no-files-found: error
- name: Build system preset cache (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
# Both were packed from resources/ before the caches existed, so the
# AppImage is unpacked first and the caches shipped into it and into
# the package tree; the source tree keeps its JSONs for later steps.
appimage=$(find build -maxdepth 1 -name "OrcaSlicer_Linux_AppImage*.AppImage" | head -1)
chmod +x "$appimage"
"$appimage" --appimage-extract
./scripts/build_preset_cache.sh -b build build/package/resources/profiles squashfs-root/resources/profiles
appimagetool=$(find build -name "appimagetool.AppImage" | head -1)
ARCH=$(uname -m) "$appimagetool" --appimage-extract-and-run squashfs-root "$appimage"
rm -rf squashfs-root
# Ship the freshly-built validator so slice_check_linux (build_all.yml)
# can slice-sweep the shipped profiles with this PR's engine. Taken from
# the aarch64 leg so the sweep also exercises the arm build; x86_64 on

View File

@@ -1,8 +1,12 @@
name: Check profiles
on:
pull_request:
# release/* is included because pr-merge-bot.yml lets delegates merge into
# it, and it gates on this workflow's result. Without it a delegated merge
# into a release branch would run no profile validation at all.
branches:
- main
- release/*
paths:
- 'resources/profiles/**'
- ".github/workflows/check_profiles.yml"
@@ -20,6 +24,8 @@ permissions:
jobs:
check_profiles:
# This job name is the check-run name pr-merge-bot.yml requires before a
# delegated merge. Renaming it silently disables that gate.
name: Check profiles
runs-on: ubuntu-24.04
steps:
@@ -58,13 +64,14 @@ jobs:
set +e
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -s -l 2 2>&1 | tee ${{ runner.temp }}/validate_slice.log
exit ${PIPESTATUS[0]}
# For now run filament subtype check only for BBL profiles until we fix other vendors' profiles.
- name: validate filament subtype check for BBL profiles
# All vendors' filament_id collisions were fixed (see scripts/filament_id_snapshot.json),
# so the duplicate-filament-subtype check runs tree-wide.
- name: validate filament subtype check
id: validate_filament_subtypes
continue-on-error: true
run: |
set +e
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -v BBL -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log
exit ${PIPESTATUS[0]}
- name: validate custom presets
@@ -211,7 +218,7 @@ jobs:
fi
if [ "${{ steps.validate_filament_subtypes.outcome }}" = "failure" ]; then
echo "### BBL Filament Subtype Validation Failed"
echo "### Filament Subtype Validation Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/validate_filament_subtypes.log || echo "No output captured"

510
.github/workflows/pr-merge-bot.yml vendored Normal file
View File

@@ -0,0 +1,510 @@
name: PR Merge Bot
# Merges a pull request on request from a delegated vendor profile maintainer.
# The merge is performed by this workflow's GITHUB_TOKEN, so a delegate needs no
# repository access.
#
# Commands, posted as a comment on the PR:
# /bot merge squash-merge the PR
# /bot merge --dry-run report the verdict without merging
#
# Merges only when the commenter holds a grant covering every changed path, the
# PR targets main or release/*, and CI is green on the head commit. Otherwise it
# comments naming the files that fell outside the grant.
#
# Grants come from the FOLDER_MERGERS variable in the `merge-delegation`
# environment: one per line, `account: path`, `#` comments and blank lines
# allowed. Paths may contain spaces. A vendor takes two grants, the folder and
# its sibling bundle JSON:
#
# # Acme profiles
# vendor-maintainer: resources/profiles/Acme/
# vendor-maintainer: resources/profiles/Acme.json
#
# Edit the grant list (environment scope, so admin only):
# gh variable set FOLDER_MERGERS --env merge-delegation --body "$(cat folder-mergers.txt)"
# gh variable get FOLDER_MERGERS --env merge-delegation
#
# Stop all merging without touching this file:
# gh variable set MERGE_BOT_DRY_RUN --body true
on:
issue_comment:
types:
- created
# One merge attempt per PR at a time, so two quick comments cannot race.
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}
cancel-in-progress: false
jobs:
merge:
# Skips the job unless a PR comment mentions the command.
if: >-
github.repository == 'OrcaSlicer/OrcaSlicer'
&& github.event.issue.pull_request != null
&& contains(github.event.comment.body, '/bot merge')
permissions:
contents: write # pulls.merge
pull-requests: write # pulls.merge
issues: write # feedback comment + reactions
actions: write # re-dispatch build_all.yml after the merge
runs-on: ubuntu-latest
timeout-minutes: 10
# Supplies FOLDER_MERGERS. Must carry no protection rules, or every
# delegated merge would wait for a human reviewer.
environment: merge-delegation
steps:
- name: Merge PR on behalf of a folder delegate
uses: actions/github-script@v9
env:
# Read as env vars, never interpolated into the script body.
FOLDER_MERGERS: ${{ vars.FOLDER_MERGERS }}
MERGE_BOT_DRY_RUN: ${{ vars.MERGE_BOT_DRY_RUN }}
with:
script: |
function isPermissionDenied(error) {
return error && error.status === 403 && /Resource not accessible by integration/i.test(error.message || '');
}
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const MARKER = '<!-- pr-merge-bot -->';
// No grant may reach outside this root.
const DELEGATABLE_ROOT = 'resources/profiles/';
const ALLOWED_BASE_BRANCH = /^(?:main|release\/.+)$/;
const MERGE_METHOD = 'squash';
const REQUIRED_CHECK = 'Check profiles'; // job name in check_profiles.yml
const MAX_CHANGED_FILES = 500; // policy cap, well under listFiles' 3000
const LISTFILES_CAP = 3000;
const MAX_REPORTED_FILES = 12;
const MERGEABLE_ATTEMPTS = 5;
const MERGEABLE_DELAY_MS = 2000;
const OK_CONCLUSIONS = new Set(['success', 'neutral', 'skipped']);
const REGULAR_FILE_MODES = new Set(['100644', '100755']);
// Paths refused whatever the grants say. Checked before grants, so
// delegating a new root means removing it from this list too.
const DENIED_PATTERNS = [
/^\.github\//,
/(^|\/)\.git(attributes|modules|ignore|config)$/,
/^(?:src|deps|deps_src|tests|tools|cmake|sandboxes|scripts|docs?|localization|bbl)\//,
/(^|\/)cmakelists\.txt$/,
/\.cmake$/,
/^build_[^/]*\.(?:sh|bat)$/,
/^version\.inc$/,
// Executables, including those inside the delegatable root.
/\.(?:sh|bash|bat|cmd|ps1|py|js|mjs|cjs|ts|rb|pl|php)$/
];
function parseGrants(raw) {
// GitHub login: 1-39 chars, alphanumerics with single interior hyphens.
const loginPattern = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$/;
const grantsByLogin = new Map();
const problems = [];
(raw || '').split(/\r?\n/).forEach((rawLine, index) => {
const line = rawLine.trim();
if (!line || line.startsWith('#')) {
return;
}
// Splits on the first colon only, so paths may contain ':' and spaces.
const separator = line.indexOf(':');
if (separator === -1) {
problems.push(`line ${index + 1}: expected \`account: path\``);
return;
}
const login = line.slice(0, separator).trim().replace(/^@/, '');
const path = line.slice(separator + 1).trim().replace(/\/+$/, '');
if (!loginPattern.test(login)) {
problems.push(`line ${index + 1}: \`${login}\` is not a valid GitHub account name`);
return;
}
if (/[\\*?\u0000-\u001f\u007f]/.test(path) || path.split('/').includes('..') || path.includes('//')) {
problems.push(`line ${index + 1}: invalid path (no globs, \`..\`, \`//\`, backslashes or control characters)`);
return;
}
// Rejects anything outside the root, and the bare root itself.
if (!path.startsWith(DELEGATABLE_ROOT) || path.length <= DELEGATABLE_ROOT.length) {
problems.push(`line ${index + 1}: \`${path}\` is not inside \`${DELEGATABLE_ROOT}\``);
return;
}
const key = login.toLowerCase();
grantsByLogin.set(key, (grantsByLogin.get(key) || []).concat(path));
});
return { grantsByLogin, problems };
}
function isDenied(path) {
if (/[\\\u0000-\u001f\u007f]/.test(path) || path.startsWith('/') || path.split('/').includes('..')) {
return true;
}
const normalized = path.normalize('NFKC').toLowerCase();
return DENIED_PATTERNS.some((pattern) => pattern.test(normalized));
}
// Byte-exact match on directory boundaries, so a grant of
// `.../Acme` covers neither `.../Acme Labs/x.json` nor `.../Acme.json`.
function isGranted(path, grants) {
return grants.some((grant) => path === grant || path.startsWith(`${grant}/`));
}
// Both endpoints of a rename; both must satisfy the grant.
function pathsFor(file) {
return [file.filename, file.previous_filename].filter(Boolean);
}
function formatList(items) {
const unique = [...new Set(items)];
const shown = unique.slice(0, MAX_REPORTED_FILES).map((item) => `- \`${item}\``);
if (unique.length > MAX_REPORTED_FILES) {
shown.push(`- …and ${unique.length - MAX_REPORTED_FILES} more`);
}
return shown.join('\n');
}
const { owner, repo } = context.repo;
const issue = context.payload.issue;
const comment = context.payload.comment;
if (!issue.pull_request) {
core.info('Ignoring comment that is not on a pull request.');
return;
}
// Ignores a comment whose sender is not its author.
if (context.payload.action !== 'created' || context.payload.sender.login !== comment.user.login) {
core.warning('Ignoring comment whose sender does not match its author.');
return;
}
if (comment.user.type !== 'User') {
core.info('Ignoring bot-authored command.');
return;
}
const commandLine = (comment.body || '')
.split('\n')
.map((line) => line.trim())
.find((line) => /^\/bot\s+merge\b/i.test(line));
if (!commandLine) {
core.info('No /bot merge command found.');
return;
}
const commenter = comment.user.login;
const { grantsByLogin, problems } = parseGrants(process.env.FOLDER_MERGERS);
const grants = grantsByLogin.get(commenter.toLowerCase()) || [];
for (const problem of problems) {
core.warning(`FOLDER_MERGERS ${problem}`);
}
// Says nothing to accounts with no grant, so it cannot be used to spam.
if (!grants.length) {
core.info(`Ignoring /bot merge from @${commenter}: not listed in FOLDER_MERGERS.`);
return;
}
// Warns instead of failing when the token cannot post feedback.
async function bestEffort(call, warning) {
try {
await call();
} catch (error) {
if (isPermissionDenied(error)) {
core.warning(warning);
return;
}
throw error;
}
}
const react = (content) => bestEffort(
() => github.rest.reactions.createForIssueComment({ owner, repo, comment_id: comment.id, content }),
`Cannot add the "${content}" reaction because the token cannot write.`);
const say = (body) => bestEffort(
() => github.rest.issues.createComment({ owner, repo, issue_number: issue.number, body: `${MARKER}\n${body}` }),
'Cannot post a comment because the token cannot write comments.');
// Declines the command: warns in the log, reacts, explains on the PR.
async function refuse(reason) {
const configNote = problems.length
? `\n\n\`FOLDER_MERGERS\` also has problems a maintainer needs to fix:\n${problems.map((problem) => `- ${problem}`).join('\n')}`
: '';
const grantsNote = `\n\n<details><summary>Your current grants</summary>\n\n${formatList(grants)}\n\n</details>`;
core.warning(`Refused /bot merge from @${commenter}: ${reason}`);
await react('-1');
await say(`@${commenter} I can't merge this PR: ${reason}${configNote}${grantsNote}`);
}
await react('eyes');
const args = (commandLine.match(/^\/bot\s+merge\s*(.*)$/i)[1] || '').trim().split(/\s+/).filter(Boolean);
const unknownArgs = args.filter((arg) => arg.toLowerCase() !== '--dry-run');
const dryRun = String(process.env.MERGE_BOT_DRY_RUN || '').toLowerCase() === 'true'
|| unknownArgs.length !== args.length;
if (unknownArgs.length) {
return refuse(
`I don't understand ${unknownArgs.map((arg) => `\`${arg}\``).join(', ')}. ` +
'Usage: `/bot merge` or `/bot merge --dry-run`.'
);
}
// Refuses everything while the grant list is malformed.
if (problems.length) {
return refuse(
'the `FOLDER_MERGERS` grant list has malformed lines, so I refuse every merge until it is fixed.'
);
}
let { data: pr } = await github.rest.pulls.get({
owner,
repo,
pull_number: issue.number
});
if (pr.merged) {
return refuse('it is already merged.');
}
if (pr.state !== 'open') {
return refuse(`its state is \`${pr.state}\`, not \`open\`.`);
}
if (pr.draft) {
return refuse('it is still a draft. Mark it ready for review first.');
}
if (!ALLOWED_BASE_BRANCH.test(pr.base.ref)) {
return refuse(`it targets \`${pr.base.ref}\`. Delegated merges are only allowed into \`main\` and \`release/*\`.`);
}
// ---- folder scope ----
const files = await github.paginate(github.rest.pulls.listFiles, {
owner,
repo,
pull_number: pr.number,
per_page: 100
});
if (!files.length) {
return refuse('it changes no files, so there is nothing to verify or merge.');
}
// Refuses when the file list is truncated or disagrees with the PR.
if (files.length >= LISTFILES_CAP || files.length !== pr.changed_files) {
return refuse(
`it reports ${pr.changed_files} changed files but the API listed ${files.length}, ` +
'so the file list is truncated and I cannot verify the folder scope. A maintainer must merge this one.'
);
}
if (pr.changed_files > MAX_CHANGED_FILES) {
return refuse(`it changes ${pr.changed_files} files; delegated merges are capped at ${MAX_CHANGED_FILES}.`);
}
const deniedFiles = [];
const outsideFiles = [];
for (const file of files) {
for (const path of pathsFor(file)) {
if (isDenied(path)) {
deniedFiles.push(path);
} else if (!isGranted(path, grants)) {
outsideFiles.push(path);
}
}
}
if (deniedFiles.length) {
core.error(`@${commenter} attempted a delegated merge touching protected paths: ${deniedFiles.join(', ')}`);
return refuse(
'it touches paths that are never delegatable, whatever the grants say ' +
`(CI, build, scripts or executable files):\n\n${formatList(deniedFiles)}\n\nA maintainer should look at this before it goes any further.`
);
}
if (outsideFiles.length) {
return refuse(
`${outsideFiles.length} changed path(s) fall outside your grants:\n\n${formatList(outsideFiles)}\n\n` +
'A vendor needs both grants: `resources/profiles/<Vendor>/` **and** `resources/profiles/<Vendor>.json`.'
);
}
// ---- file modes: rejects symlinks and submodules ----
// Fetches the delegatable subtree only; listFiles does not report modes.
const headSha = pr.head.sha;
const { data: tree } = await github.rest.git.getTree({
owner,
repo,
tree_sha: `${headSha}:${DELEGATABLE_ROOT.replace(/\/$/, '')}`,
recursive: 'true'
});
if (tree.truncated) {
return refuse('the git tree is too large to verify file modes. A maintainer must merge this one.');
}
// Entry paths are subtree-relative.
const modesByPath = new Map(tree.tree.map((entry) => [`${DELEGATABLE_ROOT}${entry.path}`, entry.mode]));
const irregularFiles = files
.filter((file) => file.status !== 'removed')
.map((file) => [file.filename, modesByPath.get(file.filename)])
.filter(([, mode]) => !REGULAR_FILE_MODES.has(mode))
.map(([path, mode]) => `${path} (mode ${mode || 'missing'})`);
if (irregularFiles.length) {
core.error(`@${commenter} attempted a delegated merge with non-regular files: ${irregularFiles.join(', ')}`);
return refuse(
`it adds symlinks, submodules or files I cannot verify:\n\n${formatList(irregularFiles)}\n\nA maintainer should look at this before it goes any further.`
);
}
// ---- mergeability: waits for GitHub to compute it ----
for (let attempt = 0; pr.mergeable === null && attempt < MERGEABLE_ATTEMPTS; attempt += 1) {
core.info(`Mergeability not computed yet; retrying in ${MERGEABLE_DELAY_MS}ms.`);
await sleep(MERGEABLE_DELAY_MS);
({ data: pr } = await github.rest.pulls.get({
owner,
repo,
pull_number: pr.number
}));
}
if (pr.mergeable === null) {
return refuse('GitHub is still working out whether it can be merged. Try `/bot merge` again in a minute.');
}
if (!pr.mergeable) {
return refuse(`it is not mergeable (\`${pr.mergeable_state}\`) - most likely a conflict with \`${pr.base.ref}\`.`);
}
// ---- CI on the head commit ----
const checkRuns = await github.paginate(github.rest.checks.listForRef, {
owner,
repo,
ref: headSha,
filter: 'latest',
per_page: 100
});
const pendingChecks = checkRuns.filter((run) => run.status !== 'completed');
const failedChecks = checkRuns.filter((run) => run.status === 'completed' && !OK_CONCLUSIONS.has(run.conclusion));
if (pendingChecks.length) {
return refuse(
`${pendingChecks.length} check(s) are still running on \`${headSha.slice(0, 7)}\`:\n\n` +
`${formatList(pendingChecks.map((run) => run.name))}\n\nRe-run \`/bot merge\` once they finish.`
);
}
if (failedChecks.length) {
return refuse(
`${failedChecks.length} check(s) are not green on \`${headSha.slice(0, 7)}\`:\n\n` +
formatList(failedChecks.map((run) => `${run.name} (${run.conclusion})`))
);
}
const { data: combined } = await github.rest.repos.getCombinedStatusForRef({
owner,
repo,
ref: headSha
});
// total_count 0 only means there are no legacy statuses.
if (combined.total_count > 0 && combined.state !== 'success') {
return refuse(
`the combined commit status on \`${headSha.slice(0, 7)}\` is \`${combined.state}\`:\n\n` +
formatList(combined.statuses.filter((status) => status.state !== 'success')
.map((status) => `${status.context} (${status.state})`))
);
}
// Requires the check to have actually run, not merely to have not failed.
const requiredCheck = checkRuns.find((run) =>
run.name === REQUIRED_CHECK &&
run.app && run.app.slug === 'github-actions' &&
run.status === 'completed' && OK_CONCLUSIONS.has(run.conclusion));
if (!requiredCheck) {
return refuse(
`the \`${REQUIRED_CHECK}\` check has not succeeded on \`${headSha.slice(0, 7)}\`. ` +
'If it never ran, a maintainer needs to approve the workflow run first.'
);
}
const scopeSummary = `${files.length} file(s), all within:\n${formatList(grants)}`;
if (dryRun) {
core.info('Dry run: every gate passed, not merging.');
await react('+1');
await say(
`@${commenter} **dry run** - this PR passes every gate and I *would* squash-merge it ` +
`at \`${headSha.slice(0, 7)}\`.\n\nVerified scope: ${scopeSummary}`
);
return;
}
// ---- re-validate, then merge ----
// An unchanged head SHA means the verified file list still holds.
const { data: fresh } = await github.rest.pulls.get({
owner,
repo,
pull_number: pr.number
});
if (fresh.head.sha !== headSha || fresh.base.ref !== pr.base.ref || fresh.state !== 'open' || fresh.merged || fresh.draft) {
return refuse('it changed while I was checking it. Nothing was merged - re-run `/bot merge`.');
}
let merged;
try {
// Pinned to the verified head: a moved head fails with 409.
({ data: merged } = await github.rest.pulls.merge({
owner,
repo,
pull_number: pr.number,
sha: headSha,
merge_method: MERGE_METHOD,
commit_title: `${pr.title} (#${pr.number})`,
commit_message:
`Merged by /bot merge on behalf of @${commenter} (id ${comment.user.id}).\n` +
`Grants: ${grants.join(', ')}\nHead: ${headSha}\n`
}));
} catch (error) {
const hint = {
403: 'the workflow token cannot write to the repository.',
405: 'GitHub refused the merge - branch protection, a required review or check, a newly added CODEOWNERS file, or squash merging being disabled.',
409: `the head commit moved after I verified it (was \`${headSha.slice(0, 7)}\`).`,
422: 'GitHub rejected the merge as invalid.'
}[error.status];
if (!hint) {
throw error;
}
await refuse(`${hint}\n\n> ${error.message}\n\nNothing was merged.`);
core.setFailed(`Delegated merge failed: ${error.status} ${error.message}`);
return;
}
core.info(`Merged #${pr.number} as ${merged.sha}.`);
await react('rocket');
await say(
`@${commenter} squash-merged into \`${pr.base.ref}\` as ${merged.sha}.\n\nVerified scope: ${scopeSummary}`
);
// ---- re-kick the build ----
// A GITHUB_TOKEN merge fires no push event, so build_all.yml would
// otherwise never see these files.
try {
await github.rest.actions.createWorkflowDispatch({
owner,
repo,
workflow_id: 'build_all.yml',
ref: pr.base.ref
});
core.info(`Dispatched build_all.yml on ${pr.base.ref}.`);
} catch (error) {
core.warning(`Merged successfully, but dispatching build_all.yml failed: ${error.message}`);
}

1
.gitignore vendored
View File

@@ -49,3 +49,4 @@ internal_docs/
# Python bytecode
__pycache__/
*.pyc
*.opc

View File

@@ -56,6 +56,7 @@ ctest --test-dir ./tests/fff_print
- Add helper functions or utilities only when existing code cannot reasonably be reused. Avoid duplication.
- Keep code concise and clear. Manually simplify AI generated bloated codes before review.
- Include targeted tests or documented verification for behavior changes, especially in slicing logic, profiles, formats, and GUI defaults.
- For profile changes (`resources/profiles/<Vendor>/**`), check that `version` in the sibling `resources/profiles/<Vendor>.json` was bumped.
- For translation changes (`localization/i18n/**/*.po`), check that recurring terms match the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) for that language.
## Localization & translations

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

@@ -119,6 +119,10 @@ Download the **Windows Installer exe** for your preferred version from the [rele
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
</details>
### Microsoft Store
Install from the [Microsoft Store](https://apps.microsoft.com/detail/9mv6gl23xm59) when you prefer a Store-signed package (helps on Windows 11 Smart App Control).
### Windows Package Manager
```shell

View File

@@ -567,6 +567,8 @@ if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer
echo "Building OrcaSlicer_profile_validator .."
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer_profile_validator
echo "Building generate_system_cache ..."
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target generate_system_cache
./scripts/run_gettext.sh
fi
if [[ -n "${BUILD_TESTS}" ]] ; then

View File

@@ -152,7 +152,7 @@ echo on
set CMAKE_POLICY_VERSION_MINIMUM=3.5
if "%USE_NINJA%"=="1" (
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD
cmake --build . --config %build_type% --target all
) else (
cmake .. -G %CMAKE_GENERATOR% -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD -- -m

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

98
deps/TBB/MSVC.cmake vendored Normal file
View File

@@ -0,0 +1,98 @@
# Copyright (c) 2020-2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set(TBB_LINK_DEF_FILE_FLAG ${CMAKE_LINK_DEF_FILE_FLAG})
set(TBB_DEF_FILE_PREFIX win${TBB_ARCH})
# Workaround for CMake issue https://gitlab.kitware.com/cmake/cmake/issues/18317.
# TODO: consider use of CMP0092 CMake policy.
string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(TBB_WARNING_LEVEL $<$<BOOL:${TBB_STRICT}>:/W4> $<$<BOOL:${TBB_STRICT}>:/WX>)
# Warning suppression C4324: structure was padded due to alignment specifier
set(TBB_WARNING_SUPPRESS /wd4324)
set(TBB_TEST_COMPILE_FLAGS /bigobj)
if (MSVC_VERSION LESS_EQUAL 1900)
# Warning suppression C4503 for VS2015 and earlier:
# decorated name length exceeded, name was truncated.
# More info can be found at
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503
set(TBB_TEST_COMPILE_FLAGS ${TBB_TEST_COMPILE_FLAGS} /wd4503)
endif()
set(TBB_LIB_COMPILE_FLAGS -D_CRT_SECURE_NO_WARNINGS /GS)
set(TBB_COMMON_COMPILE_FLAGS /volatile:iso /FS /EHsc)
# Ignore /WX set through add_compile_options() or added to CMAKE_CXX_FLAGS if TBB_STRICT is disabled.
if (NOT TBB_STRICT AND COMMAND tbb_remove_compile_flag)
tbb_remove_compile_flag(/WX)
endif()
if (WINDOWS_STORE OR TBB_WINDOWS_DRIVER)
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /D_WIN32_WINNT=0x0A00)
set(TBB_COMMON_LINK_FLAGS -NODEFAULTLIB:kernel32.lib -INCREMENTAL:NO)
set(TBB_COMMON_LINK_LIBS OneCore.lib)
endif()
if (WINDOWS_STORE)
if (NOT CMAKE_SYSTEM_VERSION EQUAL 10.0)
message(FATAL_ERROR "CMAKE_SYSTEM_VERSION must be equal to 10.0")
endif()
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /ZW /ZW:nostdlib)
# CMake define this extra lib, remove it for this build type
string(REGEX REPLACE "WindowsApp.lib" "" CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
if (TBB_NO_APPCONTAINER)
set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -APPCONTAINER:NO)
endif()
endif()
if (TBB_WINDOWS_DRIVER)
# Since this is universal driver disable this variable
set(CMAKE_SYSTEM_PROCESSOR "")
# CMake define list additional libs, remove it for this build type
set(CMAKE_CXX_STANDARD_LIBRARIES "")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /D _UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__)
endif()
if (NOT DEFINED TBB_ENABLE_IPO)
if (DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
set(TBB_ENABLE_IPO ${CMAKE_INTERPROCEDURAL_OPTIMIZATION})
else()
set(TBB_ENABLE_IPO ON)
endif()
endif()
if (TBB_ENABLE_IPO)
if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|IntelLLVM)")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm -mwaitpkg)
endif()
set(TBB_OPENMP_NO_LINK_FLAG TRUE)
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
else()
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:/GL>)
set(TBB_IPO_LINK_FLAGS $<$<NOT:$<CONFIG:Debug>>:-LTCG> $<$<NOT:$<CONFIG:Debug>>:-INCREMENTAL:NO>)
endif()
else()
if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|IntelLLVM)" AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm -mwaitpkg)
endif()
set(TBB_IPO_COMPILE_FLAGS "")
set(TBB_IPO_LINK_FLAGS "")
endif()
set(TBB_OPENMP_FLAG /openmp)

6
deps/TBB/TBB.cmake vendored
View File

@@ -1,4 +1,6 @@
if (FLATPAK AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if (MSVC)
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/MSVC.cmake ./cmake/compilers/MSVC.cmake)
elseif (FLATPAK AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
else()
set(_patch_command "")
@@ -13,6 +15,8 @@ orcaslicer_add_cmake_project(
-DTBB_BUILD_SHARED=OFF
-DTBB_BUILD_TESTS=OFF
-DTBB_TEST=OFF
-DTBB_ENABLE_IPO=OFF
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_DEBUG_POSTFIX=_debug
)

28
deps/wxWidgets/0001-Clang-CL-fix.patch vendored Normal file
View File

@@ -0,0 +1,28 @@
---
build/cmake/wxWidgetsConfig.cmake.in | 10 +++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in
index 1a83f36..70ad8a4 100644
--- a/build/cmake/wxWidgetsConfig.cmake.in
+++ b/build/cmake/wxWidgetsConfig.cmake.in
@@ -58,7 +58,16 @@ if(WIN32_MSVC_NAMING)
endif()
endif()
-include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
+ if (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|arm64|aarch64)$")
+ set(_wx_clang_msvc_lib_dir "vc_arm64_lib")
+ else()
+ set(_wx_clang_msvc_lib_dir "vc_x64_lib")
+ endif()
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/${_wx_clang_msvc_lib_dir}/@PROJECT_NAME@Targets.cmake")
+else()
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
+endif()
macro(wx_inherit_property source dest name)
# property name without _<CONFIG>
--
2.43.0

View File

@@ -28,6 +28,7 @@ orcaslicer_add_cmake_project(
GIT_SHALLOW ON
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
PATCH_COMMAND git apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-Clang-CL-fix.patch
CMAKE_ARGS
-DwxBUILD_PRECOMP=ON
${_wx_toolkit}

View File

@@ -37,7 +37,11 @@ target_include_directories(Clipper2
)
if (WIN32)
target_compile_options(Clipper2 PRIVATE /W4 /WX)
if (MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(Clipper2 PRIVATE /W4 /WX)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
target_compile_options(Clipper2 PRIVATE /W4)
endif()
else()
target_compile_options(Clipper2 PRIVATE -Wall -Wextra -Wpedantic -Werror)
target_link_libraries(Clipper2 PUBLIC -lm)

View File

@@ -2856,6 +2856,7 @@ const ImWchar* ImFontAtlas::GetGlyphRangesDefault()
{
0x0020, 0x00FF, // Basic Latin + Latin Supplement
0x2000, 0x206F, // General Punctuation
0x2103, 0x2103, // ℃ Celsius symbol
0x3000, 0x30FF, // CJK Symbols and Punctuations, Hiragana, Katakana
0x31F0, 0x31FF, // Katakana Phonetic Extensions
0xFF00, 0xFFEF, // Half-width characters

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

@@ -11,6 +11,8 @@ add_library(miniz_static STATIC
if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
target_compile_definitions(miniz_static PRIVATE _GNU_SOURCE)
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
target_compile_options(miniz_static PRIVATE /clang:-Wno-error=incompatible-pointer-types)
endif()
target_link_libraries(miniz INTERFACE miniz_static)

View File

@@ -0,0 +1,211 @@
# Filament IDs (`filament_id`)
`filament_id` identifies a **material family**: one commercial product line = one id, shared by
all of that material's per-printer / per-nozzle variants. Devices use it to match a physical
spool or tray to a filament preset. It is never per-color, per-printer, per-nozzle, or
per-preset (per-preset identity is `setting_id`).
This page is the rule for authoring `filament_id` in system profiles
(`resources/profiles/**`). CI enforces everything below; the short version is:
> [!IMPORTANT]
> **Never write a `filament_id` value by hand.** New families get their id from
> `python scripts/assign_filament_ids.py`; existing families already have one — inherit it.
## Who consumes the id
Every device integration funnels a tray material id (`tray_info_idx`) through the same
matching pipeline (`PresetBundle::sync_ams_list` and friends):
| Ecosystem | Where the id comes from |
| --- | --- |
| Bambu AMS | device side (RFID / user tray setting) — the `GF*` catalog |
| Qidi box | built from device enums (`QD_*`); needs an exactly matching visible preset |
| Creality CFS | runtime brand/type scoring returns the current preset's id |
| Klipper (AFC / Happy Hare) | runtime lookup by filament type |
| Snapmaker | runtime color/vendor/type match |
Tray-to-preset matching is printer-scoped, but **several consumers match globally by id alone,
first hit wins**: tray display names, `filament_is_support`, vitrification warnings, and
multi-nozzle filament grouping in the slicing pipeline. Two *different* materials sharing one
id feed wrong data to those consumers even when the presets live in different vendors — so
cross-material id sharing is never safe. Within one printer, duplicate ids silently break AMS
matching (first match wins, the tray-edit dialog hides the second preset); the profile
validator's `-f` check rejects this.
## Do I need a new id? The one-question test
> **Would a user consider this a different spool product than anything already in the tree?**
Different polymer, different sub-brand (Basic / Matte / Silk / HF), fiber-filled sibling, or a
second selectable diameter → **new family, new id**. The same spool tuned for another printer
or nozzle → **join the existing family** (inherit its `@base`, write no id key). Tuning a
generic material → **join the OrcaFilamentLibrary family** (inherit `Generic X @System`, keep
the `Generic X` base name, write no id key).
| Situation | id |
| --- | --- |
| Per-printer / per-nozzle variant of an existing material | same id (inherit, never write the key) |
| Sub-brand or product line (PLA vs PLA Matte vs PLA Silk vs PLA HF) | new id each |
| Color | never a new id |
| Second diameter selectable on the same printer (1.75 + 2.85) | sibling family, new id |
| "High-speed" tuned for a *different printer model* | same id (it is a printer variant) |
| "High-speed" selectable *alongside* the normal preset on one printer | new id (it is a product line) |
## Structure rules
1. **Only family roots carry the key.** Root presets (any preset *not* marked
`"instantiation": "true"`, typically `<Family> @base` with `"instantiation": "false"`)
declare `filament_id`; instantiated variants inherit a root and never
write the key. A family may have several roots (e.g. per-series bases) — all of them must
declare the *identical* id.
2. **The family name is the base name**: the preset name with everything from the first
(optionally space-preceded) `@` stripped. `MyBrand PLA @Orca 3D Fuse1` and `MyBrand PLA@HS`
both belong to family `MyBrand PLA`.
3. **Within a family, variants' `compatible_printers` are pairwise disjoint** — per printer
preset, at most one compatible instantiated preset per id. The C++ validator (`-f`)
enforces this.
4. **Generics belong to OrcaFilamentLibrary.** A vendor tuning a generic material inherits
`Generic X @System`, keeps the `Generic X` base name (that alias is what hides the library
preset on your printers), sets a non-empty `compatible_printers`, and writes no id key.
A vendor-*branded* filament never rides a generic family id.
5. **Ids follow the product identity.** The id is a pure function of the product triple
`(filament_vendor, filament_type, family name)` — correcting any of them re-mints the id
**by design**, and `--update-snapshot` records the old id in the shipped succession ledger
with its successor so device trays, calibration records, and user presets keep resolving
(`renamed_from` still gates preset-*name* compatibility as before). A shipped id is never
recycled for a different material: retired ids are blocked forever.
## Minting — nobody invents ids
New ids are deterministic, computed exactly like the `setting_id` precedent
(`scripts/assign_vendor_setting_ids.py`):
```text
FILAMENT_ID_NAMESPACE = uuid5(setting-id NAMESPACE, "filament_id")
= c4d3ff49-4c32-5534-a3e3-00894157ab97
filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE,
"filament_product/<filament_vendor>/<filament_type>/<family_name>") )
```
`base62_6` is the low 6 base62 digits (alphabet `0-9A-Za-z`) of the UUID taken as a big-endian
integer, most-significant digit first — 8 chars total, within the AMS length limit. The triple
comes from the family root's *flattened* config: `<filament_vendor>` is the filament
**manufacturer** (`"Polymaker"`, or `"Generic"` for generics — never the printer brand),
`<filament_type>` the material type, `<family_name>` the root's base name; the two config
values are inheritable list options and the first element counts. The key contains no bundle
name, so the same product mints the same id in every bundle — hoisting a family into
OrcaFilamentLibrary never changes its id. On the rare collision with any existing or retired
id, the minter salts the input (`…/1`, `…/2`, …) until free and the result is frozen in the
file. Example: `Polymaker/PLA/PolyLite PLA` mints `OF5CgdDq`.
Workflow for a new family:
```bash
# 1. Author the family with NO filament_id key anywhere.
python scripts/assign_filament_ids.py # 2. mint + insert ids into the family root(s)
python scripts/assign_filament_ids.py --update-snapshot # 3. record the new claims in the ledger
python scripts/assign_filament_ids.py --check # 4. verify — the same checks CI runs
# 5. Commit the profile edits together with scripts/filament_id_snapshot.json.
```
`--mint "filament_vendor/filament_type/family_name"` prints the id a triple would mint without
touching anything. The default run is idempotent and never rewrites a valid existing id.
Maintenance modes (normally only used by id migrations): `--remint VENDOR` re-derives a
vendor's declared ids from their triples (a declaration already equal to a salt iteration
of its own triple is conformant and left alone — deliberate salt splits keeping two
presets of one product apart for per-printer AMS matching survive),
`--drop-redundant-ids VENDOR` deletes declarations
that merely re-declare an inherited OFL id, `--add-hint "OLD=NEW"` records a cross-island
succession hint, and `--retire "OLD=NEW"` records succession for a shipped non-island id
that vanished while another declarer kept it alive (lineage the automatic claim vote can no
longer see).
If you skip the tooling, CI fails and prints the remedy: the expected id for your family, and
the instruction to run `python scripts/assign_filament_ids.py --update-snapshot` and commit
the resulting diff.
## Reserved namespaces — never mint or hand-write into
| Space | Owner | Rule |
| --- | --- | --- |
| `GF*` | Bambu AMS/RFID catalog | BBL vendor only; byte-copies elsewhere only where the snapshot already sanctions them |
| `QD_*` | Qidi device protocol | frozen device contract; Qidi vendor only |
| `P` + 7 hex chars (case-insensitive), `"null"` | user-created custom filaments (`CreatePresetsDialog.cpp`) | never appears in system profiles |
| every already-shipped id | grandfather snapshot | frozen as-is; new claims need maintainer sign-off |
| every retired id | `resources/profiles/retired_filament_ids.json` | never used again, for anything |
## The succession ledger
`resources/profiles/retired_filament_ids.json` ships with the app. Each retired id maps to
`{"claims": [...], "successor": <id|null>}` — successor chains are followed to the live end —
and a `hints` map carries the same forwarding for ids Orca cannot retire because another
island owns them (e.g. a `GF*` id whose material also exists as an OFL family). The client
consults the ledger **only on resolution miss** (AMS tray sync, tray-id type lookup,
calibration history, filament-id preset lookup): a live preset always wins first, so BBL
installs resolve `GF*` natively and behavior is unchanged wherever the raw id still exists.
This is what makes identity-driven re-mints (structure rule 5) safe: the old id keeps
resolving to the family's current preset instead of degrading to a `Generic <type>` fallback.
The file is append-only and maintained exclusively by `--update-snapshot` / `--add-hint` /
`--retire`.
## How CI enforces this
Profile CI (`check_profiles.yml``scripts/orca_extra_profile_check.py`) runs
`check_filament_ids()` tree-wide. Its ground truth is
**`scripts/filament_id_snapshot.json` — the sanctioned state**: the id state derived from the
tree must equal the snapshot exactly, in both directions. Any change to the id landscape
therefore surfaces as a diff to that file, and **that snapshot diff is what maintainers review
and gate in a PR**. Never edit the snapshot by hand — `--update-snapshot` regenerates it
deterministically (running it twice changes nothing).
The checks, in brief:
- **Format** — every id is either in the snapshot, `OF` + 6 base62 chars, BBL's, or Qidi `QD_*`.
- **Snapshot equality** — tree claims == snapshot claims **and** tree triples == snapshot
triples, both directions: any `filament_vendor`/`filament_type`/family-name change surfaces
as a snapshot diff.
- **Mint conformance** — a non-grandfathered `OF*` id must equal the mint (or a salt
iteration) of its declarer's product triple; the error prints the expected id.
- **Retired reuse** — any tree id present in `resources/profiles/retired_filament_ids.json` is an error.
Ids that fully vanish from the tree are appended there by `--update-snapshot`; the file is
**append-only**.
- **Alias hygiene** — any vendor preset riding an OFL family id must keep the library
preset's base name, a non-empty `compatible_printers`, and no own id key (structure rule 4);
the error names the rename as the cause.
- **Triple integrity** — every declarer outside the BBL/`QD_*` islands must resolve a
non-empty `filament_vendor` and `filament_type` (generics use `"Generic"`), and all
declarers of one family within a bundle must agree on the triple.
- **Succession integrity** — retired successor chains terminate at a live id (or null) with
no cycles; `hints` keys are live, island-owned ids.
- **Reserved namespaces** — `GF*` outside BBL, `QD_*` outside Qidi, `P<7-hex>` or `null`
anywhere, unless that exact claim is grandfathered in the snapshot.
- **Structure** — no `filament_id` key on instantiated presets; no declared-vs-inherited id
drift; every instantiated system filament must resolve an effective id through its
`inherits` chain (an id-less one is a hard load error in C++ that discards the whole vendor
bundle).
Sharing a **reserved-catalog** id with a new family or vendor (e.g. shipping a Bambu-cataloged
product under another vendor with its authentic `GF*` id) is refused by `--update-snapshot`
unless you pass `--allow-shared-catalog` — and it still lands in the snapshot diff for
maintainer review. Any other new sharing of an existing id is caught by the mint-conformance
check instead.
## FAQ
- **A new color of an existing product?** Never a new id — colors are not families.
- **A second diameter (1.75 mm and 2.85 mm) of the same product?** A sibling family with its
own id: two diameters are separately selectable spool products.
- **A high-speed tune of an existing material for another printer model?** Same family:
inherit the family's root, write no id key.
- **A tuned generic ("our profile for Generic PLA")?** Inherit `Generic PLA @System`, keep the
`Generic PLA` base name, set `compatible_printers`, write no id key.
- **I need to rename a family (or fix its `filament_vendor`/`filament_type`).** Add
`renamed_from` for the name, run `--remint <Vendor>` then `--update-snapshot`: the id
re-derives from the corrected identity and the old id lands in the succession ledger
pointing at the new one. Commit the profile, snapshot, and ledger diffs together.
- **CI says my family needs an id.** Run `python scripts/assign_filament_ids.py`, then
`--update-snapshot`, and commit both diffs. Do not type an id by hand.
For general profile authoring, see the profile development guide on the
[OrcaSlicer wiki](https://www.orcaslicer.com/wiki).

402
docs/HLSD/preset-cache.md Normal file
View File

@@ -0,0 +1,402 @@
# System Preset Cache — High Level Design
## Why it exists
OrcaSlicer ships tens of thousands of system preset JSON files. Every launch used to
parse all of them: read each vendor profile, walk its machine, process and filament
sub-files, resolve inheritance, and build the preset collections from scratch. That
parse dominated startup, and it produced the same result every time, because system
presets only change when the app is updated or a profile update is installed.
The preset cache replaces that parse with a read. Each vendor's presets are serialized
once — at build time, in CI — into a single binary file the app reads in one pass. The
read replaces the file walk and the JSON parsing, which is where the time went;
resolving inheritance and registering the presets still runs at load, through the same
code the JSON path uses, so the result is the parse's result without the parse.
The cache is **only ever an optimization**. Every rule below exists to guarantee that a
cache is either provably equivalent to parsing the JSONs, or rejected. There is no
"mostly right" cache.
## The unit is one vendor
A cache covers exactly one vendor. `BBL.opc` sits beside `BBL.json` and holds
everything `BBL.json` and the `BBL/` sub-file tree would have produced.
Per-vendor granularity is what makes the system practical:
- A vendor whose profile is bumped invalidates only its own cache. The other 60-odd
vendors keep theirs — even when the bumped vendor is the shared Orca filament
library everyone else inherits from.
- The setup wizard, which loads vendors one at a time, gets the same speedup as
startup without a second code path.
- A vendor with no cache, or a broken one, costs only that vendor a parse.
A cache holds *system* presets only. User presets, project settings and modified
presets are never serialized — they have their own storage and their own lifecycle.
## Where the files live
| Location | Contents on a shipped build | Role |
|---|---|---|
| `resources/profiles/` | `<vendor>.opc` alone — the profile and its preset JSONs both pruned | What the app ships with; what installing copies from, and the only thing it is read for |
| `<data_dir>/system/` | `<vendor>.opc` alone, or `<vendor>.json` + `<vendor>/` after an update | What the user has installed |
| `<data_dir>/system/` (dev build) | `<vendor>.json` + `<vendor>/` + `<vendor>.opc` written at runtime | A developer tree caches as it parses |
| `<data_dir>/cache/wizard_profile_data.json` | The wizard's derived vendor catalog plus the stamps it was built from | Written and read by the setup wizard only; never shipped (see "The wizard's profile-data cache") |
Two forms of the same vendor therefore exist, and the system's central rule is that
**a vendor's cache is the whole of it**. Where a cache ships or is installed, no profile
and no preset JSONs sit beside it: the cache carries the presets, the vendor profile,
and the version stamp that says which release it came from. A vendor is "installed" if
either form is present *and usable*, and its installed version is read from whichever
form a load would serve.
What stays beside the caches in `resources/profiles/` is everything that is not a
preset: each vendor's directory of printer thumbnails, cover images, bed models and
hotend meshes, which are read from disk by path and were never part of the cache. Files
that are not vendors at all, `blacklist.json` chief among them, are untouched.
The alternative — shipping both and treating the cache as a sidecar — was rejected. It
doubles the installed size, and it creates a class of bug where the two disagree and
the app's behavior depends on which one a given code path happened to read.
## What a cache file is
A fixed-size header followed by one binary stream.
The header carries a magic number, the cache format version, the payload size and a
CRC32 of the payload. It exists so that a truncated download, a half-written file or a
file from an entirely different program is rejected in microseconds, before anything
tries to interpret it.
The payload opens with the stamps that decide whether the cache may be used at all —
format version, vendor name, vendor version — then a dictionary, and then the vendor's
data: its vendor profile, three lists of preset entries (process, filament, machine),
and the count of errors the original parse hit.
Each entry is one preset **in source form**: what its JSON sub-file states and nothing
that resolving it derives — the preset's own config diff, the name of the preset it
inherits, and the parse metadata (name, sub-path, description, instantiation, setting
and filament ids, renames). Non-instantiated base presets are stored too; the children
that inherit from them cannot resolve without them.
**The payload names its own keys.** The dictionary holds the distinct `opt_key`s the
file uses, the `ConfigOptionType` each was written as, and the distinct enum *value
names*; an option in an entry's config is then a `uint16` index into that dictionary
plus its value. Names are written once per file rather than once per occurrence, and a
reader resolves the dictionary against this build's `print_config_def` once, after
which reading an option is a vector index.
This is what makes the cache survive config-schema drift. The alternative — keying an
option by its `serialization_key_ordinal`, the position `ConfigDef::add` assigns by
declaration order at static init — cannot: inserting one option into the middle of
`PrintConfig.cpp` shifts every later ordinal, and the lookup on the way back in then
*succeeds on the wrong option*, silently, wherever the two share a type. Because a
name-keyed payload instead drops the individual options this build cannot place, the
file as a whole stays readable, and there is no schema fingerprint — no checksum over
the option schema that would reject every cache on every release. An option this build
no longer defines, or now defines with a different type, gets exactly what it gets from
a JSON profile: read, dropped, and the rest of the preset loads.
The ordinal-keyed cereal hooks in `PrintConfig.hpp` are untouched — they are also the
undo/redo wire format, where the process cannot change underneath them. The cache has
its own serialization in `PresetCacheFormat.{hpp,cpp}`.
Three deliberate choices in the layout:
- **Stamps come first**, so the question "what version is this vendor installed at?"
can be answered by reading the first kilobyte. The updater asks that question for
every vendor on every launch; reading tens of megabytes to answer it would give back
the startup time the cache saved. The dictionary sits behind them, ahead of the
entries, so a reader that does go on resolves it once and then indexes.
- **Nothing inherited is baked in.** A filament preset that inherits from the shared
library is stored as its own diff plus its parent's name, and the parent is looked up
when the entry is installed, against whatever library is loaded then. A cache
therefore carries no other vendor's values, and no other vendor's update — the
library's included — can make it stale.
- **Nothing derived is stored.** Default presets, flattened configs, aliases and
lookup maps are all reconstructed at load by the same code the JSON path runs, and
state that path never fills (obsolete-preset lists) is not stored either. This keeps
the cache a record of the vendor's data, not a memory image of the program's state.
## When a cache may be used
A cache is accepted only if every gate below passes. Any failure means "parse the
JSONs instead" — never a hard error, never a partial load.
**1. Integrity.** Magic number, a declared body size that is exactly the rest of the
file, CRC32 over the payload. The size is checked against the file's real length before
anything is allocated on the strength of it, so an eight-byte field in an unauthenticated
file cannot ask for a gigabyte.
**2. Cache format version.** A single integer bumped by hand whenever the binary layout
changes in a way nothing else would catch: reordering or retyping a hand-written
serialized field, or changing what the cache's own stamps mean. Config-schema drift is
explicitly *not* such a change — the dictionary handles it — so this no longer moves
every release.
**3. Vendor identity and version.** The cache names the vendor it holds and the profile
version it was built from. It is accepted only if that version is at least as new as
the profile now on disk. Where no profile sits beside the cache — the shipped,
cache-only form — the comparison is skipped, because nothing on disk can be newer than
a cache that is the installation.
**4. Every entry installs.** Entries are installed as they are read, and an entry that
cannot be — typically one that inherits a parent the currently loaded filament library
no longer provides — rejects the whole cache, never just the entry. A partial vendor is
not a vendor.
There is deliberately no stamp for the shared filament library. A cache stores its
filaments' inheritance by name and resolves it at load, so a library update changes
what a cache load *produces*, never whether the cache is *valid* — the same file yields
the updated result. This matters most on a shipped build, where a vendor is its cache
and nothing else: a profile update that delivered only the library would otherwise have
stranded every other vendor with a cache it invalidated and no JSONs to fall back on.
A vendor profile with no parsable version is never cached and never served from a
cache. There would be no way to tell later whether the cache had gone stale, and a
cache nothing can invalidate is worse than no cache.
## How a vendor is loaded
Vendors load in a fixed order, because filament inheritance crosses exactly one
boundary: any vendor's filament may inherit from the shared Orca filament library,
and nothing else reaches across vendors. The library therefore goes first, alone;
every other vendor follows in parallel, resolving against it; and the results are
merged in a stable order:
```mermaid
flowchart LR
lib["1 · OrcaFilamentLibrary<br/>loaded first, synchronously"] --> par["2 · every other vendor in parallel,<br/>each into its own bundle, filaments<br/>resolving against the loaded library"] --> merge["3 · bundles merged into one,<br/>sequentially, in stable vendor order"]
```
Whether a vendor comes from its cache or from a parse changes nothing in that
order — both produce the same bundle, so cached and parsed vendors mix freely in
one startup.
**A vendor is loaded from where it is installed and nowhere else.** For startup that
is `<data_dir>/system/`; resources reaches the app by being *installed* into that
directory first, never by being loaded from. (The setup wizard is the one caller with
a different notion of "where": it also shows vendors the user has not installed, and
loads those from `resources/profiles` — see "The wizard's profile-data cache".) There
is one lookup tier and one parse source:
```
load vendor V from <data_dir>/system:
system/V.opc passes CACHE_VERSION + size + CRC + vendor name + version gate?
yes -> serve from it
no -> parse system/V.json, then write system/V.opc back
```
The same decision drawn out — "the gates" are the four acceptance checks above:
```mermaid
flowchart TB
start["load vendor V from a directory dir<br/>— normally &lt;data_dir&gt;/system/"]
start --> stamp["installed version = version of dir/V.json<br/>— or ∞ with no profile there,<br/>the cache then being the installation"]
stamp --> g1{"dir/V.opc<br/>passes all four gates?"}
g1 -- "yes" --> hit(["served from the<br/>installed cache"])
g1 -- "no" --> pd["parse the JSONs in dir"]
pd --> ver{"profile version<br/>parsable?"}
ver -- "yes" --> save(["loaded; dir/V.opc written back —<br/>the next load takes the top path"])
ver -- "no" --> raw(["loaded, never cached"])
```
A second tier into `resources/profiles/` used to sit between those two, and a parse
fallback to the same place behind them. Both existed only because an installed cache
died on every app upgrade, when the schema fingerprint rejected it; with the fingerprint
gone there is nothing for them to rescue. They also had a cost: on a developer tree the
shipped cache answered first, so the profile in `<data_dir>/system/` was never parsed
and its cache was never written back.
Serving from a cache is not a memory-image restore. The entries are deserialized and
then installed one by one — inheritance resolved against the presets installed before
them and the currently loaded filament library, configs flattened onto the collection
defaults, validated and registered — by the same function the JSON path calls straight
after parsing a sub-file. The two paths share everything below the parse, which is what
makes a cache-loaded bundle indistinguishable from a JSON-loaded one by construction
rather than by test coverage. Installation also rebuilds each preset's file path from
the local data directory, so a shipped cache never carries the generating machine's
paths.
App upgrades work because a cache normally survives one. Only a deliberate
`CACHE_VERSION` bump makes an installed cache unreadable, and that is handled at
install time rather than at load: a vendor whose cache this build cannot read counts
as **not installed**, so the updater lays down a working copy on the next launch (see
below). A vendor that still has its profile JSONs beside the cache is simply parsed
and re-cached.
If a parse does happen and the vendor's profile carries a version, the app writes the
cache back beside where it looked for the vendor. That is how a developer build warms
itself up on second launch, and how a vendor delivered by a profile update becomes
cached without waiting for the next release.
## The wizard's profile-data cache
The setup wizard's printer and filament pages want every vendor in one bundle — the
installed ones *and* the shipped ones the user has not installed yet, because the
wizard is where installing is chosen. Its set therefore spans two directories:
`<data_dir>/system/` for installed vendors (shadowing resources on a name collision),
`resources/profiles` for the rest, each vendor loaded from its own directory.
What the wizard actually consumes from that bundle is one derived JSON — the model /
machine / filament / process catalog its web pages render — and that JSON is a pure
function of the vendor set: each vendor's name and version, in load order. A profile
change requires a version bump, so name and version determine a vendor's content
wherever its copy sits; which directory served it is deliberately **not** stamped,
and installing or removing a copy at an unchanged version leaves the cache valid. So
the wizard caches the *derived JSON*, not another form of the inputs:
`<data_dir>/cache/wizard_profile_data.json` holds the stamp list and the catalog. On
open, the wizard computes the current stamps (one version peek per vendor) and, when
they match, serves the catalog from the file — no bundle built, no preset installed.
Caching bundle inputs instead was tried and measured: rebuilding the bundle from
per-vendor caches costs ~2 s of preset installation whatever feeds it, so only
skipping the rebuild entirely wins.
Any change to the set — a vendor added, removed or updated, or its cache-only
`.opc` replaced by a newer one — changes the stamps and retires the whole file;
the wizard then rebuilds the bundle vendor by vendor (per-vendor caches serving where
they cover) and writes the catalog back. Selections, region and per-open decorations
are applied downstream of the cache either way, so a served catalog is
indistinguishable from a rebuilt one. Nothing ships this file and the updater never
touches it; it is a locally written artifact, re-derived whenever stale, written
through a temp file and rename so half a cache is never readable.
The cache lives under `<data_dir>/cache/`, not beside the vendors: everything that
scans `<data_dir>/system/` treats any `.opc` there as a vendor, so a non-vendor
cache file must not sit in that directory. Relatedly, the stamp reader is hardened:
`read_cache_stamps` validates the cache version before reading anything
variable-length and bounds the stamp strings' lengths, so a reader pointed at a
foreign or damaged `.opc` rejects it cleanly instead of aborting on a garbage
64-bit allocation.
## How a vendor is installed
Installing copies from `resources/profiles/` into `<data_dir>/system/`. A shipped build
offers only a cache and a source tree only JSONs, but a partially-generated tree can
have both, at different versions, so the installer picks the form that ships at the
**newer version** and installs only that one:
- Cache newer or equal, and readable → copy the `.opc`, verify the *copy* is one this
build can read, and only then delete any profile and vendor directory a previous
install left behind, so nothing can shadow it.
- Profile newer, or the cache unreadable or absent → copy the profile and the vendor's
preset JSONs exactly as the app did before caches existed, and delete any stale `.opc`
once the profile is safely in place.
One vendor that cannot be installed is one vendor missing, not a reason to leave the
rest uninstalled: the installer skips it, records the failure, and carries on with the
batch. A vendor whose cache arrives unreadable falls back to installing its profile,
which is decided by reading the copy rather than by the kilobyte peek that chose the
form.
**"Installed" means present and usable.** Where the cache is the whole of a vendor's
installation, a `.opc` this build cannot read is not an installation — counted as one,
the vendor would be stranded with nothing to load and the updater would never repair
it. The installed version is likewise whichever form a load would actually serve: the
cache's stamp while it covers the profile beside it, the profile's own version once it
does not.
The result is that only one form of a vendor is ever present, and it is the newest one
the build has. This matters most for the update check, which compares what is installed
against what installing *would* lay down: if those two disagreed about which form
counts, a vendor could reinstall on every launch forever, or silently never update.
Profile updates delivered over the air always arrive as JSONs, and they win — an
updated vendor's real profile lands in the data directory, the installed cache beside it
is older and gets rejected, and the vendor is parsed and re-cached. An update that touches only
the filament library needs nothing more: every other vendor's cache stays valid and
simply resolves against the new library on its next load.
## How the caches are produced
Cache generation is a build step, not something a user ever runs.
One script per platform does the whole job, and CI calls it once on each. It builds a
small dev-utility that loads a profiles directory exactly as the app would, with cache
writing enabled, dropping a `<vendor>.opc` beside every vendor profile it parses; then
it copies those caches into each packaged application it was pointed at and deletes
every preset JSON they replace — the vendor's own profile included. Only a vendor that
actually has a cache is pruned, so a vendor the generator skipped keeps its JSONs and is
simply parsed at startup.
Caches are generated into the checkout's own `resources/profiles`, because that is what
cpack re-installs from when it builds the NSIS installer — so that directory is also a
prune target in CI. Pruning it deletes the checkout's preset JSONs, which is a packaging
step, not something a build should do to a working tree by surprise: the Windows script
refuses that target unless given `--prune-source`, and CI passes it.
Generation runs after the build, in the same job, so the caches ship with a build that
can read them.
The flatpak differs only in where the script is called from. Nothing outside
flatpak-builder ever builds it, so there is no packaged tree for the workflow to point
the script at afterwards: the manifest runs it as a build step instead, against the
profiles the install has already copied into `/app`.
## Behavior when things go wrong
The system is designed so that no cache problem is fatal:
- **Corrupt, truncated or foreign file** — rejected at the header, vendor parsed. A
cache is written to a temp file beside its target and moved into place, so a write
that dies partway leaves the previous cache intact rather than a truncated one.
- **An option this build no longer has, or now types differently** — that option alone
is dropped, exactly as a JSON profile's would be. The preset and the file load.
- **Cache from a build with a different cache layout** — rejected on `CACHE_VERSION`.
A vendor with JSONs beside it is parsed and re-cached; a cache-only vendor reads as
not installed and the updater reinstalls it.
- **Stale cache** — rejected on the vendor version stamp, vendor parsed and re-cached.
- **Failure part-way through loading** — a deserialization error, or any entry that
fails to install — rejects the whole cache, and the bundle is reset to a clean state
before falling back, so a half-loaded cache can never leak into the parsed result.
- **A vendor that can be neither read nor parsed** — logged, and left out. The setup
wizard drops that vendor from its list and opens with the rest; startup records the
error alongside the vendors that did load. One broken vendor never takes the app down.
The one genuine limit: on a shipped build a vendor is its cache and nothing else, so a
rejected cache has nothing to fall back to for that vendor. This is by design — the
alternative is shipping every preset twice — and it is why the acceptance gates are
conservative and why CI generates the caches with the same build that ships them. The
recovery path is a profile update, which delivers real JSONs.
It also means nothing may quietly assume a `<vendor>.json` exists. Discovery, version
checks and the update decision all read whichever form is present, and a code path that
enumerates only `*.json` will find no vendors at all in a packaged build.
## Maintenance rules
- **Adding, removing, retyping or reordering a config option** needs nothing. The
payload names its keys and its enum values, so an option a cache carries and this
build does not is dropped; one this build has and the cache does not is simply
absent, as it would be from a JSON that predates it.
- **Changing a hand-written `serialize()`** — `VendorProfile` or its nested types — or
the `CachedPreset` field list — written and read by `visit_entry` in
`PresetCacheFormat.cpp`, one list for the save, the load and the name peek alike — or
the cache's own layout or stamps, requires bumping `CACHE_VERSION` by hand.
- **The dictionary indexes with a `uint16`**, so `print_config_def` may hold at most
65535 options and one cache at most 65535 distinct enum value names.
`CacheDictionary::save` throws past that, which surfaces when CI generates the
caches rather than on a user's machine.
- **Bumping `CACHE_VERSION` is safe without a resources fallback** because
`is_vendor_installed` means *present and usable*: cache-only vendors read as not
installed after a bump, and the updater reinstalls them from resources.
- **Bumping a vendor profile's version** invalidates that vendor's cache and nothing
else — the filament library's included. Other vendors' caches resolve against the
new library the next time they load.
- **Caches are never committed.** They are build artifacts, generated per build,
ignored by git.
## Where this lives in the tree
| Area | Files |
|---|---|
| Everything about the bytes on disk — the dictionary, one config's wire format, the file framing and stamps, entry serialization, `VendorCacheFile` save/load/peeks | `src/libslic3r/PresetCacheFormat.{hpp,cpp}` |
| Serve-or-parse decision, installing cache entries into a bundle, cache write-back | `src/libslic3r/PresetBundle.{hpp,cpp}` |
| Vendor profile serialization | `src/libslic3r/Preset.hpp` |
| Vendor discovery, installed/shipped versions, installation | `src/libslic3r/utils.cpp` (declared in `Utils.hpp`) |
| Update and reinstall decisions | `src/slic3r/Utils/PresetUpdater.cpp` |
| Setup wizard and printer-selection dialog | `src/slic3r/GUI/ConfigWizard.cpp`, `src/slic3r/GUI/WebGuideDialog.cpp` |
| Generator tool | `src/dev-utils/generate_system_cache.cpp` |
| Build and packaging script | `scripts/build_preset_cache.{sh,bat}` |
| Tests | `tests/libslic3r/test_vendor_cache.cpp` |

1029
filament_id_plan.html Normal file

File diff suppressed because it is too large Load Diff

397
filament_id_plan.md Normal file
View File

@@ -0,0 +1,397 @@
# filament_id: generation rule + system-profile fix plan
Follow-up to PR #14459 (commit `c2e91cb8`, validator `-f` / `check_duplicate_filament_subtypes`).
Goal 1: a filament_id generation rule for all vendors. Goal 2: an error-pattern taxonomy and a
migration plan that removes every ambiguous filament_id, without touching Bambu (BBL) profiles.
All numbers below are reproducible: a loader-faithful audit script re-derives the validator's
output **exactly** (1256/1256 printer-level errors, 356 logical collision groups, 30 vendors).
Every code claim was verified against source with `file:line` references.
---
## 0. Executive summary
- `filament_id` is a **material-family id**: one id per commercial product line, shared by all
of that material's per-printer/per-nozzle variants. Matching is always `(filament_id +
printer compatibility)`; the invariant from PR #14459 is *per printer preset, at most one
compatible instantiated filament preset per id*.
- Every modern device ecosystem funnels through this id — not just Bambu AMS: Qidi box,
Creality CFS, Klipper AFC/Happy Hare, Snapmaker all emit/consume `tray_info_idx`
(see §1). Several consumers match **globally, without printer scoping**, so two *different
materials* sharing one id is unsafe even across vendors.
- **Proposed rule (§3):** deterministic, script-minted ids — `OF` + 6 base62 chars from
`uuid5(vendor + family)`, declared **only on family-root (`@base`) presets**; variants inherit.
Nobody ever invents an id by hand; CI prints the expected id when one is missing. Existing
unambiguous ids are grandfathered and frozen; `GF*` (Bambu), `QD_*` (Qidi device protocol),
and `P<7-hex>` (user custom presets) are reserved namespaces that must never be minted into.
This was selected by an adversarial design/judge process over a registry-grammar alternative
and a structure-only alternative, then stress-tested; amendments from that stress test are
folded in below.
- **Migration (§5):** fresh-never-reused ids only, family-atomic, names never changed. This is
provably safe: user presets re-derive `filament_id` from their parent on every load
(`Preset.cpp:1658-1682`), 3mf resolves presets by name+config (`Preset.cpp:2490-2576`), and
Klipper/Creality/Snapmaker derive tray ids at runtime. One PR per vendor; CI's `-f` scope
ratchets per vendor until tree-wide.
---
## 1. How filament_id actually works (verified)
### Consumers and scoping
All device integrations converge on one pipeline: device/agent sets `tray_info_idx`
`DevAmsTray.setting_id``Sidebar::build_filament_ams_list` (`Plater.cpp:3423-3493`) →
`PresetBundle::sync_ams_list` / `get_ams_cobox_infos` (`PresetBundle.cpp:3112-3308`) match it
against filament presets.
| Ecosystem | Where the id comes from | Effect of changing a system id |
|---|---|---|
| BBL AMS | device-side (RFID / user tray setting), `DeviceManager.cpp:3823+` | breaks matching — **frozen by mandate** |
| Qidi box | built from device enums: `"QD_" + series + "_" + vendor + "_" + type_idx`, `QidiPrinterAgent.cpp:146-152`; needs an exactly-matching visible preset | breaks matching — **`QD_*` ids are a frozen device contract** |
| Creality CFS | runtime brand/type scoring returns current preset's id (`CrealityPrintAgent.cpp:46-118`) | invisible |
| Klipper (AFC / Happy Hare) | runtime `filament_id_by_type` (`MoonrakerPrinterAgent.cpp:808,936`) | invisible |
| Snapmaker | runtime color/vendor/type match (`SnapmakerPrinterAgent.cpp:22-64`) | invisible |
Matching is printer-scoped (`is_compatible`) in the AMS sync paths and all printer agents — this
is what makes the per-printer invariant sufficient there. But several consumers match
**globally by id alone**, first match wins:
- `get_filament_by_filament_id("")` — tray display name, `filament_is_support`,
`temperature_vitrification` warnings (`PresetBundle.cpp:690-733`; callers
`DevFilaBlackList.cpp:70`, `Plater.cpp:3453`, `SelectMachine.cpp:3560,4623`). The code
comment at `:695` states the assumption outright: an id maps to ONE material globally.
- `MachineObject::setting_id_to_type` (`DeviceManager.cpp:2538`), calibration-history name
lookup (`CaliHistoryDialog.cpp:62`), custom-filament cloud grouping (`Preset.cpp:2839`).
- The slicing pipeline itself: multi-nozzle filament grouping merges project filaments whose
`(filament_id, color)` match (`FilamentGroup.cpp:513-528` via `ToolOrdering.cpp:1164`).
**Consequence:** within one printer, duplicate ids break AMS matching (silent first-wins,
`find_if` at `PresetBundle.cpp:3132/3233`; the AMS tray-edit dialog even *hides* the second
preset, `AMSMaterialsSetting.cpp:894-897`). Across vendors, the same id on *different
materials* feeds wrong name/type/vitrification data to the global consumers and can merge
different materials into one nozzle group. Same id on the *same* material (e.g. `GFL99` =
Generic PLA in 29 vendors) is comparatively benign — those attributes agree.
### Identity machinery
- **Effective id resolution** (`PresetBundle.cpp:4842-5080`): own `filament_id` key → vendor
`filament_id_maps[inherits]` (file order in the vendor index is load-bearing) →
OrcaFilamentLibrary base-bundle map. An instantiated system filament that resolves *no* id is
a hard load error that discards the whole vendor bundle (`:5072`, throw at `:5141-5147`) —
so "missing id" cannot ship; what looked like 26 id-less Flashforge presets actually resolve
to OFL's `OGFL99`/`OGFG99` through the base-bundle fallback.
- **Two family-identity systems exist**: `filament_id` (device matching) and `alias` (name
before `" @"`). OFL shadowing is keyed on **alias**: `update_library_profile_excluded_from`
(`Preset.cpp:3684-3714`) hides an OFL preset (empty `compatible_printers` = compatible with
everything, `Preset.cpp:837`) on printers claimed by a same-alias vendor preset. There is
**no id-based shadowing**. A vendor preset that tunes an OFL generic but renames it
re-exposes the OFL preset and creates a live duplicate. The rule below aligns the two
systems: one family = one alias = one id.
- **User-custom id space**: user-created filaments get `"P" + md5(name)[0:7]` (8 chars,
`CreatePresetsDialog.cpp:533`), or *reuse a system id* when the base name matches an existing
preset (`:510-528`). `"null"` is used as a sentinel. Root user presets persist their id
forever; inheriting user presets re-derive it on every load.
## 2. The id landscape today
**Bambu's grammar** (derived from all 1970 BBL instantiated presets; BBL is internally clean —
181 id definitions, 0 duplicates):
- Classic `GF<LETTER><NN>`: letter = family (A Bambu-PLA, B ABS/ASA, C PC, G PETG/PCTG,
L third-party+generic PLA, N PA/PPA, P PP/PE, R misc, S support, T PET/PPS, U TPU).
Numbers: 00-49 branded ascending, 50-59 fiber-filled, 60-70 partner block, **95-99 generic
tier descending** (99 = the family's plain generic).
- Brand partners `GF<BRANDCODE><NNN>`: GFPM Polymaker, GFOT Overture, GFSNL SUNLU, GFNMK
Numakers. One id per product line; never per color, never per printer/nozzle/diameter.
- Structural rule: the id lives on the material's `@base`; every variant inherits it.
- Hardcoded in C++: `GFS00/GFS01` support check (`DeviceManager.cpp:4739`), per-family PA
defaults `GFU01/03/04` (`CalibUtils.cpp:54-75`) — `GF*` is Bambu's space, byte-frozen.
**Everything else is ad-hoc, invented by individual contributors and imitated** (full history
in §7): OFL's `O`-prefix mirrors (`OGFA00`; introduced 2025-03-31, commit `8c4a65e3e1`),
Tiertime/Afinia `GFx##_##` per-printer-line suffixes, SeeMeCNC per-nozzle ids, LH `LHF_pla`,
LONGER 11-char pseudo-GF ids, Anycubic ids **with spaces** (`"GFPLA Silk"`), Prusa ids that are
entire preset names (36 chars), and mass copy-paste of `GFL99/GFB99/GFG99` onto everything
(Qidi alone stamped `GFB99` into **317 files** across all materials). The only guidance that
ever existed was "≤ 8 chars" — enforced for BBL only (`orca_extra_profile_check.py:292,320`),
and the (now removed) profile wiki's own examples *taught* id copy-pasting.
**The damage, quantified** (audit reproduces validator 1256/1256):
| Ledger | Count |
|---|---|
| Within-vendor logical collision groups (validator `-f`) | **356** across 30 vendors (1256 printer-level errors) |
| OFL×vendor same-id groups (validator blind spot) | 42 — of which **10 are live** (alias mismatch defeats shadowing); 32 already neutralized by alias shadowing |
| OFL-internal: one id, several materials, visible on every printer | **16 ids** (e.g. `OEPLAB00` = 14 distinct Elegoo PLA products; `OGFL06` = eSUN PLA-Marble *and* Fiberon PETG-ESD) |
| Cross-vendor semantic collisions (same id, different materials) | **67 ids** (e.g. `GFU99` also covers a PEBA; Anycubic minted `GFL95` "Matte" ≠ Bambu `GFL95` "High Speed") |
Worst vendors by groups: Qidi 97, Flashforge 69, Elegoo 37, Prusa 31, Cubicon 17,
Anycubic 14, InfiMech 14, Snapmaker 11, Artillery 8, Creality 8, FlyingBear 8.
---
## 3. The rule (proposal)
Selected by a 3-design / 2-judge adversarial process (deterministic-mint won over
registry-grammar and structure-only on ambiguity-prevention, contributor simplicity, and
enforceability), then hardened by three adversarial review passes. This section is written as
the future authoring doc.
### 3.1 The one-question test
> **Would a user consider this a different spool product than anything already in the tree?**
> Different polymer, different sub-brand (Basic / Matte / Silk / HF), fiber-filled sibling, or
> a second selectable diameter → **new family, new id**. The same spool tuned for another
> printer or nozzle → **join the existing family** (inherit its `@base`, no id key). Tuning a
> generic material → **join the OFL family** (inherit the `Generic X @System` preset, keep the
> `Generic X` base name, add no id).
Same id / new id at a glance:
| Situation | id |
|---|---|
| Per-printer / per-nozzle variant of an existing material | same id (inherit, never write the key) |
| Sub-brand or product line (PLA vs PLA Matte vs PLA Silk vs PLA HF) | new id each |
| Color | never a new id |
| Second diameter selectable on the same printer (1.75 + 2.85) | sibling family, new id |
| "High-speed" tuned for a *different printer model* | same id (it's a printer variant) |
| "High-speed" selectable *alongside* the normal preset on one printer | new id (it's a product line) |
### 3.2 Structure
1. **One family = one root.** Each material family has root preset(s) (`instantiation:false`,
typically `<Family> @base`) and only roots carry the `filament_id` key. Instantiated
variants inherit a root and never write `filament_id`. (A family MAY have several roots —
e.g. Qidi's per-series bases — but they must all declare the *identical* id.)
2. **Family identity is declared, not name-derived.** Default: the family name is the
instantiated presets' base name (name with `/\s?@.*$/` stripped — note *optional* space,
because `Afinia PLA@HS`-style names exist). When vendor naming makes that ambiguous, the
root declares an explicit `"filament_family"` key that overrides derivation; tooling errors
loudly when a root's derived family differs from its children's.
3. **Within a family, variants' `compatible_printers` are pairwise disjoint** — that *is* the
PR #14459 invariant, enforced by the validator.
4. **Generics belong to OFL.** A vendor tuning `Generic PLA` inherits
`Generic PLA @System`, keeps the `Generic PLA` base name/alias (so alias shadowing excludes
the OFL preset on those printers, `Preset.cpp:3684`), sets non-empty `compatible_printers`,
and writes no id. A vendor-*branded* filament never rides a generic family id.
5. **Ids are immutable once shipped.** Renaming a family does not change its id (use
`renamed_from`). No id is ever recycled for a different material — stale ids live on in
user root presets and old 3mfs, and a recycled id would silently match the wrong material.
### 3.3 Minting — nobody invents ids
New family ids are computed, exactly like the `setting_id` precedent
(`scripts/assign_vendor_setting_ids.py` / `Slic3r::generate_preset_setting_id`):
```
filament_id = "OF" + base62_6( uuid5( NAMESPACE, "filament_family/<vendor>/<family>" ) )
```
8 chars total (satisfies the AMS length limit), same base62 derivation and a dedicated
namespace constant. On the astronomically rare collision with an existing id, the minter salts
the input (`.../1`, `/2`, …) until free; the result is simply frozen in the file.
- **Script path:** author commits the family with *no id anywhere*;
`python scripts/assign_filament_ids.py` inserts the minted id into the root(s). Idempotent;
never rewrites a valid existing id. A `--mint "<Vendor>/<Family>"` one-shot prints the id
without touching the tree.
- **No-script path:** CI fails with the exact line to paste:
`family "MyBrand PLA" (vendor X) needs filament_id "OFq3xT9k" in "MyBrand PLA @base.json"`.
**Reserved namespaces — never mint or hand-write into:**
| Space | Owner | Status |
|---|---|---|
| `GF*` | Bambu AMS/RFID catalog | byte-copies of authentic Bambu ids only, and only where a checked-in `shared_catalog` list sanctions the family (BBL bundle; OFL mirrors; byte-matching families in other vendors, e.g. Snapmaker's Fiberon) |
| `QD_*` | Qidi device protocol | frozen; Qidi-only; exempt from family-shape checks |
| `P[0-9A-Fa-f]{7}`, `"null"` | user-created custom filaments (`CreatePresetsDialog.cpp:533`) | never emitted for system presets (reserve case-insensitively) |
| everything already shipped | grandfather snapshot | frozen as-is (§5) |
Trade-off accepted: minted ids are opaque (`OFq3xT9k` carries no "PLA" mnemonic — the family
name in the same file provides that). The judges preferred this over a Bambu-style extended
grammar because it removes the "who allocates the next number" ceremony, cannot race between
concurrent PRs, and needs no registry maintenance. If mnemonic ids are strongly preferred, the
runner-up design (`<NSCODE><FAMLETTER><SEQ>` + registry file) is documented in the workflow
records; everything else in this plan is unchanged under either format.
### 3.4 What CI enforces (all vendors, ratcheted)
Extend `scripts/orca_extra_profile_check.py` (it imports the same mint function; setting_id
precedent) and the C++ validator:
1. **Format**: an id is valid iff `OF[0-9A-Za-z]{6}` **or** in the grandfather snapshot **or**
vendor==BBL **or** `QD_*` in Qidi. No whitespace/ASCII/length checks needed outside the
grandfather set — new ids are minted, and the grandfather set is closed.
2. **Uniqueness ratchet**: id→families multimap computed tree-wide; no id may acquire a family
claim not recorded in the snapshot (snapshot legalizes today's benign `GFL99`-style sharing;
new multi-claims are errors; `shared_catalog` entries are the sanctioned exception).
3. **Structure ratchet**: `filament_id` key only on roots; every instantiated filament must
resolve an effective id via the simulated loader walk; all members of one family resolve the
same id; **a preset may not declare an id different from its inherited effective id** (the
`Generic SBS` drift bug class). Pre-existing violations are snapshot-frozen; new ones error.
4. **Mint conformance**: an id new relative to the snapshot must equal the mint (or a salt
iteration); the error message prints the expected value.
5. **Stability**: an `(id, family)` pair on main may not change or vanish, *following
`renamed_from` chains* (so an honest rename passes), unless listed in a maintainer-gated
migrations file. Retired ids go to an append-only `retired_ids` ledger; a retired id may
never be defined again for any family.
6. **Alias hygiene for tuned generics**: a preset inheriting an OFL `Generic * @System` (with
no own id anywhere in its vendor chain) must keep the OFL base name and have non-empty
`compatible_printers` — error message names the rename as the cause.
7. **C++ validator**: extend `check_duplicate_filament_subtypes` (`PresetBundle.cpp:5654`) to
include OFL presets in every vendor's per-printer check, *minus* alias-excluded ones —
`m_excluded_from` is already populated in the validator context (`update_system_maps` at
`PresetBundle.cpp:2302`), so the 32 shadowed pairs won't false-positive and the 10 live ones
will be caught. Run `-f` per vendor in CI, widening as vendors are cleaned (§5).
8. **Runtime backstop** (one-line change): log a warning when the AMS-sync `find_if`
(`PresetBundle.cpp:3132/3233`) finds 2+ compatible presets for one id — the only layer that
can see side-loaded/forked bundles.
---
## 4. Error-pattern taxonomy (goal 2) — with counts and fixes
356 groups were classified by 37 agents reading the actual profiles, spot-checked
independently (1 substantive disagreement in 14 samples). Counts below fold the spot-check
corrections in. **Fix rule for all patterns: replacement id values are always freshly minted
`OF*`; the "which preset keeps the id" decision uses the precedence _Bambu-catalog material >
OFL generic family > family that historically introduced the id_.**
| # | Pattern | Groups | Fix |
|---|---|---|---|
| P1 | `copy_paste_id` — different materials share an id verbatim (task's error 1). Qidi's `GFB99`×317-files epidemic; Anycubic's three id "eras"; Peopoly `GFSL99` on ABS | ~167 | impostor families get minted ids on their roots; owner keeps the id |
| P2 | `wrong_inherits` / id-less product lines — a variant inherits another family's root (PR #14459's Panchroma case) or a product line never got its own root (Prusa HF; Flashforge's ~140-preset `FFG01` umbrella) | ~87 | create per-family roots with minted ids; re-point `inherits`; **never** delete the id-less shadow/base files — convert them (they carry real config: Flashforge `fdm_filament_pla` differs materially from OFL's) |
| P3 | `generic_family_overlap` — vendor-*branded* preset rides a generic family id via inheritance (task's error 2, generalized). Includes the 10 live OFL duplicates | ~68 | branded presets get minted family ids; true generic tunings instead adopt the OFL family *with matching alias* (rule 3.2.4); Sovol is the elegant case — just **delete** its wrong own-id lines and let OFL ids flow through inheritance |
| P4 | `overclaim_compat` — same material, broader variant claims a printer that a dedicated variant covers (the BBL H2DP pattern fixed in #14459) | ~24 | trim `compatible_printers` of the broader preset (Dremel, Cubicon `@base`s that are also instantiated, Wanhao France Bowden/Direct) |
| P5 | template-carried id — id declared on a shared settings template (`fdm_filament_*`, `fdm_filament_common`) so every family inheriting it collapses (Prusa, Ginger Additive, Snapmaker TPU base) | inside P1/P2 counts | move ids off templates onto family roots |
| P6 | OFL-internal collisions — 16 ids spanning several materials, visible on every printer (Elegoo blocks, Elas `OGFA00`×3, `OGFL06` polymer mismatch, `Generic PETG HF/PETG-CF @System` missing own ids) | 16 ids | fix inside OFL first (it's the base bundle every vendor resolves against) |
| P7 | alias-mismatch re-exposure — vendor tunes a generic under a different name, OFL preset resurfaces (Snapmaker `PolyTerra J1 PLA` vs OFL `PolyTerra PLA`) | 10 live | rename-to-alias where it's genuinely the same family, else mint |
| P8 | per-variant ids — no ambiguity, but family semantics broken: every variant has its own id (Prusa name-ids, SeeMeCNC nozzle suffixes, Afinia/Tiertime `_##`, iQ) so device matching can't identify the material across nozzles | ~210 presets | grandfather (they're unambiguous); converge opportunistically; document as anti-pattern |
| P9 | format violations — spaces (`"GFPLA Silk"`), >8 chars (LONGER, SeeMeCNC, LH), GF-shaped inventions (Anycubic `GFL93-97`, CoLiDo `GFA99`) | in the above | fixed as a byproduct of re-minting; snapshot freezes the unambiguous rest |
| P10 | cross-vendor semantic collisions — 67 ids meaning different materials in different vendors (dangerous via the global unscoped consumers, §1) | 67 ids | mostly eliminated by P1-P3 re-minting; the remaining same-material generic sharing is legalized by the snapshot |
| P11 | deliberate coexistence & data hygiene — Snapmaker "Benchy" demo presets (gated by `compatible_prints`, which the id check can't see) and a self-collision from duplicate `compatible_printers` entries | 4 | give demo presets own minted ids; dedupe list entries; add a lint for duplicate array entries |
New patterns beyond the two in the task (goal 2.3): P5-P11.
---
## 5. Migration plan
### Safety foundation (verified, §1/§7)
Safe: fresh never-used ids, family-consistent; trims of `compatible_printers`; inherits
re-pointing; OFL id changes (children re-derive). Unsafe: touching `BBL`/`QD_*`; recycling or
swapping ids; splitting a family's id; **deleting or renaming preset names** (user presets
whose `inherits` no longer resolves are dropped at load, `Preset.cpp:1687-1691`) — if a name
must go, `renamed_from` coverage is mandatory.
### Phases
0. **Land the rule + tooling first** (no profile changes): `scripts/assign_filament_ids.py`
(mint + insert + `--mint`), the extended `orca_extra_profile_check.py` checks in
snapshot-ratchet mode, the C++ validator OFL cross-check, the runtime warning, the rule doc.
Generate `filament_id_snapshot.json` (id→families multimap over main) and empty
`retired_ids.json` — both checked in.
1. **OFL first** (it's the base bundle every vendor resolves against): fix the 16 internal
collisions (Elas/eSUN/DREMC copy-pastes get mints; `Generic PETG HF/PETG-CF/PP-CF/PP-GF/
PE-CF/PLA Matte @System` get their own family roots+ids instead of collapsing into their
parent generic), keeping every current effective id that is unambiguous.
2. **Per-vendor PRs, worst-first**: Qidi → Flashforge → Elegoo → Prusa → Cubicon → Anycubic →
InfiMech → Snapmaker → the long tail (22 vendors, mostly 1-8 one-line fixes). Each PR flips
that vendor into CI's `-f` scope (`check_profiles.yml` currently `-v BBL -f`; append
vendors as they reach zero; when all are in, drop `-v` and run tree-wide).
3. **Delete the ratchet allowlists** once tree-wide zero holds; checks become hard rules for
everything born after the snapshot.
### Migration-script contract (from the adversarial pass — important)
- Consumes from the classification only: group membership, fix category, keep-id precedence,
inherits-repoint targets. **All replacement id values are recomputed via the mint** — id
literals in analysis notes (e.g. `GFA00_02`, `GFS98`, `GFG96`) are legacy-culture artifacts
and are ignored with a warning; assert no emitted id matches `^(GF|QD_|P[0-9A-Fa-f]{7}$)`.
- **Family-atomic**: re-idding any preset re-ids every same-family sibling in the same commit,
even siblings outside the collision group (FlyingBear `GFB99 @S1` vs `@Ghost7`); Prusa is
family-atomic per material (its HF/CF families span frozen `_N`-suffix ids — freeze what's
unambiguous, mint once per family for the colliding members).
- **Diff bound**: a vendor migration PR may only touch collision-group files + same-family
siblings of re-idded presets; every id that is per-printer-unambiguous today stays
byte-identical.
- **Config-equivalence gate**: dump every instantiated preset's flattened effective config on
main and on the PR head; the diff must be empty except `filament_id`/`inherits`/
`compatible_printers` edits the plan prescribes (this is what makes the Flashforge
shadow-file conversions safe: each id-less `fdm_filament_*` shadow becomes a named vendor
family root carrying its config byte-for-byte, children re-pointed, then the shadow name
retired).
- **No deletions**: redundant presets (Flashforge's byte-identical `Generic X`/`Flashforge X`
twins) are re-minted, not dropped; consolidation with `renamed_from` is a separate,
human-reviewed cleanup.
- Expected user impact: none for inheriting user presets, 3mfs, Klipper/Creality/Snapmaker
sync. Residue: user *root* presets that copied an old system id keep it forever
(AMS auto-match falls back to generic-by-type — low severity, unavoidable from the repo).
### Vendor-specific notes (from classification)
- **Qidi (97)**: three profile generations. `QD_*` generics are correct and frozen; the fix is
the brand families (Bambu/HATCHBOX/Overture/PolyLite/Tinmorry/QIDI-brand) that all carry
`GFB99/GFG99/GFL99`. Multi-root families are the norm (`...@Q2-Series` / `@Q2C-Series` /
`@X-Max 4-Series` bases) — same mint lands in every series root of one family.
- **Flashforge (69)**: two umbrellas (`FFG01` ~140 presets; `GFB99/GFG99/GFL99` G3U-era) +
OFL-riding branded presets + shadow-file conversion (above).
- **Elegoo (37)**: single mistake — every commercial variant inherits the material-class
`@base` (`E<MAT>B00`); mint one id per product line (Silk/Matte/PRO/Rapid/…), roots exist.
- **Prusa (31)**: HF product lines need their own roots; ids move off `fdm_filament_*`
templates; frozen name-shaped and `_N` ids stay.
- **Sovol (6)**: delete the wrong own-id lines; correct ids flow from OFL by inheritance.
- **Cubicon (17)**: `@base` presets are themselves instantiated + over-claiming; 9 file edits.
---
## 6. Concrete work items (PR-sized)
1. `scripts/assign_filament_ids.py` + mint function + tests (incl. the 14-group regression set
from the adversarial pass). *(new)*
2. `orca_extra_profile_check.py`: checks §3.4-1..6 in ratchet mode + snapshot/ledger files;
drop the BBL/OFL-only gate at `:292` and the OFL skip at `:601`. *(extend)*
3. C++ validator: OFL-aware `check_duplicate_filament_subtypes`; runtime ambiguity warning at
the two `find_if` sites. *(small)*
4. Rule documentation: `doc/developer-reference/filament_id.md` (recreate the path; wiki
cross-link) + profile-PR template checkbox ("new materials: no filament_id key anywhere; CI
prints the minted id"). *(new)*
5. OFL migration PR (phase 1).
6. Per-vendor migration PRs (phase 2), each widening CI `-f` scope.
The audit tooling from this analysis (loader-faithful resolver; reproduces the validator
1256/1256) is in this session's scratchpad (`audit_filament_ids.py`) and is the natural seed
for items 1-2.
## 7. Evidence & methodology
- Validator ground truth: `OrcaSlicer_profile_validator -f` tree-wide → 1256 errors; audit
script reproduces exactly (356 logical groups after dedup by (vendor, id, preset-set)).
- Code analysis: 5 parallel agents over runtime consumers, persistence/migration surface,
loader semantics, Bambu grammar, and convention history — all claims carry `file:line`.
- Classification: 37 agents (one per vendor chunk) reading actual profile JSONs; 14-sample
independent re-derivation found 1 substantive error (a Flashforge group mislabeled
`missing_id`; corrected — the loader resolves those ids from OFL).
- Design: 3 independent designs → 2 judges (both chose the deterministic mint; scores 58/50/56
and 60/54/56) → 3 adversarial attackers (35 scenarios; every `breaks` finding is folded into
§3.2-3.4/§5 as an amendment: declared families, multi-root support, ratchet-not-absolute
checks, no-deletion rule, shadow-file conversion, classification-id-literal quarantine,
diameter siblings, case-insensitive P-hex reservation, fork guidance).
- Key history: `OGF*` born 2025-03-31 (`8c4a65e3e1`, no PR); `_##` suffix born PR #9739;
8-char check born PR #9574; wiki (with the id-copy-paste example) removed 2025-11-24
(`f0d79b99eb`).
## 8. Open decisions for maintainers
1. **Id format**: opaque deterministic `OF*` mint (recommended, judges 2/2) vs mnemonic
registry grammar (runner-up). Everything else in the plan is format-agnostic.
2. **Multi-vendor brands** (Snapmaker ships Fiberon with authentic `GF*` ids): sanction via
`shared_catalog` (recommended, low churn) vs hoisting those families into OFL.
3. **Benchy-style demo presets**: mint ids per demo preset (recommended) vs teaching the
validator `compatible_prints` gating.
4. **Alias alignment**: fix the 10 live alias-mismatch OFL duplicates by rename-to-alias
(better long-term, needs `renamed_from`) vs minting vendor ids (safer, more ids).
5. **Where the rule doc lives**: in-repo `doc/` (recommended — CI messages need a stable link)
vs wiki-only.

314
filament_id_plan_v2.md Normal file
View File

@@ -0,0 +1,314 @@
# filament_id plan v2: the `get_filament_id` (P+md5) proposal, validated
> **Status note:** the verdict in §0-§4 and §7-§8 stands. The work items in §5 are
> superseded by `filament_id_plan_v3.md` (OFL-as-catalog, content-addressed triple key,
> succession ledger): W1/W3 are carried into v3.0, W2/W5 carry unchanged, W4 is dropped.
Follow-up to `filament_id_plan.md` (v1, implemented on `feature/filament_id`: deterministic
`OF*` mint + snapshot ledger + 30-vendor migration, tree-wide validator `-f` = 0).
**Proposal under review:** mint system `filament_id`s with the scheme of
`static std::string get_filament_id(std::string vendor_typr_serial)`
(`src/slic3r/GUI/CreatePresetsDialog.cpp:487-552`) — Bambu's user-custom-filament id
allocator — so system ids are "compatible with Bambu AMS sync".
Every claim below was verified in source (`file:line`), against upstream BambuStudio, or in
primary online sources (URLs in §8). Verdict first, evidence after.
---
## 0. Executive summary — the verdict
**Do not re-mint system ids as `P+md5(name)`. Keep the v1 `OF*` mint.** Three facts decide it:
1. **The AMS/device path never validates id *shape*.** `tray_info_idx` is an opaque string
end-to-end: sent verbatim (`DeviceManager.cpp:1642`), parsed verbatim
(`DevFilaSystem.cpp:512-514`), and firmware persists arbitrary bytes — an A1 stored and
echoed a *corrupted* id `Pde2\xea58c` (bambulab/BambuStudio#5436). A P-shaped system id
is not "more acceptable" to the device than an `OF*` one.
2. **P-shape buys zero recognition.** The printer resolves tray ids only against its built-in
`GF*` catalog plus the *account's* cloud custom-filament cache (official Bambu wiki); ids
it cannot resolve round-trip as `?`. Orca can never upload system presets into that cache
(`Preset.cpp:2071` gates cloud upload on `is_user()`), so an Orca system `P` id shows `?`
exactly like an `OF` id. The public catalog id space is 100% `GF*` (ha-bambulab
`filaments.json`: 86/86 ids).
3. **P-shape is the one shape the codebase punishes.** The *only* id-shape dispatch in the
entire tree is `MachineObject::check_ams_filament_valid` + `update_filament_list`
(`DeviceManager.cpp:5335/5352/5395/5410`, gate `setting_id.size()==8 && [0]=='P'`), a
user-custom lifecycle reconciler that **remotely wipes an AMS tray**
(`command_ams_filament_settings(..., "", "", white, "", 0, 0)` at `:5345`) or rewrites its
temps (`:5361-5367`) when a P-shaped tray id drops out of the user-root preset list
(`:5219`, armed at `:5268`). Name-keyed minting makes system id == user-custom id *by
design* (same name → same id), so "user deletes their now-redundant custom after the
system preset ships" becomes a remote tray wipe. `GF*` (wrong length) and `OF*` (wrong
first char) are structurally immune.
The proposal's *real* value lives in two places, and v2 captures both without the re-mint:
- **The adopt step** (the function's first branch, `:509-511/:526-528`): same base name →
same id. In-app, this already gives Orca-local convergence today — a user custom named
like a system family adopts the system id *whatever its shape*. At authoring time, the
same semantics = the v1 `shared_catalog` mechanism; §5/W4 extends it (curated, optional)
to let byte-authentic Bambu-catalog families carry authentic `GF*` ids.
- **The hash step belongs to user space.** `P+md5(name)` is Bambu's allocator for *user*
presets; the community is already asking for it there (OrcaSlicer PR #13315, unique ids
for inherited user presets). §5/W5 endorses that lane. System profiles stay out of the
`P` namespace — and v2 adds client hardening (W1) because ten *already-shipped* system
P-hex ids (Cubicon `P510cf**`×8, Ginger `P510eff9`, Artillery `Pfcf9c4c`) sit inside the
wipe-gate's shape match today.
Judge panel (3 independent lenses over 4 variants; §7): keep-`OF*` won 23/40 aggregate
(device-ecosystem 6, identity-semantics 8, migration-enforceability 9) vs full Bambu
emulation 11, hash-only name-keyed 12, vendor-scoped P-hash 12. The single dissent
(device-ecosystem, favoring adoption) is honored by W4; its own verdict on the shape was
"adopt the semantics, not the costume".
---
## 1. What the proposed generator actually is (verified)
`get_filament_id(vendor_typr_serial)` (`CreatePresetsDialog.cpp:487-552`), called with
`"<vendor> <type> <serial>"` (`:1128`, `PLA-AERO``"PLA Aero"`), and per-preset with the
display base name when cloning presets for a user-created printer
(`Preset.cpp:2785-2803``:2798-2800`):
1. **Adopt:** scan a temp bundle of *every* vendor bundle on disk
(`PresetBundle::load_system_filaments_json`, `PresetBundle.cpp:2342-2391`) plus the
user's presets, then the live bundle (`Preset.cpp:2831-2842`); if any preset's base name
(`name.substr(0, first('@') - 1)`) equals the input and its id ≠ `"null"`, **return that
id** — which can be `GF*`, `QD_*`, `OF*`, or another user's P-hex.
2. **Mint:** `"P" + md5(input)[0:7]`, lowercase hex over the raw UTF-8 bytes (`:533`,
`:480`).
3. **Collide:** if the id is held by a *different* name, re-hash with a local wall-clock
salt (`md5(input + get_curr_time())`, `:547`) — non-deterministic by construction.
Upstream parity: the function and its caller input construction are **byte-identical** in
BambuStudio master (`CreatePresetsDialog.cpp` L434-499 / L1061; diff empty, fetched
2026-07-03). So identical dialog inputs in BBS and Orca yield identical ids — the kernel of
the proposal's compatibility claim.
Reproduction limits (why "exactly the approach" cannot be ported to system minting anyway):
- The base-name parser truncates names lacking a space before `@` (`"Afinia PLA@HS"`
`"Afinia PL"`); 48 shipped presets hit this, and the *clone* path parses differently
(`" @"` two-char, `Preset.cpp:2792`), so the app itself is internally inconsistent.
- 597 presets (361 whole families, e.g. all of Anker) contain no `@` and are invisible to
the adopt scan and its collision map (`:505-508`).
- The collision salt is wall-clock time — unreproducible across machines, so id values
cannot be CI-verified from names; a ledger would still be the sole source of truth.
- Shipped P-hex ids don't round-trip from names today: Cubicon `P510cfb0`
`P+md5("Cubicon ABS")` = `Pc624b68` (verified) — so even Bambu-lineage P ids are not
name-derivable in practice.
## 2. What Bambu AMS sync actually consumes (verified)
- Send: `command_ams_filament_settings` puts the preset's `filament_id` verbatim into
`tray_info_idx` (`DeviceManager.cpp:1642`); cloud vs LAN differ only in transport
(`:2502-2536`). No client- or firmware-side rejection path exists; the ack parse stores
whatever the printer echoes (`:3808-3860`).
- Resolve (slicer side): tray id → first compatible root preset with equal `filament_id`
system *and* user roots, no shape filter (`PresetBundle.cpp:3151`, `:3252-3254`); misses
fall back by `"Generic <type>"` name, then similarity, then keep-previous
(`:3157-3169`, `:3260-3305`). `setting_id_to_type` resolves against `is_system` presets
only (`DeviceManager.cpp:2538-2559`) — a system preset resolves *because it is system*,
never because of its id shape.
- Resolve (device side): built-in `GF*` catalog + the account's cloud custom cache;
custom-filament sync is **cloud-only** (not LAN), and an id the printer has no data for
displays `?` until opened once on the printer screen (official wiki, §8). Third-party
consumers see customs as "unknown" (ha-bambulab #466/#540).
- Since Jan 2025, AMS configuration is gated behind Bambu-signed clients on new firmware
(Developer Mode / older firmware exempt) — any AMS-sync benefit for Orca is conditional
on that regardless of id scheme (Bambu authorization blog, §8).
- Orca already ships non-`GF`/non-`P` shapes to Bambu trays in the field: OFL presets are
compatible with every printer (`PresetBundle.cpp:5681-5684`) and carry `OGF*`/`OFL*` ids
(e.g. `OFLSBS99`, hardcoded in `MoonrakerPrinterAgent.cpp:654`). The premise "the
ecosystem has only ever seen `GF*`/P-hex" is already false, with no observed rejection.
**Cross-client reality check.** The name-keyed benefit ("a BBS-created custom named like an
Orca system preset lands on the same id, so Orca's sync matches the system preset") is
mechanically true but narrow: it needs byte-exact names (including the `PLA Aero` mapping
and single spacing), the unsalted hash path, cloud mode, and permissive firmware. The
symmetric case already works in Orca *without* any re-mint: an Orca user creating a custom
named like a system family **adopts the system id** via the in-app adopt branch, so local
custom ↔ system ↔ tray matching is shape-independent today.
## 3. The disqualifying finding, in mechanism form
`update_filament_list` (`DeviceManager.cpp:5208-5272`) snapshots `{filament_id → temps}`
over **user root presets only** (`preset.is_user() && preset.inherits() == ""`, `:5219`);
ids that vanish or change temps between snapshots are armed into `checked_filament`
(`:5268`). `check_ams_filament_valid` (`:5311-5445`) then, for every AMS/virtual tray whose
`setting_id` matches `size()==8 && [0]=='P'`:
- id armed and **not** in the current user-root list → remotely **clears the tray**
(`:5335-5349`, `:5395-5408`);
- id armed and in the list with unequal temps → **rewrites tray temps from the user
preset**, ignoring same-id system presets (`:5352-5374`; `PresetBundle.cpp:3719` skips
non-user presets; unguarded `find()->second` at `:3717`).
Failure scenario under the proposal: system `"PolyLite PLA"` ships with
`P+md5("PolyLite PLA")`. A user's same-named custom (BBS- or Orca-created — same id by
design) is on an AMS tray. The user deletes the now-redundant custom. Next status refresh:
the id is armed, absent from user roots → Orca wipes the tray, even though the system
preset still resolves that id perfectly. Runs continuously (`StatusPanel.cpp:3275-3277`).
Two corollaries independent of the proposal (→ W1):
- The ten shipped P-hex **system** ids (Cubicon/Ginger/Artillery) already pass the shape
gate; only the "id must transit a user root" arming condition protects them, and the
in-app adopt branch can create exactly that transit today.
- `assert(it->first.size() == 8 && it->first[0] == 'P')` (`:5252`) is violable today: a
user custom named `"Bambu PLA Basic"` adopts `GFA00` onto a user root and aborts debug
builds.
## 4. Identity costs the re-mint would add (quantified, tree dry-run)
- 1148 distinct family base names; **198** appear in 2+ vendors; **159** groups carry ≥2
distinct ids today and would silently merge under name-keying (Generic PETG alone: 15
ids today). 112 involve BBL; 82 are `GF↔OGF` mirror pairs.
- **4** cross-vendor groups share a name across materially different `filament_type`
(Generic PLA Silk, Generic PETG-CF, Generic PA6-CF, Generic PE-CF) — one merged id would
feed wrong type/name/vitrification to the global unscoped consumers
(`PresetBundle.cpp:690-733`; `DeviceManager.cpp:2538`; `FilamentGroup.cpp:513-519`) (→ W3).
- 33 deliberately-split families on the branch would re-merge (25 Elegoo-vs-OFL pairs, 7
FlyingBear-vs-InfiMech "Other *" pairs, the salted Cubicon PC pair) — undoing v1
decisions that the fixture gate forced.
- Renames become id migrations: name-keyed ids re-key on any marketing rename; the ledger
can freeze them, but then name-derivability — the scheme's selling point — dies family
by family. The `OF*` key (`vendor/family`) survives display-name churn.
- Entropy drops 35.7 → 28 bits (still 0 collisions at today's 1148 names; ~0.75 expected
at 20k). Re-mint surface: 391 unshipped ids across 1327 files, 13 hardcoded tests, the
reserved-namespace policy inversion, and a retired-ledger rebuild.
## 5. Work items (delta from `feature/filament_id` HEAD)
**W1 — client hardening (C++, small, ships with the migration PR train).**
a. Skip the tray-reset and temp-rewrite in `check_ams_filament_valid` when **any
`is_system` filament preset carries the tray's id** — no compatibility filter,
mirroring the semantics of the global consumers (`get_filament_by_filament_id`,
`setting_id_to_type`). This protects the ten shipped P-hex system ids and any BBS
custom colliding with them, while ids resolving only to user presets (or to nothing)
keep today's cleanup behavior.
b. Relax the debug assert `DeviceManager.cpp:5252` to a log (user roots legitimately
carry adopted `GF*`/`OF*` ids).
c. Guard `PresetBundle.cpp:3717` (`find()` unchecked before `->second`).
d. Regression-check that AMS sync never clears trays whose id it merely cannot resolve
(OrcaSlicer#4431 class): the keep-previous fallbacks at `PresetBundle.cpp:3163-3169`,
`:3296-3305` must cover the UI paths.
**W2 — tooling + doc guardrails.**
a. Document `^OF[0-9A-Za-z]{6}$` as the system-mint namespace. **Do not add it to
`reserved_space_owner`** (`scripts/assign_filament_ids.py:394-402`): check 6 exempts
only snapshot-grandfathered claims and the `--update-snapshot` refusal gate
(`:596-621`) would then reject every *future* mint. The space is already enforced —
check 3 (mint conformance, `:488-509`) errors on any OF-shaped id that does not equal
its own family's mint (covered by `test_check3_of_id_must_match_mint`), and the
snapshot diff is the human gate. Add one doc paragraph + a test asserting a foreign
vendor claiming another family's OF id fails check 3.
b. `doc/developer-reference/filament_id.md`: add a "why not P-hex" section citing the
`DeviceManager.cpp:5335` gate and the account-cache resolution model — community
pressure toward `P+md5` exists (PR #13315) and will recur.
c. Document that user roots may legitimately hold adopted system ids (incl. what that
means for cloud upload, `Preset.cpp:1874-1876`), matching BBS behavior.
**W3 — data hygiene: the 4 same-name-different-type groups.** Audit each (they confuse
name-based fallback matching and any future interop even under vendor-scoped ids):
verify whether the divergent `filament_type` is a data bug (e.g. OFL `Generic PETG-CF`
resolving `PETG`, OFL `Generic PE-CF` resolving `PE`, Flashforge `Generic PLA Silk`
mixing `SILK`+`PLA`, Creality-vs-Elegoo `Generic PA6-CF` as `PA-CF`/`PA6-CF`) or
intentional; fix by type alignment or rename with evidence, gated by
config-equivalence (only `filament_type` diffs as prescribed) + full validator suite.
**W4 — optional, curated GF adoption (the proposal's adopt step, done safely).** Extend the
v1 `--allow-shared-catalog` mechanism into an explicit per-family adoption worksheet: a
family may carry a byte-authentic Bambu catalog id iff (i) it is verifiably the same
commercial product as the BBL family (vendor evidence + equal `filament_type`), (ii)
validator `-f` stays 0 tree-wide (alias shadowing covers BBL/OFL overlaps), (iii) the
fixture gate passes, (iv) the snapshot diff records the adoption. Candidates: the 13
actionable BBL-overlapping families minted `OF*` in v1 (e.g. Qidi `Bambu ABS``GFB00`,
`PolyLite PLA``GFL00`, `Overture PLA``GFL04`, `PolyLite ABS``GFB60`; `OFLSBS99` is
shipped and frozen; the two type-hazard OFL families are excluded until W3 lands).
**Honest benefit statement:** these presets are compatible only with non-Bambu printers,
so no Bambu device resolves their ids today; the payoff is one-product-one-id coherence
for the global consumers, project portability, and readiness for W6. Recommended seed:
the four Qidi brand families; generics deferred.
**W5 — user-preset lane (where the proposal's hash belongs).** Support unique ids for
inherited user presets (the PR #13315 pain: children share the parent's id, so AMS always
resolves the generic parent). `P + md5(preset name)` matching
`CreatePresetsDialog::get_filament_id` is correct *in user space*: adopt-first against
existing ids, then hash; ids frozen per preset after mint. Constraints: never emitted
into system profiles (W2a makes that mechanical); W1 must land first so shared-id
lifecycles can't wipe trays.
**W6 — recorded future option:** SoftFever's "upload OrcaSlicer's filament database
(especially the filament ID) to the printer" (PR #12724 comment). If pursued, Orca ids
become first-class device-visible artifacts and the P-mimicry question is permanently
moot; the `OF*` scheme is the *better* citizen there (collision-free vendor-scoped ids,
no user-custom masquerade).
Unchanged from v1: mint rule, snapshot/retired ledgers (no OF retirement — nothing is
re-minted), CI wiring, migration commits. `filament_id_plan.md` remains the implemented
baseline; this document records the v2 decision and its follow-on work.
## 6. Gates (per work item)
Same battery as v1, all local: `python scripts/orca_extra_profile_check.py` exit 0;
`assign_filament_ids.py --check` exit 0 (46+ unit tests green; new tests for W2a
reservation and, when implemented, W4 adoption sanctioning); validator `-l 2` exit 0,
`-f` tree-wide exit 0, `-r` BBL+Qidi exit 0; custom-preset fixture overlays (the W1/W4
changes touch exactly the preset-visibility machinery the fixtures exist to protect);
config-equivalence: flattened effective configs differ only in prescribed keys
(`filament_id` for W4, `filament_type` for W3, none for W1/W2). W1 additionally needs a
manual AMS smoke test on a live Bambu printer (tray set/clear round-trip) — a release
checklist item, not CI (the workflows have no hardware runners).
## 7. Scheme comparison (judge panel record)
| Variant | Device lens | Identity lens | Migration lens | Σ |
|---|---|---|---|---|
| V1 full Bambu emulation (adopt incl. `GF*` + P+md5 + salt) | 7 | 2 | 2 | 11 |
| V2 hash-only name-keyed `P+md5(base name)` | 4 | 4 | 4 | 12 |
| V3 vendor-scoped P-hash (`P+md5(vendor/family)`) | 2 | 5 | 5 | 12 |
| **V4 keep `OF*` uuid5 vendor-scoped (chosen)** | 6 | 8 | 9 | **23** |
All three judges answered the pivotal question the same way: the P-hex **shape** confers no
device/cloud benefit (resolution is by value against catalog + account cache; the path is
otherwise shape-agnostic) and is the only shape with a destructive client-side gate. V3 is
strictly dominated (all of the re-mint cost, none of the name-keyed benefit). V1's genuine
half — GF adoption — is captured by W4 at zero re-mint cost.
## 8. Evidence index
Code (this branch): `CreatePresetsDialog.cpp:487-552,1128,2798-2800` (generator + callers);
`DeviceManager.cpp:1642` (verbatim send), `:2538-2559` (system-only type resolve),
`:5208-5272` (user-root snapshot, `:5219`, `:5252` assert, `:5268` arming), `:5311-5445`
(P-shape gate + tray wipe `:5335/:5345`, temp rewrite `:5352-5374`, virtual tray
`:5395-5435`); `DevFilaSystem.cpp:512-524`; `PresetBundle.cpp:690-733,3116-3128,3151,
3252-3254,3709-3767,5674-5753`; `Preset.cpp:1874-1876,2071,2785-2842`;
`AMSMaterialsSetting.cpp:886,894-897`; `WebGuideDialog.cpp:67`;
`PresetComboBoxes.cpp:1952-1966`; `MoonrakerPrinterAgent.cpp:654`;
`scripts/assign_filament_ids.py:69,71-72,118-144,394-402,596-621`.
Online (fetched 2026-07-03): BambuStudio master `CreatePresetsDialog.cpp` L434-499
(byte-identical generator); wiki.bambulab.com `create-filament` (custom filaments AMS-able
from firmware 1.6.6; only dialog-created presets sync) and `custom-filament-issue`
(cloud-only sync; unknown ids show `?`); blog.bambulab.com authorization-control (Jan-2025
AMS-config gating); bambulab/BambuStudio#5436 (firmware persists corrupted id);
OrcaSlicer #4431 (tray clobber to `?`), #3874 (cloud-only confirmation), PR #14459
(the `-f` invariant), PR #14423 + PR #12724 + PR #13315 (maintainer statements / community
P+md5 pressure); greghesp/ha-bambulab `filaments.json` (86/86 `GF*`) + #466/#540.
Method: 6 parallel evidence agents (generator semantics; AMS/device path; exhaustive
shape-dispatch sweep; upstream/online; tree-wide dry-run over 5892 presets / 1455 families;
branch change inventory) → 3-judge panel (device-ecosystem, identity-semantics,
migration-enforceability lenses). Dry-run artifacts: session scratchpad
`phex_dryrun_{summary,details,followup}.json`.
## 9. Open decisions for maintainers
1. **W4 scope**: none / 4 Qidi brand families (recommended) / + generic-tier re-adoption.
2. **W5 timing**: implement in-repo vs review upstream PR #13315 with the W1 hardening as a
prerequisite either way.
3. **W6**: pursue the filament-database-upload design (makes Orca ids device-visible and
ends the mimicry debate for good).

213
filament_id_plan_v3.md Normal file
View File

@@ -0,0 +1,213 @@
# filament_id plan v3: OFL as the catalog, content-addressed product ids
Supersedes §5 of `filament_id_plan_v2.md` (whose P+md5 verdict stands unchanged) and
revises the mint rule of `filament_id_plan.md` (v1, implemented on `feature/filament_id`).
Decision driver: v1's mint key scoped families to the *profile bundle* (printer brand), so
one commercial product tuned in N bundles carries N ids — e.g. PolyLite PLA ships in five
bundles (`BBL`, `OrcaFilamentLibrary`, `OrcaArena`, `Qidi`, `Snapmaker`), all with
`filament_vendor: "Polymaker"`, under up to five different ids (`GFL00`, `OFceJcLf`, …).
That contradicts what `filament_id` means: one id per commercial product line.
## 0. The architecture
Three tiers, two frozen islands:
1. **BBL island — untouched.** Bambu profiles keep their `GF*` catalog ids byte-for-byte
(device/RFID/cloud contract). No convergence between GF and OFL ids is attempted: the
same product may permanently carry `GFL00` on the BBL side and an `OF*` id everywhere
else. This is a deliberate trade for simplicity; v2's curated-GF-adoption (old W4) is
dropped.
2. **`QD_*` island — untouched.** Qidi's box builds `QD_<series>_<vendor>_<type>` from
device enums and requires exactly-matching presets (`QidiPrinterAgent.cpp:146-152`).
Qidi presets carrying `QD_*` are exempt from re-minting, forever.
3. **Everything else converges on OrcaFilamentLibrary.** OFL is the product catalog: a
material family's id is declared once, on its OFL family root. Vendor bundles carry
only per-printer *specializations* of OFL families — same base name, non-empty
`compatible_printers`, **no `filament_id` key** — which (a) alias-shadow the OFL preset
on the printers they claim (`Preset.cpp:3684-3714`: "Generic PLA @Qidi Q2 0.4mm nozzle"
hides "Generic PLA @System" on that machine) and (b) resolve the OFL family's id
through the loader's inherits/base-bundle walk (`PresetBundle.cpp:4842-5080`). Products
OFL does not (yet) carry mint their id in the vendor bundle **with the same rule**;
because the key is bundle-independent (§1), later hoisting the family into OFL never
changes its id.
Convergence therefore happens by *single declaration point*, not by copying ids across
bundles — no adoption registry, no cross-bundle id claims to curate.
## 1. The mint rule
```
triple = (filament_vendor, filament_type, family_name) # from the family ROOT's flattened config
key = "filament_product/<filament_vendor>/<filament_type>/<family_name>"
id = "OF" + base62_6( uuid5( FILAMENT_ID_NAMESPACE, key ) ) # namespace unchanged:
# c4d3ff49-4c32-5534-a3e3-00894157ab97
```
- **Triple resolution.** All three values come from the family root preset's *flattened
effective config* (`filament_vendor` and `filament_type` are inheritable list options —
take the first element; family_name = the root's base name, `\s?@.*` stripped once).
For own-key-layout families (no root), each declaring preset's flattened config is used
and CI requires all declarers of one family to agree on the triple. A root that resolves
an empty `filament_vendor` or `filament_type` is a CI error (generics use `"Generic"`).
Values enter the key verbatim (UTF-8, no case folding).
- **Bundle-independent by design.** The key contains no bundle name, so the same product
yields the same id whether minted in OFL or in a vendor bundle; migrating a family into
OFL (§0.3) is id-stable. Two bundles independently adding the same triple converge
automatically — and that is correct, because equal (vendor, type, name) *is* the
definition of "same product" here. The known look-alike hazards stay separated by the
type component: the 4 same-name-different-type groups (Flashforge `Generic PLA Silk` as
SILK, OFL `Generic PETG-CF` as PETG, `Generic PA6-CF`, `Generic PE-CF`) hash apart until
their type bugs are fixed (§5, W3) and converge automatically after — self-healing that
pure name-keying (rejected in v2) could not provide.
- **Format and salt unchanged from v1**: 8 chars, `OF` + 6 base62; deterministic `/1`,
`/2`… salt past any taken or retired id (the O+7 widening was evaluated and rejected:
62⁶ expects 1.9×10⁻⁵ collisions at today's 1,455 families, and `^O.{7}$` would sweep 35
legacy ids into the conformance gate vs. one today).
- **Content-addressed, deliberately.** If any triple component changes — a family rename,
a `filament_vendor` correction, a `filament_type` fix — the id changes with it. This
*replaces* v1's "ids are immutable once shipped" with "ids are derivable from the
product identity, and identity changes are migrations" — made safe by the succession
ledger (§2). `renamed_from` still gates preset-name compatibility as before.
- CLI: `--mint "Polymaker/PLA/PolyLite PLA"` prints without touching the tree; running
the script plain inserts missing ids; CI errors print the expected id.
## 2. The succession ledger (the amendment that makes this safe)
Shipped ids are referenced outside the tree: AFC/Klipper lane data, Bambu AMS trays
holding OFL-only materials, on-device PA-calibration records, user-root preset copies,
3mf `slice_info`. Retiring an id without a forwarding pointer downgrades all of those to
`Generic <type>` fallbacks. Therefore:
- **Schema.** `scripts/retired_filament_ids.json` entries become objects:
`{"retired": {"OGFL99": {"claims": [...], "successor": "OFxxxxxx"}}}`. Append-only as
before; a successor may itself be retired later (chains allowed, cycle-checked, and
followed to the live end). A retired id may never be minted again (check 4 unchanged).
Cross-island *hint* entries are permitted for ids Orca cannot retire because another
island owns them (e.g. `GFL99 → <OFL Generic PLA id>`): consulted only when no live
preset matches, so BBL installs still resolve `GFL99` natively first. By the same
principle, an id in a foreign island's space (`GF*`/`QD_*`) that vanishes from the tree
is **released with a hint, never retired** — the island's catalog owns it and may
legitimately (re)ship it later, which check 4 must never block. (Implementation
amendment, v3.0: `--update-snapshot` routes such ids to `hints` automatically; hint
keys may be absent from the tree.)
- **Shipped and consulted at runtime.** The ledger ships in `resources/`; a small helper
(`resolve_filament_id_succession(id)`) follows the chain and is consulted **only on
resolution miss**, before the `Generic <type>` name fallback, in:
`PresetBundle::get_filament_by_filament_id` (covers `DevFilaBlackList`, `SelectMachine`
warnings, `Plater` tray configs in one place), the AMS sync match predicates
(`PresetBundle.cpp:3151`, `:3252-3254` miss paths at `:3157-3169`/`:3260-3305`),
`PresetComboBoxes::add_ams_filaments`, `MachineObject::setting_id_to_type`
(`DeviceManager.cpp:2545` miss branch), calibration-history name lookup
(`CaliHistoryDialog.cpp:62`), and the #14423 Moonraker lane matching when it lands.
With this in place the OFL re-mint is near-residue-free and every future
content-addressed rename stays safe.
- **Kill the hardcoded generic map.** `MoonrakerPrinterAgent::map_filament_type_to_generic_id`
(`MoonrakerPrinterAgent.cpp:608-658`) hardcodes 23 OFL ids (`OGFL99``OFLSBS99`).
Replace it with a runtime lookup of the OFL generic preset by name ("Generic PLA
@System" → its current id), removing the code↔profile lockstep permanently. (This also
releases `OFLSBS99`, v2's one frozen OF-shaped legacy id, for normal re-minting.)
## 3. Validation rule changes
- **Check 3 (mint conformance)** becomes a pure function of the root's triple: a non-BBL,
non-`QD_*` id must equal `mint(triple)` ± salt, or be snapshot-grandfathered (the
grandfather set shrinks to ≈ nothing for non-BBL once migration completes).
- **Check 5 (alias hygiene) generalizes and becomes load-bearing.** For *every*
OFL-carried family (not just `Generic * @System`): a vendor specialization must keep the
OFL base name (else the OFL preset un-shadows and creates a live per-printer duplicate —
v1's P7 pattern) and non-empty `compatible_printers`, and must not declare an id. The
C++ validator's OFL-aware `-f` (`PresetBundle.cpp:5674-5753`) already enforces the
runtime consequence; the script check names the rename as the cause.
- **New check 8 (triple integrity):** every id-declaring family resolves a complete,
family-consistent triple; roots missing `filament_vendor`/`filament_type` error.
- **New check 9 (succession integrity):** every retired entry's successor chain ends at a
live tree id (or a documented cross-island hint target); no cycles; retired ids absent
from the tree.
- Snapshot mechanism, reserved spaces (`GF*`→BBL, `QD_*`→Qidi, `P`-hex/`null`→user-custom;
v2's do-not-reserve-`OF*` note stands), and check 1/2/4/7 are unchanged.
## 4. Migration phases
**v3.0 — tooling + prerequisites (no profile changes).** New mint + triple resolver
(reuse the flatten machinery), succession schema migration + C++ lookup helper wired into
the §2 miss paths, Moonraker map → runtime lookup, checks 3/5/8/9, tests. Carry v2's W1
client hardening (skip tray-wipe/temp-rewrite when a system preset holds the id; relax
the `DeviceManager.cpp:5252` assert; guard the `PresetBundle.cpp:3717` deref) — it ships
first regardless. **W3 type fixes land here**, *before* any re-mint: type is now a key
component, so minting before fixing OFL `Generic PETG-CF`/`Generic PE-CF` would re-id
those families twice.
**v3.1 — OFL re-mint.** Every OFL-declared id re-derives from its triple (mirrors like
`OGFA00`, generics like `OGFL99`, blocks like `OEPLAB00` — all of it); each old shipped id
gains a succession entry pointing at its replacement; the 26 GF-shaped ids OFL declares
(measured at v3.0: only one of them, `GFOT001`, is also declared by BBL) are released to
the BBL island space with hints at the re-minted families — two-island purity. Snapshot
regenerated; full gate battery + fixture overlays (this phase touches preset-visibility
machinery only via ids, but the fixtures are cheap insurance). Implementation notes
(v3.1, executed): OFL generic ids relocate from the fdm_filament_* template bases onto
the product-named "Generic X @System" presets first, so their triples carry the product
name; `fdm_filament_pc` keeps a (transitional) declaration because 7 Prusa presets
inherit it directly — the v3.2 Prusa worksheet re-homes them and deletes it.
**v3.2 — vendor bundles, worksheet-per-vendor (v1 machinery).** Three sub-cases:
(a) the **391 unshipped v1 `OF*` mints** re-derive under the triple key — no succession
entries (they never shipped; a documented one-time `--forget-never-shipped <list>` drops
them from the ledger lineage instead of retiring them, since the ledger's rationale —
ids live on in user presets and 3mfs — cannot apply to unreleased ids);
(b) **true generic tunings** riding copied legacy ids (`GFL99`-class) drop their own id
and re-point to the OFL generic family (the v1 Sovol pattern) — their old ids get
cross-island hints where BBL owns them, succession entries otherwise;
(c) remaining **shipped legacy ids** (numeric, name-shaped, pseudo-GF, the 57
multi-vendor GF residue, the 10 P-hex — everything non-BBL/non-`QD_*`, ~800 ids)
re-mint with succession entries. Retiring the 10 P-hex system ids also removes the last
system ids from `check_ams_filament_valid`'s destructive P-gate.
**v3.3 — ongoing consolidation (optional, per-vendor, id-stable).** Hoist vendor-unique
products into OFL where a family is genuinely multi-vendor material; thanks to the
bundle-independent key this never changes ids, so it can proceed opportunistically.
## 5. Gates (every phase)
`python scripts/orca_extra_profile_check.py` exit 0; `assign_filament_ids.py --check`
exit 0; unit tests green (existing 46 + new triple/succession/adoption tests); validator
`-l 2` exit 0, `-f` tree-wide exit 0, `-r` BBL+Qidi exit 0; custom-preset fixture
archives; config-equivalence — flattened effective configs differ only in `filament_id`
(re-mints), `inherits`/`compatible_printers` (re-points, as prescribed per worksheet), and
the W3 `filament_type` corrections. New for v3: a C++ test that a retired id resolves
through the succession chain in the sync miss path, and a Moonraker test that the generic
map lookup matches the shipped OFL presets. Manual AMS smoke test (tray set → old-id
resolve → clear) stays a release-checklist item.
## 6. Accepted costs (explicit)
- **GF ↔ OFL divergence is permanent** for products in both catalogs (PolyLite PLA ≠
`GFL00` outside BBL). The forward-looking fix is PR #12724-style filament-database
upload, where Orca ids become first-class device artifacts.
- **Renames/type-fixes re-id families** (by design); the succession ledger absorbs the
device/user residue, but each one is still a ledger entry and a snapshot diff to review.
- **User roots** keep whatever id they copied at creation; with succession lookup in
`get_filament_by_filament_id` they now *resolve* instead of dangling — strictly better
than v1's accepted residue.
- **One-time field transition**: devices holding pre-v3 ids (AFC lanes, AMS trays, cali
records) resolve via succession on updated clients; *older* Orca versions and
BambuStudio never resolved OFL-only ids anyway (`?`/generic fallback — unchanged for
them).
## 7. Open decisions
1. Whether v3.2(b)'s cross-island hints (`GFL99` → OFL generic) are wanted at launch or
deferred (pure-miss-path feature; zero risk to BBL installs, small review surface).
2. v3.3 pacing: per-vendor PRs opportunistically vs. a dedicated consolidation train.
3. Whether to fold v2's W5 (P+md5 ids for inherited *user* presets, PR #13315) into v3.0's
C++ work or keep it a separate PR (recommended: separate; W1 is its only prerequisite).
## 8. Evidence
Carried from v2 §8 (all re-verified this session), plus: `filament_vendor` audit — 49
distinct strings tree-wide, `"Polymaker"` byte-consistent across all five PolyLite-PLA
bundles; multi-vendor different-family GF residue = 57 ids; `MoonrakerPrinterAgent.cpp:
608-658` = 23 hardcoded OFL ids; mint examples verified live (`Qidi/PolyLite PLA`
`OFceJcLf` under the v1 key — the fragmentation this plan removes; salt determinism
`OF8afiMO`). Alias shadowing and the OFL id fallback verified at `Preset.cpp:3684-3714`
and `PresetBundle.cpp:4842-5080` during the v1 audit; per-printer `-f` semantics at
`PresetBundle.cpp:5674-5753`.

224
filament_id_plan_v4.md Normal file
View File

@@ -0,0 +1,224 @@
# filament_id plan v4: dissolve the Qidi `QD_*` island
Supersedes §0.2 of `filament_id_plan_v3.md` (the "`QD_*` island — untouched, forever"
decision) and amends every v3 section that carved out `QD_*`. Everything else in v3 —
the mint rule, the succession ledger, the BBL island, checks 19 — stands as
implemented (v3.0v3.2, all gates green at commit `f7c1b290fd`).
Decision driver: the island contradicts the catalog architecture v3 built. Qidi presets
carry 204 `QD_<series>_<vendor>_<typeidx>` ids over 264 declarations (49 families,
measured 2026-08-21) — one commercial product carries up to *five* ids (one per printer
series: `QIDI PLA Rapido` = `QD_0_1_1``QD_4_1_1`), which is exactly the
fragmentation v3 exists to remove. The island was frozen because Qidi's filament box
composes these ids from device enums and requires exactly-matching presets
(`QidiPrinterAgent.cpp:146-152`). But v3.0 shipped the machinery that makes freezing
unnecessary: the succession ledger already translates retired ids on resolution miss.
`QD_*` stops being a *preset id space* and becomes a *device protocol namespace*,
translated once at the agent edge.
## 0. The architecture change
Two tiers, **one** frozen island:
1. **BBL island — untouched, unchanged.** All v3 reasoning holds (device/RFID/cloud
contract is external and opaque).
2. **Everything else converges on OFL product ids — now including Qidi.** All 204
`QD_*` ids re-mint from their family triples and gain **retired** ledger entries
(not cross-island hints: after dissolution there is no island to own them, and
check 4's "never again" is exactly the guard we want against upstream re-adding
them). The box keeps working because `QidiPrinterAgent` resolves its composed
`QD_*` id through `resolve_filament_id_succession()` on miss — the same mechanism
every other retired id already uses.
Why retire rather than hint (the one real design choice here): hints exist for ids a
*foreign catalog* owns and may legitimately re-ship (`GF*`). Post-dissolution, nothing
may ever re-ship a `QD_*` id in the profile tree — the device composes them at
runtime, the tree translates them. Retired entries make CI enforce that permanently
(`--update-snapshot` refuses resurrections, check 4 refuses occurrences); hints would
permit re-shipping, which is now always a regression. The QD→family mapping is
strictly 1:1 (verified: no `QD_*` id is claimed by more than one family), so the
mode-rule successor is unambiguous for every entry.
## 1. What the dissolution consists of
Three independent work packages, ordered for bisectability:
- **(A) Re-converge the drifted tree** — prerequisite, not Qidi-specific. The
2026-07 main merge (`f3fa3a34bd`) brought upstream vendor updates in pre-v3 style:
`--check` currently exits with **243 errors** (123 unsanctioned new ids, 46 new
instantiated own-key presets, 31 override drifts, 18 reserved-space claims, 5
hint-keys re-declared — Qidi re-added `GFB99`/`GFG99`/`GFL99`, Snapmaker re-added
`GFG96`/`GFU99` and even four *retired* ids incl. `OGFL99`, plus Snapmaker U1
triple errors and a GreenGate3D rename). This is the standing WF-B maintenance
pass; the dissolution's gates cannot go green on a red base.
- **(B) C++ succession hook in the Qidi agent** — safe to land before any data
changes (pure miss-path: while `QD_*` presets still exist, the hook never fires).
- **(C) The dissolution proper** — tooling flip + Qidi data fixes + re-mint +
snapshot/ledger regeneration, one vendor worksheet in the v3.2 mold.
## 2. Runtime translation (work package B)
`QidiPrinterAgent.cpp:183-192` currently: compose `setting_id` → keep it if a visible
base preset declares it → else degrade to `filament_id_by_type(tray_type)` (i.e. every
QIDI-brand box slot silently becomes Generic once the ids re-mint). Insert the
succession walk between those two steps:
```cpp
} else if (!setting_id.empty() && has_visible_base_preset(bundle->filaments, setting_id)) {
tray.tray_info_idx = setting_id;
} else {
// Retired QD_* protocol ids forward to their minted successors via the shipped ledger.
const std::string successor = setting_id.empty() ? std::string()
: resolve_filament_id_succession(setting_id);
if (!successor.empty() && has_visible_base_preset(bundle->filaments, successor))
tray.tray_info_idx = successor;
else
tray.tray_info_idx = bundle->filaments.filament_id_by_type(tray.tray_type);
}
```
`resolve_filament_id_succession` is `Preset.hpp:119` (loads once, cycle-guarded,
empty-safe) — no new includes needed beyond what the file already reaches through
`PresetBundle`. This one hook covers both composition paths: the numeric-series
`build_setting_id` lambda *and* the non-numeric fallback
`map_filament_type_to_setting_id` (`:325-342`), whose four hardcoded returns
(`QD_1_0_1`/`_11`/`_41`/`_50` = Generic PLA/ABS/PETG/TPU 95A) become ledger keys in
package C. Keep that function as-is but extend its comment: the returned ids are
retired ledger keys by design, and `scripts/tests/test_filament_id.py` parses the
initializer (see §4 tests) — the Moonraker treatment (`MoonrakerPrinterAgent.cpp:
619-627`) of replacing the table with name lookups was considered and not taken: the
table already routes through the same ledger as the composed ids, and two translation
mechanisms in one agent is worse than one.
Tests (same commit):
- `tests/libslic3r/test_filament_id_succession.cpp`: add a section asserting a
`QD_`-shaped key forwards like any other (`{"QD_2_1_11", "OFnew001"}` resolves to
`"OFnew001"`) — pins that the walk is prefix-agnostic.
- `scripts/tests/test_filament_id.py`: new test parsing the four `QD_` literals out of
`QidiPrinterAgent.cpp::map_filament_type_to_setting_id` (mirror the parser in
`scripts/test_moonraker_lane_data.py`) and asserting each is a ledger key whose
chain terminates at a live tree id. **Add it marked expected-fail/skipped until
package C lands, then flip it on** — it is the permanent code↔ledger lockstep guard.
## 3. Tooling and validation flip (work package C, first commit)
All in `scripts/assign_filament_ids.py`; every touched line measured 2026-08-21:
- `is_island_declaration` (`:327-329`) → `return vendor == "BBL"`. This single change
pulls every `QD_*` declarer into the triple bookkeeping (`:385`) and thus into
checks 3 and 8, into `--remint`'s domain (`:1464`), and out of the hint-key
tolerances (`:877`, `:1100`).
- `reserved_space_owner` (`:596-604`): `QD_*` returns `(True, None)` — reserved,
ownerless, exactly like the P-hex/user-custom space. Consequences, all wanted:
check 6 refuses any future vendor claim; the `--update-snapshot` sanction gate
(`:938-963`) refuses new `QD_*` ids outright; the vanish path (`:994`) routes
`QD_*` to **retired** (owner `None` ≠ island), not released-with-hint. Update the
two message sites that render `owner is None` as "reserved for user-custom presets"
(`:628` docstring, `:958`, and check 6's copy) to name the space generically or
special-case `QD_*` ("Qidi device protocol; dissolved island — retired, never
declarable").
- Check 1 (`:667-668`): delete the `vendor == "Qidi" and fid.startswith("QD_")`
exemption.
- Module docstring (`:27-45`): rewrite the `QD_*` bullet — reserved space stays
listed, but as "device protocol namespace, translated via the succession ledger;
dissolved as a catalog island in v4, may never be declared".
- `scripts/tests/test_filament_id.py`: update the three island assertions —
`reserved_space_owner("QD_X4_PLA")``(True, None)` (`:403`),
`is_island_declaration("Qidi", "QD_X4_PLA")``False` (`:413`), and the
reserved-space message case (`:570`).
No changes to the ledger schema, the C++ checks, `--retire` (post-flip it accepts
`QD_*` olds automatically — they are non-island now), or the validator: check 3's
"non-BBL, non-`QD_*`" phrasing in v3 §3 was always implemented as "non-island", so the
flip *is* the spec change.
## 4. Migration phases
**v4.0 — re-converge the drifted tree (package A).** Per-vendor WF-B worksheets over
the 243 errors: Snapmaker U1 (triple divergence `Generic|Snapmaker|snapmaker`, empty
vendors, four resurrected retired ids — these force re-mints since retirement is
permanent), BBL/addnorth `GF_AN*` overrides (BBL island: grandfather via snapshot,
they are BBL-internal), Qidi/Snapmaker re-declared hint keys (re-mint those declarers,
the check's own prescription), GreenGate3D rename, then `--update-snapshot` (new
upstream `QD_*` ids sanction cleanly — the island is still intact in this phase) and
the full v3 §5 gate battery. Bump `version` in every touched
`resources/profiles/<Vendor>.json`. **Do not start v4.2 until `--check` exits 0.**
**v4.1 — the agent hook (package B).** §2 as written; `libslic3r_tests` +
`scripts/tests/test_filament_id.py` green; behavior-neutral by construction (no `QD_*`
ledger entries exist yet).
**v4.2 — the dissolution (package C).** One Qidi worksheet, v3.2 machinery:
1. Tooling flip commit (§3). `--check` now reports the Qidi island as
non-conformant — expected, red only between commits of this phase.
2. Data fixes, before any re-mint (the v3 "W3 lands first" lesson — type/vendor are
key components): add `filament_vendor: ["QIDI"]` at each QIDI-brand family's
inheritance apex so all declarers resolve it (39 of 49 families currently resolve
none — check 8a would refuse the mint). Verify the six Generic families
(`Generic PLA/ABS/PETG/PC/TPU 95A/PLA Silk`) resolve triples identical to their
OFL counterparts (vendor `Generic`, OFL's `filament_type`) so they *converge onto
the OFL ids* by triple math — the whole point; any mismatch is a W3-style data fix
here, not a fork. No `inherits`/`compatible_printers` re-pointing anywhere: the
series intermediates (`Generic PLA@Q2-Series` etc., all `instantiation: false`)
simply keep declarations whose values become the OFL ids.
3. `python scripts/assign_filament_ids.py --remint Qidi` — rewrites all 264
declarations in place to their family mints (same triple ⇒ same id across a
family's series intermediates and per-nozzle declarers; convergence with OFL ids
is legal by design, `want_id` already permits same-triple collisions `:1447`).
4. `--update-snapshot` — retires every vanished `QD_*` id with its mode-rule
successor. **Audit the ledger diff: all ~204 new entries must be `QD_*`→non-null.**
A null successor (possible only for a declared-only id with zero instantiated
claims) gets an explicit `--retire "QD_x=OFy"` with the family's minted id.
5. Un-skip the §2 lockstep test. Bump `resources/profiles/Qidi.json` version. Full
gate battery (§5).
Known residue, accepted: `QIDI PC-ABS-FR` (series 12) vs `QIDI PC/ABS-FR`
(series 34) are two preset-name families for one product → two ids. Renames were
ruled out in v3 (`renamed_from` rejected for migrations); if upstream ever unifies the
name, content-addressing re-ids and the ledger absorbs it — self-healing, no action
now.
**v4.3 — OFL consolidation (unchanged).** v3.3 stays optional and id-stable; QIDI-brand
families are vendor-unique and stay in the Qidi bundle.
## 5. Gates (per phase, delta from v3 §5)
Unchanged battery: `orca_extra_profile_check.py` exit 0, `assign_filament_ids.py
--check` exit 0, `scripts/tests/test_filament_id.py` all green, `libslic3r_tests`
green, validator `-l 2` tree-wide + `-f` tree-wide + `-v Qidi` exit 0, custom-preset
fixture archives (v4.2 touches no preset visibility, but they are cheap insurance —
run them for v4.0, which touches instantiation-adjacent upstream drift), flatten
config-equivalence. New for v4.2: equivalence diff may contain **only** `filament_id`
value changes (QD→OF) and the added `filament_vendor` keys on QIDI-brand families;
ledger diff audit per §4.4; the map-literal lockstep test. Manual release-checklist
item: Qidi box smoke test — slot holding a QIDI-brand material must surface the brand
preset (not Generic) on an updated client, via the memory-documented local Klipper
test rig.
## 6. Accepted costs (explicit, new relative to v3)
- **Every Qidi box slot resolves through the ledger miss-path forever** (one hash-map
walk per slot per status poll — negligible, and structurally identical to how
every retired id already resolves). The QD→OF translation table is maintained by
the retirement machinery, not by hand.
- **Older Orca clients** (pre-v4 profiles) paired with re-minted profile trees lose
QIDI-brand slot matching (they look up `QD_*` and fall back generic-by-type — the
degradation the hook removes for updated clients). Same one-time field-transition
shape v3 §6 already accepted for AMS/AFC ids.
- **Two ids for PC-ABS-FR** until upstream unifies the family name (§4 residue).
## 7. Evidence
Measured on this tree 2026-08-21 unless cited to v3: 204 distinct `QD_*` ids / 264
declaring presets / 49 families, QD→family strictly 1:1, per-series id sets
(`QD_0..4_1_1` = `QIDI PLA Rapido` etc.); 39 families resolve no `filament_vendor`;
declarations live on `instantiation:false` series intermediates (Q2/Q2C/X5/X4) and
per-nozzle X-Plus-4 presets; composition + miss-fallback at
`QidiPrinterAgent.cpp:146-152, 183-192`, hardcoded fallback table `:325-342`;
succession helpers `Preset.hpp:109-119`; ledger = 575 retired + 194 hints, zero `QD_*`
entries; snapshot holds 160 of the 204 (the 44 newcomers are post-merge drift);
`--check` = 243 errors, categorized in §1(A); island exemption mechanics at
`assign_filament_ids.py:327-329, 385, 596-604, 667, 877, 994, 1464, 1514`; `--remint`
same-triple convergence guard `:1447-1453`; retirement-permanence gate `:965-976`.

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3608,6 +3608,9 @@ msgstr ""
msgid "Arranging"
msgstr ""
msgid "Arranging "
msgstr ""
msgid "Arranging canceled."
msgstr ""
@@ -4449,6 +4452,20 @@ msgstr ""
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr ""
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr ""
msgid "Adjust"
msgstr ""
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4530,6 +4547,12 @@ msgid ""
"No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin"
msgstr ""
msgid "Brim ear radius"
msgstr ""
msgid "Brim width"
msgstr ""
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr ""
@@ -4781,6 +4804,12 @@ msgstr ""
msgid "Calibration error"
msgstr ""
msgid "This printer is not configured with the hardware this control needs."
msgstr ""
msgid "This control is not supported on this printer."
msgstr ""
msgid "Network unavailable"
msgstr ""
@@ -5612,7 +5641,7 @@ msgstr ""
msgid "Size:"
msgstr ""
#, possible-c-format, possible-boost-format
#, possible-boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr ""
@@ -5787,6 +5816,9 @@ msgstr ""
msgid "Project"
msgstr ""
msgid "Device (Web)"
msgstr ""
msgid "Yes"
msgstr ""
@@ -7777,20 +7809,20 @@ msgstr ""
msgid "Replaced with 3D files from directory:\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: same file.\n"
#, possible-c-format, possible-boost-format
msgid "✖ Skipped %s: same file.\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
#, possible-c-format, possible-boost-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr ""
#, possible-boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
#, possible-c-format, possible-boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr ""
#, possible-boost-format
msgid "✔ Replaced %1%.\n"
#, possible-c-format, possible-boost-format
msgid "✔ Replaced %s.\n"
msgstr ""
msgid "Replaced volumes"
@@ -8469,6 +8501,15 @@ msgstr ""
msgid "Pop up to select filament grouping mode"
msgstr ""
msgid "Visible plugin pages"
msgstr ""
msgid "pages"
msgstr ""
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr ""
msgid "Behaviour"
msgstr ""
@@ -8661,6 +8702,17 @@ msgstr ""
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr ""
msgid "Dimmed layer brightness"
msgstr ""
msgid "%"
msgstr ""
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
msgid "Login region"
msgstr ""
@@ -8783,6 +8835,14 @@ msgstr ""
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr ""
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr ""
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
msgid "Experimental Features"
msgstr ""
@@ -9038,9 +9098,21 @@ msgstr ""
msgid "Preset Inside Project"
msgstr ""
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr ""
msgid "Detach from parent"
msgstr ""
msgid "Unique preset"
msgstr ""
msgid "Parent preset"
msgstr ""
msgid "This preset does not inherit from another preset."
msgstr ""
msgid "Name is unavailable."
msgstr ""
@@ -9718,20 +9790,6 @@ msgstr ""
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr ""
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr ""
msgid "Adjust to the set range automatically?\n"
msgstr ""
msgid "Adjust"
msgstr ""
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr ""
@@ -9917,6 +9975,9 @@ msgstr ""
msgid "Setting Overrides"
msgstr ""
msgid "Retraction when switching material"
msgstr ""
msgid "Basic information"
msgstr ""
@@ -10043,6 +10104,12 @@ msgstr ""
msgid "Printable space"
msgstr ""
msgid "Printer Agent"
msgstr ""
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr ""
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, possible-boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10165,9 +10232,6 @@ msgstr ""
msgid "Z-Hop"
msgstr ""
msgid "Retraction when switching material"
msgstr ""
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11431,6 +11495,9 @@ msgstr ""
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr ""
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr ""
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr ""
@@ -11726,9 +11793,6 @@ msgstr ""
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr ""
msgid "Printer Agent"
msgstr ""
msgid "Select the network agent implementation for printer communication."
msgstr ""
@@ -12265,9 +12329,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr ""
msgid "Brim width"
msgstr ""
msgid "This is the distance from the model to the outermost brim line."
msgstr ""
@@ -12333,6 +12394,12 @@ msgid ""
"0 to deactivate."
msgstr ""
msgid "Brim ears outer only"
msgstr ""
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr ""
msgid "upward compatible machine"
msgstr ""
@@ -12357,12 +12424,26 @@ msgstr ""
msgid "Intra-layer order"
msgstr ""
msgid "Print order within a single layer."
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
msgid "As object list"
msgstr ""
msgid "Best of all (shortest path)"
msgstr ""
msgid "Snake"
msgstr ""
msgid "Slow printing down for better layer cooling"
msgstr ""
@@ -13331,6 +13412,12 @@ msgstr ""
msgid "Gyroid"
msgstr ""
msgid "Sparse infill smooth factor"
msgstr ""
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr ""
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr ""
@@ -13811,6 +13898,12 @@ msgstr ""
msgid "Klipper"
msgstr ""
msgid "Skip G-code config block"
msgstr ""
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr ""
msgid "Pellet Modded Printer"
msgstr ""
@@ -14772,6 +14865,12 @@ msgstr ""
msgid "Retraction distance when extruder change"
msgstr ""
msgid "Retraction Length (Toolchange)"
msgstr ""
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr ""
msgid "Z-hop height"
msgstr ""
@@ -14865,6 +14964,9 @@ msgstr ""
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr ""
msgid "Extra length on restart (Toolchange)"
msgstr ""
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr ""
@@ -15250,6 +15352,12 @@ msgstr ""
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr ""
msgid "Wait for temperature on wipe tower"
msgstr ""
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr ""
msgid "No sparse layers (beta)"
msgstr ""
@@ -17218,6 +17326,15 @@ msgid ""
"Please select one that should be used."
msgstr ""
msgid "Auto-scale for nozzle"
msgstr ""
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
msgid "PA Calibration"
msgstr ""
@@ -17340,6 +17457,12 @@ msgstr ""
msgid "End speed: "
msgstr ""
msgid "Auto-adjust to max volumetric speed"
msgstr ""
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr ""
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -17347,6 +17470,39 @@ msgid ""
"end > start + step"
msgstr ""
#, possible-c-format, possible-boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
#, possible-c-format, possible-boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
#, possible-c-format, possible-boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
msgid "Continue anyway?"
msgstr ""
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr ""
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr ""
msgid "Start retraction length: "
msgstr ""
@@ -18177,9 +18333,6 @@ msgstr ""
msgid "Print Host upload"
msgstr ""
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr ""
msgid "Select a Flashforge printer"
msgstr ""
@@ -19011,9 +19164,6 @@ msgstr ""
msgid "User canceled."
msgstr ""
msgid "Head diameter"
msgstr ""
msgid "Max angle"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2025-03-15 10:55+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -3931,6 +3931,10 @@ msgstr "Organitzant..."
msgid "Arranging"
msgstr "Organitzant"
# AI Translated
msgid "Arranging "
msgstr "Organitzant "
msgid "Arranging canceled."
msgstr "S'ha cancel·lat l'ordenació."
@@ -4824,6 +4828,23 @@ msgstr "La temperatura actual de la cambra és superior a la temperatura segura
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "La temperatura mínima de la cambra (%d℃) és superior a la temperatura objectiu de la cambra (%d℃). El valor mínim és el llindar a partir del qual comença la impressió mentre la cambra continua escalfant-se cap a l'objectiu, de manera que no l'hauria de superar. Es limitarà al valor objectiu."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "L'alçada de capa és massa petita. S'establirà al mínim (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "L'alçada de capa està fora dels límits establerts a Configuració de la Impressora -> Extrusora -> Límits d'alçada de la capa, això pot causar problemes de qualitat d'impressió."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Voleu ajustar-la automàticament al límit (%g mm)?"
msgid "Adjust"
msgstr "Ajustar"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4944,6 +4965,13 @@ msgstr ""
"Sí - Activa el generador de parets Arachne\n"
"No - Desactiva el generador de parets Arachne i estableix el mode [Desplaçament] de la pell difusa"
# AI Translated
msgid "Brim ear radius"
msgstr "Radi de l'orella de la Vora d'Adherència"
msgid "Brim width"
msgstr "Ample de la Vora d'Adherència"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "El mode espiral només funciona quan els bucles de paret són 1, el suport està desactivat, la detecció d'acumulació per sondeig està desactivada, les capes de la coberta superior són 0, la densitat de farciment dispers és 0 i el tipus de timelapse és tradicional."
@@ -5198,6 +5226,14 @@ msgstr "No s'ha pogut generar el gcode cali"
msgid "Calibration error"
msgstr "Error de calibratge"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Aquesta impressora no està configurada amb el maquinari que necessita aquest control."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Aquest control no és compatible amb aquesta impressora."
# AI Translated
msgid "Network unavailable"
msgstr "Xarxa no disponible"
@@ -6063,7 +6099,7 @@ msgstr "Volum:"
msgid "Size:"
msgstr "Mida:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "S'han trobat conflictes de rutes gcode a la capa %d, Z = %.2lfmm. Si us plau, separeu els objectes conflictius més lluny ( %s <-> %s )."
@@ -6244,6 +6280,10 @@ msgstr "Multidispositiu"
msgid "Project"
msgstr "Projecte"
# AI Translated
msgid "Device (Web)"
msgstr "Dispositiu (Web)"
msgid "Yes"
msgstr "Sí"
@@ -8357,21 +8397,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Substituït %s.\n"
msgid "Replaced volumes"
msgstr "Volums substituïts"
@@ -9112,6 +9152,18 @@ msgstr "Amb aquesta opció habilitada, podeu enviar una tasca a diversos disposi
msgid "Pop up to select filament grouping mode"
msgstr "Finestra emergent per seleccionar el mode d'agrupació de filaments"
# AI Translated
msgid "Visible plugin pages"
msgstr "Pàgines de connectors visibles"
# AI Translated
msgid "pages"
msgstr "pàgines"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Nombre de pàgines de connectors que es mostren com a pestanyes fixes abans que la resta de pàgines es replegui en un desplegable a l'última pestanya."
msgid "Behaviour"
msgstr "Comportament"
@@ -9350,6 +9402,21 @@ msgstr "Enfosquir les capes inferiors"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "En desplaçar el control lliscant de capes a la previsualització laminada, mostra enfosquides les capes per sota de l'actual, de manera que només la capa que s'està visualitzant es vegi amb la lluminositat completa."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Brillantor de les capes enfosquides"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Amb quina brillantor es mostren les capes enfosquides quan \"Enfosquir les capes inferiors\" està activat.\n"
"99% amb prou feines s'enfosqueix, 0% les mostra negres. Limitat al 99% perquè el 100% seria el mateix que desactivar l'opció."
msgid "Login region"
msgstr "Regió d'inici de sessió"
@@ -9487,6 +9554,18 @@ msgstr "Mostrar els perfils no compatibles"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Mostra els perfils incompatibles o no compatibles a les llistes desplegables d'impressora i de filament. Aquests perfils no es poden seleccionar."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimental) Utilitza agents d'impressora en lloc d'amfitrions d'impressió"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Envia els treballs d'impressió de les impressores que no són Bambu a través dels agents de connector d'impressora en lloc del flux clàssic de pujada a l'amfitrió d'impressió.\n"
"Quan està desactivat, OrcaSlicer utilitza el comportament antic de l'amfitrió d'impressió."
# AI Translated
msgid "Experimental Features"
msgstr "Funcions experimentals"
@@ -9757,9 +9836,25 @@ msgstr "Perfil d'usuari"
msgid "Preset Inside Project"
msgstr "Perfil intern del Projecte"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Copia en aquest perfil tots els valors heretats del perfil pare i elimina la relació d'herència. Els perfils compatibles només amb el perfil pare poden deixar de ser compatibles."
msgid "Detach from parent"
msgstr "Desvincula del pare"
# AI Translated
msgid "Unique preset"
msgstr "Perfil únic"
# AI Translated
msgid "Parent preset"
msgstr "Perfil pare"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Aquest perfil no hereta de cap altre perfil."
msgid "Name is unavailable."
msgstr "El nom no està disponible."
@@ -10502,22 +10597,6 @@ msgstr "Estàs segur que vols activar aquesta opció?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Els patrons de farciment estan dissenyats normalment per gestionar la rotació automàticament per garantir una impressió correcta i aconseguir els efectes desitjats (p. ex., Gyroid, Cúbic). Rotar el patró de farciment dispers actual pot portar a un suport insuficient. Procediu amb precaució i comproveu minuciosament qualsevol problema d'impressió potencial. Esteu segur que voleu activar aquesta opció?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"L'alçada de la capa és massa petita.\n"
"Es posarà a min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "L'alçada de la capa supera el límit a Configuració de la Impressora -> Extrusora -> Límits d'alçada de la capa, això pot causar problemes de qualitat d'impressió."
msgid "Adjust to the set range automatically?\n"
msgstr "Voleu ajustar el rang automàticament?\n"
msgid "Adjust"
msgstr "Ajustar"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Característica experimental: Retreure i tallar el filament a major distància durant els canvis de filaments per minimitzar el flux. Tot i que pot reduir notablement el flux, també pot elevar el risc d'esclops de broquets o altres complicacions d'impressió."
@@ -10716,6 +10795,9 @@ msgstr "Trobades paraules clau reservades"
msgid "Setting Overrides"
msgstr "Anul·lacions de configuració"
msgid "Retraction when switching material"
msgstr "Retracció en canviar de material"
msgid "Basic information"
msgstr "Informació bàsica"
@@ -10848,6 +10930,12 @@ msgstr "Perfils de processos compatibles"
msgid "Printable space"
msgstr "Espai imprimible"
msgid "Printer Agent"
msgstr "Agent de la impressora"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora. Els agents disponibles es registren a l'inici."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10978,9 +11066,6 @@ msgstr "Límits d'alçada de capa"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Retracció en canviar de material"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12361,6 +12446,10 @@ msgstr " està massa a prop de la zona d'exclusió, i es provocaran col·lisions
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " és massa a prop de l'àrea de detecció d'acumulació i es causaran col·lisions.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " està parcialment fora de l'àrea imprimible, i no es pot imprimir.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Les temperatures de broquet seleccionades són incompatibles. La temperatura de broquet de cada filament ha d'estar dins del rang de temperatura de broquet recomanat dels altres filaments. Altrament, es pot produir una obturació del broquet o danys a la impressora."
@@ -12695,9 +12784,6 @@ msgstr "Utilitzar 3MF en lloc de G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Activeu-ho si la impressora accepta un fitxer 3MF com a treball d'impressió. Quan està activat, Orca Slicer envia el fitxer laminat com a .gcode.3mf, en lloc d'un fitxer .gcode simple."
msgid "Printer Agent"
msgstr "Agent de la impressora"
msgid "Select the network agent implementation for printer communication."
msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora."
@@ -13383,9 +13469,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Velocitat dels ponts interns. Si el valor s'expressa com un percentatge, es calcularà en funció de la velocitat del pont (bridge_speed). El valor per defecte és del 150%."
msgid "Brim width"
msgstr "Ample de la Vora d'Adherència"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Distància del model a la línia de la Vora d'Adherència més exterior"
@@ -13469,6 +13552,14 @@ msgstr ""
"La geometria es simplificarà abans de detectar angles pronunciats. Aquest paràmetre indica la longitud mínima de la desviació per a la simplificació.\n"
"0 per desactivar"
# AI Translated
msgid "Brim ears outer only"
msgstr "Orelles de la Vora d'Adherència només a l'exterior"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Genera orelles de ratolí només al contorn exterior del model, excloent-ne els forats i les seccions tancades."
msgid "upward compatible machine"
msgstr "màquina compatible ascendent"
@@ -13494,12 +13585,37 @@ msgstr "Objecte"
msgid "Intra-layer order"
msgstr "Ordre intracapa"
msgid "Print order within a single layer."
msgstr "Ordre d'impressió dins d'una sola capa"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Ordre en què es visiten les instàncies dels objectes dins d'una mateixa capa, que determina quant recorregut es dedica a moure's entre elles.\n"
"\n"
"Per defecte: encadenament pel veí més proper, refinat amb 2-opt i eliminació de creuaments. Una bona opció general.\n"
"Com a llista d'objectes: les instàncies s'imprimeixen en el mateix ordre que la llista d'objectes, sense cap optimització del recorregut. Feu-lo servir quan necessiteu un ordre previsible i controlat manualment.\n"
"La millor de totes (camí més curt): s'avaluen totes les estratègies i s'utilitza la més curta. L'ordre de les instàncies dels objectes es decideix una sola vegada per a tota la impressió, mentre que l'ordre de les illes individuals es decideix per capa, de manera que capes diferents poden acabar utilitzant estratègies diferents. El laminat és una mica més lent.\n"
"Serpentí: recorregut en serpentina, fila per fila, refinat amb 2-opt. Adequat per a graelles regulars de moltes peces petites.\n"
"\n"
"Amb diversos filaments o eines a la mateixa capa, minimitzar els canvis d'eina té prioritat: els objectes s'agrupen primer per filament i aquest paràmetre només ordena les instàncies dins de cada grup de filament, de manera que la seqüència global pot no semblar el camí més curt per la safata."
msgid "As object list"
msgstr "Com a llista d'objectes"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "La millor de totes (camí més curt)"
# AI Translated
msgid "Snake"
msgstr "Serpentí"
msgid "Slow printing down for better layer cooling"
msgstr "Reduir la velocitat d'impressió per millorar la refrigeració de les capes"
@@ -14635,6 +14751,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroide"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Factor de suavitzat del farciment poc dens"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Controla com s'arrodoneixen les cantonades del farciment poc dens. 0% manté el traçat original amb cantonades vives, mentre que 100% produeix les corbes més amples possibles entre línies de farciment adjacents."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Acceleració del farciment superficial superior. L'ús d'un valor inferior pot millorar la qualitat de la superfície superior"
@@ -15188,6 +15312,14 @@ msgstr "Amb quin tipus de Codi-G és compatible la impressora."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Omet el bloc de configuració del G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "No escriu el CONFIG_BLOCK (els parells clau/valor de la configuració del laminador) al fitxer G-code. Això pot ajudar amb impressores el microprogramari de les quals falla en analitzar aquestes línies de comentari (p. ex. Anycubic go-klipper). Nota: el fitxer G-code ja no contindrà la configuració del laminador, de manera que en tornar-lo a importar a OrcaSlicer no es restaurarà la configuració."
msgid "Pellet Modded Printer"
msgstr "Impressora modificada de pellets"
@@ -16277,6 +16409,14 @@ msgstr "Retracció llarga al canviar d'extrusor"
msgid "Retraction distance when extruder change"
msgstr "Distància de retracció al canviar d'extrusor"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Longitud de retracció (Canvi d'eina)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Quan s'activa la retracció abans d'un canvi d'eina, el filament es retira la quantitat especificada (la longitud es mesura sobre el filament en brut, abans d'entrar a l'extrusor)."
msgid "Z-hop height"
msgstr "Alçada Z-hop"
@@ -16375,6 +16515,10 @@ msgstr "Longitud addicional en reiniciar"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Quan la retracció es compensa després d'un desplaçament, l'extrusor introduirà una quantitat addicional de filament. Aquest ajustament rarament es necessita."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Longitud addicional en reiniciar (Canvi d'eina)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Quan la retracció es compensa després d'un canvi d'eina, l'extrusor introduirà una quantitat addicional de filament."
@@ -16791,6 +16935,14 @@ msgstr "Canvi d'eina a la Torre de Purga"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Força el capçal a desplaçar-se a la Torre de Purga abans d'emetre l'ordre de canvi d'eina (Tx). Només és rellevant per a impressores multiextrusor (multicapçal) que utilitzen una Torre de Purga de tipus 2. Per defecte, Orca omet aquest desplaçament en màquines multicapçal perquè el firmware gestiona el canvi de capçal, cosa que pot fer que l'ordre Tx s'emeti sobre la peça impresa. Activeu aquesta opció si voleu que el canvi d'eina s'emeti sempre sobre la Torre de Purga."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Espera la temperatura a la Torre de Purga"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Recull la nova eina sense esperar que arribi a la temperatura d'impressió, es desplaça a la Torre de Purga i hi espera la temperatura, just abans de purgar. El degoteig de l'escalfament cau sobre la torre en lloc del model, i el desplaçament se solapa amb l'escalfament. Només és rellevant per a impressores multiextrusor (multicapçal) que utilitzen una Torre de Purga de tipus 2. El microprogramari o la macro de canvi d'eina no han d'esperar la temperatura pel seu compte. Quan està desactivat, l'espera de temperatura s'emet just després de l'ordre de canvi d'eina."
msgid "No sparse layers (beta)"
msgstr "Sense capes poc denses( beta )"
@@ -18927,6 +19079,20 @@ msgstr ""
"Hi ha diverses adreces IP que responen al nom d'amfitrió( host ) %1%.\n"
"Seleccioneu-ne la que s'hagi d'utilitzar."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Escala automàtica segons el broquet"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Aquest model està dissenyat per a un broquet de 0,4 mm amb una alçada de capa de 0,2 mm. \n"
"Quan l'opció d'escalat està activada (recomanat), es redimensiona dinàmicament per adaptar-se al diàmetre del broquet actual i a una alçada de capa adequada, cosa que fa que la prova sigui precisa i fàcil de llegir.\n"
"Desactiveu l'escalat només si voleu imprimir el model de referència exactament tal com és."
msgid "PA Calibration"
msgstr "Calibratge PA( Pressure Advance )"
@@ -19063,6 +19229,14 @@ msgstr "Velocitat d'inici: "
msgid "End speed: "
msgstr "Velocitat final: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Ajust automàtic a la velocitat volumètrica màxima"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Si la velocitat final superés la velocitat volumètrica màxima del filament, redueix automàticament l'alçada de capa (mantenint valors estàndard i respectant els límits de la màquina) per assolir-la. Si ni tan sols l'alçada de capa mínima és suficient, redueix la velocitat final."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -19074,6 +19248,57 @@ msgstr ""
"pas >= 0\n"
"final >inici + pas )"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"La velocitat final (%.0f mm/s) supera la velocitat volumètrica màxima del filament (%.1f mm³/s), cosa que limita el perímetre exterior a uns %.0f mm/s amb aquesta amplada de línia i alçada de capa.\n"
" Les velocitats superiors es retallaran, de manera que els blocs superiors de la torre no s'imprimiran a la velocitat sol·licitada.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"La velocitat final (%.0f mm/s) supera la velocitat volumètrica màxima del filament (%.1f mm³/s) amb l'alçada de capa per defecte (%.2f mm).\n"
"\n"
"L'alçada de capa s'ha reduït a %.2f mm (un valor utilitzat pels perfils d'aquesta impressora) perquè la torre pugui assolir la velocitat sol·licitada."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Fins i tot amb l'alçada de capa més petita utilitzada pels perfils d'aquesta impressora (%.2f mm), la velocitat final (%.0f mm/s) supera la velocitat volumètrica màxima del filament (%.1f mm³/s).\n"
"\n"
"L'alçada de capa s'establirà a %.2f mm i la velocitat final es reduirà a %.0f mm/s.\n"
"\n"
"Voleu continuar?"
# AI Translated
msgid "Continue anyway?"
msgstr "Voleu continuar igualment?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Voleu activar \"Ajust automàtic\" per corregir-ho automàticament o continuar igualment?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Voleu activar \"Escala automàtica segons el broquet\" i \"Ajust automàtic\" per corregir-ho automàticament o continuar igualment?"
msgid "Start retraction length: "
msgstr "Longitud de la retracció d'inici: "
@@ -20004,9 +20229,6 @@ msgstr "Impressora Física"
msgid "Print Host upload"
msgstr "Pujada al amfitrió( host ) d'impressió"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora. Els agents disponibles es registren a l'inici."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Seleccioneu una impressora Flashforge"
@@ -20949,9 +21171,6 @@ msgstr "Alguna cosa inesperada ha passat en intentar iniciar sessió, torneu-ho
msgid "User canceled."
msgstr "Usuari cancel·lat."
msgid "Head diameter"
msgstr "Diàmetre del cap"
msgid "Max angle"
msgstr "Angle màxim"
@@ -21770,6 +21989,25 @@ msgstr ""
"Evitar la deformació( warping )\n"
"Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "L'alçada de la capa és massa petita.\n"
#~ "Es posarà a min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "L'alçada de la capa supera el límit a Configuració de la Impressora -> Extrusora -> Límits d'alçada de la capa, això pot causar problemes de qualitat d'impressió."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Voleu ajustar el rang automàticament?\n"
#~ msgid "Head diameter"
#~ msgstr "Diàmetre del cap"
#~ msgid "Print order within a single layer."
#~ msgstr "Ordre d'impressió dins d'una sola capa"
#~ msgid "Bottom"
#~ msgstr "Inferior"
@@ -21856,9 +22094,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Continue to sync filaments"
#~ msgstr "Continua sincronitzant filaments"

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Jakub Hencl\n"
"Language-Team: \n"
@@ -3888,6 +3888,10 @@ msgstr "Uspořádání..."
msgid "Arranging"
msgstr "Uspořádání"
# AI Translated
msgid "Arranging "
msgstr "Rozkládání "
msgid "Arranging canceled."
msgstr "Uspořádání zrušeno."
@@ -4782,6 +4786,23 @@ msgstr "Aktuální teplota komory je vyšší než bezpečná teplota materiálu
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Minimální teplota komory (%d℃) je vyšší než cílová teplota komory (%d℃). Minimální hodnota je práh, při kterém tisk začíná, zatímco se komora dále ohřívá k cílové teplotě, takže by ji neměla překročit. Bude omezena na cílovou hodnotu."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Výška vrstvy je příliš malá. Bude nastavena na minimum (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Výška vrstvy je mimo limity nastavené v Nastavení tiskárny -> Extruder -> Omezení výšky vrstvy, což může způsobit problémy s kvalitou tisku."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Upravit ji automaticky na limit (%g mm)?"
msgid "Adjust"
msgstr "Upravit"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4902,6 +4923,13 @@ msgstr ""
"Ano povolit Arachne Wall Generator\n"
"Ne zakázat Arachne Wall Generator a nastavit režim [Displacement] pro Fuzzy Skin"
# AI Translated
msgid "Brim ear radius"
msgstr "Poloměr ouška límce"
msgid "Brim width"
msgstr "Šířka límce"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Spirálový režim funguje pouze tehdy, když je počet smyček stěny 1, podpěry jsou vypnuté, detekce usazenin sondováním je vypnutá, počet horních plných vrstev je 0, hustota řídké výplně je 0 a typ časosběru je tradiční."
@@ -5156,6 +5184,14 @@ msgstr "Nepodařilo se vygenerovat kalibrační G-code."
msgid "Calibration error"
msgstr "Chyba kalibrace"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Tato tiskárna nemá nakonfigurovaný hardware, který tento ovládací prvek vyžaduje."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Tento ovládací prvek není na této tiskárně podporován."
# AI Translated
msgid "Network unavailable"
msgstr "Síť není dostupná"
@@ -6025,7 +6061,7 @@ msgstr "Objem:"
msgid "Size:"
msgstr "Velikost:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Byly nalezeny konflikty drah G-kódu ve vrstvě %d, Z = %.2lf mm. Oddělte prosím konfliktní objekty více od sebe (%s <-> %s)."
@@ -6206,6 +6242,10 @@ msgstr "Více zařízení"
msgid "Project"
msgstr "Projekt"
# AI Translated
msgid "Device (Web)"
msgstr "Zařízení (Web)"
msgid "Yes"
msgstr "Ano"
@@ -8316,21 +8356,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Nahrazeno %s.\n"
msgid "Replaced volumes"
msgstr "Nahrazené objemy"
@@ -9066,6 +9106,18 @@ msgstr "Pokud je tato volba povolena, můžete odeslat úlohu na více zařízen
msgid "Pop up to select filament grouping mode"
msgstr "Zobrazit dialog pro výběr režimu seskupení filamentů"
# AI Translated
msgid "Visible plugin pages"
msgstr "Viditelné stránky pluginů"
# AI Translated
msgid "pages"
msgstr "stránek"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Počet stránek pluginů zobrazených jako pevné karty, než se zbývající stránky sbalí do rozbalovací nabídky na poslední kartě."
msgid "Behaviour"
msgstr "Chování"
@@ -9305,6 +9357,21 @@ msgstr "Ztmavit nižší vrstvy"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Při posouvání posuvníku vrstev v náhledu po slicování vykresluje vrstvy pod aktuální ztmavené, takže v plném jasu je zobrazena pouze prohlížená vrstva."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Jas ztmavených vrstev"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Jak jasně se vykreslují ztmavené vrstvy, když je zapnuta volba „Ztmavit nižší vrstvy“.\n"
"99 % znamená sotva znatelné ztmavení, 0 % je vykreslí černě. Maximum je 99 %, protože 100 % by odpovídalo vypnutí této volby."
msgid "Login region"
msgstr "Oblast přihlášení"
@@ -9438,6 +9505,18 @@ msgstr "Zobrazit nepodporované předvolby"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Zobrazovat nekompatibilní/nepodporované předvolby v rozevíracích seznamech tiskáren a filamentů. Tyto předvolby nelze vybrat."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimentální) Používat agenty tiskárny místo tiskových hostů"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Směruje tiskové úlohy pro tiskárny jiné než Bambu přes agenty pluginů tiskárny místo klasického nahrávání na tiskový host.\n"
"Pokud je vypnuto, OrcaSlicer používá původní chování tiskového hosta."
# AI Translated
msgid "Experimental Features"
msgstr "Experimentální funkce"
@@ -9705,10 +9784,26 @@ msgstr "Uživatelská předvolba"
msgid "Preset Inside Project"
msgstr "Předvolba v projektu"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Zkopíruje do této předvolby všechny hodnoty zděděné z nadřazené předvolby a odstraní vztah dědičnosti. Předvolby kompatibilní pouze s nadřazenou předvolbou mohou přestat být podporovány."
# AI Translated
msgid "Detach from parent"
msgstr "Oddělit od nadřazeného"
# AI Translated
msgid "Unique preset"
msgstr "Samostatná předvolba"
# AI Translated
msgid "Parent preset"
msgstr "Nadřazená předvolba"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Tato předvolba nedědí z jiné předvolby."
msgid "Name is unavailable."
msgstr "Název není k dispozici."
@@ -10450,22 +10545,6 @@ msgstr "Opravdu chcete tuto možnost povolit?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Vzory výplně jsou obvykle navrženy tak, aby automaticky pracovaly s rotací a zajistily správný tisk i zamýšlený efekt (např. Gyroid, Cubic). Otočení aktuální řídké výplně může vést k nedostatečné opoře. Postupujte opatrně a pečlivě zkontrolujte možné problémy při tisku. Opravdu chcete tuto možnost povolit?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Výška vrstvy je příliš malá.\n"
"Bude nastavena na min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Výška vrstvy přesahuje limit v Nastavení tiskárny -> Extruder -> Omezení výšky vrstvy, což může způsobit problémy s kvalitou tisku."
msgid "Adjust to the set range automatically?\n"
msgstr "Automaticky upravit do nastaveného rozsahu?\n"
msgid "Adjust"
msgstr "Upravit"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Experimentální funkce: Stažení a odstřižení filamentu na větší vzdálenost během výměny filamentu pro minimalizaci purge. Ačkoliv to může výrazně snížit purge, může to také zvýšit riziko ucpání trysky nebo jiných komplikací při tisku."
@@ -10665,6 +10744,9 @@ msgstr "Byla nalezena rezervovaná klíčová slova"
msgid "Setting Overrides"
msgstr "Přepisování nastavení"
msgid "Retraction when switching material"
msgstr "Retrakce při změně materiálu"
msgid "Basic information"
msgstr "Základní informace"
@@ -10797,6 +10879,13 @@ msgstr "Kompatibilní procesní profily"
msgid "Printable space"
msgstr "Tisknutelný prostor"
# AI Translated
msgid "Printer Agent"
msgstr "Agent tiskárny"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou. Dostupní agenti jsou registrováni při spuštění."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10924,9 +11013,6 @@ msgstr "Omezení výšky vrstvy"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Retrakce při změně materiálu"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12344,6 +12430,10 @@ msgstr " je příliš blízko oblasti vyloučení a může způsobit kolize.\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " je příliš blízko oblasti detekce shlukování a dojde ke kolizi.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " je částečně mimo tisknutelnou oblast a nelze jej vytisknout.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Vybrané teploty trysky nejsou kompatibilní. Teplota trysky každého filamentu musí spadat do doporučeného rozsahu teplot ostatních filamentů. Jinak může dojít k ucpání trysky nebo poškození tiskárny."
@@ -12677,10 +12767,6 @@ msgstr "Použít 3MF místo G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Zapněte, pokud tiskárna přijímá jako tiskovou úlohu soubor 3MF. Je-li zapnuto, odešle Orca Slicer slicovaný soubor jako .gcode.3mf místo prostého souboru .gcode."
# AI Translated
msgid "Printer Agent"
msgstr "Agent tiskárny"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou."
@@ -13368,9 +13454,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Rychlost vnitřních mostů. Pokud je hodnota zadána v procentech, vypočítá se podle bridge_speed. Výchozí hodnota je 150 %."
msgid "Brim width"
msgstr "Šířka límce"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Vzdálenost od modelu k nejvzdálenější brim linii."
@@ -13451,6 +13534,14 @@ msgstr ""
"Geometrie bude decimována před detekcí ostrých úhlů. Tento parametr určuje minimální délku odchylky pro decimaci.\n"
"0 pro deaktivaci."
# AI Translated
msgid "Brim ears outer only"
msgstr "Ouška límce pouze na vnějším obrysu"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Vytvoří myší ouška pouze na vnějším obrysu modelu, bez otvorů a uzavřených částí."
msgid "upward compatible machine"
msgstr "stroj zpětně kompatibilní"
@@ -13475,12 +13566,37 @@ msgstr "Podle objektu"
msgid "Intra-layer order"
msgstr "Pořadí v rámci vrstvy"
msgid "Print order within a single layer."
msgstr "Pořadí tisku v rámci jedné vrstvy."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Pořadí, v jakém se v rámci jedné vrstvy navštěvují instance objektů; určuje, kolik přejezdů se stráví přesuny mezi nimi.\n"
"\n"
"Výchozí: řetězení metodou nejbližšího souseda, doladěné algoritmem 2-opt a odstraněním křížení. Dobrá volba pro obecné použití.\n"
"Jako seznam objektů: instance se tisknou ve stejném pořadí jako v seznamu objektů, bez jakékoli optimalizace dráhy. Použijte, když potřebujete předvídatelné, ručně řízené pořadí.\n"
"Nejlepší ze všech (nejkratší dráha): vyhodnotí se všechny strategie a použije se ta nejkratší. Pořadí instancí objektů se určí jednou pro celý tisk, zatímco pořadí jednotlivých ostrůvků se určuje pro každou vrstvu zvlášť, takže různé vrstvy mohou nakonec používat různé strategie. Slicování je mírně pomalejší.\n"
"Hadovitě: klikaté procházení řádek po řádku, doladěné algoritmem 2-opt. Vhodné pro pravidelné mřížky mnoha malých dílů.\n"
"\n"
"Pokud je v téže vrstvě více filamentů nebo nástrojů, má přednost minimalizace výměn nástroje: objekty se nejprve seskupí podle filamentu a toto nastavení pak řadí pouze instance uvnitř každé skupiny, takže celková posloupnost nemusí vypadat jako nejkratší dráha po desce."
msgid "As object list"
msgstr "Jako seznam objektů"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Nejlepší ze všech (nejkratší dráha)"
# AI Translated
msgid "Snake"
msgstr "Hadovitě"
msgid "Slow printing down for better layer cooling"
msgstr "Zpomalit tisk pro lepší chlazení vrstvy"
@@ -14602,6 +14718,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroid"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Faktor vyhlazení řídké výplně"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Určuje, jak silně se zaoblují rohy řídké výplně. 0% zachová původní ostrou dráhu, zatímco 100% vytvoří největší možné křivky mezi sousedními liniemi výplně."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Akcelerace výplně horní plochy. Použití nižší hodnoty může zlepšit kvalitu horní plochy."
@@ -15154,6 +15278,14 @@ msgstr "Jaký typ G-code je s tiskárnou kompatibilní."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Vynechat konfigurační blok G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Nezapisuje CONFIG_BLOCK (dvojice klíč/hodnota s konfigurací sliceru) do souboru G-code. Může to pomoci u tiskáren, jejichž firmware při zpracování těchto řádků s komentáři havaruje (např. Anycubic go-klipper). Poznámka: soubor G-code již nebude obsahovat nastavení sliceru, takže jeho opětovný import do OrcaSlicer konfiguraci neobnoví."
msgid "Pellet Modded Printer"
msgstr "Tiskárna na pelety"
@@ -16221,6 +16353,14 @@ msgstr "Dlouhá retrakce při změně extruderu"
msgid "Retraction distance when extruder change"
msgstr "Délka retrakce při změně extruderu"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Délka retrakce (Změna nástroje)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Když je retrakce spuštěna před změnou nástroje, filament se zatáhne o zadanou hodnotu (délka se měří na nezpracovaném filamentu, než vstoupí do extruderu)."
msgid "Z-hop height"
msgstr "Výška Z-hopu"
@@ -16318,6 +16458,10 @@ msgstr "Dodatečná délka při restartu"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Při kompenzaci retrakce po pohybu přesunu extruder posune toto přídavné množství filamentu. Toto nastavení je potřeba jen zřídka."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Dodatečná délka při restartu (Změna nástroje)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Při kompenzaci retrakce po výměně nástroje extruder posune toto přídavné množství filamentu."
@@ -16736,6 +16880,14 @@ msgstr "Výměna nástroje na věži na očištění trysky"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Vynutí přejezd tiskové hlavy k věži na očištění trysky před vydáním příkazu k výměně nástroje (Tx). Týká se pouze tiskáren s více extrudery (více tiskovými hlavami), které používají věž na očištění trysky typu 2. Ve výchozím nastavení Orca na strojích s více tiskovými hlavami tento přejezd vynechává, protože výměnu hlavy řeší firmware, což může vést k vydání příkazu Tx nad tištěným dílem. Zapněte tuto volbu, chcete-li, aby byla výměna nástroje vždy vydána nad věží na očištění trysky."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Čekat na teplotu na věži na očištění trysky"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Vyzvedne nový nástroj, aniž by čekal na dosažení tiskové teploty, přejede na věž na očištění trysky a počká na teplotu tam, těsně před čištěním. Materiál vytékající při ohřevu skončí na věži místo na modelu a přejezd se překrývá s ohřevem. Relevantní pouze pro tiskárny s více extrudery (více tiskovými hlavami) používající věž na očištění trysky typu 2. Firmware ani makro pro změnu nástroje nesmí na teplotu čekat samo. Pokud je vypnuto, čekání na teplotu se vloží hned po příkazu ke změně nástroje."
msgid "No sparse layers (beta)"
msgstr "Žádné řídké vrstvy (beta)"
@@ -18850,6 +19002,20 @@ msgstr ""
"Ke jménu hostitele %1% je přiřazeno několik IP adres.\n"
"Vyberte prosím jednu, která má být použita."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Automatické měřítko podle trysky"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Tento model je navržen pro trysku 0,4 mm a výšku vrstvy 0,2 mm. \n"
"Je-li volba změny měřítka zapnuta (doporučeno), model se dynamicky přizpůsobí průměru vaší současné trysky a odpovídající výšce vrstvy, takže je test přesný a dobře čitelný.\n"
"Měřítko vypněte pouze tehdy, chcete-li vytisknout referenční model přesně tak, jak je."
msgid "PA Calibration"
msgstr "PA kalibrace"
@@ -18988,6 +19154,14 @@ msgstr "Počáteční rychlost: "
msgid "End speed: "
msgstr "Konec rychlosti: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Automaticky přizpůsobit maximální objemové rychlosti"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Pokud by koncová rychlost překročila maximální objemovou rychlost filamentu, automaticky snížit výšku vrstvy (se zachováním standardních hodnot a v rámci limitů stroje), aby jí bylo možné dosáhnout. Pokud nestačí ani minimální výška vrstvy, sníží se místo toho koncová rychlost."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18999,6 +19173,57 @@ msgstr ""
"krok >= 0\n"
"konec > start + krok"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Koncová rychlost (%.0f mm/s) překračuje maximální objemovou rychlost filamentu (%.1f mm³/s), která při této šířce čáry a výšce vrstvy omezuje vnější stěnu na přibližně %.0f mm/s.\n"
" Vyšší rychlosti budou oříznuty, takže horní bloky věže se nevytisknou požadovanou rychlostí.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Koncová rychlost (%.0f mm/s) překračuje maximální objemovou rychlost filamentu (%.1f mm³/s) při výchozí výšce vrstvy (%.2f mm).\n"
"\n"
"Výška vrstvy byla snížena na %.2f mm (hodnota používaná profily této tiskárny), aby věž mohla dosáhnout požadované rychlosti."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"I při nejmenší výšce vrstvy používané profily této tiskárny (%.2f mm) koncová rychlost (%.0f mm/s) překračuje maximální objemovou rychlost filamentu (%.1f mm³/s).\n"
"\n"
"Výška vrstvy bude nastavena na %.2f mm a koncová rychlost snížena na %.0f mm/s.\n"
"\n"
"Pokračovat?"
# AI Translated
msgid "Continue anyway?"
msgstr "Přesto pokračovat?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Zapnout „Automaticky přizpůsobit“ pro automatickou nápravu, nebo přesto pokračovat?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Zapnout „Automatické měřítko podle trysky“ a „Automaticky přizpůsobit“ pro automatickou nápravu, nebo přesto pokračovat?"
msgid "Start retraction length: "
msgstr "Počáteční délka retrakce: "
@@ -19926,9 +20151,6 @@ msgstr "Fyzická tiskárna"
msgid "Print Host upload"
msgstr "Nahrání na tiskový server"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou. Dostupní agenti jsou registrováni při spuštění."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Vyberte tiskárnu Flashforge"
@@ -20885,9 +21107,6 @@ msgstr "Při pokusu o přihlášení došlo k neočekávané chybě, zkuste to p
msgid "User canceled."
msgstr "Zrušeno uživatelem."
msgid "Head diameter"
msgstr "Průměr hlavy"
msgid "Max angle"
msgstr "Maximální úhel"
@@ -21756,6 +21975,25 @@ msgstr ""
"Zamezte kroucení\n"
"Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Výška vrstvy je příliš malá.\n"
#~ "Bude nastavena na min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Výška vrstvy přesahuje limit v Nastavení tiskárny -> Extruder -> Omezení výšky vrstvy, což může způsobit problémy s kvalitou tisku."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Automaticky upravit do nastaveného rozsahu?\n"
#~ msgid "Head diameter"
#~ msgstr "Průměr hlavy"
#~ msgid "Print order within a single layer."
#~ msgstr "Pořadí tisku v rámci jedné vrstvy."
#~ msgid "Bottom"
#~ msgstr "Dole"
@@ -21824,9 +22062,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Align infill direction to model"
#~ msgstr "Zarovnat směr výplně podle modelu"

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
"Language-Team: \n"
@@ -3804,6 +3804,10 @@ msgstr "Anordnen..."
msgid "Arranging"
msgstr "Anordnen"
# AI Translated
msgid "Arranging "
msgstr "Anordnen "
msgid "Arranging canceled."
msgstr "Anordnen abgebrochen."
@@ -4688,6 +4692,23 @@ msgstr "Die aktuelle Kammer-Temperatur ist höher als die sichere Temperatur des
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Die minimale Druckraumtemperatur (%d℃) ist höher als die Ziel-Druckraumtemperatur (%d℃). Der Minimalwert ist der Schwellenwert, bei dem der Druck beginnt, während der Druckraum weiter auf die Zieltemperatur heizt; er sollte diese daher nicht überschreiten. Er wird auf die Zieltemperatur begrenzt."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Die Schichthöhe ist zu klein. Sie wird auf den Mindestwert (%g mm) gesetzt."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Die Schichthöhe liegt außerhalb der in Druckereinstellungen -> Extruder -> Schichthöhenlimits festgelegten Grenzen. Dies kann zu Problemen mit der Druckqualität führen."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Automatisch an den Grenzwert (%g mm) anpassen?"
msgid "Adjust"
msgstr "Anpassen"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4808,6 +4829,13 @@ msgstr ""
"Ja - Arachne Wall Generator aktivieren\n"
"Nein - Arachne Wall Generator deaktivieren und den Modus [Verschiebung] des Fuzzy Skin setzen"
# AI Translated
msgid "Brim ear radius"
msgstr "Radius der Brim-Ohren"
msgid "Brim width"
msgstr "Randbreite"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Der Spiralmodus funktioniert nur, wenn die Wandschleifen 1 sind, die Stütze deaktiviert ist, die Klumpenerkennung durch Abtasten deaktiviert ist, die oberen Schichtlagen 0 sind, die Dichte der spärlichen Füllung 0 ist und der Zeitraffertyp traditionell ist."
@@ -5062,6 +5090,14 @@ msgstr "Fehler beim Generieren des Kalibrierungs-G-Codes"
msgid "Calibration error"
msgstr "Kalibrierungsfehler"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Dieser Drucker ist nicht mit der Hardware ausgestattet, die dieses Bedienelement benötigt."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Dieses Bedienelement wird von diesem Drucker nicht unterstützt."
# AI Translated
msgid "Network unavailable"
msgstr "Netzwerk nicht verfügbar"
@@ -5919,7 +5955,7 @@ msgstr "Volumen:"
msgid "Size:"
msgstr "Größe:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Konflikte von G-Code-Pfaden wurden bei Layer %d, Z = %.2lf mm gefunden.Bitte trennen Sie die konfliktbehafteten Objekte weiter voneinander (%s <-> %s)."
@@ -6099,6 +6135,10 @@ msgstr "Multi-Gerät"
msgid "Project"
msgstr "Projekt"
# AI Translated
msgid "Device (Web)"
msgstr "Gerät (Web)"
msgid "Yes"
msgstr "Ja"
@@ -8187,21 +8227,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Ersetzt %s.\n"
msgid "Replaced volumes"
msgstr "Ersetzte Volumen"
@@ -8937,6 +8977,18 @@ msgstr "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig a
msgid "Pop up to select filament grouping mode"
msgstr "Popup zum Auswählen des Filament-Gruppierungsmodus"
# AI Translated
msgid "Visible plugin pages"
msgstr "Sichtbare Plugin-Seiten"
# AI Translated
msgid "pages"
msgstr "Seiten"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Anzahl der Plugin-Seiten, die als feste Tabs angezeigt werden, bevor die übrigen Seiten im letzten Tab zu einem Dropdown zusammengefasst werden."
msgid "Behaviour"
msgstr "Verhalten"
@@ -9152,6 +9204,21 @@ msgstr "Untere Schichten abdunkeln"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Beim Bewegen des Schichtreglers in der geslicten Vorschau werden die Schichten unterhalb der aktuellen abgedunkelt dargestellt, sodass nur die betrachtete Schicht in voller Helligkeit angezeigt wird."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Helligkeit abgedunkelter Schichten"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Wie hell die abgedunkelten Schichten dargestellt werden, wenn \"Untere Schichten abdunkeln\" aktiviert ist.\n"
"99% ist kaum abgedunkelt, 0% stellt sie schwarz dar. Auf 99% begrenzt, da 100% dem Deaktivieren der Option entsprechen würde."
msgid "Login region"
msgstr "Anmeldungsregion"
@@ -9277,6 +9344,18 @@ msgstr "Nicht unterstützte Profile anzeigen"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Zeigt inkompatible/nicht unterstützte Profile in den Dropdown-Listen für Drucker und Filament an. Diese Profile können nicht ausgewählt werden."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimentell) Drucker-Agenten anstelle von Druck-Hosts verwenden"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Leitet Druckaufträge für Nicht-Bambu-Drucker über Drucker-Plugin-Agenten statt über den klassischen Druck-Host-Upload.\n"
"Wenn deaktiviert, verwendet OrcaSlicer das bisherige Druck-Host-Verhalten."
msgid "Experimental Features"
msgstr "Experimentelle Funktionen"
@@ -9539,9 +9618,25 @@ msgstr "Benutzerprofil"
msgid "Preset Inside Project"
msgstr "Projektbasiertes Profil"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Kopiert alle vom übergeordneten Profil geerbten Werte in dieses Profil und entfernt die Vererbungsbeziehung. Profile, die nur mit dem übergeordneten Profil kompatibel sind, können dadurch nicht mehr unterstützt werden."
msgid "Detach from parent"
msgstr "Vom übergeordneten Element trennen"
# AI Translated
msgid "Unique preset"
msgstr "Eigenständiges Profil"
# AI Translated
msgid "Parent preset"
msgstr "Übergeordnetes Profil"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Dieses Profil erbt nicht von einem anderen Profil."
msgid "Name is unavailable."
msgstr "Der Name ist nicht verfügbar."
@@ -10277,22 +10372,6 @@ msgstr "Sind Sie sicher, dass Sie diese Option aktivieren möchten?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Infill-Muster sind in der Regel so konzipiert, dass sie eine automatische Drehung ermöglichen, um einen ordnungsgemäßen Druck zu gewährleisten und die beabsichtigten Effekte zu erzielen (z. B. Gyroid, Cubic). Das Drehen des aktuellen spärlichen Infill-Musters kann zu unzureichender Unterstützung führen. Bitte gehen Sie vorsichtig vor und überprüfen Sie gründlich auf mögliche Druckprobleme. Sind Sie sicher, dass Sie diese Option aktivieren möchten?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Die Schichthöhe ist zu klein.\n"
"Sie wird auf min_layer_height gesetzt\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen."
msgid "Adjust to the set range automatically?\n"
msgstr "Automatisch an den eingestellten Bereich anpassen?\n"
msgid "Adjust"
msgstr "Anpassen"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Experimentelle Funktion: Filament beim Filamentwechsel weiter zurückziehen und abschneiden, um den Flush zu minimieren. Obwohl dies den Flush deutlich reduzieren kann, kann es auch das Risiko von Düsenverstopfungen oder anderen Druckkomplikationen erhöhen."
@@ -10486,6 +10565,9 @@ msgstr "Reservierte Schlüsselwörter gefunden"
msgid "Setting Overrides"
msgstr "Überschreiben der Einstellungen"
msgid "Retraction when switching material"
msgstr "Rückzug bei Materialwechsel"
msgid "Basic information"
msgstr "Grundlegende Informationen"
@@ -10615,6 +10697,12 @@ msgstr "Kompatible Prozessprofile"
msgid "Printable space"
msgstr "Druckbarer Raum"
msgid "Printer Agent"
msgstr "Drucker-Agent"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10740,9 +10828,6 @@ msgstr "Höhenbegrenzungen für Schichten"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Rückzug bei Materialwechsel"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -12084,6 +12169,10 @@ msgstr " ist zu nahe am Sperrbereich und es werden Kollisionen verursacht.\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " ist zu nahe am Klumpenerkennungsbereich und es werden Kollisionen verursacht.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " liegt teilweise außerhalb des druckbaren Bereichs und kann nicht gedruckt werden.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Die ausgewählten Düsentemperaturen sind nicht kompatibel. Die Düsentemperatur jedes Filaments muss innerhalb des empfohlenen Düsentemperaturbereichs der anderen Filamente liegen. Andernfalls kann es zu Düsenverstopfungen oder Druckerschäden kommen."
@@ -12399,9 +12488,6 @@ msgstr "Benutze 3MF statt G-Code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Aktivieren Sie diese Option, wenn der Drucker eine 3MF-Datei als Druckauftrag akzeptiert. Wenn aktiviert, sendet Orca Slicer die geslicete Datei als .gcode.3mf, anstatt als einfache .gcode-Datei."
msgid "Printer Agent"
msgstr "Drucker-Agent"
msgid "Select the network agent implementation for printer communication."
msgstr "Wählen Sie die Netzwerk-Agent-Implementierung für die Druckerkommunikation aus."
@@ -13072,9 +13158,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Geschwindigkeit der internen Brücken. Wenn der Wert als Prozentsatz angegeben wird, wird er auf der Grundlage der Brückengeschwindigkeit berechnet. Der Standardwert beträgt 150 %."
msgid "Brim width"
msgstr "Randbreite"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Abstand vom Modell zur äußersten Randlinie"
@@ -13155,6 +13238,14 @@ msgstr ""
"Die Geometrie wird vor der Erkennung scharfer Winkel reduziert. Dieser Parameter ist ein Indikator für die minimale Länge der Abweichung für die Reduzierung.\n"
"0 zum Deaktivieren."
# AI Translated
msgid "Brim ears outer only"
msgstr "Brim-Ohren nur außen"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Erzeugt Mausohren nur an der Außenkontur des Modells, ohne Löcher und geschlossene Bereiche."
msgid "upward compatible machine"
msgstr "Aufwärtskompatible Maschine"
@@ -13180,12 +13271,37 @@ msgstr "Nach Objekt"
msgid "Intra-layer order"
msgstr "Intra-Schicht-Reihenfolge"
msgid "Print order within a single layer."
msgstr "Druckreihenfolge innerhalb einer einzelnen Schicht"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Reihenfolge, in der die Objektinstanzen innerhalb einer einzelnen Schicht angefahren werden. Sie bestimmt, wie viel Eilgang für die Bewegung zwischen ihnen aufgewendet wird.\n"
"\n"
"Standard: Verkettung nach dem nächsten Nachbarn, verfeinert mit 2-opt und Entfernen von Überkreuzungen. Eine gute allgemeine Wahl.\n"
"Als Objektliste: Die Instanzen werden in derselben Reihenfolge wie in der Objektliste gedruckt, ohne jede Pfadoptimierung. Verwenden Sie diese Option, wenn Sie eine vorhersehbare, manuell gesteuerte Reihenfolge benötigen.\n"
"Bestes Ergebnis (kürzester Weg): Alle Strategien werden ausgewertet und die kürzeste wird verwendet. Die Reihenfolge der Objektinstanzen wird einmal für den gesamten Druck festgelegt, während die Reihenfolge der einzelnen Inseln pro Schicht bestimmt wird, sodass verschiedene Schichten unterschiedliche Strategien verwenden können. Etwas langsameres Slicing.\n"
"Schlangenlinie: Zeilenweiser Mäanderverlauf, verfeinert mit 2-opt. Gut geeignet für regelmäßige Raster aus vielen kleinen Teilen.\n"
"\n"
"Bei mehreren Filamenten oder Werkzeugen in derselben Schicht hat das Minimieren der Werkzeugwechsel Vorrang: Objekte werden zuerst nach Filament gruppiert und diese Einstellung ordnet nur die Instanzen innerhalb jeder Filamentgruppe. Die Gesamtabfolge sieht daher möglicherweise nicht wie der kürzeste Weg über die Platte aus."
msgid "As object list"
msgstr "Als Objektliste"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Bestes Ergebnis (kürzester Weg)"
# AI Translated
msgid "Snake"
msgstr "Schlangenlinie"
msgid "Slow printing down for better layer cooling"
msgstr "Verlangsamen Sie den Druck für eine bessere Schichtkühlung"
@@ -14297,6 +14413,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroid"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Glättungsfaktor der Füllung"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Legt fest, wie stark die Ecken der Füllung abgerundet werden. 0% behält den ursprünglichen scharfkantigen Pfad bei, während 100% die größtmöglichen Kurven zwischen benachbarten Fülllinien erzeugt."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Dies ist die Beschleunigung der Füllung von der obersten Schicht. Die Verwendung eines niedrigeren Werts kann die Qualität der Oberfläche verbessern."
@@ -14830,6 +14954,14 @@ msgstr "Mit welcher Art von G-Code ist der Drucker kompatibel."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "G-code-Konfigurationsblock auslassen"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Schreibt den CONFIG_BLOCK (die Schlüssel-Wert-Paare der Slicer-Konfiguration) nicht in die G-code-Datei. Das kann bei Druckern helfen, deren Firmware beim Verarbeiten dieser Kommentarzeilen abstürzt (z. B. Anycubic go-klipper). Hinweis: Die G-code-Datei enthält dann keine Slicer-Einstellungen mehr, sodass beim erneuten Importieren in OrcaSlicer die Konfiguration nicht wiederhergestellt wird."
msgid "Pellet Modded Printer"
msgstr "Pellet-Modifizierter Drucker"
@@ -15876,6 +16008,14 @@ msgstr "Langer Rückzug beim Extruderwechsel"
msgid "Retraction distance when extruder change"
msgstr "Rückzugslänge beim Extruderwechsel"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Rückzugslänge (Werkzeugwechsel)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Wenn vor einem Werkzeugwechsel ein Rückzug ausgelöst wird, wird das Filament um den angegebenen Betrag zurückgezogen (die Länge wird am rohen Filament gemessen, bevor es in den Extruder gelangt)."
msgid "Z-hop height"
msgstr "Z-Hub-Höhe"
@@ -15970,6 +16110,10 @@ msgstr "Zusätzliche Länge beim Neustart"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Wenn die Rückzugskompensation nach dem Reisemove durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben. Diese Einstellung wird nur selten benötigt."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Zusätzliche Länge beim Neustart (Werkzeugwechsel)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Wenn die Rückzugskompensation nach dem Wechsel des Werkzeugs durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben."
@@ -16387,6 +16531,14 @@ msgstr "Werkzeugwechsel auf dem Reinigungsturm"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Erzwinge, dass der Werkzeugkopf zum Reinigungsturm fährt, bevor der Werkzeugwechselbefehl (Tx) ausgegeben wird. Nur relevant für Mehrfach-Extruder (Mehrfach-Werkzeugkopf) Drucker, die einen Typ-2-Reinigungsturm verwenden. Standardmäßig überspringt Orca die Fahrt auf Mehrfach-Werkzeugkopf-Maschinen, da die Firmware den Kopfwechsel übernimmt, was dazu führen kann, dass der Tx-Befehl über dem gedruckten Teil ausgegeben wird. Aktivieren Sie diese Option, wenn Sie möchten, dass der Werkzeugwechsel immer über dem Reinigungsturm ausgegeben wird."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Auf Temperatur am Reinigungsturm warten"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Nimmt das neue Werkzeug auf, ohne auf das Erreichen der Drucktemperatur zu warten, fährt zum Reinigungsturm und wartet dort unmittelbar vor dem Spülen auf die Temperatur. Das beim Aufheizen austretende Material landet auf dem Turm statt auf dem Modell, und die Fahrt überlappt sich mit dem Aufheizen. Nur relevant für Multi-Extruder-Drucker (mehrere Werkzeugköpfe) mit einem Reinigungsturm vom Typ 2. Die Firmware bzw. das Werkzeugwechsel-Makro darf nicht selbst auf die Temperatur warten. Wenn deaktiviert, wird das Warten auf die Temperatur direkt nach dem Werkzeugwechselbefehl ausgegeben."
msgid "No sparse layers (beta)"
msgstr "Keine dünnen Schichten (Beta)"
@@ -18487,6 +18639,20 @@ msgstr ""
"Es gibt mehrere IP-Adressen, die zu Hostname %1% auflösen.\n"
"Bitte wählen Sie eine aus, die verwendet werden soll."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Automatisch an Düse skalieren"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Dieses Modell ist für eine 0,4 mm Düse mit einer Schichthöhe von 0,2 mm ausgelegt. \n"
"Wenn die Skalierungsoption aktiviert ist (empfohlen), wird das Modell dynamisch an Ihren aktuellen Düsendurchmesser und eine passende Schichthöhe angepasst, sodass der Test sowohl genau als auch gut ablesbar ist.\n"
"Deaktivieren Sie die Skalierung nur, wenn Sie das Referenzmodell exakt so drucken möchten, wie es ist."
msgid "PA Calibration"
msgstr "PA Kalibrierung"
@@ -18623,6 +18789,14 @@ msgstr "Startgeschwindigkeit"
msgid "End speed: "
msgstr "Endgeschwindigkeit"
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Automatisch an maximale Volumengeschwindigkeit anpassen"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Wenn die Endgeschwindigkeit die maximale Volumengeschwindigkeit des Filaments überschreiten würde, wird die Schichthöhe automatisch verringert (unter Beibehaltung üblicher Werte und innerhalb der Grenzen der Maschine), um sie zu erreichen. Reicht selbst die minimale Schichthöhe nicht aus, wird stattdessen die Endgeschwindigkeit gesenkt."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18634,6 +18808,57 @@ msgstr ""
"Schritt >= 0\n"
"Ende > Start + Schritt"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Die Endgeschwindigkeit (%.0f mm/s) überschreitet die maximale Volumengeschwindigkeit des Filaments (%.1f mm³/s), wodurch die Außenwand bei dieser Linienbreite und Schichthöhe auf etwa %.0f mm/s begrenzt wird.\n"
" Höhere Geschwindigkeiten werden begrenzt, sodass die oberen Blöcke des Turms nicht mit der gewünschten Geschwindigkeit gedruckt werden.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Die Endgeschwindigkeit (%.0f mm/s) überschreitet die maximale Volumengeschwindigkeit des Filaments (%.1f mm³/s) bei der Standard-Schichthöhe (%.2f mm).\n"
"\n"
"Die Schichthöhe wurde auf %.2f mm verringert (ein Wert, der in den Profilen dieses Druckers verwendet wird), damit der Turm die gewünschte Geschwindigkeit erreichen kann."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Selbst bei der kleinsten Schichthöhe, die in den Profilen dieses Druckers verwendet wird (%.2f mm), überschreitet die Endgeschwindigkeit (%.0f mm/s) die maximale Volumengeschwindigkeit des Filaments (%.1f mm³/s).\n"
"\n"
"Die Schichthöhe wird auf %.2f mm gesetzt und die Endgeschwindigkeit auf %.0f mm/s verringert.\n"
"\n"
"Fortfahren?"
# AI Translated
msgid "Continue anyway?"
msgstr "Trotzdem fortfahren?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"Automatisch anpassen\" aktivieren, um dies automatisch zu beheben, oder trotzdem fortfahren?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"Automatisch an Düse skalieren\" und \"Automatisch anpassen\" aktivieren, um dies automatisch zu beheben, oder trotzdem fortfahren?"
msgid "Start retraction length: "
msgstr "Start Rückzugslänge"
@@ -19533,9 +19758,6 @@ msgstr "Drucker"
msgid "Print Host upload"
msgstr "Hochladen zum Druck-Host"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert."
msgid "Select a Flashforge printer"
msgstr "Wählen Sie einen Flashforge-Drucker aus"
@@ -20383,9 +20605,6 @@ msgstr "Es ist etwas Unerwartetes passiert, als Sie versucht haben, sich anzumel
msgid "User canceled."
msgstr "Benutzer abgebrochen."
msgid "Head diameter"
msgstr "Kopfdurchmesser"
msgid "Max angle"
msgstr "Maximaler Winkel"
@@ -21169,6 +21388,25 @@ msgstr ""
"Verwerfungen vermeiden\n"
"Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Die Schichthöhe ist zu klein.\n"
#~ "Sie wird auf min_layer_height gesetzt\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Automatisch an den eingestellten Bereich anpassen?\n"
#~ msgid "Head diameter"
#~ msgstr "Kopfdurchmesser"
#~ msgid "Print order within a single layer."
#~ msgstr "Druckreihenfolge innerhalb einer einzelnen Schicht"
#~ msgid "Bottom"
#~ msgstr "Unten"
@@ -21261,9 +21499,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Renders cast shadows on the plate in realistic view."
#~ msgstr "Zeigt geworfene Schatten auf der Platte in der realistischen Ansicht an."

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
"Last-Translator: Alexandre Folle de Menezes\n"
"Language-Team: \n"
@@ -3604,6 +3604,9 @@ msgstr ""
msgid "Arranging"
msgstr ""
msgid "Arranging "
msgstr ""
msgid "Arranging canceled."
msgstr ""
@@ -4445,6 +4448,20 @@ msgstr ""
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr ""
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr ""
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr ""
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr ""
msgid "Adjust"
msgstr ""
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4526,6 +4543,12 @@ msgid ""
"No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin"
msgstr ""
msgid "Brim ear radius"
msgstr ""
msgid "Brim width"
msgstr ""
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr ""
@@ -4777,6 +4800,12 @@ msgstr ""
msgid "Calibration error"
msgstr ""
msgid "This printer is not configured with the hardware this control needs."
msgstr ""
msgid "This control is not supported on this printer."
msgstr ""
msgid "Network unavailable"
msgstr ""
@@ -5608,7 +5637,7 @@ msgstr ""
msgid "Size:"
msgstr ""
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr ""
@@ -5783,6 +5812,9 @@ msgstr ""
msgid "Project"
msgstr ""
msgid "Device (Web)"
msgstr ""
msgid "Yes"
msgstr ""
@@ -7773,20 +7805,20 @@ msgstr ""
msgid "Replaced with 3D files from directory:\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: same file.\n"
#, c-format, boost-format
msgid "✖ Skipped %s: same file.\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: file does not exist.\n"
#, c-format, boost-format
msgid "✖ Skipped %s: file does not exist.\n"
msgstr ""
#, boost-format
msgid "✖ Skipped %1%: failed to replace.\n"
#, c-format, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr ""
#, boost-format
msgid "✔ Replaced %1%.\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr ""
msgid "Replaced volumes"
@@ -8465,6 +8497,15 @@ msgstr ""
msgid "Pop up to select filament grouping mode"
msgstr ""
msgid "Visible plugin pages"
msgstr ""
msgid "pages"
msgstr ""
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr ""
msgid "Behaviour"
msgstr ""
@@ -8657,6 +8698,17 @@ msgstr ""
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr ""
msgid "Dimmed layer brightness"
msgstr ""
msgid "%"
msgstr ""
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
msgid "Login region"
msgstr ""
@@ -8779,6 +8831,14 @@ msgstr ""
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr ""
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr ""
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
msgid "Experimental Features"
msgstr ""
@@ -9034,9 +9094,21 @@ msgstr ""
msgid "Preset Inside Project"
msgstr ""
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr ""
msgid "Detach from parent"
msgstr ""
msgid "Unique preset"
msgstr ""
msgid "Parent preset"
msgstr ""
msgid "This preset does not inherit from another preset."
msgstr ""
msgid "Name is unavailable."
msgstr ""
@@ -9714,20 +9786,6 @@ msgstr ""
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr ""
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr ""
msgid "Adjust to the set range automatically?\n"
msgstr ""
msgid "Adjust"
msgstr ""
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr ""
@@ -9913,6 +9971,9 @@ msgstr ""
msgid "Setting Overrides"
msgstr ""
msgid "Retraction when switching material"
msgstr ""
msgid "Basic information"
msgstr ""
@@ -10039,6 +10100,12 @@ msgstr ""
msgid "Printable space"
msgstr ""
msgid "Printer Agent"
msgstr ""
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr ""
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10161,9 +10228,6 @@ msgstr ""
msgid "Z-Hop"
msgstr ""
msgid "Retraction when switching material"
msgstr ""
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11427,6 +11491,9 @@ msgstr ""
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr ""
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr ""
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr ""
@@ -11722,9 +11789,6 @@ msgstr ""
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr ""
msgid "Printer Agent"
msgstr ""
msgid "Select the network agent implementation for printer communication."
msgstr ""
@@ -12261,9 +12325,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr ""
msgid "Brim width"
msgstr ""
msgid "This is the distance from the model to the outermost brim line."
msgstr ""
@@ -12329,6 +12390,12 @@ msgid ""
"0 to deactivate."
msgstr ""
msgid "Brim ears outer only"
msgstr ""
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr ""
msgid "upward compatible machine"
msgstr ""
@@ -12353,12 +12420,26 @@ msgstr ""
msgid "Intra-layer order"
msgstr ""
msgid "Print order within a single layer."
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
msgid "As object list"
msgstr ""
msgid "Best of all (shortest path)"
msgstr ""
msgid "Snake"
msgstr ""
msgid "Slow printing down for better layer cooling"
msgstr ""
@@ -13327,6 +13408,12 @@ msgstr ""
msgid "Gyroid"
msgstr ""
msgid "Sparse infill smooth factor"
msgstr ""
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr ""
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr ""
@@ -13807,6 +13894,12 @@ msgstr ""
msgid "Klipper"
msgstr ""
msgid "Skip G-code config block"
msgstr ""
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr ""
msgid "Pellet Modded Printer"
msgstr ""
@@ -14768,6 +14861,12 @@ msgstr ""
msgid "Retraction distance when extruder change"
msgstr ""
msgid "Retraction Length (Toolchange)"
msgstr ""
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr ""
msgid "Z-hop height"
msgstr ""
@@ -14861,6 +14960,9 @@ msgstr ""
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr ""
msgid "Extra length on restart (Toolchange)"
msgstr ""
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr ""
@@ -15246,6 +15348,12 @@ msgstr ""
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr ""
msgid "Wait for temperature on wipe tower"
msgstr ""
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr ""
msgid "No sparse layers (beta)"
msgstr ""
@@ -17214,6 +17322,15 @@ msgid ""
"Please select one that should be used."
msgstr ""
msgid "Auto-scale for nozzle"
msgstr ""
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
msgid "PA Calibration"
msgstr ""
@@ -17336,6 +17453,12 @@ msgstr ""
msgid "End speed: "
msgstr ""
msgid "Auto-adjust to max volumetric speed"
msgstr ""
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr ""
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -17343,6 +17466,39 @@ msgid ""
"end > start + step"
msgstr ""
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
msgid "Continue anyway?"
msgstr ""
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr ""
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr ""
msgid "Start retraction length: "
msgstr ""
@@ -18173,9 +18329,6 @@ msgstr ""
msgid "Print Host upload"
msgstr ""
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr ""
msgid "Select a Flashforge printer"
msgstr ""
@@ -19007,9 +19160,6 @@ msgstr ""
msgid "User canceled."
msgstr ""
msgid "Head diameter"
msgstr ""
msgid "Max angle"
msgstr ""

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Ian A. Bassi <>\n"
"Language-Team: \n"
@@ -3686,6 +3686,10 @@ msgstr "Organizando..."
msgid "Arranging"
msgstr "Organizando"
# AI Translated
msgid "Arranging "
msgstr "Organizando "
msgid "Arranging canceled."
msgstr "Organización cancelada."
@@ -4560,6 +4564,23 @@ msgstr "La temperatura actual de la recámara es superior a la temperatura de se
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "La temperatura mínima de la recámara (%d℃) es superior a la temperatura objetivo de la recámara (%d℃). El valor mínimo es el umbral en el que comienza la impresión mientras la recámara continúa calentándose hacia el objetivo, por lo que no debería superarlo. Se ajustará al valor objetivo."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "La altura de capa es demasiado pequeña. Se establecerá en el mínimo (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "La altura de capa está fuera de los límites establecidos en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "¿Ajustarla automáticamente al límite (%g mm)?"
msgid "Adjust"
msgstr "Ajustar"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4680,6 +4701,13 @@ msgstr ""
"Sí: habilitar el generador de muros Arachne\n"
"No: deshabilitar el generador de paredes Arachne y establecer el modo [Desplazamiento] de la piel rugosa"
# AI Translated
msgid "Brim ear radius"
msgstr "Radio de las orejas de borde"
msgid "Brim width"
msgstr "Ancho del borde de adherencia"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "El modo espiral solo funciona cuando los bucles de perímetro son 1, el soporte está desactivado, la detección de agrupamientos mediante sondeo está desactivada, las capas superiores de la carcasa son 0, la densidad de relleno es 0 y el tipo de lapso de tiempo es tradicional."
@@ -4934,6 +4962,14 @@ msgstr "Fallo al generar el G-Code de calibración"
msgid "Calibration error"
msgstr "Error de calibración"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Esta impresora no está configurada con el hardware que necesita este control."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Este control no es compatible con esta impresora."
msgid "Network unavailable"
msgstr "Red no disponible"
@@ -5775,7 +5811,7 @@ msgstr "Volumen:"
msgid "Size:"
msgstr "Tamaño:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, Z = %.2lfmm. Por favor, separe más los objetos en conflicto (%s <-> %s)."
@@ -5956,6 +5992,10 @@ msgstr "Multi-dispositivo"
msgid "Project"
msgstr "Proyecto"
# AI Translated
msgid "Device (Web)"
msgstr "Dispositivo (Web)"
msgid "Yes"
msgstr "Sí"
@@ -7993,21 +8033,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Reemplazado %s.\n"
msgid "Replaced volumes"
msgstr "Volúmenes reemplazados"
@@ -8721,6 +8761,18 @@ msgstr "Con esta opción activada, puede enviar una tarea a varios dispositivos
msgid "Pop up to select filament grouping mode"
msgstr "Ventana emergente para seleccionar el modo de agrupación de filamentos"
# AI Translated
msgid "Visible plugin pages"
msgstr "Páginas de plugins visibles"
# AI Translated
msgid "pages"
msgstr "páginas"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Número de páginas de plugins que se muestran como pestañas fijas antes de que el resto de páginas se agrupe en un desplegable en la última pestaña."
msgid "Behaviour"
msgstr "Comportamiento"
@@ -8931,6 +8983,21 @@ msgstr "Atenuar las capas inferiores"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Al desplazar el control deslizante de capas en la vista previa laminada, oscurece las capas inferiores a la actual para que solo la capa visualizada se muestre a pleno brillo."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Brillo de las capas atenuadas"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Con qué brillo se muestran las capas atenuadas cuando \"Atenuar las capas inferiores\" está activado.\n"
"99% apenas se oscurece y 0% las muestra en negro. Está limitado al 99% porque el 100% equivaldría a desactivar la opción."
msgid "Login region"
msgstr "Región de inicio de sesión"
@@ -9055,6 +9122,18 @@ msgstr "Mostrar ajustes preestablecidos no compatibles"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Mostrar los ajustes preestablecidos incompatibles o no compatibles en los menús desplegables de impresoras y filamentos. Estos ajustes preestablecidos no se pueden seleccionar."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimental) Usar agentes de impresora en lugar de hosts de impresión"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Envía los trabajos de impresión de impresoras que no son Bambu a través de los agentes de plugin de impresora en lugar del flujo clásico de subida al host de impresión.\n"
"Cuando está desactivado, OrcaSlicer utiliza el comportamiento heredado del host de impresión."
msgid "Experimental Features"
msgstr "Funciones experimentales"
@@ -9314,9 +9393,25 @@ msgstr "Perfil de usuario"
msgid "Preset Inside Project"
msgstr "Perfil interno del proyecto"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Copia en este perfil todos los valores heredados del perfil padre y elimina la relación de herencia. Los perfiles compatibles solo con el perfil padre pueden dejar de ser compatibles."
msgid "Detach from parent"
msgstr "Separar del elemento padre"
# AI Translated
msgid "Unique preset"
msgstr "Perfil único"
# AI Translated
msgid "Parent preset"
msgstr "Perfil padre"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Este perfil no hereda de otro perfil."
msgid "Name is unavailable."
msgstr "El nombre no está disponible."
@@ -10012,22 +10107,6 @@ msgstr "¿Está seguro de que desea activar esta opción?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Los patrones de relleno suelen diseñarse para gestionar la rotación automáticamente y asegurar una impresión adecuada y lograr sus efectos previstos (p. ej., Giroide, Cúbico). Rotar el patrón de relleno actual puede provocar soporte insuficiente. Proceda con precaución y compruebe detenidamente posibles problemas de impresión. ¿Está seguro de que desea activar esta opción?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"La altura de la capa es demasiado pequeña.\n"
"Se establecerá en min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
msgid "Adjust to the set range automatically?\n"
msgstr "¿Desea ajustar el rango automáticamente?\n"
msgid "Adjust"
msgstr "Ajustar"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Función experimental: retraer y cortar el filamento a una mayor distancia durante los cambios de filamento para minimizar el purgado. Aunque puede reducir notablemente el purgado, también puede aumentar el riesgo de atascos de boquilla u otras complicaciones de impresión.Característica experimental: Retraer y cortar el filamento a mayor distancia durante los cambios de filamento para minimizar el descarte. Aunque puede reducir notablemente el descarte, también puede elevar el riesgo de atascos de boquillas u otros problemas en la impresión."
@@ -10219,6 +10298,9 @@ msgstr "Palabras clave utilizadas y encontradas"
msgid "Setting Overrides"
msgstr "Sobreescribir Ajustes de impresora"
msgid "Retraction when switching material"
msgstr "Retracción al cambiar de material"
msgid "Basic information"
msgstr "Información básica"
@@ -10345,6 +10427,12 @@ msgstr "Perfiles de proceso compatibles"
msgid "Printable space"
msgstr "Espacio imprimible"
msgid "Printer Agent"
msgstr "Agente de impresora"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10470,9 +10558,6 @@ msgstr "Límites de altura de la capa"
msgid "Z-Hop"
msgstr "Salto en Z"
msgid "Retraction when switching material"
msgstr "Retracción al cambiar de material"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11790,6 +11875,10 @@ msgstr " está demasiado cerca de una zona de exclusión, lo que provocará coli
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " está demasiado cerca del área de detección de aglomeraciones, y se producirán colisiones.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " está parcialmente fuera del área imprimible, y no se puede imprimir.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Las temperaturas de boquilla seleccionadas son incompatibles. La temperatura de boquilla de cada filamento debe estar dentro del rango de temperaturas recomendado para los demás filamentos. De lo contrario, podrían producirse atascos en la boquilla o daños en la impresora."
@@ -12097,9 +12186,6 @@ msgstr "Utiliza 3MF en lugar de G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Activa esta opción si la impresora admite un archivo 3MF como trabajo de impresión. Cuando está activada, Orca Slicer envía el archivo cortado como un archivo .gcode.3mf, en lugar de como un archivo .gcode convencional."
msgid "Printer Agent"
msgstr "Agente de impresora"
msgid "Select the network agent implementation for printer communication."
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora."
@@ -12775,9 +12861,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Velocidad de los puntes internos. Si se expresa como un porcentaje, será Calculado en base a la velocidad de puente. El valor por defecto es 150%."
msgid "Brim width"
msgstr "Ancho del borde de adherencia"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Distancia del modelo a la línea más externa del borde de adherencia."
@@ -12857,6 +12940,14 @@ msgstr ""
"La geometría se verá diezmada antes de detectar angulos agudos. Este parámetro indica la longitud mínima de desviación para el diezmado\n"
"0 para desactivar."
# AI Translated
msgid "Brim ears outer only"
msgstr "Orejas de borde solo en el exterior"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Genera orejas de ratón únicamente en el contorno exterior del modelo, excluyendo agujeros y secciones cerradas."
msgid "upward compatible machine"
msgstr "máquina compatible ascendente"
@@ -12881,12 +12972,37 @@ msgstr "Por objeto"
msgid "Intra-layer order"
msgstr "Orden dentro de la capa"
msgid "Print order within a single layer."
msgstr "Orden de impresión dentro de cada capa."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Orden en el que se recorren las instancias de objeto dentro de una misma capa, lo que determina cuánto desplazamiento se emplea para moverse entre ellas.\n"
"\n"
"Por defecto: encadenado por vecino más cercano, refinado con 2-opt y eliminación de cruces. Una buena opción general.\n"
"Como lista de objetos: las instancias se imprimen en el mismo orden que la lista de objetos, sin ninguna optimización de trayectoria. Úselo cuando necesite un orden predecible y controlado manualmente.\n"
"La mejor de todas (trayectoria más corta): se evalúan todas las estrategias y se utiliza la más corta. El orden de las instancias de objeto se decide una sola vez para toda la impresión, mientras que el orden de las islas individuales se decide capa por capa, por lo que distintas capas pueden acabar usando estrategias diferentes. El laminado es algo más lento.\n"
"Serpentina: recorrido serpenteante fila por fila, refinado con 2-opt. Muy adecuado para rejillas regulares de muchas piezas pequeñas.\n"
"\n"
"Con varios filamentos o herramientas en la misma capa, minimizar los cambios de herramienta tiene prioridad: los objetos se agrupan primero por filamento y este ajuste solo ordena las instancias dentro de cada grupo de filamento, por lo que la secuencia global puede no parecer la trayectoria más corta a lo largo de la cama."
msgid "As object list"
msgstr "Como lista de objetos"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "La mejor de todas (trayectoria más corta)"
# AI Translated
msgid "Snake"
msgstr "Serpentina"
msgid "Slow printing down for better layer cooling"
msgstr "Reducir la velocidad de impresión para mejorar la refrigeración de las capas"
@@ -13967,6 +14083,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroide"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Factor de suavizado del relleno poco denso"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Controla cuánto se redondean las esquinas del relleno poco denso. 0% mantiene el trazado original con esquinas vivas, mientras que 100% produce las curvas más amplias posibles entre líneas de relleno adyacentes."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede mejorar la calidad de la superficie superior."
@@ -14500,6 +14624,14 @@ msgstr "Con qué tipo de G-Code es compatible la impresora."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Omitir el bloque de configuración del G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "No escribe el CONFIG_BLOCK (los pares clave/valor de la configuración del laminador) en el archivo G-code. Esto puede ayudar con impresoras cuyo firmware falla al analizar esas líneas de comentario (p. ej. Anycubic go-klipper). Nota: el archivo G-code ya no contendrá los ajustes del laminador, por lo que al importarlo de nuevo en OrcaSlicer no se restaurará la configuración."
msgid "Pellet Modded Printer"
msgstr "Impresora Modificada para Pellets"
@@ -15539,6 +15671,14 @@ msgstr "Retracción larga al cambiar de extrusor"
msgid "Retraction distance when extruder change"
msgstr "Distancia de retracción al cambiar de extrusor"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Longitud de retracción (Cambio de herramienta)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Cuando se activa la retracción antes de un cambio de herramienta, el filamento se retrae la cantidad especificada (la longitud se mide sobre el filamento en bruto, antes de entrar en el extrusor)."
msgid "Z-hop height"
msgstr "Altura de Salto en Z"
@@ -15632,6 +15772,10 @@ msgstr "Longitud extra de reinicio"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Cuando la retracción se compensa después de un desplazamiento, el extrusor expulsará esta cantidad adicional de filamento. Esta función no suele ser necesaria."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Longitud extra de reinicio (Cambio de herramienta)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Cuando se compensa la retracción después de cambiar de cabezal, el extrusor expulsará esta cantidad adicional de filamento."
@@ -16038,6 +16182,14 @@ msgstr "Cambio de herramienta en la torre de purga"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Obliga al cabezal a desplazarse hasta la torre de purga antes de emitir el comando de cambio de herramienta (Tx). Solo es relevante para impresoras con múltiples extrusores (múltiples cabezales) que utilicen una torre de limpieza de tipo 2. Por defecto, Orca omite el desplazamiento en máquinas con múltiples cabezales porque el firmware se encarga del cambio de cabezal, lo que puede provocar que el comando Tx se emita por encima de la pieza impresa. Habilita esta opción si deseas que el cambio de herramienta se emita siempre por encima de la torre de purga."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Esperar la temperatura en la torre de purga"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Recoge la nueva herramienta sin esperar a que alcance la temperatura de impresión, se desplaza a la torre de purga y espera allí la temperatura, justo antes de purgar. El rezumado del calentamiento cae sobre la torre en lugar de sobre el modelo, y el desplazamiento se solapa con el calentamiento. Solo es relevante para impresoras multiextrusor (multicabezal) que usan una torre de purga de tipo 2. El firmware o la macro de cambio de herramienta no deben esperar la temperatura por su cuenta. Cuando está desactivado, la espera de temperatura se emite justo después del comando de cambio de herramienta."
msgid "No sparse layers (beta)"
msgstr "Sin capas de baja densidad (beta)"
@@ -18122,6 +18274,20 @@ msgstr ""
"Hay varias direcciones IP resueltas del nombre del host %1%.\n"
"Por favor, seleccione la que debe usarse."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Escalar automáticamente para la boquilla"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Este modelo está diseñado para una boquilla de 0,4 mm con una altura de la capa de 0,2 mm. \n"
"Cuando la opción de escalado está activada (recomendado), el modelo se redimensiona dinámicamente para adaptarse al diámetro de boquilla actual y a una altura de capa adecuada, lo que hace que la prueba sea precisa y fácil de leer.\n"
"Desactive el escalado solo si desea imprimir el modelo de referencia exactamente tal cual."
msgid "PA Calibration"
msgstr "Calibración PA"
@@ -18258,6 +18424,14 @@ msgstr "Velocidad inicial: "
msgid "End speed: "
msgstr "Velocidad final: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Ajustar automáticamente a la velocidad volumétrica máxima"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Si la velocidad final superara la velocidad volumétrica máxima del filamento, se reduce automáticamente la altura de la capa (manteniendo valores estándar y dentro de los límites de la máquina) para alcanzarla. Si ni siquiera la altura de capa mínima es suficiente, se reduce la velocidad final."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18269,6 +18443,57 @@ msgstr ""
"incremento >=0\n"
"final > inicio + paso"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"La velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s), lo que limita el perímetro externo a unos %.0f mm/s con este ancho de línea y esta altura de capa.\n"
" Las velocidades superiores se recortarán, por lo que los bloques superiores de la torre no se imprimirán a la velocidad solicitada.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"La velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s) con la altura de capa predeterminada (%.2f mm).\n"
"\n"
"La altura de la capa se ha reducido a %.2f mm (un valor usado por los perfiles de esta impresora) para que la torre pueda alcanzar la velocidad solicitada."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Incluso con la altura de capa más pequeña usada por los perfiles de esta impresora (%.2f mm), la velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s).\n"
"\n"
"La altura de la capa se establecerá en %.2f mm y la velocidad final se reducirá a %.0f mm/s.\n"
"\n"
"¿Continuar?"
# AI Translated
msgid "Continue anyway?"
msgstr "¿Continuar de todos modos?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "¿Activar \"Ajuste automático\" para corregir esto automáticamente o continuar de todos modos?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "¿Activar \"Escalar automáticamente para la boquilla\" y \"Ajuste automático\" para corregir esto automáticamente o continuar de todos modos?"
msgid "Start retraction length: "
msgstr "Longitud de retracción inicial: "
@@ -19164,9 +19389,6 @@ msgstr "Impresora física"
msgid "Print Host upload"
msgstr "Mandar al servidor de impresión"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema."
msgid "Select a Flashforge printer"
msgstr "Selecciona una impresora Flashforge"
@@ -20008,9 +20230,6 @@ msgstr "Ha ocurrido algo inesperado al intentar iniciar sesión, inténtelo de n
msgid "User canceled."
msgstr "Cancelado por el usuario."
msgid "Head diameter"
msgstr "Diámetro de la cabeza"
msgid "Max angle"
msgstr "Ángulo máximo"
@@ -20744,6 +20963,25 @@ msgstr ""
"Evita la deformación\n"
"¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "La altura de la capa es demasiado pequeña.\n"
#~ "Se establecerá en min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "¿Desea ajustar el rango automáticamente?\n"
#~ msgid "Head diameter"
#~ msgstr "Diámetro de la cabeza"
#~ msgid "Print order within a single layer."
#~ msgstr "Orden de impresión dentro de cada capa."
#~ msgid "Bottom"
#~ msgstr "Inferior"
@@ -20837,9 +21075,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Anisotropic surfaces"
#~ msgstr "Superficies anisótropas"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2026-07-20 13:33+0200\n"
"Last-Translator: Manu Goiogana <mgoiogana@gmail.com>\n"
"Language-Team: \n"
@@ -3724,6 +3724,10 @@ msgstr "Antolatzen..."
msgid "Arranging"
msgstr "Antolaketa"
# AI Translated
msgid "Arranging "
msgstr "Antolatzen "
msgid "Arranging canceled."
msgstr "Antolaketa bertan behera utzi da."
@@ -4602,6 +4606,23 @@ msgstr "Uneko ganberako tenperatura materialaren tenperatura segurua baino handi
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Ganberako gutxieneko tenperatura (%d ℃) helburuko ganbera-tenperatura (%d ℃) baino altuagoa da. Gutxieneko balioa inprimaketa hasten den atalasea da, ganberak helbururantz berotzen jarraitzen duen bitartean; beraz, ez luke helburua gainditu behar. Helburuko baliora mugatuko da."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Geruza-altuera txikiegia da. Gutxienekora ezarriko da (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Geruza-altuera Inprimagailuaren ezarpenak -> Estrusorea -> Geruza-altueraren mugak atalean ezarritako mugetatik kanpo dago; horrek inprimatze-kalitateko arazoak sor ditzake."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Automatikoki mugara (%g mm) doitu nahi duzu?"
msgid "Adjust"
msgstr "Doitu"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4721,6 +4742,13 @@ msgstr ""
"Bai - Gaitu Arachne horma-sorgailua\n"
"Ez - Desgaitu Arachne horma-sorgailua eta ezarri gainazal zimurraren [Desplazamendua] modua"
# AI Translated
msgid "Brim ear radius"
msgstr "Ertz-belarriaren erradioa"
msgid "Brim width"
msgstr "Itsaspen ertzaren zabalera"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Espiral moduak baldintza hauetan bakarrik funtzionatzen du: horma-begiztak 1 izatea, euskarriak desgaituta egotea, haztatze bidezko material-metaketa detektatzea desgaituta egotea, goiko estalki-geruzak 0 izatea, dentsitate baxuko betegarriaren dentsitatea 0 izatea eta timelapse mota tradizionala izatea."
@@ -4975,6 +5003,14 @@ msgstr "Hutsegitea gertatu da kalibrazioko G-Code-a sortzean"
msgid "Calibration error"
msgstr "Kalibrazio akatsa"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Inprimagailu honek ez dauka kontrol honek behar duen hardwarea konfiguratuta."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Kontrol hau ez da bateragarria inprimagailu honekin."
# AI Translated
msgid "Network unavailable"
msgstr "Sarea ez dago erabilgarri"
@@ -5824,7 +5860,7 @@ msgstr "Bolumena:"
msgid "Size:"
msgstr "Tamaina:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "G-code ibilbideen gatazkak aurkitu dira %d geruzan, Z = %.2lf mm. Urrundu gehiago gatazkan dauden objektuak (%s <-> %s)."
@@ -6001,6 +6037,10 @@ msgstr "Gailu anitz"
msgid "Project"
msgstr "Proiektua"
# AI Translated
msgid "Device (Web)"
msgstr "Gailua (Web)"
msgid "Yes"
msgstr "Bai"
@@ -8060,21 +8100,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ %s ordezkatu da.\n"
msgid "Replaced volumes"
msgstr "Ordeztutako bolumenak"
@@ -8786,6 +8826,18 @@ msgstr "Aukera hau gaituta, zeregin bat hainbat gailutara bidali eta hainbat gai
msgid "Pop up to select filament grouping mode"
msgstr "Erakutsi filamentuak taldekatzeko modua hautatzeko leihoa"
# AI Translated
msgid "Visible plugin pages"
msgstr "Ikusgai dauden plugin-orriak"
# AI Translated
msgid "pages"
msgstr "orri"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Fitxa finko gisa erakusten diren plugin-orrien kopurua; gainerako orriak azken fitxako goitibeherako zerrendan bilduko dira."
msgid "Behaviour"
msgstr "Jokabidea"
@@ -8999,6 +9051,21 @@ msgstr "Ilundu beheko geruzak"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Xerratutako aurrebistan geruza-graduatzailea mugitzean, unekoaren azpiko geruzak ilunduta erakusten ditu, ikusten ari den geruza soilik distira osoz ager dadin."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Ilundutako geruzen distira"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"\"Ilundu beheko geruzak\" gaituta dagoenean ilundutako geruzak zein distiratsu marrazten diren.\n"
"%99 balioak ozta-ozta iluntzen ditu, %0 balioak beltz bihurtzen ditu. Gehienez %99 onartzen da, %100 balioak aukera desgaitzearen gauza bera egingo bailuke."
msgid "Login region"
msgstr "Saio-hasierako eskualdea"
@@ -9123,6 +9190,18 @@ msgstr "Erakutsi onartzen ez diren aurrezarpenak"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Erakutsi bateraezinak edo onartu gabeak diren aurrezarpenak inprimagailuaren eta filamentuaren goitibeherako zerrendetan. Aurrezarpen hauek ezin dira hautatu."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Esperimentala) Erabili inprimagailu-agenteak inprimatze-hostenen ordez"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Bideratu Bambu ez diren inprimagailuen inprimatze-lanak inprimagailuaren plugin-agenteen bidez, inprimatze-hostera igotzeko fluxu klasikoaren ordez.\n"
"Desgaituta dagoenean, OrcaSlicer-ek inprimatze-hostaren aurreko portaera erabiltzen du."
msgid "Experimental Features"
msgstr "Ezaugarri esperimentalak"
@@ -9383,9 +9462,25 @@ msgstr "Erabiltzailearen aurrezarpena"
msgid "Preset Inside Project"
msgstr "Proiektu barruko aurrezarpena"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Aurrezarpen honetara gurasoaren balio heredatu guztiak kopiatzen ditu eta gurasoarekiko lotura kentzen du. Gurasoarekin soilik bateragarriak diren aurrezarpenak bateraezin gera daitezke."
msgid "Detach from parent"
msgstr "Bereizi gurasotik"
# AI Translated
msgid "Unique preset"
msgstr "Aurrezarpen bakarra"
# AI Translated
msgid "Parent preset"
msgstr "Guraso-aurrezarpena"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Aurrezarpen honek ez du beste aurrezarpen batetik heredatzen."
msgid "Name is unavailable."
msgstr "Izena ez dago erabilgarri."
@@ -10105,22 +10200,6 @@ msgstr "Ziur aukera hau gaitu nahi duzula?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Betegarri-patroiak normalean biraketa automatikoki kudeatzeko diseinatuta daude, behar bezala inprimatzeko eta nahi den efektua lortzeko (adibidez, Giroidea edo Kubikoa). Uneko dentsitate baxuko betegarri-patroia biratzeak euskarri eskasa eragin dezake. Kontuz jarraitu eta egiaztatu arretaz inprimatze-arazorik sor daitekeen. Ziur zaude aukera hau gaitu nahi duzula?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Geruza-altuera txikiegia da.\n"
"min_layer_height baliora ezarriko da\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Geruza-altuerak Inprimagailuaren ezarpenak -> Estrusorea -> Geruza-altueraren mugak ataleko muga gainditzen du; horrek inprimatze-kalitateko arazoak sor ditzake."
msgid "Adjust to the set range automatically?\n"
msgstr "Doitu automatikoki ezarritako barrutira?\n"
msgid "Adjust"
msgstr "Doitu"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Funtzio esperimentala: filamentu aldaketetan distantzia handiagoan atzera egitea eta moztea, purgatzea minimizatzeko. Purgatzea nabarmen murriztu dezakeen arren, pitaren buxadurak edo bestelako inprimatze-arazoak izateko arriskua ere handitu dezake."
@@ -10314,6 +10393,9 @@ msgstr "Erreserbatutako gako-hitzak aurkitu dira"
msgid "Setting Overrides"
msgstr "Ezarpenen gainidazketak"
msgid "Retraction when switching material"
msgstr "Atzera-egitea materiala aldatzean"
msgid "Basic information"
msgstr "Oinarrizko informazioa"
@@ -10440,6 +10522,12 @@ msgstr "Prozesu-profil bateragarriak"
msgid "Printable space"
msgstr "Inprimatzeko espazioa"
msgid "Printer Agent"
msgstr "Inprimagailu-agentea"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Hautatu sare-agentearen inplementazioa inprimagailuarekin komunikatzeko. Erabilgarri dauden agenteak abioan erregistratzen dira."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10565,9 +10653,6 @@ msgstr "Geruza-altueraren mugak"
msgid "Z-Hop"
msgstr "Z jauzia"
msgid "Retraction when switching material"
msgstr "Atzera-egitea materiala aldatzean"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11893,6 +11978,10 @@ msgstr " bazterketa-eremu batetik gertuegi dago, eta talkak eragingo ditu.\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " material-metaketa detektatzeko eremutik gertuegi dago, eta talkak eragingo ditu.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " inprimagarri den eremutik kanpo dago partzialki, eta ezin da inprimatu.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Hautatutako pita-tenperaturak ez dira bateragarriak. Filamentu bakoitzaren pita-tenperaturak gainerako filamentuen gomendatutako pita-tenperatura tartean egon behar du. Bestela, pita buxatu edo inprimagailua kaltetu daiteke."
@@ -11994,11 +12083,11 @@ msgstr "Purgatze-dorreak euskarriak objektuaren geruza-altuera bera izatea eskat
# AI Translated
msgid "For Organic supports, two walls are supported only with the Hollow/Default base pattern."
msgstr "Euskarri organikoetan, bi horma Hollow/Default oinarri-patroiarekin soilik onartzen dira."
msgstr "Euskarri organikoetan, bi horma Hutsa/Lehenetsia oinarri-patroiarekin soilik onartzen dira."
# AI Translated
msgid "The Lightning base pattern is not supported by this support type; Rectilinear will be used instead."
msgstr "Lightning oinarri-patroia ez du euskarri mota honek onartzen; Rectilinear erabiliko da horren ordez."
msgstr "Tximista oinarri-patroia ez du euskarri mota honek onartzen; Lerrozuzena erabiliko da horren ordez."
msgid "Organic support tree tip diameter must not be smaller than support material extrusion width."
msgstr "Euskarri organikoaren zuhaitz-muturraren diametroak ezin du izan euskarri-materialaren estrusio-zabalera baino txikiagoa."
@@ -12011,7 +12100,7 @@ msgstr "Euskarri organikoaren adar-diametroak ezin du izan euskarri-zuhaitzaren
# AI Translated
msgid "The Hollow base pattern is not supported by this support type; Rectilinear will be used instead."
msgstr "Hollow oinarri-patroia ez du euskarri mota honek onartzen; Rectilinear erabiliko da horren ordez."
msgstr "Hutsa oinarri-patroia ez du euskarri mota honek onartzen; Lerrozuzena erabiliko da horren ordez."
msgid "Support enforcers are used but support is not enabled. Please enable support."
msgstr "Euskarri-behartzaileak erabiltzen dira, baina euskarria ez dago gaituta. Gaitu euskarriak."
@@ -12209,9 +12298,6 @@ msgstr "Erabili 3MF G-codearen ordez"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Gaitu aukera hau inprimagailuak 3MF fitxategi bat inprimatze-lan gisa onartzen badu. Gaituta dagoenean, OrcaSlicerrek xerratutako fitxategia .gcode.3mf gisa bidaltzen du, .gcode fitxategi arrunt baten ordez."
msgid "Printer Agent"
msgstr "Inprimagailu-agentea"
msgid "Select the network agent implementation for printer communication."
msgstr "Hautatu inprimagailuarekin komunikatzeko sare-agentearen inplementazioa."
@@ -12886,9 +12972,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Barru-zubien abiadura. Balioa ehuneko gisa adierazten bada, Zubien abiadura-ren arabera kalkulatuko da. Lehenetsitako balioa % 150ekoa da."
msgid "Brim width"
msgstr "Itsaspen ertzaren zabalera"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Hau da modelotik itsaspen ertzaren kanporen lerrora dagoen distantzia."
@@ -12968,6 +13051,14 @@ msgstr ""
"Geometria sinplifikatu egingo da angelu zorrotzak detektatu aurretik. Parametro honek sinplifikaziorako desbideratzearen gutxieneko luzera adierazten du.\n"
"0, desaktibatzeko."
# AI Translated
msgid "Brim ears outer only"
msgstr "Ertz-belarriak kanpoaldean soilik"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Sortu saguaren belarriak modeloaren kanpoko ingeradan soilik, zuloak eta itxitako atalak baztertuta."
msgid "upward compatible machine"
msgstr "gorantz bateragarria den makina"
@@ -12992,12 +13083,37 @@ msgstr "Objektuka"
msgid "Intra-layer order"
msgstr "Geruza barruko ordena"
msgid "Print order within a single layer."
msgstr "Geruza bakarreko inprimatze-ordena."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Geruza bakar baten barruan objektu-instantziak zein ordenatan bisitatzen diren; horrek zehazten du zenbat desplazamendu behar den haien artean mugitzeko.\n"
"\n"
"Lehenetsia: auzokide hurbilenaren araberako kateaketa, 2-opt bidez eta gurutzaketak kenduz findua. Aukera orokor ona.\n"
"Objektu-zerrenda bezala: instantziak objektu-zerrendaren ordena berean inprimatzen dira, ibilbidea batere optimizatu gabe. Erabili ordena aurreikusgarri eta eskuz kontrolatu bat behar duzunean.\n"
"Guztien onena (ibilbide laburrena): estrategia guztiak ebaluatzen dira eta laburrena erabiltzen da. Objektu-instantzien ordena behin erabakitzen da inprimaketa osorako, eta uharte bakoitzaren ordena geruzaz geruza erabakitzen da; beraz, geruza desberdinek estrategia desberdinak erabil ditzakete. Xerratzea apur bat motelagoa da.\n"
"Sigi-saga: errenkadaz errenkadako sigi-saga ibilbidea, 2-opt bidez findua. Oso egokia pieza txiki askoren sareta erregularretarako.\n"
"\n"
"Geruza berean filamentu edo tresna bat baino gehiago daudenean, tresna-aldaketak gutxitzeak du lehentasuna: objektuak filamentuaren arabera multzokatzen dira lehenik, eta ezarpen honek filamentu-multzo bakoitzaren barruko instantziak baino ez ditu ordenatzen; beraz, baliteke sekuentzia orokorrak plaka osoko ibilbide laburrenaren itxurarik ez izatea."
msgid "As object list"
msgstr "Objektu-zerrenda bezala"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Guztien onena (ibilbide laburrena)"
# AI Translated
msgid "Snake"
msgstr "Sigi-saga"
msgid "Slow printing down for better layer cooling"
msgstr "Moteldu inprimaketa geruza hobeto hozteko"
@@ -13208,7 +13324,7 @@ msgstr "Moderatua"
# AI Translated
msgid "Top surface pattern"
msgstr "Goiko gainazalaren patroia"
msgstr "Goiko gainazaleko patroia"
# AI Translated
msgid "This is the line pattern for top surface infill."
@@ -13221,13 +13337,13 @@ msgid "Monotonic line"
msgstr "Lerro monotonikoa"
msgid "Rectilinear"
msgstr "Rectilinear"
msgstr "Lerrozuzena"
msgid "Aligned Rectilinear"
msgstr "Lerrozuzen lerrokatua"
msgid "Concentric"
msgstr "Concentric"
msgstr "Kontzentrikoa"
msgid "Hilbert Curve"
msgstr "Hilbert kurba"
@@ -13293,7 +13409,7 @@ msgstr "Kanporantz"
# AI Translated
msgid "Bottom surface pattern"
msgstr "Beheko gainazalaren patroia"
msgstr "Beheko gainazaleko patroia"
# AI Translated
msgid "This is the line pattern of bottom surface infill, not including bridge infill."
@@ -13318,7 +13434,7 @@ msgid ""
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
"Default uses shortest-path ordering, which may run in either direction."
msgstr ""
"Gaineko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Konzentrikoa, Arkimedeen Akordeak, Oktograma Espirala).\n"
"Goiko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
"Kanporanzkoa erdialdean hasten da, beraz, gehiegizko materiala gutxien ikusten den ertzera bultzatzen da. Barruranzkoa ertzean hasten da eta erdian kurba estuekin amaitzen da.\n"
"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
@@ -13331,7 +13447,7 @@ msgid ""
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
"Default uses shortest-path ordering, which may run in either direction."
msgstr ""
"Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Konzentrikoa, Arkimedeen Akordeak, Oktograma Espirala).\n"
"Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
"Barruranzkoa hasten da gainazal bakoitza kanpoko kurba zabalagoekin, eta horrek lehen geruzaren atxikimendua hobetzen du erdiko kurba estuak itsatsi ez daitezkeen inprimatze-plaketan. Kanporanzkoa erdialdean hasten da, gehiegizko materiala ertzera bultzatuz.\n"
"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
@@ -14093,6 +14209,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroidea"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Dentsitate baxuko betegarriaren leuntze-faktorea"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Dentsitate baxuko betegarriaren izkinak zenbateraino biribiltzen diren kontrolatzen du. 0% balioak jatorrizko ibilbide zorrotza mantentzen du, eta 100% balioak ondoz ondoko betegarri-lerroen arteko kurbarik zabalenak sortzen ditu."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Hau da goiko gainazaleko betegarriaren azelerazioa. Balio txikiago batek goiko gainazalaren kalitatea hobetu dezake."
@@ -14632,6 +14756,14 @@ msgstr "Inprimagailua zer G-code motarekin den bateragarria."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Saltatu G-code-aren konfigurazio-blokea"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Ez idatzi CONFIG_BLOCK (xerragailuaren konfigurazioko gako/balio bikoteak) G-code fitxategian. Lagungarria izan daiteke firmwareak iruzkin-lerro horiek prozesatzean huts egiten duen inprimagailuetan (adib. Anycubic go-klipper). Oharra: G-code fitxategiak ez ditu jada xerragailuaren ezarpenak edukiko; beraz, OrcaSlicer-era berriro inportatzeak ez du konfigurazioa berreskuratuko."
msgid "Pellet Modded Printer"
msgstr "Pelletekin moldatutako inprimagailua"
@@ -15675,6 +15807,14 @@ msgstr "Atzera-egite luzea estrusorea aldatzean"
msgid "Retraction distance when extruder change"
msgstr "Atzera-egite distantzia estrusorea aldatzean"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Atzera-egitearen luzera (Erreminta aldaketa)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Erreminta aldatu aurretik atzera-egitea abiarazten denean, filamentua zehaztutako kopurua atzeratzen da (luzera filamentu gordinean neurtzen da, estrusorean sartu aurretik)."
msgid "Z-hop height"
msgstr "Z jauziaren altuera"
@@ -15768,6 +15908,10 @@ msgstr "Berrabiaraztean luzera gehigarria"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Mugimenduaren ondoren atzera-egitea konpentsatzen denean, estrusoreak filamentu kantitate gehigarri hau bultzatuko du. Ezarpen hau gutxitan behar da."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Berrabiaraztean luzera gehigarria (Erreminta aldaketa)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Tresna aldatu ondoren atzera-egitea konpentsatzen denean, estrusoreak filamentu kantitate gehigarri hau bultzatuko du."
@@ -16176,6 +16320,14 @@ msgstr "Tresna-aldaketa purgatze-dorrean"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Behartu inprimatze-burua purgatze-dorrera joatera tresna aldatzeko agindua (Tx) eman aurretik. 2. motako purgatze-dorrea erabiltzen duten estrusore anitzeko (inprimatze-buru anitzeko) inprimagailuetarako bakarrik da garrantzitsua. Lehenespenez, Orcak ez du joan-etorria egiten inprimatze-buru anitzeko makinetan, firmwareak buruaren aldaketa kudeatzen duelako; horren ondorioz, Tx agindua inprimatutako piezaren gainean eman daiteke. Gaitu aukera hau tresna-aldaketa beti purgatze-dorrearen gainean egin dadin."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Itxaron tenperatura purgatze-dorrean"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Hartu erreminta berria inprimatze-tenperaturara iritsi arte itxaron gabe, joan purgatze-dorrera eta itxaron han tenperatura, purgatu aurretik. Berotzeak eragindako jarioa dorrean erortzen da modeloan beharrean, eta desplazamendua berotzearekin gainjartzen da. Estrusore anitzeko (inprimatze-buru anitzeko) inprimagailuetan soilik da baliagarria, 2. motako purgatze-dorrea erabiltzen dutenean. Firmwareak edo erreminta aldaketaren makroak ez du tenperaturaren zain egon behar. Desgaituta dagoenean, tenperaturaren zain egoteko agindua erreminta aldaketaren komandoaren ondoren bidaltzen da."
msgid "No sparse layers (beta)"
msgstr "Geruza bakandurik ez (beta)"
@@ -16387,9 +16539,9 @@ msgid ""
msgstr ""
"Euskarriaren lerro-patroia.\n"
"\n"
"Zuhaitz-euskarrien aukera lehenetsia Hutsa da, hau da, ez dago oinarri-patroirik. Beste euskarri motetarako, aukera lehenetsia patroi zuzenekoa da.\n"
"Zuhaitz-euskarrien aukera lehenetsia Hutsa da, hau da, ez dago oinarri-patroirik. Beste euskarri motetarako, aukera lehenetsia patroi lerrozuzena da.\n"
"\n"
"OHARRA: Euskarri organikoetan, bi hormak Hutsa/Lehenetsia oinarri-patroiarekin bakarrik onartzen dira. Tximistetan oinarritutako patroia Zuhaitz mehea/Indartsua/Hibridoa euskarriek bakarrik onartzen dute. Beste euskarri motetarako, Zuzenekoa erabiliko da Tximistenaren ordez."
"OHARRA: Euskarri organikoetan, bi hormak Hutsa/Lehenetsia oinarri-patroiarekin bakarrik onartzen dira. Tximista oinarri-patroia Zuhaitz mehea/Indartsua/Hibridoa euskarriek bakarrik onartzen dute. Beste euskarri motetarako, Lerrozuzena erabiliko da Tximistaren ordez."
msgid "Rectilinear grid"
msgstr "Sare lerrozuzena"
@@ -16669,7 +16821,7 @@ msgid ""
" - Each Model: centers the pattern on each connected body. Parts that touch or overlap share one center; parts detached from the rest each get their own.\n"
" - Each Assembly: uses a single shared center for the whole object or assembly."
msgstr ""
"Goiko eta beheko gainazaleko patroi zentratuen (Arkimedesen kordak, Oktagrama-espirala) zentroa non kokatzen den aukeratzen du.\n"
"Goiko eta beheko gainazaleko patroi zentratuen (Arkimedesen kordak, Oktagrama-kiribila) zentroa non kokatzen den aukeratzen du.\n"
" - Gainazal bakoitza: patroia gainazal-eskualde bakoitzean zentratzen du, uharte bakoitza bere kabuz simetrikoa izan dadin.\n"
" - Modelo bakoitza: patroia konektatutako gorputz bakoitzean zentratzen du. Elkar ukitzen edo gainjartzen diren piezek zentro bera partekatzen dute; gainerakoetatik bereizitako piezek beren zentroa dute.\n"
" - Muntaketa bakoitza: zentro partekatu bakarra erabiltzen du objektu edo muntaketa osorako."
@@ -17100,7 +17252,7 @@ msgid "Detect narrow internal solid infills"
msgstr "Detektatu barruko betegarri solido estua"
msgid "This option will auto-detect narrow internal solid infill areas. If enabled, the concentric pattern will be used for the area to speed up printing. Otherwise, the rectilinear pattern will be used by default."
msgstr "Aukera honek barruko betegarri solido estuko eremuak automatikoki detektatuko ditu. Gaituta badago, eremu horretan patroi zentrokidea erabiliko da inprimaketa azkartzeko. Bestela, patroi lerrozuzena erabiliko da lehenespenez."
msgstr "Aukera honek barruko betegarri solido estuko eremuak automatikoki detektatuko ditu. Gaituta badago, eremu horretan patroi kontzentrikoa erabiliko da inprimaketa azkartzeko. Bestela, patroi lerrozuzena erabiliko da lehenespenez."
msgid "invalid value "
msgstr "balio baliogabea "
@@ -18269,6 +18421,20 @@ msgstr ""
"Hainbat IP helbide ebazten dira %1% ostalari-izenerako.\n"
"Hautatu erabili beharrekoa."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Eskalatze automatikoa pitarako"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Modelo hau 0,4 mm-ko pita eta 0,2 mm-ko geruza-altuera kontuan hartuta diseinatu da. \n"
"Eskalatze-aukera gaituta dagoenean (gomendatua), tamaina dinamikoki egokitzen zaie zure uneko pita-diametroari eta geruza-altuera egoki bati, testa zehatza eta irakurterraza izan dadin.\n"
"Itzali eskalatzea erreferentzia-modeloa dagoen-dagoenean inprimatu nahi baduzu bakarrik."
msgid "PA Calibration"
msgstr "PA kalibrazioa"
@@ -18406,6 +18572,14 @@ msgstr "Hasierako abiadura: "
msgid "End speed: "
msgstr "Amaierako abiadura: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Doikuntza automatikoa abiadura bolumetriko maximora"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Amaierako abiadurak filamentuaren abiadura bolumetriko maximoa gaindituko balu, geruza-altuera automatikoki jaisten da (balio estandarrak mantenduz eta makinaren mugen barruan) hura lortzeko. Gutxieneko geruza-altuerarekin ere nahikoa ez bada, amaierako abiadura jaisten da haren ordez."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18417,6 +18591,57 @@ msgstr ""
"urratsa >= 0\n"
"amaiera > hasiera + urratsa"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Amaierako abiadurak (%.0f mm/s) filamentuaren abiadura bolumetriko maximoa (%.1f mm³/s) gainditzen du, eta horrek kanpoko horma gutxi gorabehera %.0f mm/s-ra mugatzen du lerro-zabalera eta geruza-altuera honekin.\n"
" Horren gaineko abiadurak mugatu egingo dira, beraz dorrearen goiko blokeak ez dira eskatutako abiaduran inprimatuko.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Amaierako abiadurak (%.0f mm/s) filamentuaren abiadura bolumetriko maximoa (%.1f mm³/s) gainditzen du geruza-altuera lehenetsian (%.2f mm).\n"
"\n"
"Geruza-altuera %.2f mm-ra jaitsi da (inprimagailu honen aurrezarpenek erabiltzen duten balio bat), dorreak eskatutako abiadura lor dezan."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Inprimagailu honen aurrezarpenek erabiltzen duten geruza-altuera txikienarekin ere (%.2f mm), amaierako abiadurak (%.0f mm/s) filamentuaren abiadura bolumetriko maximoa (%.1f mm³/s) gainditzen du.\n"
"\n"
"Geruza-altuera %.2f mm-ra ezarriko da eta amaierako abiadura %.0f mm/s-ra jaitsiko da.\n"
"\n"
"Jarraitu?"
# AI Translated
msgid "Continue anyway?"
msgstr "Hala ere jarraitu?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Gaitu \"Doikuntza automatikoa\" hau automatikoki konpontzeko, edo hala ere jarraitu?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Gaitu \"Eskalatze automatikoa pitarako\" eta \"Doikuntza automatikoa\" hau automatikoki konpontzeko, edo hala ere jarraitu?"
msgid "Start retraction length: "
msgstr "Hasierako atzera-egite luzera: "
@@ -18586,7 +18811,7 @@ msgstr "YOLO (perfekzionista)"
# AI Translated
msgid "Top Surface Pattern"
msgstr "Goiko gainazalaren patroia"
msgstr "Goiko gainazaleko patroia"
msgid "Choose a slot for the selected color"
msgstr "Aukeratu zirrikitu bat hautatutako kolorearentzat"
@@ -19312,9 +19537,6 @@ msgstr "Inprimagailu fisikoa"
msgid "Print Host upload"
msgstr "Inprimatze-ostalariaren karga"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Hautatu sare-agentearen inplementazioa inprimagailuarekin komunikatzeko. Erabilgarri dauden agenteak abioan erregistratzen dira."
msgid "Select a Flashforge printer"
msgstr "Hautatu Flashforge inprimagailu bat"
@@ -20161,9 +20383,6 @@ msgstr "Ustekabeko zerbait gertatu da saioa hasten saiatzean; saiatu berriro."
msgid "User canceled."
msgstr "Erabiltzaileak bertan behera utzi du."
msgid "Head diameter"
msgstr "Buruaren diametroa"
msgid "Max angle"
msgstr "Gehieneko angelua"
@@ -20899,6 +21118,25 @@ msgstr ""
"Saihestu okertzea\n"
"Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Geruza-altuera txikiegia da.\n"
#~ "min_layer_height baliora ezarriko da\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Geruza-altuerak Inprimagailuaren ezarpenak -> Estrusorea -> Geruza-altueraren mugak ataleko muga gainditzen du; horrek inprimatze-kalitateko arazoak sor ditzake."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Doitu automatikoki ezarritako barrutira?\n"
#~ msgid "Head diameter"
#~ msgstr "Buruaren diametroa"
#~ msgid "Print order within a single layer."
#~ msgstr "Geruza bakarreko inprimatze-ordena."
#~ msgid "Bottom"
#~ msgstr "Behekoa"
@@ -21028,9 +21266,6 @@ msgstr ""
#~ msgid "°"
#~ msgstr "°"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "uniform scale"
#~ msgstr "eskala uniformea"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Guislain Cyril, Thomas Lété\n"
@@ -3760,6 +3760,10 @@ msgstr "Agencement…"
msgid "Arranging"
msgstr "Agencement"
# AI Translated
msgid "Arranging "
msgstr "Agencement "
msgid "Arranging canceled."
msgstr "Agencement annulé."
@@ -4639,6 +4643,23 @@ msgstr "La température actuelle du caisson est supérieure à la température d
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "La température minimale du caisson (%d℃) est supérieure à la température cible du caisson (%d℃). La valeur minimale est le seuil à partir duquel limpression démarre tandis que le caisson continue de chauffer vers la cible ; elle ne doit donc pas la dépasser. Elle sera limitée à la cible."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "La hauteur de couche est trop faible. Elle sera définie au minimum (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "La hauteur de couche est en dehors des limites définies dans Paramètres de limprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité dimpression."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Lajuster automatiquement à la limite (%g mm) ?"
msgid "Adjust"
msgstr "Ajuster"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4758,6 +4779,13 @@ msgstr ""
"Oui - Activer le générateur de parois Arachne\n"
"Non - Désactiver le générateur de parois Arachne et définir le mode [Déplacement] de la surface irrégulière"
# AI Translated
msgid "Brim ear radius"
msgstr "Rayon de la bordure à oreilles"
msgid "Brim width"
msgstr "Largeur de la bordure"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Le mode spirale ne fonctionne que lorsque le nombre de parois est 1, le support est désactivé, la détection d'agglomération par sondage est désactivée, les couches supérieures sont à 0, la densité de remplissage clairsemé est à 0 et le type de timelapse est traditionnel."
@@ -4831,7 +4859,7 @@ msgid "Calibrating the micro lidar"
msgstr "Calibrage du micro-Lidar"
msgid "Calibrating flow ratio"
msgstr "Calibration du ratio de débit"
msgstr "Calibration du rapport de débit"
msgid "Pause (nozzle temperature malfunction)"
msgstr "Pause (dysfonctionnement de la température de la buse)"
@@ -5012,6 +5040,14 @@ msgstr "Échec de la génération du G-code de calibration"
msgid "Calibration error"
msgstr "Erreur de la calibration"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Cette imprimante ne dispose pas du matériel requis par ce contrôle."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Ce contrôle nest pas pris en charge sur cette imprimante."
# AI Translated
msgid "Network unavailable"
msgstr "Réseau indisponible"
@@ -5867,7 +5903,7 @@ msgstr "Volume :"
msgid "Size:"
msgstr "Taille :"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z = %.2lfmm. Veuillez séparer davantage les objets en conflit (%s <-> %s)."
@@ -6048,6 +6084,10 @@ msgstr "Multi-appareils"
msgid "Project"
msgstr "Projet"
# AI Translated
msgid "Device (Web)"
msgstr "Appareil (Web)"
msgid "Yes"
msgstr "Oui"
@@ -7430,11 +7470,11 @@ msgstr "Erreur lors du chargement des shaders"
msgctxt "Layers"
msgid "Top"
msgstr "Du haut"
msgstr "Supérieur"
msgctxt "Layers"
msgid "Bottom"
msgstr "Du bas"
msgstr "Inférieur"
# AI Translated
msgid "Plugin Selection"
@@ -8116,21 +8156,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Remplacé %s.\n"
msgid "Replaced volumes"
msgstr "Volumes remplacés"
@@ -8853,6 +8893,18 @@ msgstr "Si cette option est activée, vous pouvez envoyer une tâche à plusieur
msgid "Pop up to select filament grouping mode"
msgstr "Fenêtre contextuelle pour sélectionner le mode de regroupement des filaments"
# AI Translated
msgid "Visible plugin pages"
msgstr "Pages de plugins visibles"
# AI Translated
msgid "pages"
msgstr "pages"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Nombre de pages de plugins affichées sous forme donglets fixes avant que les pages restantes ne soient regroupées dans un menu déroulant sur le dernier onglet."
msgid "Behaviour"
msgstr "Comportement"
@@ -9068,6 +9120,21 @@ msgstr "Assombrir les couches inférieures"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Lors du défilement du curseur de couche dans l'aperçu découpé, affiche les couches situées sous la couche actuelle assombries, de sorte que seule la couche visualisée soit affichée en pleine luminosité."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Luminosité des couches assombries"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Luminosité de rendu des couches assombries lorsque « Assombrir les couches inférieures » est activé.\n"
"99% correspond à un assombrissement à peine perceptible, 0% les affiche en noir. Limité à 99% car 100% reviendrait à désactiver loption."
msgid "Login region"
msgstr "Région d'origine"
@@ -9192,6 +9259,18 @@ msgstr "Afficher les préréglages non pris en charge"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Affiche les préréglages incompatibles ou non pris en charge dans les listes déroulantes dimprimantes et de filaments. Ces préréglages ne peuvent pas être sélectionnés."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Expérimental) Utiliser les agents dimprimante au lieu des hôtes dimpression"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Achemine les tâches dimpression des imprimantes non Bambu via les agents de plugin dimprimante au lieu du flux classique denvoi vers lhôte dimpression.\n"
"Lorsque cette option est désactivée, OrcaSlicer utilise lancien comportement de lhôte dimpression."
msgid "Experimental Features"
msgstr "Fonctionnalités expérimentales"
@@ -9264,22 +9343,22 @@ msgid "DEV host: api-dev.bambu-lab.com/v1"
msgstr "Hôte DEV : api-dev.bambu-lab.com/v1"
msgid "QA host: api-qa.bambu-lab.com/v1"
msgstr "Hôte AQ : api-qa.bambu-lab.com/v1"
msgstr "Hôte QA : api-qa.bambu-lab.com/v1"
msgid "PRE host: api-pre.bambu-lab.com/v1"
msgstr "Hébergeur PRE : api-pre.bambu-lab.com/v1"
msgstr "Hôte PRE : api-pre.bambu-lab.com/v1"
msgid "Product host"
msgstr "Hôte du produit"
msgid "Debug save button"
msgstr "bouton d'enregistrement de débogage"
msgstr "Bouton d'enregistrement de debugage"
msgid "Save debug settings"
msgstr "enregistrer les paramètres de débogage"
msgstr "Enregistrer les paramètres de debugage"
msgid "Debug settings have been saved successfully!"
msgstr "Les paramètres DEBUG ont été enregistrés avec succès !"
msgstr "Les paramètres de debug ont été enregistrés avec succès !"
msgid "Cloud environment switched; please login again!"
msgstr "L'environnement Cloud a changé, veuillez vous reconnecter !"
@@ -9453,9 +9532,25 @@ msgstr "Préréglage utilisateur"
msgid "Preset Inside Project"
msgstr "Préréglage intégré au projet"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Copie dans ce préréglage toutes les valeurs héritées du préréglage parent et supprime le lien dhéritage. Les préréglages compatibles uniquement avec le parent peuvent devenir incompatibles."
msgid "Detach from parent"
msgstr "Détacher du parent"
# AI Translated
msgid "Unique preset"
msgstr "Préréglage unique"
# AI Translated
msgid "Parent preset"
msgstr "Préréglage parent"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Ce préréglage nhérite daucun autre préréglage."
msgid "Name is unavailable."
msgstr "Le nom n'est pas disponible."
@@ -10192,27 +10287,11 @@ msgstr "Voulez-vous vraiment activer cette option ?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Les motifs de remplissage sont généralement conçus pour gérer la rotation automatiquement afin d'assurer une impression correcte et d'atteindre les effets souhaités (ex. : Gyroïde, Cubique). La rotation du motif de remplissage clairsemé actuel peut entraîner un support insuffisant. Veuillez procéder avec précaution et vérifier soigneusement tout problème d'impression potentiel. Voulez-vous vraiment activer cette option ?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"La hauteur de couche est trop faible.\n"
"Elle sera définie à min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "La hauteur de la couche dépasse la limite fixée dans Paramètres de limprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité dimpression."
msgid "Adjust to the set range automatically?\n"
msgstr "Sajuster automatiquement à la plage définie ?\n"
msgid "Adjust"
msgstr "Ajuster"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser le rinçage. Bien que cela puisse réduire considérablement le rinçage, cela peut également augmenter le risque de bouchage des buses ou dautres complications dimpression."
msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser la purge. Bien que cela puisse réduire considérablement la purge, cela peut également augmenter le risque de bouchage des buses ou dautres complications dimpression."
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications. Please use with the latest printer firmware."
msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser laffleurement. Bien que cela puisse réduire sensiblement laffleurement, cela peut également augmenter le risque dobstruction des buses ou dautres complications dimpression. Veuillez utiliser le dernier micrologiciel de limprimante."
msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser la purge. Bien que cela puisse réduire sensiblement la purge, cela peut également augmenter le risque dobstruction des buses ou dautres complications dimpression. Veuillez utiliser le dernier micrologiciel de limprimante."
msgid ""
"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n"
@@ -10403,6 +10482,9 @@ msgstr "Mots clés réservés trouvés"
msgid "Setting Overrides"
msgstr "Forçage des réglages"
msgid "Retraction when switching material"
msgstr "Rétraction lors du changement de matériau"
msgid "Basic information"
msgstr "Informations de base"
@@ -10529,6 +10611,12 @@ msgstr "Profils de traitement compatibles"
msgid "Printable space"
msgstr "Espace imprimable"
msgid "Printer Agent"
msgstr "Agent d'imprimante"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante. Les agents disponibles sont enregistrés au démarrage."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10654,9 +10742,6 @@ msgstr "Limites de hauteur de couche"
msgid "Z-Hop"
msgstr "Saut en Z"
msgid "Retraction when switching material"
msgstr "Rétraction lors du changement de matériau"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11991,6 +12076,10 @@ msgstr " est trop proche d'une zone d'exclusion. Cela va entraîner des collisio
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " est trop proche de la zone de détection d'agglomération, et des collisions seront causées.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " est partiellement en dehors de la zone imprimable et ne peut pas être imprimé.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Les températures de buse sélectionnées sont incompatibles. La température de buse de chaque filament doit se situer dans la plage de température de buse recommandée des autres filaments. Sinon, un bouchage de la buse ou des dommages à limprimante peuvent survenir."
@@ -12304,9 +12393,6 @@ msgstr "Utiliser le 3MF au lieu du G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Activez ceci si limprimante accepte un fichier 3MF comme tâche dimpression. Lorsque cette option est activée, Orca Slicer envoie le fichier découpé au format .gcode.3mf au lieu dun simple fichier .gcode."
msgid "Printer Agent"
msgstr "Agent d'imprimante"
msgid "Select the network agent implementation for printer communication."
msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante."
@@ -12670,7 +12756,7 @@ msgstr ""
"Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein interne."
msgid "Internal bridge flow ratio"
msgstr "Ratio de débit du pont interne"
msgstr "Rapport de débit du pont interne"
msgid ""
"This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n"
@@ -12710,13 +12796,13 @@ msgstr ""
"Le débit réel du remplissage solide inférieur utilisé est calculé en multipliant cette valeur par le rapport de débit du filament et, sil est défini, par le rapport de débit de lobjet."
msgid "Set other flow ratios"
msgstr "Définir d'autres ratios de débit"
msgstr "Définir d'autres rapports de débit"
msgid "Change flow ratios for other extrusion path types."
msgstr "Modifier les ratios de débit pour d'autres types de chemin d'extrusion."
msgstr "Modifier les rapports de débit pour d'autres types de chemin d'extrusion."
msgid "First layer flow ratio"
msgstr "Ratio de débit de la première couche"
msgstr "Rapport de débit de la première couche"
msgid ""
"This factor affects the amount of material on the first layer for the extrusion path roles listed in this section.\n"
@@ -12725,10 +12811,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau sur la première couche pour les rôles de chemin d'extrusion listés dans cette section.\n"
"\n"
"Pour la première couche, le ratio de débit réel pour chaque rôle de chemin (n'affecte pas les bordures et les jupes) sera multiplié par cette valeur."
"Pour la première couche, le rapport de débit réel pour chaque rôle de chemin (n'affecte pas les bordures et les jupes) sera multiplié par cette valeur."
msgid "Outer wall flow ratio"
msgstr "Ratio de débit de la paroi extérieure"
msgstr "Rapport de débit de la paroi extérieure"
msgid ""
"This factor affects the amount of material for outer walls.\n"
@@ -12737,10 +12823,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour les parois extérieures.\n"
"\n"
"Le débit réel de la paroi extérieure est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel de la paroi extérieure est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Inner wall flow ratio"
msgstr "Ratio de débit de la paroi intérieure"
msgstr "Rapport de débit de la paroi intérieure"
msgid ""
"This factor affects the amount of material for inner walls.\n"
@@ -12749,10 +12835,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour les parois intérieures.\n"
"\n"
"Le débit réel de la paroi intérieure est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel de la paroi intérieure est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Overhang flow ratio"
msgstr "Ratio de débit de surplomb"
msgstr "Rapport de débit de surplomb"
msgid ""
"This factor affects the amount of material for overhangs.\n"
@@ -12761,10 +12847,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour les surplombs.\n"
"\n"
"Le débit réel de surplomb est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel de surplomb est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Sparse infill flow ratio"
msgstr "Ratio de débit du remplissage clairsemé"
msgstr "Rapport de débit du remplissage clairsemé"
msgid ""
"This factor affects the amount of material for sparse infill.\n"
@@ -12773,10 +12859,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour le remplissage clairsemé.\n"
"\n"
"Le débit réel du remplissage clairsemé est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel du remplissage clairsemé est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Internal solid infill flow ratio"
msgstr "Ratio de débit du remplissage solide interne"
msgstr "Rapport de débit du remplissage solide interne"
msgid ""
"This factor affects the amount of material for internal solid infill.\n"
@@ -12785,10 +12871,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour le remplissage solide interne.\n"
"\n"
"Le débit réel du remplissage solide interne est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel du remplissage solide interne est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Gap fill flow ratio"
msgstr "Ratio de débit du remplissage des espaces"
msgstr "Rapport de débit du remplissage des espaces"
msgid ""
"This factor affects the amount of material for filling the gaps.\n"
@@ -12797,10 +12883,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour le remplissage des espaces.\n"
"\n"
"Le débit réel du remplissage des espaces est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel du remplissage des espaces est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Support flow ratio"
msgstr "Ratio de débit des supports"
msgstr "Rapport de débit des supports"
msgid ""
"This factor affects the amount of material for support.\n"
@@ -12809,10 +12895,10 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour les supports.\n"
"\n"
"Le débit réel des supports est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel des supports est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Support interface flow ratio"
msgstr "Ratio de débit de l'interface de support"
msgstr "Rapport de débit de l'interface de support"
msgid ""
"This factor affects the amount of material for the support interface.\n"
@@ -12821,7 +12907,7 @@ msgid ""
msgstr ""
"Ce facteur affecte la quantité de matériau pour l'interface de support.\n"
"\n"
"Le débit réel de l'interface de support est calculé en multipliant cette valeur par le ratio de débit du filament, et si défini, le ratio de débit de l'objet."
"Le débit réel de l'interface de support est calculé en multipliant cette valeur par le rapport de débit du filament, et si défini, le rapport de débit de l'objet."
msgid "Precise wall"
msgstr "Parois précises"
@@ -12981,9 +13067,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle sera calculée sur la base de la vitesse du pont. La valeur par défaut est 150%."
msgid "Brim width"
msgstr "Largeur de la bordure"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Distance du modèle à la ligne de bord la plus externe"
@@ -13024,10 +13107,10 @@ msgid ""
"\n"
"If your current setup already works well, enabling it may be unnecessary and can cause the brim to fuse with upper layers."
msgstr ""
"Lorsqu'il est activé, le bordure est aligné avec la géométrie du périmètre de la première couche après l'application de la compensation du pied d'éléphant.\n"
"Cette option est destinée aux cas où la compensation du pied d'éléphant modifie considérablement lempreinte de la première couche.\n"
"Lorsqu'il est activé, la bordure est alignée avec la géométrie du périmètre de la première couche après l'application de la compensation de la patte d'éléphant.\n"
"Cette option est destinée aux cas où la compensation de la patte d'éléphant modifie considérablement lempreinte de la première couche.\n"
"\n"
"Si votre configuration actuelle fonctionne déjà bien, son activation peut être inutile et peut provoquer la fusion du bordure avec les couches supérieures."
"Si votre configuration actuelle fonctionne déjà bien, son activation peut être inutile et peut provoquer la fusion de la bordure avec les couches supérieures."
msgid "Combine brims"
msgstr "Combiner les bordures"
@@ -13063,6 +13146,14 @@ msgstr ""
"La géométrie sera décimée avant de détecter les angles vifs. Ce paramètre indique la longueur minimale de lécart pour la décimation.\n"
"0 pour désactiver"
# AI Translated
msgid "Brim ears outer only"
msgstr "Bordure à oreilles sur le contour extérieur uniquement"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Génère des oreilles de souris uniquement sur le contour extérieur du modèle, en excluant les trous et les sections fermées."
msgid "upward compatible machine"
msgstr "machine à compatibilité ascendante"
@@ -13087,12 +13178,37 @@ msgstr "Par objet"
msgid "Intra-layer order"
msgstr "Ordre intra-couche"
msgid "Print order within a single layer."
msgstr "Ordre dimpression au sein dune même couche"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Ordre dans lequel les instances dobjets sont parcourues au sein dune même couche, ce qui détermine la quantité de déplacements effectués entre elles.\n"
"\n"
"Par défaut : chaînage par plus proche voisin, affiné par 2-opt et suppression des croisements. Un bon choix général.\n"
"En tant que liste dobjets : les instances sont imprimées dans le même ordre que la liste dobjets, sans aucune optimisation de trajet. À utiliser lorsque vous avez besoin dun ordre prévisible et contrôlé manuellement.\n"
"Meilleur de tous (trajet le plus court) : toutes les stratégies sont évaluées et la plus courte est retenue. Lordre des instances dobjets est déterminé une seule fois pour toute limpression, tandis que lordre des îlots individuels est déterminé couche par couche ; différentes couches peuvent donc utiliser des stratégies différentes. Découpage légèrement plus lent.\n"
"Serpentin : parcours en serpentin, rangée par rangée, affiné par 2-opt. Bien adapté aux grilles régulières de nombreuses petites pièces.\n"
"\n"
"Avec plusieurs filaments ou outils dans la même couche, la réduction des changements doutil est prioritaire : les objets sont dabord regroupés par filament et ce réglage nordonne que les instances au sein de chaque groupe de filament ; la séquence globale peut donc ne pas ressembler au trajet le plus court sur la plaque."
msgid "As object list"
msgstr "En tant que liste dobjets"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Meilleur de tous (trajet le plus court)"
# AI Translated
msgid "Snake"
msgstr "Serpentin"
msgid "Slow printing down for better layer cooling"
msgstr "Impression lente pour un meilleur refroidissement des couches"
@@ -13599,7 +13715,7 @@ msgid ""
msgstr ""
"Le matériau peut présenter un changement volumétrique après le passage de létat fondu à létat cristallin. Ce paramètre modifie proportionnellement tous les débits dextrusion de ce filament dans le G-code. La valeur recommandée est comprise entre 0,95 et 1,05. Vous pouvez peut-être ajuster cette valeur pour obtenir une belle surface plate lorsquil y a un léger débordement ou un sous-débordement.\n"
"\n"
"Le ratio de débit de lobjet final est cette valeur multipliée par le ratio de débit du filament."
"Le rapport de débit de lobjet final est cette valeur multipliée par le rapport de débit du filament."
msgid "Enable pressure advance"
msgstr "Activer la Pressure Advance"
@@ -14192,6 +14308,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroïde"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Facteur de lissage du remplissage"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Contrôle le degré darrondi des angles du remplissage. 0% conserve le tracé anguleux dorigine, tandis que 100% produit les courbes les plus amples possibles entre les lignes de remplissage adjacentes."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Il s'agit de l'accélération de la surface supérieure du remplissage. Utiliser une valeur plus petite pourrait améliorer la qualité de la surface supérieure"
@@ -14730,6 +14854,14 @@ msgstr "Avec quel type de G-code l'imprimante est-elle compatible."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Omettre le bloc de configuration du G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Nécrit pas le CONFIG_BLOCK (les paires clé/valeur de la configuration du logiciel de découpe) dans le fichier G-code. Cela peut aider avec les imprimantes dont le firmware plante lors de lanalyse de ces lignes de commentaire (par ex. Anycubic go-klipper). Remarque : le fichier G-code ne contiendra plus les réglages du logiciel de découpe, sa réimportation dans OrcaSlicer ne restaurera donc pas la configuration."
msgid "Pellet Modded Printer"
msgstr "Imprimante à pellets"
@@ -15777,6 +15909,14 @@ msgstr "Rétraction longue lors du changement d'extrudeur"
msgid "Retraction distance when extruder change"
msgstr "Distance de rétraction lors du changement d'extrudeur"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Longueur de rétraction (Changement doutil)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Lorsque la rétraction est déclenchée avant un changement doutil, le filament est rétracté de la quantité spécifiée (la longueur est mesurée sur le filament brut, avant son entrée dans lextrudeur)."
msgid "Z-hop height"
msgstr "Hauteur du saut en Z"
@@ -15870,6 +16010,10 @@ msgstr "Longueur supplémentaire"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Lorsque la rétraction est compensée après le mouvement de déplacement, lextrudeuse poussera cette quantité supplémentaire de filament. Ce paramètre est rarement nécessaire."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Longueur supplémentaire à la reprise (Changement doutil)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Lorsque la rétraction est compensée après le changement doutil, lextrudeur poussera cette quantité supplémentaire de filament."
@@ -15968,11 +16112,11 @@ msgstr ""
"Si langle maximal à lintérieur de la boucle périmétrique dépasse cette valeur (indiquant labsence dangles vifs), une couture en biseau sera utilisée. La valeur par défaut est de 155°."
msgid "Conditional overhang threshold"
msgstr "Seuil de dépassement conditionnel"
msgstr "Seuil de surplomb conditionnel"
#, no-c-format, no-boost-format
msgid "This option determines the overhang threshold for the application of scarf joint seams. If the unsupported portion of the perimeter is less than this threshold, scarf joint seams will be applied. The default threshold is set at 40% of the external wall's width. Due to performance considerations, the degree of overhang is estimated."
msgstr "Cette option détermine le seuil de surplomb pour lapplication des coutures en écharpe. Si la partie non soutenue du périmètre est inférieure à ce seuil, des coutures en biseau seront appliquées. Le seuil par défaut est fixé à 40 % de la largeur de la paroi extérieure. Pour des raisons de performance, le degré de surplomb est estimé."
msgstr "Cette option détermine le seuil de surplomb pour lapplication des coutures en biseau. Si la partie non soutenue du périmètre est inférieure à ce seuil, des coutures en biseau seront appliquées. Le seuil par défaut est fixé à 40 % de la largeur de la paroi extérieure. Pour des raisons de performance, le degré de surplomb est estimé."
msgid "Scarf joint speed"
msgstr "Vitesse de la couture en biseau"
@@ -15981,7 +16125,7 @@ msgid "This option sets the printing speed for scarf joints. It is recommended t
msgstr "Cette option définit la vitesse dimpression des coutures en biseau. Il est recommandé dimprimer les coutures en biseau à une vitesse lente (moins de 100 mm/s). Il est également conseillé dactiver loption « Lissage de la vitesse dextrusion » si la vitesse définie varie de manière significative par rapport à la vitesse des parois extérieures ou intérieures. Si la vitesse spécifiée ici est supérieure à la vitesse des parois extérieures ou intérieures, limprimante prendra par défaut la plus lente des deux vitesses. Lorsquelle est spécifiée sous forme de pourcentage (par exemple, 80 %), la vitesse est calculée sur la base de la vitesse de la paroi extérieure ou intérieure. La valeur par défaut est fixée à 100 %."
msgid "Scarf joint flow ratio"
msgstr "Ratio de débit de la couture en biseau"
msgstr "Rapport de débit de la couture en biseau"
msgid "This factor affects the amount of material for scarf joints."
msgstr "Ce facteur influe sur la quantité de matériau pour les coutures en biseau."
@@ -16190,7 +16334,7 @@ msgstr "Taux de débit de la finition en spirale"
#, no-c-format, no-boost-format
msgid "Sets the finishing flow ratio while ending the spiral. Normally the spiral transition scales the flow ratio from 100% to 0% during the last loop which can in some cases lead to under extrusion at the end of the spiral."
msgstr "Définit le ratio de débit de finition lors de la fin de la spirale. Normalement, la transition de la spirale fait passer le taux de débit de 100% à 0% au cours de la dernière boucle, ce qui peut dans certains cas entraîner une sous-extrusion à la fin de la spirale."
msgstr "Définit le rapport de débit de finition lors de la fin de la spirale. Normalement, la transition de la spirale fait passer le taux de débit de 100% à 0% au cours de la dernière boucle, ce qui peut dans certains cas entraîner une sous-extrusion à la fin de la spirale."
msgid "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, a prime tower is required for smooth mode to wipe the nozzle."
msgstr "Si le mode fluide ou traditionnel est sélectionné, une vidéo en timelapse sera générée pour chaque impression. À chaque couche imprimée, un instantané est pris avec la caméra intégrée. Tous ces instantanés seront assemblés dans une vidéo timelapse une fois l'impression terminée. Si le mode lisse est sélectionné, l'extrudeur se déplace vers la goulotte d'évacuation à chaque couche imprimée, puis prend un cliché. Étant donné que le filament fondu peut s'échapper de la buse pendant la prise de vue, une tour damorçage est requise en mode lisse pour essuyer la buse."
@@ -16282,6 +16426,14 @@ msgstr "Changement doutil sur la tour dessuyage"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Force la tête doutil à se déplacer vers la tour dessuyage avant démettre la commande de changement doutil (Tx). Pertinent uniquement pour les imprimantes multi-extrudeurs (à têtes doutil multiples) utilisant une tour dessuyage de type 2. Par défaut, Orca omet ce déplacement sur les machines à têtes doutil multiples car le firmware gère le changement de tête, ce qui peut entraîner lémission de la commande Tx au-dessus de la pièce imprimée. Activez cette option si vous préférez que le changement doutil soit toujours émis au-dessus de la tour dessuyage."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Attendre la température sur la tour dessuyage"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Prend le nouvel outil sans attendre quil atteigne la température dimpression, se déplace vers la tour dessuyage et y attend la température, juste avant la purge. Le suintement dû à la chauffe se dépose sur la tour plutôt que sur le modèle, et le déplacement se superpose à la chauffe. Uniquement pertinent pour les imprimantes multi-extrudeurs (multi-têtes) utilisant une tour dessuyage de type 2. Le firmware ou la macro de changement doutil ne doivent pas attendre la température eux-mêmes. Lorsque cette option est désactivée, lattente de température est émise juste après la commande de changement doutil."
msgid "No sparse layers (beta)"
msgstr "Pas de couches éparses (beta)"
@@ -18173,7 +18325,7 @@ msgid "Record Factor"
msgstr "Enregistrer le facteur"
msgid "We found the best flow ratio for you"
msgstr "Nous avons trouvé le meilleur ratio de débit pour vous"
msgstr "Nous avons trouvé le meilleur rapport de débit pour vous"
msgid "Flow Ratio"
msgstr "Rapport de débit"
@@ -18381,6 +18533,20 @@ msgstr ""
"Il existe plusieurs adresses IP résolues par le nom dhôte %1%.\n"
"Veuillez en sélectionner une qui doit être utilisée."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Mise à léchelle automatique selon la buse"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Ce modèle est conçu pour une buse de 0,4 mm avec une hauteur de couche de 0,2 mm. \n"
"Lorsque loption de mise à léchelle est activée (recommandé), il est redimensionné dynamiquement pour correspondre au diamètre de buse actuel et à une hauteur de couche appropriée, ce qui rend le test à la fois précis et facile à lire.\n"
"Ne désactivez la mise à léchelle que si vous souhaitez imprimer le modèle de référence exactement tel quel."
msgid "PA Calibration"
msgstr "Calibration Pressure Advance"
@@ -18517,6 +18683,14 @@ msgstr "Vitesse de début: "
msgid "End speed: "
msgstr "Vitesse de fin: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Ajustement automatique à la vitesse volumétrique maximale"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Si la vitesse finale devait dépasser la vitesse volumétrique maximale du filament, la hauteur de couche est automatiquement réduite (en conservant des valeurs standard et en restant dans les limites de la machine) pour latteindre. Si même la hauteur de couche minimale ne suffit pas, cest la vitesse finale qui est réduite."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18528,6 +18702,57 @@ msgstr ""
"intervalles >= 0\n"
"Fin > Début + Intervalle"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"La vitesse finale (%.0f mm/s) dépasse la vitesse volumétrique maximale du filament (%.1f mm³/s), ce qui limite la paroi extérieure à environ %.0f mm/s pour cette largeur de ligne et cette hauteur de couche.\n"
" Les vitesses supérieures seront bridées : les blocs supérieurs de la tour ne seront donc pas imprimés à la vitesse demandée.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"La vitesse finale (%.0f mm/s) dépasse la vitesse volumétrique maximale du filament (%.1f mm³/s) avec la hauteur de couche par défaut (%.2f mm).\n"
"\n"
"La hauteur de couche a été réduite à %.2f mm (une valeur utilisée par les profils de cette imprimante) afin que la tour puisse atteindre la vitesse demandée."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Même avec la plus petite hauteur de couche utilisée par les profils de cette imprimante (%.2f mm), la vitesse finale (%.0f mm/s) dépasse la vitesse volumétrique maximale du filament (%.1f mm³/s).\n"
"\n"
"La hauteur de couche sera réglée sur %.2f mm et la vitesse finale abaissée à %.0f mm/s.\n"
"\n"
"Continuer ?"
# AI Translated
msgid "Continue anyway?"
msgstr "Continuer quand même ?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Activer « Ajustement automatique » pour corriger cela automatiquement, ou continuer quand même ?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Activer « Mise à léchelle automatique selon la buse » et « Ajustement automatique » pour corriger cela automatiquement, ou continuer quand même ?"
msgid "Start retraction length: "
msgstr "Longueur de rétraction de début: "
@@ -19425,9 +19650,6 @@ msgstr "Imprimante Physique"
msgid "Print Host upload"
msgstr "Envoi vers limprimante hôte"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante. Les agents disponibles sont enregistrés au démarrage."
msgid "Select a Flashforge printer"
msgstr "Sélectionner une imprimante Flashforge"
@@ -20275,9 +20497,6 @@ msgstr "Un événement inattendu sest produit lors de la connexion, veuillez
msgid "User canceled."
msgstr "Lutilisateur a annulé."
msgid "Head diameter"
msgstr "Diamètre de la tête"
msgid "Max angle"
msgstr "Angle maximal"
@@ -21059,6 +21278,25 @@ msgstr ""
"Éviter la déformation\n"
"Saviez-vous que lors de limpression de matériaux susceptibles de se déformer, tels que lABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "La hauteur de couche est trop faible.\n"
#~ "Elle sera définie à min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "La hauteur de la couche dépasse la limite fixée dans Paramètres de limprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité dimpression."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Sajuster automatiquement à la plage définie ?\n"
#~ msgid "Head diameter"
#~ msgstr "Diamètre de la tête"
#~ msgid "Print order within a single layer."
#~ msgstr "Ordre dimpression au sein dune même couche"
#~ msgid "Bottom"
#~ msgstr "Dessous"
@@ -21149,9 +21387,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Renders cast shadows on the plate in realistic view."
#~ msgstr "Affiche les ombres portées sur la plaque dans la vue réaliste."

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -3850,6 +3850,10 @@ msgstr "Disposizione..."
msgid "Arranging"
msgstr "Disposizione"
# AI Translated
msgid "Arranging "
msgstr "Disposizione "
msgid "Arranging canceled."
msgstr "Disposizione annullata."
@@ -4737,6 +4741,23 @@ msgstr "L'attuale temperatura della camera è superiore alla temperatura di sicu
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "La temperatura minima della camera (%d℃) è superiore alla temperatura target della camera (%d℃). Il valore minimo è la soglia alla quale inizia la stampa mentre la camera continua a riscaldarsi verso il target, quindi non dovrebbe superarlo. Verrà limitato al valore target."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "L'altezza dello strato è troppo piccola. Sarà impostata al valore minimo (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "L'altezza dello strato è fuori dai limiti impostati in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato, ciò potrebbe causare problemi di qualità di stampa."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Regolarla automaticamente al limite (%g mm)?"
msgid "Adjust"
msgstr "Regola"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4856,6 +4877,13 @@ msgstr ""
"Sì - Abilita generatore di pareti Arachne\n"
"No - Disabilita generatore di pareti Arachne e imposta la modalità [Spostamento] della Superficie ruvida"
# AI Translated
msgid "Brim ear radius"
msgstr "Raggio della tesa ad orecchio"
msgid "Brim width"
msgstr "Larghezza tesa"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "La modalità spirale funziona solo quando i perimetri sono 1, il supporto è disabilitato, il rilevamento degli ammassi tramite sondaggio è disabilitato, gli strati superiori della shell sono 0, la densità del riempimento sparso è 0 e il tipo di timelapse è tradizionale."
@@ -5110,6 +5138,14 @@ msgstr "Impossibile generare G-code di calibrazione"
msgid "Calibration error"
msgstr "Errore di calibrazione"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Questa stampante non dispone dell'hardware richiesto da questo controllo."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Questo controllo non è supportato su questa stampante."
# AI Translated
msgid "Network unavailable"
msgstr "Rete non disponibile"
@@ -5969,7 +6005,7 @@ msgstr "Volume:"
msgid "Size:"
msgstr "Dimensione:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Sono stati trovati conflitti di percorsi nel G-code sullo strato %d, Z = %.2lfmm. Si prega di separare gli oggetti in conflitto (%s <-> %s)."
@@ -6150,6 +6186,10 @@ msgstr "Multi-dispositivo"
msgid "Project"
msgstr "Progetto"
# AI Translated
msgid "Device (Web)"
msgstr "Dispositivo (Web)"
msgid "Yes"
msgstr "Sì"
@@ -8240,21 +8280,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Sostituito %s.\n"
msgid "Replaced volumes"
msgstr "Volumi sostituiti"
@@ -8991,6 +9031,18 @@ msgstr "Abilitando questa opzione, puoi inviare un'attività a più dispositivi
msgid "Pop up to select filament grouping mode"
msgstr "Popup per selezionare la modalità di raggruppamento filamenti"
# AI Translated
msgid "Visible plugin pages"
msgstr "Pagine dei plugin visibili"
# AI Translated
msgid "pages"
msgstr "pagine"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Numero di pagine dei plugin mostrate come schede fisse prima che le pagine rimanenti vengano raccolte in un menu a discesa nell'ultima scheda."
msgid "Behaviour"
msgstr "Comportamento"
@@ -9229,6 +9281,21 @@ msgstr "Attenua gli strati inferiori"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Quando si scorre il cursore degli strati nell'anteprima elaborata, gli strati al di sotto di quello corrente vengono visualizzati scuriti, in modo che solo lo strato in visualizzazione sia mostrato alla massima luminosità."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Luminosità degli strati attenuati"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Quanto luminosi appaiono gli strati attenuati quando \"Attenua gli strati inferiori\" è attivo.\n"
"99% è appena scurito, 0% li rende neri. Limitato al 99% perché 100% equivarrebbe a disattivare l'opzione."
msgid "Login region"
msgstr "Regione di accesso"
@@ -9362,6 +9429,18 @@ msgstr "Mostra i profili non supportati"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Mostra i profili incompatibili/non supportati negli elenchi a discesa di stampante e filamento. Questi profili non possono essere selezionati."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Sperimentale) Usa gli agenti stampante invece degli host di stampa"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Instrada i lavori di stampa delle stampanti non Bambu attraverso gli agenti plugin della stampante invece del classico flusso di caricamento sull'host di stampa.\n"
"Quando è disattivato, OrcaSlicer usa il comportamento legacy dell'host di stampa."
# AI Translated
msgid "Experimental Features"
msgstr "Funzionalità sperimentali"
@@ -9631,9 +9710,25 @@ msgstr "Profilo utente"
msgid "Preset Inside Project"
msgstr "Profilo interno al progetto"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Copia in questo profilo tutti i valori ereditati dal profilo padre e rimuove la relazione di ereditarietà. I profili compatibili solo con il profilo padre potrebbero non essere più supportati."
msgid "Detach from parent"
msgstr "Scollega dal genitore"
# AI Translated
msgid "Unique preset"
msgstr "Profilo unico"
# AI Translated
msgid "Parent preset"
msgstr "Profilo padre"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Questo profilo non eredita da un altro profilo."
msgid "Name is unavailable."
msgstr "Nome non disponibile."
@@ -10373,22 +10468,6 @@ msgstr "Sei sicuro di voler abilitare questa opzione?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "I pattern di riempimento sono generalmente progettati per gestire automaticamente la rotazione per garantire una stampa corretta e ottenere gli effetti desiderati (ad es. Gyroid, Cubico). La rotazione del pattern di riempimento sparso corrente potrebbe portare a un supporto insufficiente. Procedere con cautela e verificare accuratamente eventuali problemi di stampa. Sei sicuro di voler abilitare questa opzione?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"L'altezza dello strato è troppo piccola.\n"
"Sarà impostato su min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa."
msgid "Adjust to the set range automatically?\n"
msgstr "Regolare automaticamente l'intervallo impostato?\n"
msgid "Adjust"
msgstr "Regola"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Funzionalità sperimentale: ritrazione e taglio del filamento a una distanza maggiore durante i cambi di filamento per ridurre al minimo lo spurgo. Sebbene possa ridurre notevolmente lo spurgo, può anche aumentare il rischio di intasamento degli ugelli o di altre complicazioni di stampa."
@@ -10584,6 +10663,9 @@ msgstr "Parole chiave riservate trovate"
msgid "Setting Overrides"
msgstr "Sovrascrivi impostazioni"
msgid "Retraction when switching material"
msgstr "Retrazione quando si cambia materiale"
msgid "Basic information"
msgstr "Informazioni di base"
@@ -10715,6 +10797,12 @@ msgstr "Profili di processo compatibili"
msgid "Printable space"
msgstr "Spazio di stampa"
msgid "Printer Agent"
msgstr "Agente stampante"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10840,9 +10928,6 @@ msgstr "Limiti altezza strati"
msgid "Z-Hop"
msgstr "Sollevamento Z"
msgid "Retraction when switching material"
msgstr "Retrazione quando si cambia materiale"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12202,6 +12287,10 @@ msgstr " è troppo vicino all'area di esclusione e si verificheranno collisioni.
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " è troppo vicino all'area di rilevamento ammassi e verranno causate collisioni.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " è parzialmente fuori dall'area stampabile e non può essere stampato.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Le temperature degli ugelli selezionate sono incompatibili. La temperatura dell'ugello per ciascun filamento deve rientrare nell'intervallo di temperatura consigliato per gli altri filamenti. In caso contrario, potrebbero verificarsi ostruzioni degli ugelli o danni alla stampante."
@@ -12531,9 +12620,6 @@ msgstr "Usa 3MF invece di G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Abilita questa opzione se la stampante accetta un file 3MF come processo di stampa. Quando è abilitata, Orca Slicer invia il file elaborato come .gcode.3mf, invece di un semplice file .gcode."
msgid "Printer Agent"
msgstr "Agente stampante"
msgid "Select the network agent implementation for printer communication."
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante."
@@ -13220,9 +13306,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Velocità dei ponti interni. Se il valore è espresso in percentuale, verrà calcolato in base a bridge_speed. Il valore predefinito è 150%."
msgid "Brim width"
msgstr "Larghezza tesa"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Questa è la distanza tra il modello e la linea più esterna della tesa."
@@ -13302,6 +13385,14 @@ msgstr ""
"La geometria verrà decimata prima di rilevare gli spigoli vivi. Questo parametro indica la lunghezza minima dello scostamento per la decimazione.\n"
"0 per disattivare."
# AI Translated
msgid "Brim ears outer only"
msgstr "Tesa ad orecchio solo sul contorno esterno"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Genera gli orecchi di topo solo sul contorno esterno del modello, escludendo fori e sezioni chiuse."
msgid "upward compatible machine"
msgstr "macchina compatibile con versioni successive"
@@ -13326,12 +13417,37 @@ msgstr "Per oggetto"
msgid "Intra-layer order"
msgstr "Ordine intra-strato"
msgid "Print order within a single layer."
msgstr "Ordine di stampa all'interno di un singolo strato."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Ordine in cui le istanze degli oggetti vengono percorse all'interno di un singolo strato; determina quanti spostamenti servono per passare dall'una all'altra.\n"
"\n"
"Predefinito: concatenamento con il vicino più prossimo, affinato con 2-opt e rimozione degli incroci. Una buona scelta generale.\n"
"Come elenco di oggetti: le istanze vengono stampate nello stesso ordine dell'elenco degli oggetti, senza alcuna ottimizzazione del percorso. Da usare quando serve un ordine prevedibile e controllato manualmente.\n"
"Il migliore di tutti (percorso più breve): tutte le strategie vengono valutate e viene usata la più breve. L'ordine delle istanze degli oggetti viene deciso una sola volta per l'intera stampa, mentre l'ordine delle singole isole viene deciso strato per strato, quindi strati diversi possono usare strategie diverse. Slicing leggermente più lento.\n"
"Serpentina: percorso a serpentina, riga per riga, affinato con 2-opt. Adatto a griglie regolari di molti pezzi piccoli.\n"
"\n"
"Con più filamenti o strumenti nello stesso strato, ridurre i cambi strumento ha la priorità: gli oggetti vengono prima raggruppati per filamento e questa impostazione ordina solo le istanze all'interno di ciascun gruppo di filamento, quindi la sequenza complessiva potrebbe non sembrare il percorso più breve sul piatto."
msgid "As object list"
msgstr "Come elenco di oggetti"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Il migliore di tutti (percorso più breve)"
# AI Translated
msgid "Snake"
msgstr "Serpentina"
msgid "Slow printing down for better layer cooling"
msgstr "Rallenta stampa per miglior raffreddamento degli strati"
@@ -14451,6 +14567,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroide"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Fattore di arrotondamento del riempimento sparso"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Controlla quanto vengono arrotondati gli angoli del riempimento sparso. 0% mantiene il percorso originale con angoli vivi, mentre 100% produce le curve più ampie possibili tra linee di riempimento adiacenti."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Accelerazione del riempimento della superficie superiore. L'utilizzo di un valore inferiore può migliorare la qualità della superficie superiore."
@@ -14995,6 +15119,14 @@ msgstr "Con quale tipo di G-code la stampante è compatibile."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Ometti il blocco di configurazione del G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Non scrive il CONFIG_BLOCK (le coppie chiave/valore della configurazione dello slicer) nel file G-code. Può essere utile con stampanti il cui firmware va in crash durante l'analisi di queste righe di commento (ad es. Anycubic go-klipper). Nota: il file G-code non conterrà più le impostazioni dello slicer, quindi reimportandolo in OrcaSlicer la configurazione non verrà ripristinata."
msgid "Pellet Modded Printer"
msgstr "Stampante modificata per granuli"
@@ -16054,6 +16186,14 @@ msgstr "Retrazione lunga al cambio estrusore"
msgid "Retraction distance when extruder change"
msgstr "Distanza di retrazione al cambio estrusore"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Lunghezza di retrazione (Cambio testina)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Quando la retrazione viene attivata prima di un cambio testina, il filamento viene ritirato della quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che entri nell'estrusore)."
msgid "Z-hop height"
msgstr "Altezza sollevamento Z"
@@ -16151,6 +16291,10 @@ msgstr "Lunghezza aggiuntiva in ripresa"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Quando la retrazione è compensata dopo uno spostamento, l'estrusore espelle questa quantità aggiuntiva di filamento. Questa impostazione è raramente necessaria."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Lunghezza aggiuntiva in ripresa (Cambio testina)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Quando la retrazione è compensata dopo un cambio di testina, l'estrusore espelle questa quantità aggiuntiva di filamento."
@@ -16568,6 +16712,14 @@ msgstr "Cambio utensile sulla torre di spurgo"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Forza la testa di stampa a spostarsi sulla torre di spurgo prima di emettere il comando di cambio utensile (Tx). Rilevante solo per le stampanti multi-estrusore (multi-testa) che utilizzano una torre di spurgo di Tipo 2. Per impostazione predefinita Orca salta lo spostamento sulle macchine multi-testa perché il firmware gestisce il cambio della testa, il che può far sì che il comando Tx venga emesso sopra la parte stampata. Abilita questa opzione se desideri che il cambio utensile venga sempre emesso sopra la torre di spurgo."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Attendi la temperatura sulla torre di spurgo"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Preleva la nuova testina senza attendere che raggiunga la temperatura di stampa, si sposta sulla torre di spurgo e attende lì la temperatura, subito prima dello spurgo. Il trasudo dovuto al riscaldamento finisce sulla torre invece che sul modello, e lo spostamento si sovrappone al riscaldamento. Rilevante solo per stampanti multi-estrusore (multi-testina) che usano una torre di spurgo di tipo 2. Il firmware o la macro di cambio testina non devono attendere la temperatura autonomamente. Quando è disattivato, l'attesa della temperatura viene emessa subito dopo il comando di cambio testina."
msgid "No sparse layers (beta)"
msgstr "Nessuno strato sparso (beta)"
@@ -18679,6 +18831,20 @@ msgstr ""
"Esistono diversi indirizzi IP che risolvono il nome host %1%.\n"
"Selezionare quello da utilizzare."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Scala automaticamente in base all'ugello"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Questo modello è progettato per un ugello da 0,4 mm con un'altezza strato di 0,2 mm. \n"
"Quando l'opzione di ridimensionamento è attiva (consigliata), il modello viene ridimensionato dinamicamente in base al diametro dell'ugello attuale e a un'altezza strato adeguata, rendendo il test preciso e facile da leggere.\n"
"Disattiva il ridimensionamento solo se desideri stampare il modello di riferimento esattamente com'è."
msgid "PA Calibration"
msgstr "Calibrazione AP"
@@ -18815,6 +18981,14 @@ msgstr "Velocità iniziale: "
msgid "End speed: "
msgstr "Velocità finale: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Adatta automaticamente alla velocità volumetrica massima"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Se la velocità finale superasse la velocità volumetrica massima del filamento, l'altezza strato viene ridotta automaticamente (mantenendo valori standard e restando entro i limiti della macchina) per raggiungerla. Se anche l'altezza strato minima non è sufficiente, viene ridotta invece la velocità finale."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18826,6 +19000,57 @@ msgstr ""
"incremento >= 0\n"
"fine > inizio + incremento"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"La velocità finale (%.0f mm/s) supera la velocità volumetrica massima del filamento (%.1f mm³/s), il che limita la parete esterna a circa %.0f mm/s con questa larghezza linea e questa altezza strato.\n"
" Le velocità superiori verranno limitate, quindi i blocchi superiori della torre non verranno stampati alla velocità richiesta.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"La velocità finale (%.0f mm/s) supera la velocità volumetrica massima del filamento (%.1f mm³/s) con l'altezza strato predefinita (%.2f mm).\n"
"\n"
"L'altezza strato è stata ridotta a %.2f mm (un valore usato dai profili di questa stampante) affinché la torre possa raggiungere la velocità richiesta."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Anche con l'altezza strato più piccola usata dai profili di questa stampante (%.2f mm), la velocità finale (%.0f mm/s) supera la velocità volumetrica massima del filamento (%.1f mm³/s).\n"
"\n"
"L'altezza strato verrà impostata su %.2f mm e la velocità finale ridotta a %.0f mm/s.\n"
"\n"
"Continuare?"
# AI Translated
msgid "Continue anyway?"
msgstr "Continuare comunque?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Attivare \"Adatta automaticamente\" per correggere automaticamente il problema oppure continuare comunque?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Attivare \"Scala automaticamente in base all'ugello\" e \"Adatta automaticamente\" per correggere automaticamente il problema oppure continuare comunque?"
msgid "Start retraction length: "
msgstr "Lunghezza di retrazione iniziale: "
@@ -19748,9 +19973,6 @@ msgstr "Stampante fisica"
msgid "Print Host upload"
msgstr "Caricamento host di stampa"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Seleziona una stampante Flashforge"
@@ -20693,9 +20915,6 @@ msgstr "Si è verificato un problema imprevisto durante il tentativo di accesso.
msgid "User canceled."
msgstr "Utente rimosso."
msgid "Head diameter"
msgstr "Diametro testa"
msgid "Max angle"
msgstr "Angolo massimo"
@@ -21514,6 +21733,25 @@ msgstr ""
"Evita le deformazioni\n"
"Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "L'altezza dello strato è troppo piccola.\n"
#~ "Sarà impostato su min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Regolare automaticamente l'intervallo impostato?\n"
#~ msgid "Head diameter"
#~ msgstr "Diametro testa"
#~ msgid "Print order within a single layer."
#~ msgstr "Ordine di stampa all'interno di un singolo strato."
#~ msgid "Bottom"
#~ msgstr "Inferiore"
@@ -21600,9 +21838,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Continue to sync filaments"
#~ msgstr "Continua la sincronizzazione dei filamenti"

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -3860,6 +3860,10 @@ msgstr "レイアウト中"
msgid "Arranging"
msgstr "レイアウト中"
# AI Translated
msgid "Arranging "
msgstr "レイアウト中 "
msgid "Arranging canceled."
msgstr "レイアウトを取り消しました"
@@ -4746,6 +4750,23 @@ msgstr "現在のチャンバー温度が材料の安全温度を超えていま
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "最低庫内温度 (%d℃) が目標庫内温度 (%d℃) を上回っています。最低値は、チャンバーが目標に向けて加熱を続けながら印刷を開始するしきい値であるため、目標値を超えてはいけません。値は目標値に制限されます。"
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "積層ピッチが小さすぎます。最小値 (%g mm) に設定されます。"
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "積層ピッチが、プリンター設定 -> 押出機 -> 積層ピッチの制限 で設定された範囲を外れています。印刷品質の問題が発生する可能性があります。"
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "自動的に制限値 (%g mm) に調整しますか?"
msgid "Adjust"
msgstr "調整"
# AI Translated
msgid ""
"Layer height too small\n"
@@ -4869,6 +4890,13 @@ msgstr ""
"はい - Arachneウォールジェネレーターを有効にする\n"
"いいえ - Arachneウォールジェネレーターを無効にし、ファジースキンを[変位]モードに設定する"
# AI Translated
msgid "Brim ear radius"
msgstr "ブリムイヤー半径"
msgid "Brim width"
msgstr "ブリム幅"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "スパイラルモードは壁ループが1、サポートが無効、プロービングによるクランピング検出が無効、上部シェルレイヤーが0、スパースインフィル密度が0、タイムラプスタイプがトラディショナルの場合のみ機能します。"
@@ -5123,6 +5151,14 @@ msgstr "キャリブレーションG-codeの生成に失敗しました"
msgid "Calibration error"
msgstr "キャリブレーションエラー"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "このプリンターには、このコントロールに必要なハードウェアが設定されていません。"
# AI Translated
msgid "This control is not supported on this printer."
msgstr "このコントロールはこのプリンターではサポートされていません。"
# AI Translated
msgid "Network unavailable"
msgstr "ネットワークが利用できません"
@@ -5984,7 +6020,7 @@ msgstr "ボリューム"
msgid "Size:"
msgstr "サイズ:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "レイヤー%d、Z = %.2lfmmでG-codeパスの衝突が検出されました。衝突するオブジェクトをもっと離してください%s <-> %s。"
@@ -6160,6 +6196,10 @@ msgstr "マルチデバイス"
msgid "Project"
msgstr "プロジェクト"
# AI Translated
msgid "Device (Web)"
msgstr "デバイス (Web)"
msgid "Yes"
msgstr "はい"
@@ -8258,21 +8298,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, boost-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, boost-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, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ スキップ %s: 置換に失敗しました。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 置換しました %1%。\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 置換しました %s。\n"
msgid "Replaced volumes"
msgstr "置換されたボリューム"
@@ -9011,6 +9051,18 @@ msgstr "このオプションを有効にすると、複数のデバイスに同
msgid "Pop up to select filament grouping mode"
msgstr "フィラメントグルーピングモード選択のポップアップ"
# AI Translated
msgid "Visible plugin pages"
msgstr "表示するプラグインページ数"
# AI Translated
msgid "pages"
msgstr "ページ"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "固定タブとして表示するプラグインページの数です。残りのページは最後のタブのドロップダウンにまとめられます。"
msgid "Behaviour"
msgstr "動作"
@@ -9249,6 +9301,21 @@ msgstr "下の積層を暗くする"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "スライスプレビューで積層スライダーを操作する際、現在の層より下の積層を暗く描画し、表示中の積層のみを明るく表示します。"
# AI Translated
msgid "Dimmed layer brightness"
msgstr "暗くした積層の明るさ"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"「下の積層を暗くする」を有効にしたときに、暗くした積層をどの程度の明るさで表示するかを指定します。\n"
"99%ではほとんど暗くならず、0%では真っ黒になります。100%はオプションを無効にした場合と同じになるため、上限は99%です。"
msgid "Login region"
msgstr "地域"
@@ -9385,6 +9452,18 @@ msgstr "非対応のプリセットを表示"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "プリンターとフィラメントのドロップダウンリストに、互換性のない/非対応のプリセットを表示します。これらのプリセットは選択できません。"
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(実験的) プリントホストの代わりにプリンターエージェントを使用"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Bambu 以外のプリンターの印刷ジョブを、従来のプリントホストへのアップロードではなく、プリンターのプラグインエージェント経由で送信します。\n"
"無効の場合、OrcaSlicer は従来のプリントホストの動作を使用します。"
# AI Translated
msgid "Experimental Features"
msgstr "実験的機能"
@@ -9653,9 +9732,25 @@ msgstr "ユーザープリセット"
msgid "Preset Inside Project"
msgstr "プロジェクト プリセット"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "親プリセットから継承したすべての値をこのプリセットにコピーし、親との継承関係を解除します。親プリセットとのみ互換性のあるプリセットは、サポートされなくなる場合があります。"
msgid "Detach from parent"
msgstr "親から分離"
# AI Translated
msgid "Unique preset"
msgstr "独立したプリセット"
# AI Translated
msgid "Parent preset"
msgstr "親プリセット"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "このプリセットは他のプリセットを継承していません。"
msgid "Name is unavailable."
msgstr "名称は使用できません"
@@ -10397,22 +10492,6 @@ msgstr "このオプションを有効にしてもよろしいですか?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "インフィルパターンは通常、適切な印刷と意図した効果を確保するために回転を自動的に処理するように設計されています(例: ジャイロイド、キュービック)。現在のスパースインフィルパターンを回転させると、サポートが不十分になる可能性があります。慎重に進め、潜在的な印刷問題を十分に確認してください。このオプションを有効にしてもよろしいですか?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"レイヤー高さが小さすぎます。\n"
"min_layer_heightに設定されます\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "レイヤー高さがプリンター設定 -> エクストルーダー -> レイヤー高さ制限の上限を超えています。印刷品質の問題が発生する可能性があります。"
msgid "Adjust to the set range automatically?\n"
msgstr "設定範囲に自動調整しますか?\n"
msgid "Adjust"
msgstr "調整"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "実験的機能: フィラメント交換時により長い距離でフィラメントをリトラクト・カットしてフラッシュを最小化します。フラッシュを大幅に削減できますが、ノズル詰まりやその他の印刷問題のリスクが高まる可能性もあります。"
@@ -10602,6 +10681,9 @@ msgstr "保留キーワードが見つかりました"
msgid "Setting Overrides"
msgstr "上書き設定"
msgid "Retraction when switching material"
msgstr "素材変更時のリトラクション"
msgid "Basic information"
msgstr "基本情報"
@@ -10732,6 +10814,12 @@ msgstr "互換性のあるプロセスプロファイル"
msgid "Printable space"
msgstr "造形可能領域"
msgid "Printer Agent"
msgstr "プリンターエージェント"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "プリンター通信用のネットワークエージェント実装を選択します。使用可能なエージェントは起動時に登録されます。"
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10858,9 +10946,6 @@ msgstr "積層ピッチの制限"
msgid "Z-Hop"
msgstr "Z-ホップ"
msgid "Retraction when switching material"
msgstr "素材変更時のリトラクション"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12239,6 +12324,10 @@ msgstr " は除外エリアに近すぎるため、衝突が発生します。\n
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " がクランピング検出エリアに近すぎ、衝突が発生します。\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " は造形可能領域から一部はみ出しているため、印刷できません。\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "選択したノズル温度に互換性がありません。各フィラメントのノズル温度は、他のフィラメントの推奨ノズル温度範囲内に収まる必要があります。そうでない場合、ノズル詰まりやプリンターの損傷が発生する可能性があります。"
@@ -12580,9 +12669,6 @@ msgstr "G-codeの代わりに3MFを使用"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "プリンターが印刷ジョブとして3MFファイルを受け付ける場合に有効にします。有効にすると、Orca Slicerはスライス済みファイルを通常の.gcodeファイルではなく.gcode.3mfとして送信します。"
msgid "Printer Agent"
msgstr "プリンターエージェント"
msgid "Select the network agent implementation for printer communication."
msgstr "プリンター通信用のネットワークエージェント実装を選択します。"
@@ -13301,9 +13387,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "内部ブリッジの速度です。値を%で指定した場合、bridge_speedを基準に計算されます。デフォルト値は150%です。"
msgid "Brim width"
msgstr "ブリム幅"
msgid "This is the distance from the model to the outermost brim line."
msgstr "一番外側のブリム線がモデルと距離です。"
@@ -13392,6 +13475,14 @@ msgstr ""
"鋭角を検出する前にジオメトリが間引かれます。このパラメータは、間引きにおける偏差の最小長さを指定します。\n"
"0で無効になります。"
# AI Translated
msgid "Brim ears outer only"
msgstr "ブリムイヤーを外側の輪郭のみ"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "穴や閉じた部分を除き、モデルの外側の輪郭にのみマウスイヤーを生成します。"
msgid "upward compatible machine"
msgstr "互換性のあるデバイス"
@@ -13416,12 +13507,37 @@ msgstr "オブジェクト順"
msgid "Intra-layer order"
msgstr "レイヤー内の順序"
msgid "Print order within a single layer."
msgstr "単一レイヤー内の印刷順序。"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"1つの積層内でオブジェクトインスタンスを巡回する順序です。インスタンス間の移動距離に影響します。\n"
"\n"
"デフォルト最近傍法でつなぎ、2-optと交差の除去で改善します。一般的な用途に適した選択です。\n"
"オブジェクトリスト順:パスの最適化を行わず、オブジェクトリストと同じ順序でインスタンスを造形します。手動で管理できる予測しやすい順序が必要な場合に使用します。\n"
"すべてを比較最短経路すべての方式を評価し、最も短いものを使用します。オブジェクトインスタンスの順序は造形全体で1回だけ決定され、個々のアイランドの順序は積層ごとに決定されるため、積層によって異なる方式が使われる場合があります。スライスがやや遅くなります。\n"
"蛇行行ごとに折り返しながら蛇行して巡回し、2-optで改善します。小さなパーツが規則的に並んだ配置に適しています。\n"
"\n"
"同じ積層内で複数のフィラメントやツールを使用する場合は、ツール交換の削減が優先されます。オブジェクトはまずフィラメントごとにグループ化され、この設定は各フィラメントグループ内のインスタンスの順序のみを決めるため、全体の順序はプレート全体での最短経路には見えないことがあります。"
msgid "As object list"
msgstr "オブジェクトリスト順"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "すべてを比較(最短経路)"
# AI Translated
msgid "Snake"
msgstr "蛇行"
msgid "Slow printing down for better layer cooling"
msgstr "冷却の為減速"
@@ -14590,6 +14706,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "ジャイロイド"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "スパース インフィルの平滑化係数"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "スパース インフィルの角をどの程度丸めるかを設定します。0% では元の鋭い経路のまま、100% では隣接するインフィル線の間で可能な限り大きな曲線になります。"
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "トップ面のインフィル加速度です。遅くすると表面の仕上がりが向上させることができます"
@@ -15189,6 +15313,14 @@ msgstr "プリンターが対応するG-code"
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "G-code の設定ブロックを省略"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "CONFIG_BLOCK (スライサー設定のキーと値のペア) を G-code ファイルに書き込みません。これらのコメント行の解析でファームウェアがクラッシュするプリンター (例: Anycubic go-klipper) で役立ちます。注意: G-code ファイルにスライサー設定が含まれなくなるため、OrcaSlicer に読み込み直しても設定は復元されません。"
# AI Translated
msgid "Pellet Modded Printer"
msgstr "ペレット改造プリンター"
@@ -16330,6 +16462,14 @@ msgstr "押出機切り替え時のロングリトラクション"
msgid "Retraction distance when extruder change"
msgstr "押出機切替時のリトラクション距離"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "リトラクション量 (ツール交換)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "ツール交換の前にリトラクションが行われるとき、指定した量だけフィラメントが引き戻されます (長さは押出機に入る前の未加工のフィラメントで測定されます)。"
# AI Translated
msgid "Z-hop height"
msgstr "Zホップの高さ"
@@ -16444,6 +16584,10 @@ msgstr "再開時の追加長さ"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "移動後に引込みが補償されると、エクストルーダーはこの追加量のフィラメントを押し出します。 この設定はほとんど必要ありません。"
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "再開時の追加長さ (ツール交換)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "ツールの交換後に吸込み分が補正されると、エクストルーダーはこの追加量のフィラメントを押し出します。"
@@ -16919,6 +17063,14 @@ msgstr "ワイプタワー上でツール交換"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "ツール交換コマンド (Tx) を発行する前に、ツールヘッドを強制的にワイプタワーへ移動させます。タイプ2のワイプタワーを使用するマルチ押出機 (マルチツールヘッド) プリンターにのみ関係します。デフォルトでは、マルチツールヘッド機ではファームウェアがヘッドの交換を処理するためOrcaは移動をスキップしますが、その結果Txコマンドが造形物の上で発行される場合があります。ツール交換を常にワイプタワーの上で発行したい場合は、このオプションを有効にしてください。"
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "ワイプタワーで温度待機"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "印刷温度に達するのを待たずに新しいツールを取り付け、ワイプタワーへ移動し、パージ直前にそこで温度を待ちます。加熱中の垂れ出しはモデルではなくタワーに落ち、移動時間が加熱と重なります。タイプ 2 のワイプタワーを使用するマルチ押出機 (マルチツールヘッド) プリンターでのみ有効です。ファームウェアやツール交換マクロ側で温度待機を行わないようにしてください。無効の場合、温度待機はツール交換コマンドの直後に出力されます。"
# AI Translated
msgid "No sparse layers (beta)"
msgstr "スパース層なし (ベータ)"
@@ -19167,6 +19319,20 @@ msgstr ""
"ホスト名%1%には、いくつかのIPアドレスがあります。\n"
"使用するIPアドレスを1つ選んでください。"
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "ノズルに合わせて自動スケール"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"このモデルは、0.4 mmズルと0.2 mmの積層ピッチを基準に設計されています。 \n"
"スケールオプションを有効にすると(推奨)、現在のノズル径と適切な積層ピッチに合わせてサイズが動的に調整され、テストの精度と読み取りやすさが向上します。\n"
"参照モデルをそのままの状態で造形したい場合のみ、スケールを無効にしてください。"
msgid "PA Calibration"
msgstr "PAキャリブレーション"
@@ -19306,6 +19472,14 @@ msgstr "開始速度: "
msgid "End speed: "
msgstr "終了速度: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "最大体積速度に合わせて自動調整"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "終了速度がフィラメントの最大体積速度を超える場合、その速度に到達できるよう積層ピッチを自動的に下げます(標準的な値を使用し、プリンタの制限内に収めます)。最小の積層ピッチでも足りない場合は、代わりに終了速度を下げます。"
# AI Translated
msgid ""
"Please input valid values:\n"
@@ -19318,6 +19492,57 @@ msgstr ""
"ステップ >= 0\n"
"終了 > 開始 + ステップ"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"終了速度(%.0f mm/sがフィラメントの最大体積速度%.1f mm³/sを超えています。この押出線幅と積層ピッチでは、外壁は約 %.0f mm/s に制限されます。\n"
" これを超える速度は制限されるため、タワーの上部ブロックは指定した速度で造形されません。\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"終了速度(%.0f mm/sがフィラメントの最大体積速度%.1f mm³/sを超えていますデフォルトの積層ピッチ %.2f mm の場合)。\n"
"\n"
"タワーが指定した速度に到達できるよう、積層ピッチを %.2f mmこのプリンタのプロファイルで使用されている値に下げました。"
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"このプリンタのプロファイルで使用されている最小の積層ピッチ(%.2f mmでも、終了速度%.0f mm/sがフィラメントの最大体積速度%.1f mm³/sを超えています。\n"
"\n"
"積層ピッチを %.2f mm に設定し、終了速度を %.0f mm/s に下げます。\n"
"\n"
"続行しますか?"
# AI Translated
msgid "Continue anyway?"
msgstr "このまま続行しますか?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "「自動調整」を有効にすると自動的に修正されます。このまま続行しますか?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "「ノズルに合わせて自動スケール」と「自動調整」を有効にすると自動的に修正されます。このまま続行しますか?"
msgid "Start retraction length: "
msgstr "開始リトラクション長さ: "
@@ -20272,9 +20497,6 @@ msgstr "実物プリンター"
msgid "Print Host upload"
msgstr "プリントホストのアップロード"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "プリンター通信用のネットワークエージェント実装を選択します。使用可能なエージェントは起動時に登録されます。"
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Flashforgeプリンターを選択"
@@ -21246,9 +21468,6 @@ msgstr "ログイン中に予期しない問題が発生しました。再試行
msgid "User canceled."
msgstr "ユーザーがキャンセルしました。"
msgid "Head diameter"
msgstr "直径"
msgid "Max angle"
msgstr "最大角度"
@@ -22077,6 +22296,25 @@ msgstr ""
"反りを避ける\n"
"ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "レイヤー高さが小さすぎます。\n"
#~ "min_layer_heightに設定されます\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "レイヤー高さがプリンター設定 -> エクストルーダー -> レイヤー高さ制限の上限を超えています。印刷品質の問題が発生する可能性があります。"
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "設定範囲に自動調整しますか?\n"
#~ msgid "Head diameter"
#~ msgstr "直径"
#~ msgid "Print order within a single layer."
#~ msgstr "単一レイヤー内の印刷順序。"
#~ msgid "Bottom"
#~ msgstr "底面"
@@ -22157,9 +22395,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Continue to sync filaments"
#~ msgstr "フィラメントの同期を続行"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2025-06-02 17:12+0900\n"
"Last-Translator: crwusiz <crwusiz@gmail.com>\n"
"Language-Team: \n"
@@ -3864,6 +3864,10 @@ msgstr "정렬 중..."
msgid "Arranging"
msgstr "정렬 중"
# AI Translated
msgid "Arranging "
msgstr "정렬 중 "
msgid "Arranging canceled."
msgstr "정렬 취소됨."
@@ -4759,6 +4763,23 @@ msgstr "현재 챔버 온도가 재료의 안전 온도보다 높으므로 재
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "최소 챔버 온도(%d℃)가 목표 챔버 온도(%d℃)보다 높습니다. 최소값은 챔버가 목표 온도까지 계속 가열되는 동안 출력을 시작하는 기준값이므로 목표값을 초과해서는 안 됩니다. 이 값은 목표값으로 제한됩니다."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "레이어 높이가 너무 작습니다. 최솟값(%g mm)으로 설정됩니다."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "레이어 높이가 프린터 설정 -> 압출기 -> 레이어 높이 한도에서 설정한 범위를 벗어났습니다. 출력 품질 문제가 발생할 수 있습니다."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "한도(%g mm)에 맞게 자동으로 조정할까요?"
msgid "Adjust"
msgstr "조정"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4880,6 +4901,13 @@ msgstr ""
"예 - 아라크네 벽 생성기 활성화\n"
"아니오 - 아라크네 벽 생성기 비활성화 및 퍼지 스킨 [변위] 모드 설정"
# AI Translated
msgid "Brim ear radius"
msgstr "브림 귀 반경"
msgid "Brim width"
msgstr "브림 너비"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "나선형 모드는 벽 루프가 1이고, 서포트가 비활성화되고, 프로빙에 의한 클럼핑 감지가 비활성화되고, 상단 셸 레이어가 0이고, 희소 인필 밀도가 0이고 타임랩스 유형이 전통적인 경우에만 작동합니다."
@@ -5134,6 +5162,14 @@ msgstr "교정 Gcode를 생성하지 못했습니다"
msgid "Calibration error"
msgstr "교정 오류"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "이 프린터에는 이 컨트롤에 필요한 하드웨어가 구성되어 있지 않습니다."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "이 컨트롤은 이 프린터에서 지원되지 않습니다."
# AI Translated
msgid "Network unavailable"
msgstr "네트워크를 사용할 수 없음"
@@ -5997,7 +6033,7 @@ msgstr "용량:"
msgid "Size:"
msgstr "크기:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "레이어 %d, Z = %.2lf mm에서 Gcode 경로 충돌이 발견되었습니다. 충돌하는 객체를 더 멀리 분리하세요 (%s <-> %s)."
@@ -6174,6 +6210,10 @@ msgstr "멀티 디바이스"
msgid "Project"
msgstr "프로젝트"
# AI Translated
msgid "Device (Web)"
msgstr "장치 (웹)"
msgid "Yes"
msgstr "예"
@@ -8284,24 +8324,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, boost-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, boost-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, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 건너뜀 %s: 교체하지 못했습니다.\n"
# AI Translated
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ %1%을(를) 교체했습니다.\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ %s을(를) 교체했습니다.\n"
# AI Translated
msgid "Replaced volumes"
@@ -9073,6 +9113,18 @@ msgstr "활성화하면 여러 장치에 동시에 작업을 보내고 여러
msgid "Pop up to select filament grouping mode"
msgstr "필라멘트 그룹화 모드를 선택하기 위한 팝업"
# AI Translated
msgid "Visible plugin pages"
msgstr "표시할 플러그인 페이지"
# AI Translated
msgid "pages"
msgstr "페이지"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "고정 탭으로 표시되는 플러그인 페이지 수입니다. 나머지 페이지는 마지막 탭의 드롭다운으로 묶입니다."
# AI Translated
msgid "Behaviour"
msgstr "동작"
@@ -9324,6 +9376,21 @@ msgstr "아래 레이어 어둡게 표시"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "슬라이스된 미리보기에서 레이어 슬라이더를 움직일 때 현재 레이어보다 아래에 있는 레이어를 어둡게 렌더링하여, 보고 있는 레이어만 완전한 밝기로 표시합니다."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "어둡게 표시된 레이어의 밝기"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"\"아래 레이어 어둡게 표시\"를 활성화했을 때 어둡게 표시되는 레이어의 밝기입니다.\n"
"99%는 거의 어두워지지 않고, 0%는 완전히 검게 표시됩니다. 100%는 이 옵션을 비활성화한 것과 같으므로 최대 99%로 제한됩니다."
msgid "Login region"
msgstr "로그인 지역"
@@ -9472,6 +9539,18 @@ msgstr "지원되지 않는 사전 설정 표시"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "프린터 및 필라멘트 드롭다운 목록에 호환되지 않거나 지원되지 않는 사전 설정을 표시합니다. 이러한 사전 설정은 선택할 수 없습니다."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(실험적) 출력 호스트 대신 프린터 에이전트 사용"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Bambu 이외의 프린터 출력 작업을 기존 출력 호스트 업로드 방식 대신 프린터 플러그인 에이전트를 통해 전달합니다.\n"
"비활성화하면 OrcaSlicer는 기존 출력 호스트 동작을 사용합니다."
# AI Translated
msgid "Experimental Features"
msgstr "실험적 기능"
@@ -9743,10 +9822,26 @@ msgstr "사용자 사전 설정"
msgid "Preset Inside Project"
msgstr "프로젝트 내부 사전 설정"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "상위 사전 설정에서 상속한 모든 값을 이 사전 설정으로 복사하고 상속 관계를 제거합니다. 상위 사전 설정에서만 호환되는 사전 설정은 지원되지 않을 수 있습니다."
# AI Translated
msgid "Detach from parent"
msgstr "상위 항목에서 분리"
# AI Translated
msgid "Unique preset"
msgstr "독립 사전 설정"
# AI Translated
msgid "Parent preset"
msgstr "상위 사전 설정"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "이 사전 설정은 다른 사전 설정을 상속하지 않습니다."
msgid "Name is unavailable."
msgstr "이름을 사용할 수 없습니다."
@@ -10500,22 +10595,6 @@ msgstr "이 옵션을 사용하시겠습니까?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "채우기 패턴은 일반적으로 올바른 출력과 의도한 효과를 위해 회전을 자동으로 처리하도록 설계되어 있습니다(예: 자이로이드, 큐빅). 현재 드문 채우기 패턴을 회전시키면 지지력이 부족해질 수 있습니다. 신중하게 진행하고 출력 문제가 발생하지 않는지 충분히 확인하십시오. 이 옵션을 활성화하시겠습니까?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"레이어 높이가 너무 작습니다.\n"
"min_layer_height로 설정됩니다.\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "레이어 높이가 프린터 설정 -> 압출기 -> 레이어의 제한을 초과합니다.높이 제한으로 인해 출력 품질 문제가 발생할 수 있습니다."
msgid "Adjust to the set range automatically?\n"
msgstr "설정 범위에 자동으로 맞춰지나요?\n"
msgid "Adjust"
msgstr "조정"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "실험적 기능: 플러시를 최소화하기 위해 필라멘트 교체 중에 더 먼 거리에서 필라멘트를 집어넣고 절단합니다. 플러시를 눈에 띄게 줄일 수 있지만 노즐 막힘이나 기타 출력 문제의 위험이 높아질 수도 있습니다."
@@ -10709,6 +10788,9 @@ msgstr "예약어를 찾았습니다"
msgid "Setting Overrides"
msgstr "설정 덮어쓰기"
msgid "Retraction when switching material"
msgstr "재료 전환 시 후퇴"
msgid "Basic information"
msgstr "기본 정보"
@@ -10842,6 +10924,14 @@ msgstr "호환 프로세스 사전설정"
msgid "Printable space"
msgstr "출력 가능 공간"
# AI Translated
msgid "Printer Agent"
msgstr "프린터 에이전트"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다. 사용 가능한 에이전트는 시작 시 등록됩니다."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10974,9 +11064,6 @@ msgstr "레이어 높이 한도"
msgid "Z-Hop"
msgstr "Z올리기"
msgid "Retraction when switching material"
msgstr "재료 전환 시 후퇴"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12369,6 +12456,10 @@ msgstr " 이(가) 제외 영역에 너무 가깝습니다. 출력 시 충돌이
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " 뭉침 감지 영역에 너무 가까워 충돌이 발생할 수 있습니다.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " 이(가) 출력 가능 영역을 일부 벗어나 출력할 수 없습니다.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "선택한 노즐 온도가 서로 호환되지 않습니다. 각 필라멘트의 노즐 온도는 다른 필라멘트의 권장 노즐 온도 범위 안에 있어야 합니다. 그렇지 않으면 노즐 막힘이나 프린터 손상이 발생할 수 있습니다."
@@ -12713,10 +12804,6 @@ msgstr "G-code 대신 3MF 사용"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "프린터가 출력 작업으로 3MF 파일을 허용하는 경우 이 옵션을 활성화하십시오. 활성화하면 Orca Slicer가 슬라이스된 파일을 일반 .gcode 파일 대신 .gcode.3mf로 전송합니다."
# AI Translated
msgid "Printer Agent"
msgstr "프린터 에이전트"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다."
@@ -13427,9 +13514,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "내부 브릿지의 속도. 값을 백분율로 표현하면 bridge_speed를 기준으로 계산됩니다. 기본값은 150%입니다."
msgid "Brim width"
msgstr "브림 너비"
msgid "This is the distance from the model to the outermost brim line."
msgstr "모델과 가장 바깥쪽 브림 선까지의 거리"
@@ -13514,6 +13598,14 @@ msgstr ""
"날카로운 각도를 감지하기 전에 형상이 무시됩니다. 이 매개변수는 무시하는 형상의 최소 길이를 나타냅니다.\n"
"0으로 비활성화합니다"
# AI Translated
msgid "Brim ears outer only"
msgstr "브림 귀를 바깥쪽에만"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "구멍과 닫힌 영역을 제외하고 모델의 바깥쪽 윤곽에만 생쥐 귀를 생성합니다."
msgid "upward compatible machine"
msgstr "상향 호환 장치"
@@ -13539,12 +13631,37 @@ msgstr "객체별"
msgid "Intra-layer order"
msgstr "레이어 내 순서"
msgid "Print order within a single layer."
msgstr "단일 레이어 내의 출력 순서"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"단일 레이어 내에서 객체 인스턴스를 방문하는 순서로, 인스턴스 사이를 오가는 이동량을 결정합니다.\n"
"\n"
"기본값: 최근접 이웃 방식으로 경로를 연결하고 2-opt와 교차 제거로 개선합니다. 일반적으로 무난한 선택입니다.\n"
"객체 목록으로: 경로 최적화 없이 객체 목록과 동일한 순서로 인스턴스를 출력합니다. 예측 가능하고 수동으로 제어되는 순서가 필요할 때 사용하십시오.\n"
"전체 비교(최단 경로): 모든 전략을 평가하여 가장 짧은 것을 사용합니다. 객체 인스턴스 순서는 출력 전체에 대해 한 번만 결정되고 개별 아일랜드의 순서는 레이어마다 결정되므로, 레이어에 따라 서로 다른 전략이 사용될 수 있습니다. 슬라이싱이 약간 느려집니다.\n"
"사행형: 행 단위로 앞뒤를 오가며 사행하듯 순회하고 2-opt로 개선합니다. 작은 부품이 규칙적인 격자로 배치된 경우에 적합합니다.\n"
"\n"
"같은 레이어에서 여러 필라멘트나 툴을 사용하는 경우에는 툴 교체 최소화가 우선합니다. 객체를 먼저 필라멘트별로 그룹화하며 이 설정은 각 필라멘트 그룹 내의 인스턴스 순서만 결정하므로, 전체 순서가 플레이트 전체의 최단 경로처럼 보이지 않을 수 있습니다."
msgid "As object list"
msgstr "객체 목록으로"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "전체 비교(최단 경로)"
# AI Translated
msgid "Snake"
msgstr "사행형"
msgid "Slow printing down for better layer cooling"
msgstr "레이어 냉각 향상을 위한 감속"
@@ -14248,7 +14365,7 @@ msgstr "플러시 체적 속도"
# AI Translated
msgid "Volumetric speed when flushing filament. 0 indicates the max volumetric speed."
msgstr "필라멘트를 플러시할 때의 체적 속도입니다. 0은 최대 체적 속도를 의미합니다."
msgstr "필라멘트를 플러시할 때의 압출 속도입니다. 0은 최대 압출 속도를 의미합니다."
msgid "This setting is the volume of filament that can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. This value cannot be zero."
msgstr "이 설정은 초당 얼마나 많은 양의 필라멘트를 녹이고 압출할 수 있는지를 나타냅니다. 너무 높고 부적절한 속도 설정의 경우 출력 속도는 최대 압출 속도에 의해 제한됩니다. 0이 될 수 없습니다"
@@ -14685,6 +14802,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "자이로이드"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "드문 채우기 부드러움 계수"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "드문 채우기의 모서리를 얼마나 둥글게 할지 조절합니다. 0%는 원래의 날카로운 경로를 유지하고, 100%는 인접한 채우기 선 사이에 가능한 가장 큰 곡선을 만듭니다."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "상단 표면 가속도. 낮은 값을 사용하면 상단 표면 품질이 향상될 수 있습니다"
@@ -15247,6 +15372,14 @@ msgstr "프린터와 호환되는 Gcode 종류"
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "G-code 설정 블록 생략"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "CONFIG_BLOCK(슬라이서 설정의 키/값 쌍)을 G-code 파일에 기록하지 않습니다. 이 주석 줄을 해석할 때 펌웨어가 중단되는 프린터(예: Anycubic go-klipper)에 도움이 될 수 있습니다. 참고: G-code 파일에 슬라이서 설정이 더 이상 포함되지 않으므로, 이 파일을 OrcaSlicer로 다시 가져와도 설정이 복원되지 않습니다."
msgid "Pellet Modded Printer"
msgstr "펠릿 프린터"
@@ -16356,6 +16489,14 @@ msgstr "압출기 교체 시 긴 수축"
msgid "Retraction distance when extruder change"
msgstr "압출기 교체 시 수축 거리"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "후퇴 길이 (툴 체인지)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "툴 체인지 전에 후퇴가 실행되면 지정한 양만큼 필라멘트가 뒤로 당겨집니다 (길이는 압출기에 들어가기 전의 원래 필라멘트를 기준으로 측정됩니다)."
msgid "Z-hop height"
msgstr "Z올리기 높이"
@@ -16454,6 +16595,10 @@ msgstr "재 시작 시 추가 길이"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "이동 후 후퇴가 보상되면 압출기는 이 추가 양의 필라멘트를 밀어냅니다. 이 설정은 거의 필요하지 않습니다."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "재 시작 시 추가 길이 (툴 체인지)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "툴 체인지 후 후퇴가 보상되면 압출기는 이 추가 양의 필라멘트를 밀어냅니다."
@@ -16878,6 +17023,14 @@ msgstr "프라임 타워에서 툴 체인지"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "툴 체인지 명령(Tx)을 실행하기 전에 툴헤드가 반드시 프라임 타워로 이동하도록 합니다. 유형 2 프라임 타워를 사용하는 다중 압출기(멀티 툴헤드) 프린터에만 해당됩니다. 기본적으로 Orca는 멀티 툴헤드 장비에서 펌웨어가 헤드 교체를 처리하므로 이동을 생략하는데, 이 때문에 Tx 명령이 출력물 위에서 실행될 수 있습니다. 툴 체인지가 항상 프라임 타워 위에서 실행되도록 하려면 이 옵션을 활성화하십시오."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "프라임 타워에서 온도 대기"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "출력 온도에 도달할 때까지 기다리지 않고 새 툴을 집은 뒤 프라임 타워로 이동하여, 퍼지 직전에 그곳에서 온도를 기다립니다. 가열 중 흘러나온 재료는 모델이 아닌 타워에 떨어지고, 이동 시간이 가열 시간과 겹칩니다. 타입 2 프라임 타워를 사용하는 다중 압출기(다중 툴헤드) 프린터에만 해당합니다. 펌웨어나 툴 체인지 매크로가 직접 온도를 기다려서는 안 됩니다. 비활성화하면 툴 체인지 명령 직후에 온도 대기가 실행됩니다."
msgid "No sparse layers (beta)"
msgstr "희소 레이어 없음(베타)"
@@ -18715,7 +18868,7 @@ msgstr ""
"이제 다양한 필라멘트에 대한 자동 교정 기능이 추가되었습니다. 완전히 자동으로 수행되며 결과는 나중에 사용할 수 있도록 프린터에 저장됩니다. 다음과 같은 제한된 경우에만 교정을 수행하면 됩니다:\n"
"1. 다른 브랜드/모델의 새 필라멘트를 사용하거나 필라멘트가 눅눅해진 경우\n"
"2. 노즐이 마모되었거나 새 노즐로 교체한 경우\n"
"3. 필라멘트 설정에서 최대 체적 속도나 출력 온도를 변경한 경우."
"3. 필라멘트 설정에서 최대 압출 속도나 출력 온도를 변경한 경우."
msgid "About this calibration"
msgstr "교정 정보"
@@ -19033,6 +19186,20 @@ msgstr ""
"호스트 이름 %1%으로 확인되는 IP 주소가 여러 개 있습니다.\n"
"사용 할 IP를 선택해 주세요."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "노즐에 맞춰 자동 크기 조정"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"이 모델은 0.4 mm 노즐과 0.2 mm 레이어 높이를 기준으로 설계되었습니다. \n"
"크기 조정 옵션을 활성화하면(권장) 현재 노즐 직경과 적절한 레이어 높이에 맞춰 크기가 동적으로 조정되어 테스트가 정확하고 읽기 쉬워집니다.\n"
"참조 모델을 있는 그대로 출력하려는 경우에만 크기 조정을 끄십시오."
msgid "PA Calibration"
msgstr "PA 교정"
@@ -19171,6 +19338,14 @@ msgstr "시작 속도: "
msgid "End speed: "
msgstr "종료 속도: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "최대 압출 속도에 맞춰 자동 조정"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "종료 속도가 필라멘트의 최대 압출 속도를 초과하는 경우, 해당 속도에 도달할 수 있도록 레이어 높이를 자동으로 낮춥니다(표준 값을 유지하고 장비의 한계 내에서 조정). 최소 레이어 높이로도 부족하면 대신 종료 속도를 낮춥니다."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -19182,6 +19357,57 @@ msgstr ""
"단계 >= 0\n"
"끝 > 시작 + 단계)"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"종료 속도(%.0f mm/s)가 필라멘트의 최대 압출 속도(%.1f mm³/s)를 초과합니다. 현재 선 너비와 레이어 높이에서는 외벽이 약 %.0f mm/s로 제한됩니다.\n"
" 이보다 빠른 속도는 제한되므로 타워의 상단 블록은 요청한 속도로 출력되지 않습니다.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"종료 속도(%.0f mm/s)가 필라멘트의 최대 압출 속도(%.1f mm³/s)를 초과합니다(기본 레이어 높이 %.2f mm 기준).\n"
"\n"
"타워가 요청한 속도에 도달할 수 있도록 레이어 높이를 %.2f mm(이 프린터의 프로파일에서 사용하는 값)로 낮췄습니다."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"이 프린터의 프로파일에서 사용하는 가장 작은 레이어 높이(%.2f mm)에서도 종료 속도(%.0f mm/s)가 필라멘트의 최대 압출 속도(%.1f mm³/s)를 초과합니다.\n"
"\n"
"레이어 높이를 %.2f mm로 설정하고 종료 속도를 %.0f mm/s로 낮춥니다.\n"
"\n"
"계속하시겠습니까?"
# AI Translated
msgid "Continue anyway?"
msgstr "그래도 계속하시겠습니까?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"자동 조정\"을 활성화하면 자동으로 해결됩니다. 그래도 계속하시겠습니까?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"노즐에 맞춰 자동 크기 조정\"과 \"자동 조정\"을 활성화하면 자동으로 해결됩니다. 그래도 계속하시겠습니까?"
msgid "Start retraction length: "
msgstr "후퇴 시작 길이: "
@@ -20144,10 +20370,6 @@ msgstr "물리 프린터"
msgid "Print Host upload"
msgstr "출력 호스트 업로드"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다. 사용 가능한 에이전트는 시작 시 등록됩니다."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Flashforge 프린터 선택"
@@ -21100,9 +21322,6 @@ msgstr "로그인을 시도하는 동안 예기치 않은 문제가 발생했습
msgid "User canceled."
msgstr "사용자가 취소했습니다."
msgid "Head diameter"
msgstr "헤드 직경"
msgid "Max angle"
msgstr "최대 각도"
@@ -21289,7 +21508,7 @@ msgstr "채워넣기 전혀 없음"
# AI Translated
msgid "Volumetric speed"
msgstr "체적 속도"
msgstr "압출 속도"
msgid "Step file import parameters"
msgstr "스텝 파일 가져오기 매개변수"
@@ -21940,6 +22159,25 @@ msgstr ""
"뒤틀림 방지\n"
"ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "레이어 높이가 너무 작습니다.\n"
#~ "min_layer_height로 설정됩니다.\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "레이어 높이가 프린터 설정 -> 압출기 -> 레이어의 제한을 초과합니다.높이 제한으로 인해 출력 품질 문제가 발생할 수 있습니다."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "설정 범위에 자동으로 맞춰지나요?\n"
#~ msgid "Head diameter"
#~ msgstr "헤드 직경"
#~ msgid "Print order within a single layer."
#~ msgstr "단일 레이어 내의 출력 순서"
#~ msgid "Bottom"
#~ msgstr "아래"
@@ -22008,9 +22246,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Continue to sync filaments"
#~ msgstr "필라멘트 동기화 계속하기"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2026-07-02 14:13+0300\n"
"Last-Translator: Gintaras Kučinskas <sharanchius@gmail.com>\n"
"Language-Team: \n"
@@ -3840,6 +3840,10 @@ msgstr "Išdėstoma..."
msgid "Arranging"
msgstr "Išdėstymas"
# AI Translated
msgid "Arranging "
msgstr "Išdėstoma "
msgid "Arranging canceled."
msgstr "Išdėstymas atšauktas."
@@ -4724,6 +4728,23 @@ msgstr "Dabartinė kameros temperatūra yra aukštesnė už saugią medžiagos t
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Minimali kameros temperatūra (%d℃) yra aukštesnė nei tikslinė kameros temperatūra (%d℃). Minimali vertė yra slenkstis, kurį pasiekus pradedamas spausdinimas, kol kamera vis dar kaitinama iki tikslinės temperatūros, todėl ji neturėtų viršyti tikslinės. Vertė bus apribota iki tikslinės temperatūros."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Sluoksnio aukštis per mažas. Jis bus nustatytas į mažiausią reikšmę (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Sluoksnio aukštis yra už ribų, nurodytų Spausdintuvo nustatymai -> Ekstruderis -> Sluoksnio aukščio ribos, tai gali sukelti spausdinimo kokybės problemų."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Automatiškai sureguliuoti iki ribos (%g mm)?"
msgid "Adjust"
msgstr "Sureguliuoti"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4843,6 +4864,13 @@ msgstr ""
"Taip įjungti „Arachne“ sienelių generatorių\n"
"Ne išjungti „Arachne“ sienelių generatorių ir nustatyti „Šiurkštaus paviršius“ režimą [Slinktis]"
# AI Translated
msgid "Brim ear radius"
msgstr "Apvado „ausies“ spindulys"
msgid "Brim width"
msgstr "Pado apvado plotis"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Spiralinis režimas veikia tik tada, kai sienelės kilpų skaičius yra 1, atramos išjungtos, sulipimo aptikimas zonduojant išjungtas, viršutinių apvalkalo sluoksnių yra 0, reto užpildo tankis yra 0 %, o laiko intervalų vaizdo įrašo tipas tradicinis."
@@ -5097,6 +5125,14 @@ msgstr "Nepavyko sugeneruoti kalibravimo G-kodo"
msgid "Calibration error"
msgstr "Kalibravimo klaida"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Šiame spausdintuve nėra sukonfigūruotos įrangos, kurios reikia šiam valdikliui."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Šis valdiklis šiame spausdintuve nepalaikomas."
# AI Translated
msgid "Network unavailable"
msgstr "Tinklas neprieinamas"
@@ -5957,7 +5993,7 @@ msgstr "Tūris:"
msgid "Size:"
msgstr "Dydis:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Rasta G-kodo trajektorijų konfliktų %d sluoksnyje, Z = %.2lfmm. Prašome labiau atskirti konfliktuojančius objektus (%s <-> %s)."
@@ -6138,6 +6174,10 @@ msgstr "Kelių įrenginių valdymas (Multi-device)"
msgid "Project"
msgstr "Projektas"
# AI Translated
msgid "Device (Web)"
msgstr "Įrenginys (Web)"
msgid "Yes"
msgstr "Taip"
@@ -8235,21 +8275,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Pakeistas %s.\n"
msgid "Replaced volumes"
msgstr "Pakeisti tūriai"
@@ -8973,6 +9013,18 @@ msgstr "Kai įjungta ši funkcija, jūs galite siųsti užduotį keliems įrengi
msgid "Pop up to select filament grouping mode"
msgstr "Iššokantis langas gijų grupavimo režimui pasirinkti"
# AI Translated
msgid "Visible plugin pages"
msgstr "Matomi papildinių puslapiai"
# AI Translated
msgid "pages"
msgstr "puslapiai"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Papildinių puslapių, rodomų kaip fiksuotos kortelės, skaičius; likę puslapiai sutraukiami į išskleidžiamąjį sąrašą paskutinėje kortelėje."
msgid "Behaviour"
msgstr "Elgsena"
@@ -9186,6 +9238,21 @@ msgstr "Pritemdyti apatinius sluoksnius"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Slenkant sluoksnių slankiklį pjaustytoje peržiūroje, atvaizduoti žemiau esančius sluoksnius pritemdytus, kad visu ryškumu būtų rodomas tik peržiūrimas sluoksnis."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Pritemdytų sluoksnių ryškumas"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Kaip ryškiai atvaizduojami pritemdyti sluoksniai, kai įjungta parinktis „Pritemdyti apatinius sluoksnius“.\n"
"99 % pritemdymas vos pastebimas, 0 % sluoksniai atvaizduojami juodai. Riba yra 99 %, nes 100 % prilygtų parinkties išjungimui."
msgid "Login region"
msgstr "Prisijungimo regionas"
@@ -9310,6 +9377,18 @@ msgstr "Rodyti nepalaikomus profilius"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Rodyti nesuderinamus / nepalaikomus profilius spausdintuvų ir gijų išskleidžiamuosiuose sąrašuose. Šių profilių pasirinkti negalima."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Eksperimentinė) Naudoti spausdintuvo agentus vietoj spausdinimo serverių"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Nukreipia ne Bambu spausdintuvų spausdinimo užduotis per spausdintuvo papildinių agentus, o ne per klasikinį įkėlimo į spausdinimo serverį srautą.\n"
"Kai išjungta, OrcaSlicer naudoja senąjį spausdinimo serverio veikimą."
msgid "Experimental Features"
msgstr "Eksperimentinis"
@@ -9571,9 +9650,25 @@ msgstr "Naudotojo profilis"
msgid "Preset Inside Project"
msgstr "Profilis projekto viduje"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Nukopijuoja į šį profilį visas iš pirminio profilio paveldėtas reikšmes ir pašalina paveldėjimo ryšį. Profiliai, suderinami tik su pirminiu profiliu, gali tapti nepalaikomi."
msgid "Detach from parent"
msgstr "Atskirti nuo tėvinio profilio"
# AI Translated
msgid "Unique preset"
msgstr "Savarankiškas profilis"
# AI Translated
msgid "Parent preset"
msgstr "Pirminis profilis"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Šis profilis nepaveldi iš kito profilio."
msgid "Name is unavailable."
msgstr "Nėra pavadinimo."
@@ -10311,24 +10406,6 @@ msgstr "Ar tikrai norite įjungti šią parinktį?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Užpildymo modeliai paprastai yra suprojektuoti taip, kad automatiškai tvarkytų sukimąsi, siekiant užtikrinti tinkamą spausdinimą ir pasiekti numatytus efektus (pvz., Gyroid, Cubic). Sukant esamą retą užpildymo modelį, gali atsirasti nepakankamas atraminis paviršius. Prašome elgtis atsargiai ir atidžiai patikrinti, ar nėra galimų spausdinimo problemų. Ar tikrai norite įjungti šią parinktį?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Per mažas sluoksnio aukštis.\n"
"Jis bus nustatytas į min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Sluoksnio aukštis viršija ribą, nurodytą Spausdintuvo nustatymai -> Ekstruderis -> Sluoksnio aukščio ribos, tai gali sukelti spausdinimo kokybės problemų."
msgid "Adjust to the set range automatically?\n"
msgstr ""
"Sureguliuoti pagal nustatytą diapazoną automatiškai?\n"
"\n"
msgid "Adjust"
msgstr "Sureguliuoti"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Eksperimentinė funkcija: gijos įtraukimas ir nukirpimas didesniu atstumu keičiant giją, siekiant sumažinti išvalymą (flush). Nors tai gali pastebimai sumažinti išvalymą, taip pat gali padidėti purkštuko užsikimšimo ar kitų spausdinimo komplikacijų rizika."
@@ -10528,6 +10605,9 @@ msgstr "Rasti rezervuoti raktažodžiai"
msgid "Setting Overrides"
msgstr "Nustatymų perrašymas"
msgid "Retraction when switching material"
msgstr "Įtraukimas keičiant medžiagą"
msgid "Basic information"
msgstr "Pagrindinė informacija"
@@ -10654,6 +10734,12 @@ msgstr "Suderinami apdorojimo profiliai"
msgid "Printable space"
msgstr "Erdvė spausdinimui"
msgid "Printer Agent"
msgstr "Spausdintuvo agentas"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti. Prieinami agentai užregistruojami paleidimo metu."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10779,9 +10865,6 @@ msgstr "Sluoksnio aukščio ribos"
msgid "Z-Hop"
msgstr "Z šuolis"
msgid "Retraction when switching material"
msgstr "Įtraukimas keičiant medžiagą"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -12127,6 +12210,10 @@ msgstr ""
" yra per arti sulipimo aptikimo zonos, todėl įvyks susidūrimai.\n"
"\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " yra iš dalies už spausdinimo srities ribų ir negali būti atspausdintas.\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Pasirinktos purkštuko temperatūros yra nesuderinamos. Kiekvienos gijos purkštuko temperatūra turi patekti į kitų gijų rekomenduojamos temperatūros diapazoną. Priešingu atveju gali užsikimšti purkštukas arba sugesti spausdintuvas."
@@ -12440,9 +12527,6 @@ msgstr "Vietoj G-kodo naudoti 3MF"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Įjunkite, jei spausdintuvas spausdinimo užduotims priima 3MF failus. Kai įjungta, „Orca Slicer“ sugeneruotą failą siunčia kaip „.gcode.3mf“, o ne kaip paprastą „.gcode“ failą."
msgid "Printer Agent"
msgstr "Spausdintuvo agentas"
msgid "Select the network agent implementation for printer communication."
msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti."
@@ -13115,9 +13199,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Vidinių tiltelių spausdinimo greitis. Jei reikšmė nurodoma procentais, ji apskaičiuojama pagal „bridge_speed“ (tiltelių greitį). Numatytoji reikšmė 150 %."
msgid "Brim width"
msgstr "Pado apvado plotis"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Atstumas nuo modelio iki išorinės krašto linijos"
@@ -13198,6 +13279,14 @@ msgstr ""
"Prieš aptinkant aštrius kampus, geometrija yra supaprastinama (decimuojama). Šis parametras nurodo minimalų nuokrypio ilgį supaprastinimui atlikti.\n"
"Įrašykite 0, kad išjungtumėte."
# AI Translated
msgid "Brim ears outer only"
msgstr "Apvado „ausys“ tik išorėje"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Kuria peliukų ausis tik ant išorinio modelio kontūro, praleidžiant skyles ir uždaras sritis."
msgid "upward compatible machine"
msgstr "atgaliniu būdu suderinamas įrenginys"
@@ -13222,12 +13311,37 @@ msgstr "Objektas po objekto"
msgid "Intra-layer order"
msgstr "Eiliškumas sluoksnio viduje"
msgid "Print order within a single layer."
msgstr "Elementų spausdinimo eiliškumas vieno sluoksnio ribose."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Tvarka, kuria objektų kopijos aplankomos viename sluoksnyje; ji lemia, kiek tuščiosios eigos sugaištama pereinant tarp jų.\n"
"\n"
"Numatytasis: grandinės sudarymas artimiausio kaimyno metodu, patobulintas 2-opt algoritmu ir sankirtų šalinimu. Geras bendras pasirinkimas.\n"
"Kaip objektų sąrašas: kopijos spausdinamos tokia pačia tvarka kaip objektų sąraše, be jokio kelio optimizavimo. Naudokite, kai reikia nuspėjamos, rankiniu būdu valdomos tvarkos.\n"
"Geriausias iš visų (trumpiausias kelias): įvertinamos visos strategijos ir naudojama trumpiausia. Objektų kopijų tvarka nustatoma vieną kartą visam spausdinimui, o atskirų salelių tvarka kiekvienam sluoksniui atskirai, todėl skirtinguose sluoksniuose gali būti naudojamos skirtingos strategijos. Sluoksniuojama šiek tiek lėčiau.\n"
"Gyvatėle: vingiuotas ėjimas eilutė po eilutės, patobulintas 2-opt algoritmu. Gerai tinka taisyklingiems daugelio mažų detalių tinkleliams.\n"
"\n"
"Kai tame pačiame sluoksnyje naudojamos kelios gijos ar keli įrankiai, pirmenybė teikiama įrankio keitimų mažinimui: objektai pirmiausia grupuojami pagal giją, o ši nuostata rikiuoja tik kopijas kiekvienoje grupėje, todėl bendra seka gali neatrodyti kaip trumpiausias kelias per plokštę."
msgid "As object list"
msgstr "Kaip objektų sąrašas"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Geriausias iš visų (trumpiausias kelias)"
# AI Translated
msgid "Snake"
msgstr "Gyvatėle"
msgid "Slow printing down for better layer cooling"
msgstr "Sulėtinti spausdinimą geresniam sluoksnių aušinimui"
@@ -14326,6 +14440,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroidas"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Reto užpildo glotninimo koeficientas"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Nustato, kaip stipriai suapvalinami reto užpildo kampai. 0% palieka pradinę aštrią trajektoriją, o 100% sukuria didžiausias įmanomas kreives tarp gretimų užpildo linijų."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Viršutinio paviršiaus užpildo pagreitis. Naudojant mažesnę vertę gali pagerėti viršutinio paviršiaus kokybė."
@@ -14870,6 +14992,14 @@ msgstr "Su kokiu G kodu suderinamas spausdintuvas."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Praleisti G-code konfigūracijos bloką"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Neįrašo CONFIG_BLOCK (pjaustyklės konfigūracijos raktų ir reikšmių porų) į G-code failą. Tai gali padėti su spausdintuvais, kurių programinė įranga stringa apdorodama šias komentarų eilutes (pvz., Anycubic go-klipper). Pastaba: G-code faile nebeliks pjaustyklės nustatymų, todėl importavus jį atgal į OrcaSlicer konfigūracija nebus atkurta."
msgid "Pellet Modded Printer"
msgstr "Modifikuotas granulinis spausdintuvas"
@@ -15911,6 +16041,14 @@ msgstr "Ilgas įtraukimas keičiant ekstruderį"
msgid "Retraction distance when extruder change"
msgstr "Įtraukimo atstumas keičiant ekstruderį"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Atitraukimo ilgis (Įrankio keitimas)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Kai atitraukimas suaktyvinamas prieš įrankio keitimą, gija atitraukiama nurodytu atstumu (ilgis matuojamas ant neapdorotos gijos, prieš jai patenkant į ekstruderį)."
msgid "Z-hop height"
msgstr "„Z-hop“ (pakėlimo) aukštis"
@@ -16005,6 +16143,10 @@ msgstr "Papildomas ilgis po sugrąžinimo"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Kai po judėjimo kompensuojamas gijos įtraukimas, ekstruderis papildomai išstums šį gijos kiekį. Šis nustatymas reikalingas retai."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Papildomas ilgis po sugrąžinimo (Įrankio keitimas)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Kai po įrankio pakeitimo kompensuojamas gijos įtraukimas, ekstruderis papildomai išstums šį gijos kiekį."
@@ -16417,6 +16559,14 @@ msgstr "Įrankio keitimas virš valymo bokšto"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Priverstinai nukreipti spausdinimo galvutę prie valymo bokšto prieš vykdant įrankio keitimo komandą (Tx). Aktualu tik spausdintuvams su keliais ekstruderiais (keliomis galvutėmis), naudojantiems 2 tipo valymo bokštą. Pagal numatytuosius nustatymus „OrcaSlicer“ praleidžia šį judesį kelių galvučių įrenginiuose, nes galvučių sukeitimą valdo aparatinė programinė įranga, todėl Tx komanda gali būti įvykdyta virš spausdinamos detalės. Įjunkite šią parinktį, jei norite, kad įrankio keitimas visada vyktų virš valymo bokšto."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Laukti temperatūros ant valymo bokšto"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Paima naują įrankį nelaukdamas, kol jis pasieks spausdinimo temperatūrą, nuvažiuoja prie valymo bokšto ir ten laukia temperatūros, prieš pat pravalymą. Kaitinant ištekėjusi medžiaga patenka ant bokšto, o ne ant modelio, o pervažiavimas persidengia su kaitinimu. Aktualu tik daugiaekstruderiams (kelių spausdinimo galvučių) spausdintuvams, naudojantiems 2 tipo valymo bokštą. Programinė įranga ar įrankio keitimo makrokomanda neturi pati laukti temperatūros. Kai išjungta, laukimo temperatūros komanda pateikiama iškart po įrankio keitimo komandos."
msgid "No sparse layers (beta)"
msgstr "Nėra retų sluoksnių (beta)"
@@ -18537,6 +18687,20 @@ msgstr ""
"Yra keli IP adresai, susieti su mazgo pavadinimu %1%.\n"
"Pasirinkite tą, kurį norite naudoti."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Automatinis mastelis pagal purkštuką"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Šis modelis suprojektuotas 0,4 mm purkštukui ir 0,2 mm sluoksnio aukščiui. \n"
"Kai mastelio keitimo parinktis įjungta (rekomenduojama), modelio dydis dinamiškai pritaikomas prie jūsų dabartinio purkštuko skersmens ir tinkamo sluoksnio aukščio, todėl testas yra ir tikslus, ir lengvai įskaitomas.\n"
"Mastelio keitimą išjunkite tik tuo atveju, jei norite spausdinti etaloninį modelį tiksliai tokį, koks jis yra."
msgid "PA Calibration"
msgstr "PA kalibravimas (Pressure Advance)"
@@ -18673,6 +18837,14 @@ msgstr "Pradinis greitis: "
msgid "End speed: "
msgstr "Galinis greitis: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Automatiškai pritaikyti prie maksimalaus tūrinio greičio"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Jei galutinis greitis viršytų maksimalų gijos tūrinį greitį, automatiškai sumažinti sluoksnio aukštį (išlaikant standartines reikšmes ir neperžengiant įrenginio apribojimų), kad jį pasiektų. Jei net mažiausio sluoksnio aukščio nepakanka, vietoj to sumažinamas galutinis greitis."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18684,6 +18856,57 @@ msgstr ""
"žingsnis >= 0\n"
"galinis > pradinis + žingsnis"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Galutinis greitis (%.0f mm/s) viršija maksimalų gijos tūrinį greitį (%.1f mm³/s), kuris esant tokiam linijos pločiui ir sluoksnio aukščiui riboja išorinę sienelę iki maždaug %.0f mm/s.\n"
" Didesni greičiai bus apriboti, todėl viršutiniai bokšto blokai nebus spausdinami pageidaujamu greičiu.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Galutinis greitis (%.0f mm/s) viršija maksimalų gijos tūrinį greitį (%.1f mm³/s) esant numatytajam sluoksnio aukščiui (%.2f mm).\n"
"\n"
"Sluoksnio aukštis sumažintas iki %.2f mm (reikšmė, naudojama šio spausdintuvo profiliuose), kad bokštas galėtų pasiekti pageidaujamą greitį."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Net ir esant mažiausiam sluoksnio aukščiui, naudojamam šio spausdintuvo profiliuose (%.2f mm), galutinis greitis (%.0f mm/s) viršija maksimalų gijos tūrinį greitį (%.1f mm³/s).\n"
"\n"
"Sluoksnio aukštis bus nustatytas į %.2f mm, o galutinis greitis sumažintas iki %.0f mm/s.\n"
"\n"
"Tęsti?"
# AI Translated
msgid "Continue anyway?"
msgstr "Vis tiek tęsti?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Įjungti „Automatiškai pritaikyti“, kad tai būtų ištaisyta automatiškai, ar vis tiek tęsti?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Įjungti „Automatinis mastelis pagal purkštuką“ ir „Automatiškai pritaikyti“, kad tai būtų ištaisyta automatiškai, ar vis tiek tęsti?"
msgid "Start retraction length: "
msgstr "Pradinis įtraukimo ilgis: "
@@ -19585,9 +19808,6 @@ msgstr "Fizinis spausdintuvas"
msgid "Print Host upload"
msgstr "Įkėlimas spausdinimui tinkle"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti. Prieinami agentai užregistruojami paleidimo metu."
msgid "Select a Flashforge printer"
msgstr "Pasirinkite „Flashforge“ spausdintuvą"
@@ -20435,9 +20655,6 @@ msgstr "Bandant prisijungti įvyko kažkas netikėto. Bandykite dar kartą."
msgid "User canceled."
msgstr "Vartotojas atšaukė."
msgid "Head diameter"
msgstr "Galvutės skersmuo"
msgid "Max angle"
msgstr "Maksimalus kampas"
@@ -21219,6 +21436,27 @@ msgstr ""
"Venkite deformacijų (warping)\n"
"Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Per mažas sluoksnio aukštis.\n"
#~ "Jis bus nustatytas į min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Sluoksnio aukštis viršija ribą, nurodytą Spausdintuvo nustatymai -> Ekstruderis -> Sluoksnio aukščio ribos, tai gali sukelti spausdinimo kokybės problemų."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr ""
#~ "Sureguliuoti pagal nustatytą diapazoną automatiškai?\n"
#~ "\n"
#~ msgid "Head diameter"
#~ msgstr "Galvutės skersmuo"
#~ msgid "Print order within a single layer."
#~ msgstr "Elementų spausdinimo eiliškumas vieno sluoksnio ribose."
#~ msgid "Bottom"
#~ msgstr "Apačia"
@@ -21306,9 +21544,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Renders cast shadows on the plate in realistic view."
#~ msgstr "Realistiniame vaizde atvaizduoja krentančius šešėlius ant spausdinimo pagrindo."

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -4172,6 +4172,10 @@ msgstr "Rangschikken..."
msgid "Arranging"
msgstr "Rangschikken"
# AI Translated
msgid "Arranging "
msgstr "Rangschikken "
msgid "Arranging canceled."
msgstr "Rangschikken geannuleerd."
@@ -5146,6 +5150,23 @@ msgstr "De huidige kamertemperatuur is hoger dan de veilige temperatuur van het
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "De minimale kamertemperatuur (%d℃) is hoger dan de doelkamertemperatuur (%d℃). De minimale waarde is de drempel waarbij het printen start terwijl de kamer verder opwarmt naar de doelwaarde; deze mag die dus niet overschrijden. De waarde wordt begrensd tot de doelwaarde."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "De laaghoogte is te klein. Deze wordt ingesteld op het minimum (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "De laaghoogte valt buiten de limieten die zijn ingesteld in Printerinstellingen -> Extruder -> Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Automatisch aanpassen naar de limiet (%g mm)?"
msgid "Adjust"
msgstr "Aanpassen"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -5273,6 +5294,13 @@ msgstr ""
"Ja - Arachne-wandgenerator inschakelen\n"
"Nee - Arachne-wandgenerator uitschakelen en de modus [Displacement] van Vage buitenkant instellen"
# AI Translated
msgid "Brim ear radius"
msgstr "Straal van randoren"
msgid "Brim width"
msgstr "Rand breedte"
# AI Translated
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "De spiraalmodus werkt alleen wanneer Wanden 1 is, ondersteuning is uitgeschakeld, klontdetectie via aftasten is uitgeschakeld, het aantal bovenste buitenlagen 0 is, de dichtheid van de dunne vulling (infill) 0 is en het timelapse-type traditioneel is."
@@ -5578,6 +5606,14 @@ msgstr "Cali G-code niet gegenereerd"
msgid "Calibration error"
msgstr "Kalibratiefout"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Deze printer beschikt niet over de hardware die dit besturingselement nodig heeft."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Dit besturingselement wordt niet ondersteund op deze printer."
# AI Translated
msgid "Network unavailable"
msgstr "Netwerk niet beschikbaar"
@@ -6509,7 +6545,7 @@ msgid "Size:"
msgstr "Maat:"
# AI Translated
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Er zijn conflicten tussen G-code-paden gevonden op laag %d, Z = %.2lfmm. Plaats de conflicterende objecten verder uit elkaar (%s <-> %s)."
@@ -6710,6 +6746,10 @@ msgstr "Meerdere apparaten"
msgid "Project"
msgstr "Project"
# AI Translated
msgid "Device (Web)"
msgstr "Apparaat (Web)"
msgid "Yes"
msgstr "Ja"
@@ -8995,24 +9035,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Vervangen %s.\n"
# AI Translated
msgid "Replaced volumes"
@@ -9823,6 +9863,18 @@ msgstr "Met deze optie ingeschakeld kunt u een taak tegelijkertijd naar meerdere
msgid "Pop up to select filament grouping mode"
msgstr "Pop-up om de filamentgroeperingsmodus te kiezen"
# AI Translated
msgid "Visible plugin pages"
msgstr "Zichtbare plug-inpagina's"
# AI Translated
msgid "pages"
msgstr "pagina's"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Aantal plug-inpagina's dat als vaste tabbladen wordt getoond voordat de overige pagina's worden samengevouwen in een vervolgkeuzelijst op het laatste tabblad."
msgid "Behaviour"
msgstr "Gedrag"
@@ -10076,6 +10128,21 @@ msgstr "Onderliggende lagen dimmen"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Bij het verschuiven van de laagschuifregelaar in de slicevoorvertoning worden de lagen onder de huidige laag verduisterd weergegeven, zodat alleen de bekeken laag op volle helderheid wordt getoond."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Helderheid van gedimde lagen"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Hoe helder de gedimde lagen worden weergegeven wanneer \"Onderliggende lagen dimmen\" is ingeschakeld.\n"
"99% is nauwelijks donkerder, 0% maakt ze zwart. Beperkt tot 99%, omdat 100% hetzelfde zou zijn als de optie uitschakelen."
msgid "Login region"
msgstr "Inlogregio"
@@ -10224,6 +10291,18 @@ msgstr "Niet-ondersteunde voorinstellingen tonen"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Toon incompatibele/niet-ondersteunde voorinstellingen in de keuzelijsten voor printer en filament. Deze voorinstellingen kunnen niet worden geselecteerd."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimenteel) Printeragents gebruiken in plaats van printhosts"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Stuurt printtaken voor niet-Bambu-printers via printer-plug-inagents in plaats van via de klassieke uploadstroom naar de printhost.\n"
"Wanneer dit is uitgeschakeld, gebruikt OrcaSlicer het oude printhostgedrag."
# AI Translated
msgid "Experimental Features"
msgstr "Experimentele functies"
@@ -10504,10 +10583,26 @@ msgstr "Gebruikersvoorinstelling"
msgid "Preset Inside Project"
msgstr "Voorinstelling binnen project"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Kopieert alle overgeërfde waarden van de bovenliggende voorinstelling naar deze voorinstelling en verwijdert de overervingsrelatie. Voorinstellingen die alleen met de bovenliggende voorinstelling compatibel zijn, kunnen daardoor niet meer worden ondersteund."
# AI Translated
msgid "Detach from parent"
msgstr "Losmaken van bovenliggend element"
# AI Translated
msgid "Unique preset"
msgstr "Unieke voorinstelling"
# AI Translated
msgid "Parent preset"
msgstr "Bovenliggende voorinstelling"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Deze voorinstelling erft niet van een andere voorinstelling."
msgid "Name is unavailable."
msgstr "Naam is niet beschikbaar."
@@ -11317,22 +11412,6 @@ msgstr "Weet u zeker dat u deze optie wilt inschakelen?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Vulpatronen zijn doorgaans ontworpen om rotatie automatisch af te handelen, zodat ze goed printen en hun beoogde effect bereiken (bijv. Gyroide, Kubisch). Het roteren van het huidige patroon voor de dunne vulling (infill) kan tot onvoldoende ondersteuning leiden. Ga voorzichtig te werk en controleer grondig op mogelijke printproblemen. Weet u zeker dat u deze optie wilt inschakelen?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Laaghoogte is te klein.\n"
"Het zal worden ingesteld op min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken."
msgid "Adjust to the set range automatically?\n"
msgstr "Automatisch aanpassen aan het ingestelde bereik?\n"
msgid "Adjust"
msgstr "Aanpassen"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties vergroten."
@@ -11532,6 +11611,9 @@ msgstr "Gereserveerde zoekworden gevonden"
msgid "Setting Overrides"
msgstr "Overschrijvingen instellen"
msgid "Retraction when switching material"
msgstr "Terugtrekken (retraction) bij het wisselen van filament"
msgid "Basic information"
msgstr "Basisinformatie"
@@ -11670,6 +11752,14 @@ msgstr "Geschikte proces profielen"
msgid "Printable space"
msgstr "Ruimte waarbinnen geprint kan worden"
# AI Translated
msgid "Printer Agent"
msgstr "Printeragent"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer. Beschikbare agenten worden bij het opstarten geregistreerd."
# AI Translated
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
@@ -11810,9 +11900,6 @@ msgstr "Limieten voor laaghoogte"
msgid "Z-Hop"
msgstr "Z-hop"
msgid "Retraction when switching material"
msgstr "Terugtrekken (retraction) bij het wisselen van filament"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -13304,6 +13391,10 @@ msgstr " bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " ligt te dicht bij het gebied voor klontdetectie, waardoor er botsingen zullen ontstaan.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " ligt gedeeltelijk buiten het printbare gebied en kan niet worden geprint.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "De geselecteerde mondstuktemperaturen zijn niet compatibel. De mondstuktemperatuur van elk filament moet binnen het aanbevolen mondstuktemperatuurbereik van de andere filamenten vallen. Anders kan het mondstuk verstopt raken of kan de printer beschadigd raken."
@@ -13667,10 +13758,6 @@ msgstr "3MF gebruiken in plaats van G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Schakel dit in als de printer een 3MF-bestand als printopdracht accepteert. Indien ingeschakeld verzendt Orca Slicer het geslicede bestand als een .gcode.3mf in plaats van als een gewoon .gcode-bestand."
# AI Translated
msgid "Printer Agent"
msgstr "Printeragent"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer."
@@ -14424,9 +14511,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Snelheid van interne bruggen. Als de waarde als percentage wordt uitgedrukt, wordt deze berekend op basis van bridge_speed. De standaardwaarde is 150%."
msgid "Brim width"
msgstr "Rand breedte"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Dit is de afstand van het model tot de buitenste randlijn."
@@ -14518,6 +14602,14 @@ msgstr ""
"De geometrie wordt vereenvoudigd voordat scherpe hoeken worden gedetecteerd. Deze parameter geeft de minimale lengte van de afwijking voor die vereenvoudiging aan.\n"
"0 om uit te schakelen."
# AI Translated
msgid "Brim ears outer only"
msgstr "Randoren alleen aan de buitenzijde"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Genereert alleen muisoren op de buitencontour van het model, met uitsluiting van gaten en gesloten secties."
msgid "upward compatible machine"
msgstr "opwaarts compatibele machine"
@@ -14544,13 +14636,37 @@ msgid "Intra-layer order"
msgstr "Volgorde binnen een laag"
# AI Translated
msgid "Print order within a single layer."
msgstr "Printvolgorde binnen één laag."
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"De volgorde waarin objectinstanties binnen één laag worden bezocht, wat bepaalt hoeveel verplaatsing er nodig is om ertussen te bewegen.\n"
"\n"
"Standaard: aaneenschakeling via de dichtstbijzijnde buur, verfijnd met 2-opt en het verwijderen van kruisingen. Een goede algemene keuze.\n"
"Zoals de objectlijst: instanties worden afgedrukt in dezelfde volgorde als de objectlijst, zonder enige padoptimalisatie. Gebruik dit wanneer je een voorspelbare, handmatig bepaalde volgorde nodig hebt.\n"
"Beste van allemaal (kortste pad): elke strategie wordt beoordeeld en de kortste wordt gebruikt. De volgorde van de objectinstanties wordt eenmalig voor de hele print bepaald, terwijl de volgorde van de afzonderlijke eilanden per laag wordt bepaald, waardoor verschillende lagen uiteindelijk verschillende strategieën kunnen gebruiken. Het slicen duurt iets langer.\n"
"Slingerend: slingerend traject, rij voor rij, verfijnd met 2-opt. Zeer geschikt voor regelmatige rasters van veel kleine onderdelen.\n"
"\n"
"Bij meerdere filamenten of gereedschappen in dezelfde laag heeft het beperken van het aantal gereedschapswissels voorrang: objecten worden eerst per filament gegroepeerd en deze instelling bepaalt alleen de volgorde van de instanties binnen elke filamentgroep, waardoor de totale volgorde er niet uitziet als het kortste pad over het printbed."
# AI Translated
msgid "As object list"
msgstr "Zoals de objectlijst"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Beste van allemaal (kortste pad)"
# AI Translated
msgid "Snake"
msgstr "Slingerend"
msgid "Slow printing down for better layer cooling"
msgstr "Printsnelheid omlaag brengen zodat de laag beter kan koelen"
@@ -15803,6 +15919,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroide"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Afvlakkingsfactor voor dunne vulling"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Bepaalt hoe sterk de hoeken van de dunne vulling worden afgerond. 0% behoudt het oorspronkelijke scherpe pad, terwijl 100% de grootst mogelijke bochten tussen aangrenzende vullijnen oplevert."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde kan de kwaliteit van de bovenlaag verbeteren."
@@ -16413,6 +16537,14 @@ msgstr "Het type G-code waarmee de printer compatibel is."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "G-code-configuratieblok overslaan"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Schrijft het CONFIG_BLOCK (de sleutel/waarde-paren van de slicerconfiguratie) niet naar het G-code-bestand. Dit kan helpen bij printers waarvan de firmware vastloopt bij het verwerken van deze commentaarregels (bijv. Anycubic go-klipper). Let op: het G-code-bestand bevat dan geen slicerinstellingen meer, dus door het weer in OrcaSlicer te importeren wordt de configuratie niet hersteld."
# AI Translated
msgid "Pellet Modded Printer"
msgstr "Printer omgebouwd voor pellets"
@@ -17610,6 +17742,14 @@ msgstr "Lange terugtrekking bij extruderwissel"
msgid "Retraction distance when extruder change"
msgstr "Terugtrekafstand bij extruderwissel"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Terugtreklengte (Gereedschapswissel)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Wanneer het terugtrekken vóór een gereedschapswissel wordt geactiveerd, wordt het filament met de opgegeven hoeveelheid teruggetrokken (de lengte wordt gemeten op het onbewerkte filament, voordat het de extruder ingaat)."
# AI Translated
msgid "Z-hop height"
msgstr "Z-hop-hoogte"
@@ -17720,6 +17860,10 @@ msgstr "Extra lengte bij herstart"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Als retracten wordt gecompenseerd na een beweging, wordt deze extra hoeveelheid filament geëxtrudeerd. Deze instelling is zelden van toepassing."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Extra lengte bij herstart (Gereedschapswissel)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra hoeveelheid filament geëxtrudeerd."
@@ -18212,6 +18356,14 @@ msgstr "Toolwissel op het afveegblok"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Dwing de printkop naar het afveegblok te bewegen voordat de opdracht voor de toolwissel (Tx) wordt gegeven. Alleen relevant voor printers met meerdere extruders (meerdere printkoppen) die een afveegblok van type 2 gebruiken. Standaard slaat Orca deze verplaatsing op machines met meerdere printkoppen over, omdat de firmware de kopwissel afhandelt, waardoor de Tx-opdracht boven het geprinte onderdeel kan worden gegeven. Schakel deze optie in als u wilt dat de toolwissel altijd boven het afveegblok wordt uitgevoerd."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Wachten op temperatuur bij het afveegblok"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Pakt het nieuwe gereedschap op zonder te wachten tot het de printtemperatuur bereikt, verplaatst zich naar het afveegblok en wacht daar op de temperatuur, vlak voor het spoelen. Het materiaal dat tijdens het opwarmen uitloopt komt op het blok terecht in plaats van op het model, en de verplaatsing overlapt met het opwarmen. Alleen relevant voor printers met meerdere extruders (meerdere printkoppen) die een afveegblok van type 2 gebruiken. De firmware of de gereedschapswisselmacro mag niet zelf op de temperatuur wachten. Wanneer dit is uitgeschakeld, wordt het wachten op de temperatuur direct na het gereedschapswisselcommando uitgevoerd."
# AI Translated
msgid "No sparse layers (beta)"
msgstr "Geen dunne lagen (bèta)"
@@ -20593,6 +20745,20 @@ msgstr ""
"Er zijn meerdere IP-adressen die verwijzen naar hostname %1%.\n"
"Selecteer er een die gebruikt moet worden."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Automatisch schalen naar mondstuk"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Dit model is ontworpen voor een mondstuk van 0,4 mm met een laaghoogte van 0,2 mm. \n"
"Wanneer de schaaloptie is ingeschakeld (aanbevolen), wordt het model dynamisch aangepast aan je huidige mondstukdiameter en een passende laaghoogte, waardoor de test zowel nauwkeurig als goed afleesbaar is.\n"
"Schakel het schalen alleen uit als je het referentiemodel precies zo wilt printen als het is."
msgid "PA Calibration"
msgstr "PA-kalibratie"
@@ -20736,6 +20902,14 @@ msgstr "Startsnelheid:"
msgid "End speed: "
msgstr "Eindsnelheid:"
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Automatisch aanpassen aan max. volumetrische snelheid"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Als de eindsnelheid de maximale volumetrische snelheid van het filament zou overschrijden, wordt de laaghoogte automatisch verlaagd (met behoud van standaardwaarden en binnen de limieten van de machine) om die snelheid te halen. Als zelfs de minimale laaghoogte niet volstaat, wordt in plaats daarvan de eindsnelheid verlaagd."
# AI Translated
msgid ""
"Please input valid values:\n"
@@ -20748,6 +20922,57 @@ msgstr ""
"stap >= 0\n"
"einde > start + stap"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"De eindsnelheid (%.0f mm/s) overschrijdt de maximale volumetrische snelheid van het filament (%.1f mm³/s), waardoor de buitenste wand bij deze lijndikte en laaghoogte beperkt wordt tot ongeveer %.0f mm/s.\n"
" Hogere snelheden worden begrensd, waardoor de bovenste blokken van de toren niet op de gevraagde snelheid worden geprint.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"De eindsnelheid (%.0f mm/s) overschrijdt de maximale volumetrische snelheid van het filament (%.1f mm³/s) bij de standaard laaghoogte (%.2f mm).\n"
"\n"
"De laaghoogte is verlaagd naar %.2f mm (een waarde die door de profielen van deze printer wordt gebruikt), zodat de toren de gevraagde snelheid kan halen."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Zelfs bij de kleinste laaghoogte die door de profielen van deze printer wordt gebruikt (%.2f mm) overschrijdt de eindsnelheid (%.0f mm/s) de maximale volumetrische snelheid van het filament (%.1f mm³/s).\n"
"\n"
"De laaghoogte wordt ingesteld op %.2f mm en de eindsnelheid verlaagd naar %.0f mm/s.\n"
"\n"
"Doorgaan?"
# AI Translated
msgid "Continue anyway?"
msgstr "Toch doorgaan?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"Automatisch aanpassen\" inschakelen om dit automatisch op te lossen, of toch doorgaan?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "\"Automatisch schalen naar mondstuk\" en \"Automatisch aanpassen\" inschakelen om dit automatisch op te lossen, of toch doorgaan?"
msgid "Start retraction length: "
msgstr "Begin terugtreklengte:"
@@ -21744,10 +21969,6 @@ msgstr "Fysieke printer"
msgid "Print Host upload"
msgstr "Host-upload afdrukken"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer. Beschikbare agenten worden bij het opstarten geregistreerd."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Selecteer een Flashforge-printer"
@@ -22802,9 +23023,6 @@ msgstr "Er is iets onverwachts gebeurd bij het inloggen. Probeer het opnieuw."
msgid "User canceled."
msgstr "Gebruiker geannuleerd."
msgid "Head diameter"
msgstr "Kopdiameter"
# AI Translated
msgid "Max angle"
msgstr "Maximale hoek"
@@ -23665,6 +23883,26 @@ msgstr ""
"Kromtrekken voorkomen\n"
"Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Laaghoogte is te klein.\n"
#~ "Het zal worden ingesteld op min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Automatisch aanpassen aan het ingestelde bereik?\n"
#~ msgid "Head diameter"
#~ msgstr "Kopdiameter"
# AI Translated
#~ msgid "Print order within a single layer."
#~ msgstr "Printvolgorde binnen één laag."
#~ msgid "Bottom"
#~ msgstr "Onderkant"
@@ -23707,9 +23945,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgctxt "Sync_Nozzle_AMS"
#~ msgid "Cancel"
#~ msgstr "Annuleren"

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OrcaSlicer 2.3.0-rc\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Krzysztof Morga <<tlumaczeniebs@gmail.com>>\n"
"Language-Team: \n"
@@ -3926,6 +3926,10 @@ msgstr "Układanie..."
msgid "Arranging"
msgstr "Układanie"
# AI Translated
msgid "Arranging "
msgstr "Rozmieszczanie "
msgid "Arranging canceled."
msgstr "Układanie anulowane."
@@ -4839,6 +4843,23 @@ msgstr "Obecna temperatura komory jest wyższa niż bezpieczna temperatura dla f
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Minimalna temperatura komory (%d℃) jest wyższa niż docelowa temperatura komory (%d℃). Wartość minimalna to próg, przy którym rozpoczyna się druk, podczas gdy komora nadal nagrzewa się do wartości docelowej, więc nie powinna jej przekraczać. Zostanie ograniczona do wartości docelowej."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Wysokość warstwy jest zbyt mała. Zostanie ustawiona na minimum (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Wysokość warstwy wykracza poza limity ustawione w Ustawieniach Drukarki -> Ekstruder -> Limity wysokości warstwy, co może powodować problemy z jakością druku."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Dostosować ją automatycznie do limitu (%g mm)?"
msgid "Adjust"
msgstr "Dostosuj"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4961,6 +4982,13 @@ msgstr ""
"Tak — włącz generator ścian Arachne\n"
"Nie — wyłącz generator ścian Arachne i ustaw tryb [Przesunięcie] skóry fuzzy"
# AI Translated
msgid "Brim ear radius"
msgstr "Promień ucha brim"
msgid "Brim width"
msgstr "Szerokość brimu"
# AI Translated
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Tryb spiralny działa tylko wtedy, gdy liczba pętli ściany wynosi 1, podpory są wyłączone, wykrywanie zlepiania przez sondowanie jest wyłączone, liczba warstw górnej powłoki wynosi 0, gęstość wypełnienia wynosi 0, a typ timelapse jest tradycyjny."
@@ -5222,6 +5250,14 @@ msgstr "Nie udało się wygenerować kodu kalibracji"
msgid "Calibration error"
msgstr "Błąd kalibracji"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Ta drukarka nie ma skonfigurowanego sprzętu wymaganego przez ten element sterujący."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Ten element sterujący nie jest obsługiwany przez tę drukarkę."
# AI Translated
msgid "Network unavailable"
msgstr "Sieć niedostępna"
@@ -6105,7 +6141,7 @@ msgstr "Objętość:"
msgid "Size:"
msgstr "Rozmiar:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Wykryto konflikty ścieżek G-code na warstwie %d, Z = %.2lfmm. Proszę oddalić od siebie obiekty będące w konflikcie (%s <-> %s)."
@@ -6291,6 +6327,10 @@ msgstr "Wiele urządzeń"
msgid "Project"
msgstr "Projekt"
# AI Translated
msgid "Device (Web)"
msgstr "Urządzenie (Web)"
msgid "Yes"
msgstr "Tak"
@@ -8440,24 +8480,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Zastąpiono %s.\n"
# AI Translated
msgid "Replaced volumes"
@@ -9228,6 +9268,18 @@ msgstr "Umożliwia wysyłanie zadania do wielu urządzeń jednocześnie i zarzą
msgid "Pop up to select filament grouping mode"
msgstr "Okno dialogowe do wyboru trybu grupowania filamentów"
# AI Translated
msgid "Visible plugin pages"
msgstr "Widoczne strony wtyczek"
# AI Translated
msgid "pages"
msgstr "stron"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Liczba stron wtyczek wyświetlanych jako stałe karty, zanim pozostałe strony zostaną zwinięte do listy rozwijanej na ostatniej karcie."
# AI Translated
msgid "Behaviour"
msgstr "Zachowanie"
@@ -9479,6 +9531,21 @@ msgstr "Przyciemnij niższe warstwy"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Podczas przewijania suwaka warstw w podglądzie po cięciu renderuj warstwy poniżej bieżącej w przyciemnieniu, tak aby tylko oglądana warstwa była w pełnej jasności."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Jasność przyciemnionych warstw"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Jak jasno renderowane są przyciemnione warstwy, gdy włączona jest opcja „Przyciemnij niższe warstwy”.\n"
"99% oznacza ledwo zauważalne przyciemnienie, 0% renderuje je na czarno. Wartość jest ograniczona do 99%, ponieważ 100% oznaczałoby to samo co wyłączenie opcji."
msgid "Login region"
msgstr "Region logowania"
@@ -9628,6 +9695,18 @@ msgstr "Pokaż nieobsługiwane profile"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Pokazuj niekompatybilne/nieobsługiwane profile na listach rozwijanych drukarek i filamentów. Tych profili nie można wybrać."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Eksperymentalne) Używaj agentów drukarki zamiast serwerów druku"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Kieruje zadania druku dla drukarek innych niż Bambu przez agentów wtyczek drukarki zamiast klasycznego przesyłania do serwera druku.\n"
"Gdy opcja jest wyłączona, OrcaSlicer korzysta z dotychczasowego działania serwera druku."
# AI Translated
msgid "Experimental Features"
msgstr "Funkcje eksperymentalne"
@@ -9899,10 +9978,26 @@ msgstr "Profil użytkownika"
msgid "Preset Inside Project"
msgstr "Profil wewnątrz projektu"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Kopiuje do tego profilu wszystkie wartości odziedziczone z profilu nadrzędnego i usuwa relację dziedziczenia. Profile zgodne wyłącznie z profilem nadrzędnym mogą przestać być obsługiwane."
# AI Translated
msgid "Detach from parent"
msgstr "Odłącz od elementu nadrzędnego"
# AI Translated
msgid "Unique preset"
msgstr "Profil niezależny"
# AI Translated
msgid "Parent preset"
msgstr "Profil nadrzędny"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Ten profil nie dziedziczy z innego profilu."
msgid "Name is unavailable."
msgstr "Nazwa jest niedostępna."
@@ -10665,22 +10760,6 @@ msgstr "Czy na pewno włączyć tę opcję?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Wzory wypełnienia są zwykle projektowane tak, aby samodzielnie obsługiwać obrót, co zapewnia prawidłowy druk i zamierzony efekt (np. Gyroidalny, Sześcienny). Obracanie bieżącego wzoru wypełnienia może prowadzić do niewystarczającego podparcia. Zachowaj ostrożność i dokładnie sprawdź, czy nie występują problemy z drukiem. Czy na pewno chcesz włączyć tę opcję?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Wysokość warstwy jest zbyt mała.\n"
"Ustawione zostanie na min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Wysokość warstwy przekracza limit w Ustawieniach Drukarki -> Extruder -> Limity wysokości warstwy, co może powodować problemy z jakością druku."
msgid "Adjust to the set range automatically?\n"
msgstr "Dostosować automatycznie do ustawionego zakresu?\n"
msgid "Adjust"
msgstr "Dostosuj"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Funkcja eksperymentalna: Polega na wycofywaniu filamentu na większą odległość w celu zminimalizowania płukania, a następne jego odcięcie. Choć może to znacząco zmniejszyć ilość zużytego filamentu, może również zwiększyć ryzyko zatknięcia dyszy lub innych problemów z drukowaniem."
@@ -10880,6 +10959,9 @@ msgstr "Znaleziono zarezerwowane słowa kluczowe"
msgid "Setting Overrides"
msgstr "Nadpisywane Ustawień"
msgid "Retraction when switching material"
msgstr "Retrakcja podczas zmiany filamentu"
msgid "Basic information"
msgstr "Podstawowe informacje"
@@ -11014,6 +11096,14 @@ msgstr "Kompatybilne profile procesów"
msgid "Printable space"
msgstr "Przestrzeń do druku"
# AI Translated
msgid "Printer Agent"
msgstr "Agent drukarki"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką. Dostępni agenci są rejestrowani przy uruchamianiu."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -11146,9 +11236,6 @@ msgstr "Ograniczenia wysokości warstwy"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Retrakcja podczas zmiany filamentu"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12540,6 +12627,10 @@ msgstr " jest zbyt blisko obszaru wykluczenia, mogą wystąpić kolizje.\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " jest zbyt blisko obszaru wykrywania zalepienia dyszy, co doprowadzi do kolizji.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " znajduje się częściowo poza obszarem druku i nie może zostać wydrukowany.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Wybrane temperatury dyszy są niezgodne. Temperatura dyszy każdego filamentu musi mieścić się w zalecanym zakresie temperatur dyszy pozostałych filamentów. W przeciwnym razie może dojść do zatkania dyszy lub uszkodzenia drukarki."
@@ -12882,10 +12973,6 @@ msgstr "Użyj 3MF zamiast G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Włącz tę opcję, jeśli drukarka przyjmuje plik 3MF jako zadanie druku. Po włączeniu Orca Slicer wysyła plik po cięciu jako .gcode.3mf zamiast zwykłego pliku .gcode."
# AI Translated
msgid "Printer Agent"
msgstr "Agent drukarki"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką."
@@ -13598,9 +13685,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Prędkość wewnętrznych mostów. Jeśli wartość jest wyrażona w procentach, będzie obliczana na podstawie prędkości mostu. Wartość domyślna wynosi 150%."
msgid "Brim width"
msgstr "Szerokość brimu"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Odległość od modelu do najbardziej zewnętrznej linii brimu"
@@ -13684,6 +13768,14 @@ msgstr ""
"Kształt zostanie zredukowany przed wykryciem ostrych kątów. Ten parametr wskazuje minimalną długość odchylenia dla redukcji.\n"
"0, aby dezaktywować"
# AI Translated
msgid "Brim ears outer only"
msgstr "Uszy brim tylko na zewnątrz"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Generuje uszy myszy tylko na zewnętrznym obrysie modelu, z pominięciem otworów i zamkniętych sekcji."
msgid "upward compatible machine"
msgstr "drukarka kompatybilna i wzwyż"
@@ -13709,12 +13801,37 @@ msgstr "Wg obiektu"
msgid "Intra-layer order"
msgstr "Kolejność warstw"
msgid "Print order within a single layer."
msgstr "Kolejność druku obiektów w obrębie jednej warstwy. Domyślnie lub według listy obiektów"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Kolejność, w jakiej instancje obiektów są odwiedzane w obrębie jednej warstwy; decyduje o tym, ile przemieszczeń zajmuje przechodzenie między nimi.\n"
"\n"
"Domyślny: łączenie metodą najbliższego sąsiada, dopracowane algorytmem 2-opt i usuwaniem przecięć. Dobry wybór ogólny.\n"
"Wg listy obiektów: instancje są drukowane w tej samej kolejności co na liście obiektów, bez optymalizacji ścieżki. Użyj, gdy potrzebujesz przewidywalnej, ręcznie ustalonej kolejności.\n"
"Najlepsza ze wszystkich (najkrótsza ścieżka): oceniane są wszystkie strategie i wybierana jest najkrótsza. Kolejność instancji obiektów ustalana jest raz dla całego wydruku, natomiast kolejność poszczególnych wysp jest ustalana dla każdej warstwy, więc różne warstwy mogą ostatecznie korzystać z różnych strategii. Cięcie trwa nieco dłużej.\n"
"Wężykiem: serpentynowe przechodzenie rząd po rzędzie, dopracowane algorytmem 2-opt. Dobrze sprawdza się przy regularnych siatkach wielu małych elementów.\n"
"\n"
"Gdy w tej samej warstwie używanych jest wiele filamentów lub narzędzi, priorytetem jest minimalizacja zmian narzędzia: obiekty są najpierw grupowane według filamentu, a to ustawienie porządkuje jedynie instancje w obrębie każdej grupy, więc ogólna sekwencja może nie wyglądać jak najkrótsza ścieżka po płycie."
msgid "As object list"
msgstr "Wg listy obiektów"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Najlepsza ze wszystkich (najkrótsza ścieżka)"
# AI Translated
msgid "Snake"
msgstr "Wężykiem"
msgid "Slow printing down for better layer cooling"
msgstr "Zwolnienie druku dla lepszego chłodzenia warstw"
@@ -14852,6 +14969,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroidalny"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Współczynnik wygładzania wypełnienia"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Określa, jak mocno zaokrąglane są narożniki wypełnienia. 0% zachowuje oryginalną ostrą ścieżkę, a 100% tworzy największe możliwe łuki pomiędzy sąsiednimi liniami wypełnienia."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Przyspieszenie dla wypełnienia górnej powierzchni. Użycie niższej wartości może poprawić jakość górnej powierzchni"
@@ -15415,6 +15540,14 @@ msgstr "Z jakim rodzajem G-code drukarka jest kompatybilna."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Pomiń blok konfiguracyjny G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Nie zapisuje bloku CONFIG_BLOCK (par klucz/wartość z konfiguracją slicera) do pliku G-code. Może to pomóc w przypadku drukarek, których firmware ulega awarii podczas przetwarzania tych linii komentarza (np. Anycubic go-klipper). Uwaga: plik G-code nie będzie już zawierał ustawień slicera, więc ponowne zaimportowanie go do OrcaSlicer nie przywróci konfiguracji."
msgid "Pellet Modded Printer"
msgstr "Drukarka do druku granulatem"
@@ -16527,6 +16660,14 @@ msgstr "Długa retrakcja podczas zmian ekstruderów"
msgid "Retraction distance when extruder change"
msgstr "Długość retrakcji podczas zmian ekstruderów"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Długość retrakcji (Zmiana narzędzia)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Gdy retrakcja jest wyzwalana przed zmianą narzędzia, filament zostaje wycofany o określoną wartość (długość mierzona jest na surowym filamencie, przed wejściem do ekstrudera)."
msgid "Z-hop height"
msgstr "Wysokość Z-hop"
@@ -16625,6 +16766,10 @@ msgstr "Dodatkowa ilość dla powrotu"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Gdy retrakcja jest kompensowana po przemieszczeniu, ekstruder przepycha tę dodatkową ilość filamentu. To opcja jest rzadko potrzebna."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Dodatkowa ilość dla powrotu (Zmiana narzędzia)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Jeśli retrakcja jest korygowana po zmianie narzędzia, extruder przepchnie taką dodatkową ilość filamentu."
@@ -17055,6 +17200,14 @@ msgstr "Zmiana narzędzia na wieży czyszczącej"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Wymusza przemieszczenie głowicy do wieży czyszczącej przed wydaniem polecenia zmiany narzędzia (Tx). Dotyczy tylko drukarek wieloekstruderowych (wielogłowicowych) korzystających z wieży czyszczącej typu 2. Domyślnie Orca pomija to przemieszczenie na maszynach wielogłowicowych, ponieważ zamianą głowic zajmuje się oprogramowanie sprzętowe, przez co polecenie Tx może zostać wydane nad drukowaną częścią. Włącz tę opcję, jeśli chcesz, aby zmiana narzędzia zawsze następowała nad wieżą czyszczącą."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Czekaj na temperaturę na wieży czyszczącej"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Pobiera nowe narzędzie bez czekania, aż osiągnie temperaturę druku, przejeżdża do wieży czyszczącej i tam czeka na temperaturę, tuż przed płukaniem. Materiał wyciekający podczas nagrzewania trafia na wieżę zamiast na model, a przejazd nakłada się na nagrzewanie. Dotyczy wyłącznie drukarek z wieloma ekstruderami (wieloma głowicami) używających wieży czyszczącej typu 2. Firmware ani makro zmiany narzędzia nie mogą samodzielnie czekać na temperaturę. Gdy opcja jest wyłączona, oczekiwanie na temperaturę jest wysyłane bezpośrednio po poleceniu zmiany narzędzia."
msgid "No sparse layers (beta)"
msgstr "Warstwy bez czyszczenia (beta)"
@@ -19211,6 +19364,20 @@ msgstr ""
"Jest kilka adresów IP przypisanych do nazwy hosta %1%.\n"
"Proszę wybrać jeden, który ma być używany."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Automatyczne skalowanie do dyszy"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Ten model zaprojektowano dla dyszy 0,4 mm i wysokości warstwy 0,2 mm. \n"
"Gdy opcja skalowania jest włączona (zalecane), model dynamicznie dopasowuje rozmiar do średnicy Twojej obecnej dyszy i odpowiedniej wysokości warstwy, dzięki czemu test jest dokładny i łatwy do odczytania.\n"
"Wyłącz skalowanie tylko wtedy, gdy chcesz wydrukować model referencyjny dokładnie w oryginalnej postaci."
msgid "PA Calibration"
msgstr "Kalibracja PA"
@@ -19349,6 +19516,14 @@ msgstr "Rozpocznij z prędkością: "
msgid "End speed: "
msgstr "Zakończ z prędkością: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Automatyczne dopasowanie do maksymalnej prędkości przepływu"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Jeśli prędkość końcowa przekroczyłaby maksymalną prędkość przepływu filamentu, automatycznie obniż wysokość warstwy (zachowując standardowe wartości i pozostając w limitach maszyny), aby ją osiągnąć. Jeśli nawet minimalna wysokość warstwy nie wystarczy, obniżona zostanie prędkość końcowa."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -19360,6 +19535,57 @@ msgstr ""
"krok >= 0\n"
"koniec > start + krok)"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Prędkość końcowa (%.0f mm/s) przekracza maksymalną prędkość przepływu filamentu (%.1f mm³/s), która przy tej szerokości linii i wysokości warstwy ogranicza zewnętrzną ścianę do około %.0f mm/s.\n"
" Wyższe prędkości zostaną ograniczone, więc górne bloki wieży nie zostaną wydrukowane z żądaną prędkością.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Prędkość końcowa (%.0f mm/s) przekracza maksymalną prędkość przepływu filamentu (%.1f mm³/s) przy domyślnej wysokości warstwy (%.2f mm).\n"
"\n"
"Wysokość warstwy została zmniejszona do %.2f mm (wartość stosowana w profilach tej drukarki), aby wieża mogła osiągnąć żądaną prędkość."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Nawet przy najmniejszej wysokości warstwy stosowanej w profilach tej drukarki (%.2f mm) prędkość końcowa (%.0f mm/s) przekracza maksymalną prędkość przepływu filamentu (%.1f mm³/s).\n"
"\n"
"Wysokość warstwy zostanie ustawiona na %.2f mm, a prędkość końcowa obniżona do %.0f mm/s.\n"
"\n"
"Kontynuować?"
# AI Translated
msgid "Continue anyway?"
msgstr "Kontynuować mimo to?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Włączyć „Automatyczne dopasowanie”, aby naprawić to automatycznie, czy kontynuować mimo to?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Włączyć „Automatyczne skalowanie do dyszy” i „Automatyczne dopasowanie”, aby naprawić to automatycznie, czy kontynuować mimo to?"
msgid "Start retraction length: "
msgstr "Długość retrakcji na początku: "
@@ -20328,10 +20554,6 @@ msgstr "Fizyczna drukarka"
msgid "Print Host upload"
msgstr "Przesyłanie do hosta drukowania"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką. Dostępni agenci są rejestrowani przy uruchamianiu."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Wybierz drukarkę Flashforge"
@@ -21284,9 +21506,6 @@ msgstr "Wystąpił problem podczas próby logowania, proszę spróbować ponowni
msgid "User canceled."
msgstr "Anulowane przez użytkownika."
msgid "Head diameter"
msgstr "Średnica łącznika"
msgid "Max angle"
msgstr "Maksymalny kąt"
@@ -22117,6 +22336,25 @@ msgstr ""
"Unikaj odkształceń\n"
"Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Wysokość warstwy jest zbyt mała.\n"
#~ "Ustawione zostanie na min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Wysokość warstwy przekracza limit w Ustawieniach Drukarki -> Extruder -> Limity wysokości warstwy, co może powodować problemy z jakością druku."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Dostosować automatycznie do ustawionego zakresu?\n"
#~ msgid "Head diameter"
#~ msgstr "Średnica łącznika"
#~ msgid "Print order within a single layer."
#~ msgstr "Kolejność druku obiektów w obrębie jednej warstwy. Domyślnie lub według listy obiektów"
#~ msgid "Bottom"
#~ msgstr "Dół"
@@ -22191,9 +22429,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Continue to sync filaments"
#~ msgstr "Kontynuuj aby zsynchronizować filamenty"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -4245,6 +4245,10 @@ msgstr "Placerar..."
msgid "Arranging"
msgstr "Placerar"
# AI Translated
msgid "Arranging "
msgstr "Placerar "
msgid "Arranging canceled."
msgstr "Placering avbruten."
@@ -5209,6 +5213,23 @@ msgstr "Kammarens aktuella temperatur är högre än materialets säkra temperat
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Kammarens minimitemperatur (%d℃) är högre än kammarens måltemperatur (%d℃). Minimivärdet är tröskeln där utskriften startar medan kammaren fortsätter värmas mot målet, så det bör inte överstiga målet. Värdet begränsas till måltemperaturen."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Lagerhöjden är för liten. Den kommer att sättas till minimivärdet (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Lagerhöjden ligger utanför gränserna som anges i Skrivarinställningar -> Extruder -> Lagerhöjds gränser, detta kan orsaka problem med utskriftskvaliteten."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Justera automatiskt till gränsvärdet (%g mm)?"
msgid "Adjust"
msgstr "Justera"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -5335,6 +5356,13 @@ msgstr ""
"Ja Aktivera Arachne-väggeneratorn\n"
"Nej Inaktivera Arachne-väggeneratorn och ställ in läget [Förskjutning] för ojämn yta"
# AI Translated
msgid "Brim ear radius"
msgstr "Radie för brim-öra"
msgid "Brim width"
msgstr "Brim bredd"
# AI Translated
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Spiralläget fungerar bara när antal väggar är 1, support är avstängt, detektering av klumpbildning med sondering är avstängd, antal översta skallager är 0, sparsam ifyllnadsdensitet är 0 och timelapse-typen är traditionell."
@@ -5641,6 +5669,14 @@ msgstr "Misslyckades med att generera cali G kod"
msgid "Calibration error"
msgstr "Fel vid kalibrering"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Den här skrivaren är inte konfigurerad med den maskinvara som den här kontrollen kräver."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Den här kontrollen stöds inte på den här skrivaren."
# AI Translated
msgid "Network unavailable"
msgstr "Nätverket är inte tillgängligt"
@@ -6592,7 +6628,7 @@ msgid "Size:"
msgstr "Storlek:"
# AI Translated
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Konflikter mellan G-code-banor hittades på lager %d, Z = %.2lfmm. Placera de objekt som krockar längre ifrån varandra (%s <-> %s)."
@@ -6794,6 +6830,10 @@ msgstr "Flera enheter"
msgid "Project"
msgstr "Projekt"
# AI Translated
msgid "Device (Web)"
msgstr "Enhet (Webb)"
msgid "Yes"
msgstr "Ja"
@@ -9084,24 +9124,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Ersatte %s.\n"
# AI Translated
msgid "Replaced volumes"
@@ -9929,6 +9969,18 @@ msgstr "Med det här alternativet aktiverat kan du skicka en uppgift till flera
msgid "Pop up to select filament grouping mode"
msgstr "Visa dialogruta för val av filamentgrupperingsläge"
# AI Translated
msgid "Visible plugin pages"
msgstr "Synliga insticksmodulsidor"
# AI Translated
msgid "pages"
msgstr "sidor"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Antal insticksmodulsidor som visas som fasta flikar innan de återstående sidorna fälls ihop i en rullgardinsmeny på den sista fliken."
# AI Translated
msgid "Behaviour"
msgstr "Beteende"
@@ -10187,6 +10239,21 @@ msgstr "Dämpa underliggande lager"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "När du drar i lagerreglaget i den beredda förhandsgranskningen renderas lagren under det aktuella mörkare, så att endast det lager du tittar på visas med full ljusstyrka."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Ljusstyrka för dämpade lager"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Hur ljust de dämpade lagren återges när \"Dämpa underliggande lager\" är aktiverat.\n"
"99% är knappt mörkare, 0% gör dem helt svarta. Begränsat till 99% eftersom 100% skulle vara detsamma som att stänga av alternativet."
msgid "Login region"
msgstr "Logga in region"
@@ -10338,6 +10405,18 @@ msgstr "Visa förinställningar som inte stöds"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Visa inkompatibla förinställningar och förinställningar som inte stöds i rullgardinslistorna för skrivare och filament. Dessa förinställningar kan inte väljas."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Experimentellt) Använd skrivaragenter i stället för utskriftsvärdar"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Skickar utskriftsjobb för icke-Bambu-skrivare via skrivarens insticksmodulagenter i stället för det klassiska uppladdningsflödet till utskriftsvärden.\n"
"När detta är avaktiverat använder OrcaSlicer det äldre beteendet för utskriftsvärdar."
# AI Translated
msgid "Experimental Features"
msgstr "Experimentella funktioner"
@@ -10618,10 +10697,26 @@ msgstr "Användar förinställning"
msgid "Preset Inside Project"
msgstr "Projekt förinställning"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Kopierar alla ärvda värden från den överordnade förinställningen till den här förinställningen och tar bort arvsrelationen. Förinställningar som endast är kompatibla med den överordnade förinställningen kan sluta stödjas."
# AI Translated
msgid "Detach from parent"
msgstr "Koppla loss från överordnad"
# AI Translated
msgid "Unique preset"
msgstr "Unik förinställning"
# AI Translated
msgid "Parent preset"
msgstr "Överordnad förinställning"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Den här förinställningen ärver inte från någon annan förinställning."
msgid "Name is unavailable."
msgstr "Namnet ej tillgängligt."
@@ -11440,23 +11535,6 @@ msgstr "Är du säker på att du vill aktivera det här alternativet?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Ifyllnadsmönster är oftast konstruerade för att hantera rotation automatiskt så att de skrivs ut korrekt och ger avsedd effekt (t.ex. Gyroid, Kubisk). Att rotera det aktuella sparsamma ifyllnadsmönstret kan ge otillräckligt stöd. Var försiktig och kontrollera noga om det uppstår utskriftsproblem. Är du säker på att du vill aktivera det här alternativet?"
# AI Translated
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Lagerhöjden är för liten.\n"
"Den ställs in på min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Lagerhöjden överskrider gränsen i Skrivarinställningar -> Extruder -> Lagerhöjds gränser, detta kan orsaka problem med utskriftskvaliteten."
msgid "Adjust to the set range automatically?\n"
msgstr "Justera automatiskt till det inställda området?\n"
msgid "Adjust"
msgstr "Justera"
# AI Translated
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Experimentell funktion: Filamentet dras tillbaka och kapas på ett längre avstånd vid filamentbyten för att minimera rensningen. Det kan minska rensningen avsevärt, men kan också öka risken för igensatt nozzel eller andra utskriftsproblem."
@@ -11688,6 +11766,9 @@ msgstr "Hittade reserverade nyckelord"
msgid "Setting Overrides"
msgstr "Åsidosätter inställningar"
msgid "Retraction when switching material"
msgstr "Reduktion vid material byte"
msgid "Basic information"
msgstr "Allmän information"
@@ -11829,6 +11910,14 @@ msgstr "Kompatibla process profiler"
msgid "Printable space"
msgstr "Utskriftsbar yta"
# AI Translated
msgid "Printer Agent"
msgstr "Skrivaragent"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren. Tillgängliga agenter registreras vid start."
# AI Translated
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
@@ -11973,9 +12062,6 @@ msgstr "Lagerhöjds begränsning"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Reduktion vid material byte"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -13467,6 +13553,10 @@ msgstr " är för nära uteslutningsområdet, och kollisioner kommer att orsakas
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " ligger för nära området för klumpdetektering, vilket kommer att orsaka kollisioner.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " är delvis utanför det utskrivbara området och kan inte skrivas ut.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "De valda nozzeltemperaturerna är inkompatibla. Varje filaments nozzeltemperatur måste ligga inom de andra filamentens rekommenderade nozzeltemperaturintervall. Annars kan nozzeln sättas igen eller skrivaren skadas."
@@ -13837,10 +13927,6 @@ msgstr "Använd 3MF i stället för G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Aktivera detta om skrivaren tar emot en 3MF-fil som utskriftsjobb. När det är aktiverat skickar Orca Slicer den beredda filen som en .gcode.3mf i stället för en vanlig .gcode-fil."
# AI Translated
msgid "Printer Agent"
msgstr "Skrivaragent"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren."
@@ -14597,9 +14683,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Hastighet för inre bridges. Om värdet anges i procent beräknas det utifrån bridge_speed. Standardvärdet är 150 %."
msgid "Brim width"
msgstr "Brim bredd"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Avståndet från modellen till yttersta brim linjen"
@@ -14688,6 +14771,14 @@ msgstr ""
"Geometrin decimeras innan skarpa vinklar detekteras. Den här parametern anger avvikelsens minsta längd för decimeringen.\n"
"0 för att avaktivera."
# AI Translated
msgid "Brim ears outer only"
msgstr "Brim-öron endast utvändigt"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Genererar musöron endast på modellens yttre kontur, exklusive hål och slutna sektioner."
msgid "upward compatible machine"
msgstr "uppåt kompatibel maskin"
@@ -14716,13 +14807,37 @@ msgid "Intra-layer order"
msgstr "Ordning inom lager"
# AI Translated
msgid "Print order within a single layer."
msgstr "Utskriftsordning inom ett enskilt lager."
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Ordningen som objektinstanserna besöks i inom ett och samma lager, vilket avgör hur mycket förflyttning som går åt mellan dem.\n"
"\n"
"Standard: kedjning efter närmaste granne, förfinad med 2-opt och borttagning av korsningar. Ett bra generellt val.\n"
"Som objektlistan: instanserna skrivs ut i samma ordning som i objektlistan, utan någon vägoptimering. Använd det när du behöver en förutsägbar ordning som du styr manuellt.\n"
"Bäst av alla (kortaste vägen): varje strategi utvärderas och den kortaste används. Ordningen för objektinstanserna bestäms en gång för hela utskriften, medan ordningen för enskilda öar bestäms per lager, så olika lager kan sluta med att använda olika strategier. Beredningen blir något långsammare.\n"
"Slingrande: slingrande färdväg rad för rad, förfinad med 2-opt. Passar bra för regelbundna rutnät med många små detaljer.\n"
"\n"
"Med flera filament eller verktyg i samma lager prioriteras att minimera antalet verktygsbyten: objekten grupperas först efter filament och den här inställningen ordnar bara instanserna inom varje filamentgrupp, så den totala sekvensen kanske inte ser ut som den kortaste vägen över plattan."
# AI Translated
msgid "As object list"
msgstr "Som objektlistan"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Bäst av alla (kortaste vägen)"
# AI Translated
msgid "Snake"
msgstr "Slingrande"
msgid "Slow printing down for better layer cooling"
msgstr "Sakta ner utskrift för bättre kylning av lager"
@@ -15996,6 +16111,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroid"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Utjämningsfaktor för sparsam ifyllnad"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Styr hur kraftigt hörnen i den sparsamma ifyllnaden rundas av. 0% behåller den ursprungliga skarpa banan, medan 100% ger största möjliga kurvor mellan intilliggande ifyllnadslinjer."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Acceleration av fyllning av toppytan. Att använda ett lägre värde kan förbättra ytkvaliteten"
@@ -16608,6 +16731,14 @@ msgstr "Vilken typ av G-kod är skrivaren kompatibel med"
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Hoppa över G-code-konfigurationsblocket"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Skriver inte CONFIG_BLOCK (nyckel/värde-paren för slicerkonfigurationen) till G-code-filen. Detta kan hjälpa med skrivare vars firmware kraschar när dessa kommentarrader tolkas (t.ex. Anycubic go-klipper). Obs: G-code-filen kommer inte längre att innehålla slicerinställningarna, så att importera den tillbaka till OrcaSlicer återställer inte konfigurationen."
# AI Translated
msgid "Pellet Modded Printer"
msgstr "Skrivare ombyggd för pellets"
@@ -17825,6 +17956,14 @@ msgstr "Lång reduktion vid extruderbyte"
msgid "Retraction distance when extruder change"
msgstr "Reduktionssträcka vid extruderbyte"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Reduktionslängd (Verktygsbyte)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "När reduktionen utlöses före ett verktygsbyte dras filamentet tillbaka med den angivna mängden (längden mäts på det obearbetade filamentet, innan det når extrudern)."
# AI Translated
msgid "Z-hop height"
msgstr "Z-hop-höjd"
@@ -17940,6 +18079,10 @@ msgstr "Extra längd vid omstart"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "När reduktionen kompenseras efter flyttrörelsen trycker extrudern fram den här extra mängden filament. Den här inställningen behövs sällan."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Extra längd vid omstart (Verktygsbyte)"
# AI Translated
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "När reduktionen kompenseras efter verktygsbyte trycker extrudern fram den här extra mängden filament."
@@ -18434,6 +18577,14 @@ msgstr "Verktygsbyte vid prime tornet"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Tvinga verktygshuvudet att flytta till prime tornet innan verktygsbyteskommandot (Tx) skickas. Endast relevant för skrivare med flera extrudrar (flera verktygshuvuden) som använder ett prime torn av typ 2. Som standard hoppar Orca över flytten på maskiner med flera verktygshuvuden, eftersom den fasta programvaran hanterar huvudbytet, vilket kan leda till att Tx-kommandot skickas ovanför den utskrivna delen. Aktivera det här alternativet om du vill att verktygsbytet alltid ska ske ovanför prime tornet i stället."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Vänta på temperatur vid prime tornet"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Hämtar det nya verktyget utan att vänta på att det ska nå utskriftstemperatur, förflyttar sig till prime tornet och väntar på temperaturen där, precis före rensningen. Materialet som droppar under uppvärmningen hamnar på tornet i stället för på modellen, och förflyttningen sker samtidigt som uppvärmningen. Endast relevant för skrivare med flera extrudrar (flera verktygshuvuden) som använder ett prime torn av typ 2. Firmware eller verktygsbytesmakrot får inte vänta på temperaturen själv. När detta är avaktiverat utfärdas temperaturväntan direkt efter verktygsbyteskommandot."
# AI Translated
msgid "No sparse layers (beta)"
msgstr "Inga glesa lager (beta)"
@@ -20823,6 +20974,20 @@ msgstr ""
"Det finns flera IP-adresser som pekar på värdnamnet %1%.\n"
"Välj vilken som ska användas."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Autoskala efter nozzel"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Den här modellen är utformad för en nozzel på 0,4 mm med en lagerhöjd på 0,2 mm. \n"
"När skalningsalternativet är aktiverat (rekommenderas) ändras storleken dynamiskt så att den matchar din aktuella nozzeldiameter och en lämplig lagerhöjd, vilket gör testet både noggrant och lättläst.\n"
"Stäng bara av skalningen om du vill skriva ut referensmodellen exakt som den är."
msgid "PA Calibration"
msgstr "PA kalibrering"
@@ -20969,6 +21134,14 @@ msgstr "Start hastighet: "
msgid "End speed: "
msgstr "Sluthastighet: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Autojustera till max volymetrisk hastighet"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Om sluthastigheten skulle överskrida filamentets maximala volymetriska hastighet sänks lagerhöjden automatiskt (med bibehållna standardvärden och inom maskinens gränser) för att nå den. Om inte ens den minsta lagerhöjden räcker sänks sluthastigheten i stället."
# AI Translated
msgid ""
"Please input valid values:\n"
@@ -20981,6 +21154,57 @@ msgstr ""
"steg >= 0\n"
"slut > start + steg"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Sluthastigheten (%.0f mm/s) överskrider filamentets maximala volymetriska hastighet (%.1f mm³/s), vilket begränsar den yttre väggen till omkring %.0f mm/s vid den här linjebredden och lagerhöjden.\n"
" Högre hastigheter kapas, så tornets övre block skrivs inte ut med den begärda hastigheten.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Sluthastigheten (%.0f mm/s) överskrider filamentets maximala volymetriska hastighet (%.1f mm³/s) vid standardlagerhöjden (%.2f mm).\n"
"\n"
"Lagerhöjden har sänkts till %.2f mm (ett värde som används av den här skrivarens profiler) så att tornet kan nå den begärda hastigheten."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Även vid den minsta lagerhöjd som används av den här skrivarens profiler (%.2f mm) överskrider sluthastigheten (%.0f mm/s) filamentets maximala volymetriska hastighet (%.1f mm³/s).\n"
"\n"
"Lagerhöjden ställs in på %.2f mm och sluthastigheten sänks till %.0f mm/s.\n"
"\n"
"Vill du fortsätta?"
# AI Translated
msgid "Continue anyway?"
msgstr "Vill du fortsätta ändå?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Vill du aktivera \"Autojustera\" för att åtgärda detta automatiskt, eller fortsätta ändå?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Vill du aktivera \"Autoskala efter nozzel\" och \"Autojustera\" för att åtgärda detta automatiskt, eller fortsätta ändå?"
msgid "Start retraction length: "
msgstr "Starta retraktion längd: "
@@ -21985,10 +22209,6 @@ msgstr "Fysisk printer"
msgid "Print Host upload"
msgstr "Uppladdning utskriftsvärd"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren. Tillgängliga agenter registreras vid start."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Välj en Flashforge-skrivare"
@@ -23065,10 +23285,6 @@ msgstr "Något oväntat hände vid inloggningen, försök igen."
msgid "User canceled."
msgstr "Användaren avbröt."
# AI Translated
msgid "Head diameter"
msgstr "Huvuddiameter"
# AI Translated
msgid "Max angle"
msgstr "Maxvinkel"
@@ -23955,6 +24171,28 @@ msgstr ""
"Undvik vridning\n"
"Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?"
# AI Translated
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Lagerhöjden är för liten.\n"
#~ "Den ställs in på min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Lagerhöjden överskrider gränsen i Skrivarinställningar -> Extruder -> Lagerhöjds gränser, detta kan orsaka problem med utskriftskvaliteten."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Justera automatiskt till det inställda området?\n"
# AI Translated
#~ msgid "Head diameter"
#~ msgstr "Huvuddiameter"
# AI Translated
#~ msgid "Print order within a single layer."
#~ msgstr "Utskriftsordning inom ett enskilt lager."
#~ msgid "Bottom"
#~ msgstr "Botten"
@@ -24000,9 +24238,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "° C"
#~ msgid "%"
#~ msgstr "%"
#~ msgctxt "Sync_Nozzle_AMS"
#~ msgid "Cancel"
#~ msgstr "Avbryt"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: orcaslicerua\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2026-07-17 16:25+0300\n"
"Last-Translator: Andrij Mizyk <andm1zyk@proton.me>\n"
"Language-Team: Ukrainian\n"
@@ -3796,6 +3796,10 @@ msgstr "Організація..."
msgid "Arranging"
msgstr "Організація"
# AI Translated
msgid "Arranging "
msgstr "Впорядкування "
msgid "Arranging canceled."
msgstr "Організацію скасовано."
@@ -4712,6 +4716,23 @@ msgstr "Поточна температура камери вища, ніж бе
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Мінімальна температура камери (%d℃) вища за цільову температуру камери (%d℃). Мінімальне значення — це поріг, за якого починається друк, поки камера продовжує нагріватися до цільової температури, тому воно не повинно її перевищувати. Значення буде обмежено цільовим."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Висота шару занадто мала. Буде встановлено мінімальне значення (%g мм)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Висота шару виходить за межі, задані в Налаштуваннях принтера -> Екструдер -> Ліміти висоти шару, це може призвести до проблем з якістю друку."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Автоматично налаштувати до межі (%g мм)?"
msgid "Adjust"
msgstr "Налаштувати"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4835,6 +4856,13 @@ msgstr ""
"Так - Увімкнути генератор стінок Arachne\n"
"Ні - Вимкнути генератор стінок Arachne і встановити режим [Зміщення] для шорсткої поверхні"
# AI Translated
msgid "Brim ear radius"
msgstr "Радіус вушка кайми"
msgid "Brim width"
msgstr "Ширина кайми"
# AI Translated
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Спіральний режим працює лише тоді, коли кількість стінок дорівнює 1, підтримки вимкнено, виявлення налипання зондуванням вимкнено, кількість верхніх шарів оболонки дорівнює 0, щільність часткового заповнення дорівнює 0, а тип таймлапсу — традиційний."
@@ -5100,6 +5128,14 @@ msgstr "Не вдалося згенерувати калібрувальний
msgid "Calibration error"
msgstr "Помилка калібрування"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "На цьому принтері не налаштовано обладнання, потрібне для цього елемента керування."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Цей елемент керування не підтримується на цьому принтері."
# AI Translated
msgid "Network unavailable"
msgstr "Мережа недоступна"
@@ -5974,7 +6010,7 @@ msgid "Size:"
msgstr "Розмір:"
# AI Translated
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Виявлено конфлікти шляхів G-коду на шарі %d, Z = %.2lf мм. Будь ласка, рознесіть конфліктуючі обʼєкти далі один від одного (%s <-> %s)."
@@ -6166,6 +6202,10 @@ msgstr "Багато пристроїв"
msgid "Project"
msgstr "Проєкт"
# AI Translated
msgid "Device (Web)"
msgstr "Пристрій (Веб)"
msgid "Yes"
msgstr "Так"
@@ -8302,21 +8342,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, boost-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, boost-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, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ Пропущено %s: не вдалося замінити.\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ Замінено %1%.\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Замінено %s.\n"
msgid "Replaced volumes"
msgstr "Замінені обʼєми"
@@ -9065,6 +9105,18 @@ msgstr "З цією опцією ввімкненою, ви можете від
msgid "Pop up to select filament grouping mode"
msgstr "Показувати вікно вибору режиму групування філаментів"
# AI Translated
msgid "Visible plugin pages"
msgstr "Видимі сторінки плагінів"
# AI Translated
msgid "pages"
msgstr "стор."
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Кількість сторінок плагінів, що показуються як закріплені вкладки, перш ніж решта сторінок згорнеться у випадний список на останній вкладці."
msgid "Behaviour"
msgstr "Поведінка"
@@ -9297,6 +9349,21 @@ msgstr "Затемнювати нижні шари"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Під час прокручування повзунка шарів у попередньому перегляді нарізки відображати шари нижче поточного затемненими, щоб лише переглядуваний шар показувався з повною яскравістю."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Яскравість затемнених шарів"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Наскільки яскраво відображаються затемнені шари, коли увімкнено параметр «Затемнювати нижні шари».\n"
"99% — затемнення майже непомітне, 0% — шари стають чорними. Максимум обмежено 99%, оскільки 100% дорівнювало б вимкненню параметра."
msgid "Login region"
msgstr "Регіон входу"
@@ -9427,6 +9494,18 @@ msgstr "Показати непідтримувані пресети"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Показати несумісні/непідтримувані пресети у випадаючому списку принтера і філаменту. Ці пресети не можна вибрати."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Експериментально) Використовувати агентів принтера замість хостів друку"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Спрямовує завдання друку для принтерів, відмінних від Bambu, через агентів плагінів принтера замість класичного завантаження на хост друку.\n"
"Коли вимкнено, OrcaSlicer використовує попередню поведінку хоста друку."
msgid "Experimental Features"
msgstr "Експериментальні функції"
@@ -9691,10 +9770,26 @@ msgstr "Пресети користувача"
msgid "Preset Inside Project"
msgstr "Налаштування проекту всередині"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Копіює в цей пресет усі значення, успадковані від батьківського пресета, і видаляє звʼязок успадкування. Пресети, сумісні лише з батьківським, можуть стати непідтримуваними."
# AI Translated
msgid "Detach from parent"
msgstr "Відʼєднати від батьківського"
# AI Translated
msgid "Unique preset"
msgstr "Незалежний пресет"
# AI Translated
msgid "Parent preset"
msgstr "Батьківський пресет"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Цей пресет не успадковується від іншого пресета."
msgid "Name is unavailable."
msgstr "Назва недоступна."
@@ -10473,22 +10568,6 @@ msgstr "Ви впевнені, що хочете ввімкнути цю опц
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Шаблони заповнення зазвичай розроблені так, щоб автоматично враховувати обертання, забезпечувати належний друк і досягати задуманого ефекту (наприклад, Гіроїд, Кубічний). Обертання поточного шаблону часткового заповнення може призвести до недостатньої підтримки. Дійте обережно та ретельно перевіряйте можливі проблеми друку. Ви впевнені, що хочете увімкнути цю опцію?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Висота шару занадто мала.\n"
"Буде встановлено значення min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Висота шару перевищує ліміт у Налаштуваннях принтера -> Екструдер -> Ліміти висоти шару, це може призвести до проблем з якістю друку."
msgid "Adjust to the set range automatically?\n"
msgstr "Автоматично налаштувати на встановлений діапазон?\n"
msgid "Adjust"
msgstr "Налаштувати"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Експериментальна функція: Втягування та відрізання філаменту на більшій відстані під час зміни філаменту для мінімізації промивання. Хоча це може помітно зменшити промивання, це також може підвищити ризик засмічення сопла або інших ускладнень друку."
@@ -10692,6 +10771,9 @@ msgstr "Знайдено зарезервовані ключові слова"
msgid "Setting Overrides"
msgstr "Налаштування перевизначень"
msgid "Retraction when switching material"
msgstr "Втягування під час зміни матеріалу"
msgid "Basic information"
msgstr "Базова інформація"
@@ -10829,6 +10911,13 @@ msgstr "Сумісні профілі процесів"
msgid "Printable space"
msgstr "Місце для друку"
msgid "Printer Agent"
msgstr "Агент принтера"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером. Доступні агенти реєструються під час запуску."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10959,9 +11048,6 @@ msgstr "Обмеження висоти шару"
msgid "Z-Hop"
msgstr "Стрибок-Z"
msgid "Retraction when switching material"
msgstr "Втягування під час зміни матеріалу"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12357,6 +12443,10 @@ msgstr " знаходиться надто близько до зони відч
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " розташовано занадто близько до зони виявлення налипання, і це спричинить зіткнення.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " частково знаходиться за межами області друку, і його неможливо надрукувати.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Вибрані температури сопла несумісні. Температура сопла кожного філаменту має входити в рекомендований діапазон температур сопла інших філаментів. Інакше можливе засмічення сопла або пошкодження принтера."
@@ -12703,9 +12793,6 @@ msgstr "Використовувати 3MF замість G-коду"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Увімкніть, якщо принтер приймає файл 3MF як завдання друку. Якщо увімкнено, Orca Slicer надсилає нарізаний файл як .gcode.3mf замість звичайного файлу .gcode."
msgid "Printer Agent"
msgstr "Агент принтера"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером."
@@ -13419,9 +13506,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Швидкість внутрішніх мостів. Якщо значення вказано у відсотках, воно буде розраховане на основі bridge_speed. Значення за замовчуванням: 150%."
msgid "Brim width"
msgstr "Ширина кайми"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Відстань від моделі до останньої зовнішньої лінії кайми"
@@ -13506,6 +13590,14 @@ msgstr ""
"Геометрія буде оброблена перед детектуванням гострих кутів. Цей параметр вказує мінімальну довжину відхилення для обробки.\n"
"0 для вимкнення"
# AI Translated
msgid "Brim ears outer only"
msgstr "Вушка кайми лише ззовні"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Створювати мишачі вушка лише на зовнішньому контурі моделі, за винятком отворів і замкнених ділянок."
msgid "upward compatible machine"
msgstr "висхідна сумісна машина"
@@ -13531,12 +13623,37 @@ msgstr "По обʼєктах"
msgid "Intra-layer order"
msgstr "Внутрішній порядок шарів"
msgid "Print order within a single layer."
msgstr "Друк замовлення в один шар"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Порядок, у якому обходяться екземпляри обʼєктів у межах одного шару; він визначає, скільки переміщень витрачається на переходи між ними.\n"
"\n"
"Типово: побудова ланцюга методом найближчого сусіда з подальшим удосконаленням алгоритмом 2-opt та усуненням перетинів. Хороший універсальний вибір.\n"
"За порядком у списку: екземпляри друкуються в тому самому порядку, що й у списку обʼєктів, без жодної оптимізації шляху. Використовуйте, коли потрібен передбачуваний порядок, заданий вручну.\n"
"Найкращий з усіх (найкоротший шлях): оцінюються всі стратегії й застосовується та, що дає найкоротший шлях. Порядок екземплярів обʼєктів визначається один раз для всього друку, а порядок окремих острівців — для кожного шару окремо, тож різні шари можуть використовувати різні стратегії. Нарізка триває трохи довше.\n"
"Змійкою: змієподібний обхід ряд за рядом з удосконаленням алгоритмом 2-opt. Добре підходить для регулярних сіток із багатьох дрібних деталей.\n"
"\n"
"Якщо в одному шарі використовується кілька філаментів або інструментів, пріоритет має мінімізація змін інструмента: обʼєкти спочатку групуються за філаментом, і цей параметр упорядковує лише екземпляри в межах кожної групи, тож загальна послідовність може не виглядати як найкоротший шлях по пластині."
msgid "As object list"
msgstr "За порядком у списку"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Найкращий з усіх (найкоротший шлях)"
# AI Translated
msgid "Snake"
msgstr "Змійкою"
msgid "Slow printing down for better layer cooling"
msgstr "Сповільнювати друк для кращого охолодження шару"
@@ -14690,6 +14807,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Гіроїд"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Коефіцієнт згладжування часткового заповнення"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Визначає, наскільки сильно заокруглюються кути часткового заповнення. 0% зберігає початкову траєкторію з гострими кутами, а 100% створює максимально можливі заокруглення між сусідніми лініями заповнення."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Прискорення заповнення верхньої поверхні. Використання меншого значенняможе покращити якість верхньої поверхні"
@@ -15256,6 +15381,14 @@ msgstr "З яким gcode сумісний принтер"
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Пропустити блок конфігурації G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Не записувати CONFIG_BLOCK (пари ключ/значення з конфігурацією слайсера) у файл G-code. Це може допомогти з принтерами, прошивка яких аварійно завершується під час розбору цих рядків коментарів (напр. Anycubic go-klipper). Примітка: файл G-code більше не міститиме налаштувань слайсера, тож зворотний імпорт до OrcaSlicer не відновить конфігурацію."
msgid "Pellet Modded Printer"
msgstr "Принтер модифікований гранулами"
@@ -16394,6 +16527,14 @@ msgstr "Довге втягування при зміні екструдера"
msgid "Retraction distance when extruder change"
msgstr "Відстань втягування при зміні екструдера"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Довжина втягування (Зміна інструменту)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Коли втягування спрацьовує перед зміною інструменту, філамент відтягується на вказану величину (довжина вимірюється на необробленому філаменті, до його входу в екструдер)."
msgid "Z-hop height"
msgstr "Висота Z-підйому"
@@ -16490,6 +16631,10 @@ msgstr "Додаткова довжина під час перезавантаж
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Коли втягування компенсується після переміщення, екструдер проштовхуєЦе додаткова кількість нитки. Ця установка рідко потрібна."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Додаткова довжина під час перезавантаження (Зміна інструменту)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Коли втягування компенсується після заміни інструменту, екструдерпроштовхує цю додаткову кількість нитки."
@@ -16916,6 +17061,14 @@ msgstr "Зміна інструмента на вежі протирання"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Примусово переміщати головку до вежі протирання перед видачею команди зміни інструмента (Tx). Стосується лише багатоекструдерних (багатоінструментальних) принтерів з вежею протирання типу 2. Типово Orca пропускає це переміщення на багатоінструментальних машинах, оскільки заміну головки виконує прошивка, через що команда Tx може бути видана над надрукованою деталлю. Увімкніть цю опцію, якщо хочете, щоб зміна інструмента завжди відбувалася над вежею протирання."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Очікувати температуру на вежі протирання"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Бере новий інструмент, не чекаючи, доки він досягне температури друку, переміщується до вежі протирання й чекає на температуру там, безпосередньо перед промивкою. Матеріал, що витікає під час нагрівання, потрапляє на вежу, а не на модель, а переміщення збігається з нагріванням. Актуально лише для принтерів із кількома екструдерами (кількома головками), які використовують вежу протирання типу 2. Прошивка або макрос зміни інструменту не повинні самі чекати на температуру. Коли вимкнено, команда очікування температури видається одразу після команди зміни інструменту."
msgid "No sparse layers (beta)"
msgstr "Без розріджених шарів (бета)"
@@ -19089,6 +19242,20 @@ msgstr ""
"Є кілька IP-адрес, які перетворюються на ім’я хоста %1%.\n"
"Будь ласка, виберіть той, який слід використовувати."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Автомасштабування під сопло"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Ця модель розрахована на сопло 0,4 мм і висоту шару 0,2 мм. \n"
"Коли увімкнено масштабування (рекомендовано), розмір моделі динамічно підлаштовується під діаметр вашого поточного сопла та відповідну висоту шару, завдяки чому тест є точним і легко читається.\n"
"Вимикайте масштабування, лише якщо хочете надрукувати еталонну модель точно в первісному вигляді."
msgid "PA Calibration"
msgstr "Калібрування ВТ (РА)"
@@ -19230,6 +19397,14 @@ msgstr "Початкова швидкість: "
msgid "End speed: "
msgstr "Кінцева швидкість: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Автопідлаштування під максимальну обʼємну швидкість"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Якщо кінцева швидкість перевищить максимальну обʼємну швидкість філаменту, автоматично зменшувати висоту шару (зберігаючи стандартні значення та не виходячи за обмеження машини), щоб її досягти. Якщо навіть мінімальної висоти шару не досить, натомість буде знижено кінцеву швидкість."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -19241,6 +19416,57 @@ msgstr ""
"крок >= 0\n"
"кінець > початок + крок)"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Кінцева швидкість (%.0f мм/с) перевищує максимальну обʼємну швидкість філаменту (%.1f мм³/с), яка за такої ширини лінії та висоти шару обмежує зовнішню стінку приблизно до %.0f мм/с.\n"
" Вищі швидкості будуть обмежені, тож верхні блоки вежі не надрукуються із заданою швидкістю.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Кінцева швидкість (%.0f мм/с) перевищує максимальну обʼємну швидкість філаменту (%.1f мм³/с) за типової висоти шару (%.2f мм).\n"
"\n"
"Висоту шару зменшено до %.2f мм (значення, яке використовують профілі цього принтера), щоб вежа могла досягти заданої швидкості."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Навіть за найменшої висоти шару, яку використовують профілі цього принтера (%.2f мм), кінцева швидкість (%.0f мм/с) перевищує максимальну обʼємну швидкість філаменту (%.1f мм³/с).\n"
"\n"
"Висоту шару буде встановлено на %.2f мм, а кінцеву швидкість знижено до %.0f мм/с.\n"
"\n"
"Продовжити?"
# AI Translated
msgid "Continue anyway?"
msgstr "Усе одно продовжити?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Увімкнути «Автопідлаштування», щоб виправити це автоматично, чи все одно продовжити?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Увімкнути «Автомасштабування під сопло» та «Автопідлаштування», щоб виправити це автоматично, чи все одно продовжити?"
msgid "Start retraction length: "
msgstr "Початкова довжина ретракту: "
@@ -20187,10 +20413,6 @@ msgstr "Фізичний принтер"
msgid "Print Host upload"
msgstr "Завантаження хоста друку"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером. Доступні агенти реєструються під час запуску."
msgid "Select a Flashforge printer"
msgstr "Вибрати принтер Flashforge"
@@ -21064,9 +21286,6 @@ msgstr "Під час спроби входу трапилося щось нес
msgid "User canceled."
msgstr "Користувача скасовано."
msgid "Head diameter"
msgstr "Діаметр голови"
msgid "Max angle"
msgstr "Максимальний кут"
@@ -21862,6 +22081,25 @@ msgstr ""
"Уникнення деформації\n"
"Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Висота шару занадто мала.\n"
#~ "Буде встановлено значення min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Висота шару перевищує ліміт у Налаштуваннях принтера -> Екструдер -> Ліміти висоти шару, це може призвести до проблем з якістю друку."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Автоматично налаштувати на встановлений діапазон?\n"
#~ msgid "Head diameter"
#~ msgstr "Діаметр голови"
#~ msgid "Print order within a single layer."
#~ msgstr "Друк замовлення в один шар"
#~ msgid "Bottom"
#~ msgstr "Низ"
@@ -21940,9 +22178,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "℃"
#~ msgid "%"
#~ msgstr "%"
#~ msgctxt "Sync_Nozzle_AMS"
#~ msgid "Cancel"
#~ msgstr "Скасувати"

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2025-10-02 17:43+0700\n"
"Last-Translator: \n"
"Language-Team: hainguyen.ts13@gmail.com\n"
@@ -4031,6 +4031,10 @@ msgstr "Đang sắp xếp..."
msgid "Arranging"
msgstr "Đang sắp xếp"
# AI Translated
msgid "Arranging "
msgstr "Đang sắp xếp "
msgid "Arranging canceled."
msgstr "Hủy sắp xếp."
@@ -4971,6 +4975,23 @@ msgstr "Nhiệt độ buồng hiện tại cao hơn nhiệt độ an toàn của
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "Nhiệt độ buồng tối thiểu (%d℃) cao hơn nhiệt độ buồng mục tiêu (%d℃). Giá trị tối thiểu là ngưỡng để bắt đầu in trong khi buồng vẫn tiếp tục gia nhiệt tới mục tiêu, nên nó không được vượt quá giá trị mục tiêu. Nó sẽ được giới hạn về mức mục tiêu."
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "Chiều cao lớp quá nhỏ. Nó sẽ được đặt về giá trị tối thiểu (%g mm)."
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Chiều cao lớp nằm ngoài giới hạn được đặt trong Cài đặt máy in -> Extruder -> Giới hạn chiều cao lớp, điều này có thể gây ra vấn đề chất lượng in."
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "Tự động điều chỉnh về giới hạn (%g mm)?"
msgid "Adjust"
msgstr "Điều chỉnh"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -5091,6 +5112,13 @@ msgstr ""
"Yes - Bật trình tạo wall Arachne\n"
"No - Tắt trình tạo wall Arachne và đặt chế độ [Displacement] của Fuzzy Skin"
# AI Translated
msgid "Brim ear radius"
msgstr "Bán kính tai brim"
msgid "Brim width"
msgstr "Độ rộng brim"
# AI Translated
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "Chế độ xoắn ốc chỉ hoạt động khi vòng wall bằng 1, support bị tắt, phát hiện vón cục bằng dò bị tắt, số lớp vỏ trên bằng 0, mật độ infill thưa bằng 0 và loại timelapse là truyền thống."
@@ -5395,6 +5423,14 @@ msgstr "Không thể tạo G-code hiệu chỉnh"
msgid "Calibration error"
msgstr "Lỗi hiệu chỉnh"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "Máy in này không được cấu hình phần cứng mà điều khiển này cần."
# AI Translated
msgid "This control is not supported on this printer."
msgstr "Điều khiển này không được hỗ trợ trên máy in này."
# AI Translated
msgid "Network unavailable"
msgstr "Mạng không khả dụng"
@@ -6313,7 +6349,7 @@ msgstr "Thể tích:"
msgid "Size:"
msgstr "Kích thước:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "Đã tìm thấy xung đột đường đi G-code tại lớp %d, Z = %.2lfmm. Vui lòng tách các vật thể xung đột ra xa hơn (%s <-> %s)."
@@ -6512,6 +6548,10 @@ msgstr "Nhiều thiết bị"
msgid "Project"
msgstr "Dự án"
# AI Translated
msgid "Device (Web)"
msgstr "Thiết bị (Web)"
msgid "Yes"
msgstr "Có"
@@ -8717,24 +8757,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, boost-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, boost-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, boost-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, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ Đã thay thế %s.\n"
# AI Translated
msgid "Replaced volumes"
@@ -9528,6 +9568,18 @@ msgstr "Với tùy chọn này được bật, bạn có thể gửi tác vụ
msgid "Pop up to select filament grouping mode"
msgstr "Hiện cửa sổ để chọn chế độ nhóm filament"
# AI Translated
msgid "Visible plugin pages"
msgstr "Số trang plugin hiển thị"
# AI Translated
msgid "pages"
msgstr "trang"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "Số trang plugin được hiển thị dưới dạng tab cố định trước khi các trang còn lại được gom vào danh sách thả xuống ở tab cuối cùng."
# AI Translated
msgid "Behaviour"
msgstr "Hành vi"
@@ -9779,6 +9831,21 @@ msgstr "Làm mờ các lớp bên dưới"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "Khi kéo thanh trượt lớp trong bản xem trước đã slice, kết xuất các lớp bên dưới lớp hiện tại ở dạng tối đi để chỉ lớp đang xem hiển thị với độ sáng đầy đủ."
# AI Translated
msgid "Dimmed layer brightness"
msgstr "Độ sáng của lớp bị làm mờ"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"Mức độ sáng khi hiển thị các lớp bị làm mờ nếu bật \"Làm mờ các lớp bên dưới\".\n"
"99% gần như không tối đi, 0% khiến chúng đen hoàn toàn. Giới hạn ở 99% vì 100% sẽ giống hệt như tắt tùy chọn này."
# AI Translated
msgid "Login region"
msgstr "Khu vực đăng nhập"
@@ -9928,6 +9995,18 @@ msgstr "Hiện cài đặt sẵn không được hỗ trợ"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "Hiện các cài đặt sẵn không tương thích/không được hỗ trợ trong danh sách thả xuống máy in và filament. Không thể chọn các cài đặt sẵn này."
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(Thử nghiệm) Dùng tác nhân máy in thay cho máy chủ in"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"Định tuyến các tác vụ in của máy in không phải Bambu qua các tác nhân plugin máy in thay vì luồng tải lên máy chủ in cổ điển.\n"
"Khi tắt, OrcaSlicer sẽ dùng hành vi máy chủ in cũ."
# AI Translated
msgid "Experimental Features"
msgstr "Tính năng thử nghiệm"
@@ -10204,10 +10283,26 @@ msgstr "Preset người dùng"
msgid "Preset Inside Project"
msgstr "Preset bên trong dự án"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "Sao chép tất cả các giá trị kế thừa từ preset cha vào preset này và gỡ bỏ quan hệ kế thừa. Các preset chỉ tương thích với preset cha có thể không còn được hỗ trợ."
# AI Translated
msgid "Detach from parent"
msgstr "Tách khỏi vật thể cha"
# AI Translated
msgid "Unique preset"
msgstr "Preset độc lập"
# AI Translated
msgid "Parent preset"
msgstr "Preset cha"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "Preset này không kế thừa từ preset khác."
msgid "Name is unavailable."
msgstr "Tên không khả dụng."
@@ -11007,22 +11102,6 @@ msgstr "Bạn có chắc chắn muốn bật tùy chọn này?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "Mẫu infill thường được thiết kế để xử lý xoay tự động nhằm đảm bảo in đúng cách và đạt được hiệu quả dự kiến (ví dụ: Gyroid, Cubic). Xoay mẫu infill thưa hiện tại có thể dẫn đến support không đủ . Vui lòng tiến hành thận trọng và kiểm tra kỹ bất kỳ vấn đề in tiềm ẩn nào. Bạn có chắc chắn muốn bật tùy chọn này?"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"Chiều cao lớp quá nhỏ.\n"
"Nó sẽ được đặt thành min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "Chiều cao lớp vượt quá giới hạn trong Cài đặt máy in -> Extruder -> Giới hạn chiều cao lớp, điều này có thể gây ra vấn đề chất lượng in."
msgid "Adjust to the set range automatically?\n"
msgstr "Điều chỉnh về phạm vi đặt tự động?\n"
msgid "Adjust"
msgstr "Điều chỉnh"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "Tính năng thử nghiệm: Rút và cắt filament ở khoảng cách lớn hơn trong quá trình thay filament để giảm thiểu xả. Mặc dù có thể giảm đáng kể lượng xả, nó cũng có thể làm tăng nguy cơ tắc đầu phun hoặc các vấn đề in khác."
@@ -11216,6 +11295,9 @@ msgstr "Tìm thấy từ khóa dành riêng"
msgid "Setting Overrides"
msgstr "Ghi đè cài đặt"
msgid "Retraction when switching material"
msgstr "Rút khi chuyển vật liệu"
msgid "Basic information"
msgstr "Thông tin cơ bản"
@@ -11347,6 +11429,14 @@ msgstr "Hồ sơ quy trình tương thích"
msgid "Printable space"
msgstr "Không gian in"
# AI Translated
msgid "Printer Agent"
msgstr "Tác nhân máy in"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in. Các tác nhân khả dụng được đăng ký khi khởi động."
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -11479,9 +11569,6 @@ msgstr "Giới hạn chiều cao lớp"
msgid "Z-Hop"
msgstr "Z-Hop"
msgid "Retraction when switching material"
msgstr "Rút khi chuyển vật liệu"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
@@ -12931,6 +13018,10 @@ msgstr " quá gần vùng loại trừ, và sẽ gây va chạm.\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " ở quá gần vùng phát hiện vón cục, và sẽ gây ra va chạm.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " nằm một phần ngoài vùng in được, và không thể in.\n"
# AI Translated
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "Nhiệt độ đầu phun đã chọn không tương thích. Nhiệt độ đầu phun của mỗi filament phải nằm trong dải nhiệt độ đầu phun được khuyến nghị của các filament còn lại. Nếu không, có thể xảy ra tắc đầu phun hoặc hư hỏng máy in."
@@ -13272,10 +13363,6 @@ msgstr "Dùng 3MF thay cho G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "Bật tùy chọn này nếu máy in nhận file 3MF làm tác vụ in. Khi bật, Orca Slicer sẽ gửi file đã slice dưới dạng .gcode.3mf thay vì file .gcode thuần."
# AI Translated
msgid "Printer Agent"
msgstr "Tác nhân máy in"
# AI Translated
msgid "Select the network agent implementation for printer communication."
msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in."
@@ -13983,9 +14070,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "Tốc độ của cầu bên trong. Nếu giá trị được biểu thị dưới dạng phần trăm, nó sẽ được tính dựa trên bridge_speed. Giá trị mặc định là 150%."
msgid "Brim width"
msgstr "Độ rộng brim"
msgid "This is the distance from the model to the outermost brim line."
msgstr "Khoảng cách từ model đến đường brim ngoài cùng."
@@ -14069,6 +14153,14 @@ msgstr ""
"Hình học sẽ được giảm trước khi phát hiện góc sắc. Tham số này chỉ ra độ dài tối thiểu của độ lệch cho việc giảm.\n"
"0 để vô hiệu hóa."
# AI Translated
msgid "Brim ears outer only"
msgstr "Tai brim chỉ ở mặt ngoài"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Chỉ tạo tai chuột trên đường viền ngoài của mô hình, không tính các lỗ và phần khép kín."
msgid "upward compatible machine"
msgstr "máy tương thích ngược"
@@ -14093,12 +14185,37 @@ msgstr "Theo đối tượng"
msgid "Intra-layer order"
msgstr "Thứ tự trong lớp"
msgid "Print order within a single layer."
msgstr "Thứ tự in trong một lớp đơn."
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"Thứ tự các instance của đối tượng được đi qua trong cùng một lớp, quyết định lượng di chuyển tiêu tốn khi đi giữa chúng.\n"
"\n"
"Mặc định: nối chuỗi theo láng giềng gần nhất, tinh chỉnh bằng 2-opt và loại bỏ các đoạn cắt nhau. Lựa chọn chung tốt.\n"
"Như danh sách đối tượng: các instance được in theo đúng thứ tự trong danh sách đối tượng, không tối ưu hóa đường đi. Dùng khi bạn cần một thứ tự dễ đoán và tự kiểm soát.\n"
"Tốt nhất trong tất cả (đường đi ngắn nhất): mọi chiến lược đều được đánh giá và chiến lược ngắn nhất được sử dụng. Thứ tự các instance của đối tượng được quyết định một lần cho toàn bộ bản in, còn thứ tự của từng đảo được quyết định theo từng lớp, nên các lớp khác nhau có thể dùng chiến lược khác nhau. Slice hơi chậm hơn một chút.\n"
"Ngoằn ngoèo: duyệt lần lượt từng hàng theo kiểu ngoằn ngoèo, tinh chỉnh bằng 2-opt. Rất phù hợp với các lưới đều gồm nhiều chi tiết nhỏ.\n"
"\n"
"Khi có nhiều filament hoặc đầu công cụ trong cùng một lớp, việc giảm thiểu số lần đổi đầu công cụ được ưu tiên: các đối tượng được nhóm theo filament trước, và thiết lập này chỉ sắp xếp các instance trong từng nhóm filament, nên trình tự tổng thể có thể không giống đường đi ngắn nhất trên bàn in."
msgid "As object list"
msgstr "Như danh sách đối tượng"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "Tốt nhất trong tất cả (đường đi ngắn nhất)"
# AI Translated
msgid "Snake"
msgstr "Ngoằn ngoèo"
msgid "Slow printing down for better layer cooling"
msgstr "Giảm tốc độ in để làm mát lớp tốt hơn"
@@ -15261,6 +15378,14 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Gyroid"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Hệ số làm mượt infill thưa"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "Điều chỉnh mức độ bo tròn các góc của infill thưa. 0% giữ nguyên đường đi sắc cạnh ban đầu, còn 100% tạo ra các đường cong lớn nhất có thể giữa các đường infill liền kề."
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "Gia tốc của infill bề mặt trên. Sử dụng giá trị thấp hơn có thể cải thiện chất lượng bề mặt trên."
@@ -15824,6 +15949,14 @@ msgstr "Loại G-code mà máy in tương thích."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Bỏ qua khối cấu hình G-code"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "Không ghi CONFIG_BLOCK (các cặp khóa/giá trị cấu hình của phần mềm slice) vào tệp G-code. Điều này có thể hữu ích với các máy in có firmware bị treo khi phân tích những dòng chú thích này (ví dụ Anycubic go-klipper). Lưu ý: tệp G-code sẽ không còn chứa các thiết lập slice, nên việc nhập lại tệp vào OrcaSlicer sẽ không khôi phục được cấu hình."
msgid "Pellet Modded Printer"
msgstr "Máy in Pellet đã chỉnh sửa"
@@ -16927,6 +17060,14 @@ msgstr "Rút dài khi đổi extruder"
msgid "Retraction distance when extruder change"
msgstr "Khoảng cách rút khi đổi extruder"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "Độ dài rút (Đổi công cụ)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "Khi rút được kích hoạt trước khi đổi công cụ, filament sẽ bị kéo lùi lại theo lượng đã chỉ định (độ dài được đo trên filament thô, trước khi nó đi vào extruder)."
msgid "Z-hop height"
msgstr "Chiều cao Z-hop"
@@ -17025,6 +17166,10 @@ msgstr "Độ dài bổ sung khi khởi động lại"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "Khi rút được bù sau khi di chuyển, extruder sẽ đẩy lượng filament bổ sung này. Cài đặt này hiếm khi cần thiết."
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "Độ dài bổ sung khi khởi động lại (Đổi công cụ)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "Khi rút được bù sau khi thay công cụ, extruder sẽ đẩy lượng filament bổ sung này."
@@ -17445,6 +17590,14 @@ msgstr "Đổi công cụ trên wipe tower"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "Buộc đầu công cụ di chuyển đến wipe tower trước khi phát lệnh đổi công cụ (Tx). Chỉ liên quan đến máy in nhiều extruder (nhiều đầu công cụ) dùng wipe tower Loại 2. Theo mặc định, Orca bỏ qua bước di chuyển này trên máy nhiều đầu công cụ vì firmware tự xử lý việc đổi đầu, điều này có thể khiến lệnh Tx được phát ra ngay phía trên phần đang in. Hãy bật tùy chọn này nếu bạn muốn việc đổi công cụ luôn diễn ra phía trên wipe tower."
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "Chờ nhiệt độ tại wipe tower"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "Lấy công cụ mới mà không chờ nó đạt nhiệt độ in, di chuyển đến wipe tower và chờ nhiệt độ tại đó, ngay trước khi xả. Nhựa chảy ra trong lúc gia nhiệt sẽ rơi lên wipe tower thay vì lên mô hình, và quãng di chuyển diễn ra đồng thời với quá trình gia nhiệt. Chỉ áp dụng cho máy in nhiều extruder (nhiều đầu công cụ) dùng wipe tower loại 2. Firmware hoặc macro đổi công cụ không được tự chờ nhiệt độ. Khi tắt, lệnh chờ nhiệt độ sẽ được phát ngay sau lệnh đổi công cụ."
msgid "No sparse layers (beta)"
msgstr "Không có lớp thưa (beta)"
@@ -19626,6 +19779,20 @@ msgstr ""
"Có nhiều địa chỉ IP phân giải thành tên máy chủ %1%.\n"
"Vui lòng chọn một địa chỉ nên được sử dụng."
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "Tự động chia tỷ lệ theo đầu phun"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"Mô hình này được thiết kế cho đầu phun 0.4 mm với chiều cao lớp 0.2 mm. \n"
"Khi bật tùy chọn chia tỷ lệ (khuyến nghị), mô hình sẽ tự động thay đổi kích thước cho khớp với đường kính đầu phun hiện tại và một chiều cao lớp phù hợp, giúp bài kiểm tra vừa chính xác vừa dễ đọc.\n"
"Chỉ tắt chia tỷ lệ nếu bạn muốn in mô hình tham chiếu đúng nguyên trạng."
msgid "PA Calibration"
msgstr "Hiệu chỉnh PA"
@@ -19764,6 +19931,14 @@ msgstr "Tốc độ bắt đầu: "
msgid "End speed: "
msgstr "Tốc độ kết thúc: "
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "Tự động điều chỉnh theo tốc độ thể tích tối đa"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "Nếu tốc độ kết thúc vượt quá tốc độ thể tích tối đa của filament, tự động giảm chiều cao lớp (giữ các giá trị tiêu chuẩn và nằm trong giới hạn của máy) để đạt được tốc độ đó. Nếu ngay cả chiều cao lớp nhỏ nhất vẫn chưa đủ, thì giảm tốc độ kết thúc thay vào đó."
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -19775,6 +19950,57 @@ msgstr ""
"bước >= 0\n"
"kết thúc > bắt đầu + bước"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"Tốc độ kết thúc (%.0f mm/s) vượt quá tốc độ thể tích tối đa của filament (%.1f mm³/s), khiến thành ngoài bị giới hạn ở khoảng %.0f mm/s với độ rộng đường và chiều cao lớp hiện tại.\n"
" Các tốc độ cao hơn mức này sẽ bị cắt bớt, nên những khối phía trên của tháp sẽ không in ở tốc độ yêu cầu.\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"Tốc độ kết thúc (%.0f mm/s) vượt quá tốc độ thể tích tối đa của filament (%.1f mm³/s) ở chiều cao lớp mặc định (%.2f mm).\n"
"\n"
"Chiều cao lớp đã được giảm xuống %.2f mm (một giá trị được dùng trong các cài đặt sẵn của máy in này) để tháp có thể đạt tốc độ yêu cầu."
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"Ngay cả ở chiều cao lớp nhỏ nhất được dùng trong các cài đặt sẵn của máy in này (%.2f mm), tốc độ kết thúc (%.0f mm/s) vẫn vượt quá tốc độ thể tích tối đa của filament (%.1f mm³/s).\n"
"\n"
"Chiều cao lớp sẽ được đặt thành %.2f mm và tốc độ kết thúc giảm xuống %.0f mm/s.\n"
"\n"
"Tiếp tục?"
# AI Translated
msgid "Continue anyway?"
msgstr "Vẫn tiếp tục?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Bật \"Tự động điều chỉnh\" để khắc phục việc này tự động, hoặc vẫn tiếp tục?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "Bật \"Tự động chia tỷ lệ theo đầu phun\" và \"Tự động điều chỉnh\" để khắc phục việc này tự động, hoặc vẫn tiếp tục?"
msgid "Start retraction length: "
msgstr "Độ dài rút bắt đầu: "
@@ -20732,10 +20958,6 @@ msgstr "Máy in vật lý"
msgid "Print Host upload"
msgstr "Tải lên máy chủ in"
# AI Translated
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in. Các tác nhân khả dụng được đăng ký khi khởi động."
# AI Translated
msgid "Select a Flashforge printer"
msgstr "Chọn một máy in Flashforge"
@@ -21715,9 +21937,6 @@ msgstr "Đã xảy ra điều gì đó không mong đợi khi cố gắng đăng
msgid "User canceled."
msgstr "Người dùng đã hủy."
msgid "Head diameter"
msgstr "Đường kính đầu"
msgid "Max angle"
msgstr "Góc tối đa"
@@ -22585,6 +22804,25 @@ msgstr ""
"Tránh cong vênh\n"
"Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "Chiều cao lớp quá nhỏ.\n"
#~ "Nó sẽ được đặt thành min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "Chiều cao lớp vượt quá giới hạn trong Cài đặt máy in -> Extruder -> Giới hạn chiều cao lớp, điều này có thể gây ra vấn đề chất lượng in."
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "Điều chỉnh về phạm vi đặt tự động?\n"
#~ msgid "Head diameter"
#~ msgstr "Đường kính đầu"
#~ msgid "Print order within a single layer."
#~ msgstr "Thứ tự in trong một lớp đơn."
#~ msgid "Bottom"
#~ msgstr "Dưới"
@@ -22627,9 +22865,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgctxt "Sync_Nozzle_AMS"
#~ msgid "Cancel"
#~ msgstr "Hủy"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Slic3rPE\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2026-06-11 12:37-0300\n"
"Last-Translator: Handle <mail@bysb.net>\n"
"Language-Team: \n"
@@ -3694,6 +3694,10 @@ msgstr "自动摆放中..."
msgid "Arranging"
msgstr "自动摆放"
# AI Translated
msgid "Arranging "
msgstr "自动摆放 "
msgid "Arranging canceled."
msgstr "已取消自动摆放。"
@@ -4570,6 +4574,23 @@ msgstr "当前腔体温度高于材料的安全温度,这可能导致材料软
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "最低机箱温度(%d℃)高于目标机箱温度(%d℃)。最低值是开始打印的阈值,此时机箱会持续朝目标温度加热,因此它不应超过目标值。该值将被限制到目标值。"
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "层高太小,将设置为最小值(%g mm。"
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "层高超出了打印机设置 -> 挤出机 -> 层高限制中设置的范围,这可能导致打印质量问题。"
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "是否自动调整到限制值(%g mm"
msgid "Adjust"
msgstr "调整"
# AI Translated
msgid ""
"Layer height too small\n"
@@ -4692,6 +4713,13 @@ msgstr ""
"是 - 启用Arachne墙生成器\n"
"否 - 禁用Arachne墙生成器并将绒毛表面设置为[位移]模式"
# AI Translated
msgid "Brim ear radius"
msgstr "圆盘半径"
msgid "Brim width"
msgstr "Brim宽度"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "螺旋模式仅在壁环为 1、支撑被禁用、探测结块检测被禁用、顶部壳层为 0、稀疏填充密度为 0 且延时类型为传统时才起作用。"
@@ -4946,6 +4974,14 @@ msgstr "生成校准gcode失败"
msgid "Calibration error"
msgstr "校准错误"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "此打印机未配置该控件所需的硬件。"
# AI Translated
msgid "This control is not supported on this printer."
msgstr "此打印机不支持该控件。"
# AI Translated
msgid "Network unavailable"
msgstr "网络不可用"
@@ -5803,7 +5839,7 @@ msgstr "体积:"
msgid "Size:"
msgstr "尺寸:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "发现G-code路径在层%d高度为%.2lf mm处有冲突。请将有冲突的对象分离得更远(%s <-> %s)。"
@@ -5984,6 +6020,10 @@ msgstr "多设备"
msgid "Project"
msgstr "项目"
# AI Translated
msgid "Device (Web)"
msgstr "设备(网页)"
msgid "Yes"
msgstr "是"
@@ -8024,21 +8064,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, boost-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, boost-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, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 跳过%s:替换失败。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 替换了 %1%。\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 替换了 %s。\n"
msgid "Replaced volumes"
msgstr "替换的卷"
@@ -8763,6 +8803,18 @@ msgstr "启用此选项后,您可以同时向多个设备发送任务并管理
msgid "Pop up to select filament grouping mode"
msgstr "弹出选择耗材丝分组模式"
# AI Translated
msgid "Visible plugin pages"
msgstr "可见插件页数"
# AI Translated
msgid "pages"
msgstr "页"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "作为固定标签显示的插件页数量,其余页面将折叠到最后一个标签的下拉菜单中。"
msgid "Behaviour"
msgstr "行为"
@@ -8978,6 +9030,21 @@ msgstr "调暗下方图层"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "在切片预览中拖动图层滑块时,将当前图层下方的图层渲染为变暗状态,以便只有正在查看的图层以完整亮度显示。"
# AI Translated
msgid "Dimmed layer brightness"
msgstr "调暗图层的亮度"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"启用“调暗下方图层”时,被调暗的图层以多高的亮度显示。\n"
"99% 表示几乎不变暗0% 表示显示为纯黑。上限为 99%,因为 100% 与关闭该选项的效果相同。"
msgid "Login region"
msgstr "登录区域"
@@ -9102,6 +9169,18 @@ msgstr "显示不受支持的预设"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "在打印机和耗材下拉列表中显示不兼容/不受支持的预设。这些预设无法被选择。"
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(实验性)使用打印机代理替代打印主机"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"非 Bambu 打印机的打印任务将通过打印机插件代理发送,而不是经典的打印主机上传流程。\n"
"禁用时OrcaSlicer 使用旧的打印主机行为。"
# AI Translated
msgid "Experimental Features"
msgstr "实验性功能"
@@ -9366,9 +9445,25 @@ msgstr "用户预设"
msgid "Preset Inside Project"
msgstr "项目预设"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "将父预设继承的所有数值复制到当前预设,并解除继承关系。仅与父预设兼容的预设可能会变为不受支持。"
msgid "Detach from parent"
msgstr "与父级分离"
# AI Translated
msgid "Unique preset"
msgstr "独立预设"
# AI Translated
msgid "Parent preset"
msgstr "父预设"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "此预设未继承自其它预设。"
msgid "Name is unavailable."
msgstr "名称不可用。"
@@ -10074,24 +10169,6 @@ msgstr "您确定要启用此选项吗?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "填充图案通常设计为自动处理旋转以确保正确打印并实现其预期效果例如Gyroid、Cubic。旋转当前的稀疏填充图案可能会导致支撑不足。请谨慎操作并彻底检查是否存在任何潜在的打印问题。您确定要启用此选项吗"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"层高太小。\n"
"将设置为min_layer_height\n"
"层高太小。\n"
"将自动设置为min_layer_height的值\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。"
msgid "Adjust to the set range automatically?\n"
msgstr "是否自动调整到范围内?\n"
msgid "Adjust"
msgstr "调整"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "实验性选项。在更换耗材丝时,将耗材丝回抽一段距离后再切断以最小化冲刷。虽然这可以显著减少冲刷,但也可能增加喷嘴堵塞或其他打印问题的风险。"
@@ -10284,6 +10361,9 @@ msgstr "检测到保留的关键字"
msgid "Setting Overrides"
msgstr "参数覆盖"
msgid "Retraction when switching material"
msgstr "切换材料时的回抽量"
msgid "Basic information"
msgstr "基础信息"
@@ -10414,6 +10494,12 @@ msgstr "兼容的切片配置"
msgid "Printable space"
msgstr "可打印区域"
msgid "Printer Agent"
msgstr "打印机代理"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。"
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10539,9 +10625,6 @@ msgstr "层高限制"
msgid "Z-Hop"
msgstr "Z轴抬升"
msgid "Retraction when switching material"
msgstr "切换材料时的回抽量"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11892,6 +11975,10 @@ msgstr "离不可打印区域太近,会发生碰撞。\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr "距离聚集检测区域太近,会引起碰撞。\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr "有部分超出可打印区域,无法打印。\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "所选的喷嘴温度不兼容。每种耗材的喷嘴温度都必须落在其他耗材的推荐喷嘴温度范围内。否则可能会发生喷嘴堵塞或打印机损坏。"
@@ -12205,9 +12292,6 @@ msgstr "使用 3MF 代替 G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "如果打印机接受 3MF 文件作为打印任务请启用此选项。启用后Orca Slicer 将以 .gcode.3mf 格式发送切片文件,而不是普通的 .gcode 文件。"
msgid "Printer Agent"
msgstr "打印机代理"
msgid "Select the network agent implementation for printer communication."
msgstr "选择打印机通信的网络代理实施。"
@@ -12842,9 +12926,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "内部桥接的速度。如果该值以百分比表示将基于桥接速度计算。默认值为150%。"
msgid "Brim width"
msgstr "Brim宽度"
msgid "This is the distance from the model to the outermost brim line."
msgstr "从模型到最外圈brim走线的距离"
@@ -12925,6 +13006,14 @@ msgstr ""
"在检测尖锐角度之前,几何形状将被简化。此参数表示简化的最小偏差长度。\n"
"设为0以停用"
# AI Translated
msgid "Brim ears outer only"
msgstr "仅外轮廓生成圆盘"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "仅在模型的外轮廓上生成圆盘,不包括孔洞和封闭区域。"
msgid "upward compatible machine"
msgstr "向上兼容的机器"
@@ -12949,12 +13038,37 @@ msgstr "逐件"
msgid "Intra-layer order"
msgstr "层内打印顺序"
msgid "Print order within a single layer."
msgstr "同一层内的打印顺序"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"在同一层内访问各对象实例的顺序,它决定了在实例之间移动所花费的空驶量。\n"
"\n"
"默认:以最近邻方式串联,并通过 2-opt 和交叉消除进行优化。通常是较好的选择。\n"
"按对象列表中的顺序:不做任何路径优化,按对象列表中的顺序打印各实例。需要可预测、手动控制的顺序时使用。\n"
"全部比较(最短路径):评估所有策略并采用最短的一种。对象实例的顺序在整个打印任务中只确定一次,而各个岛的排序则逐层确定,因此不同层可能采用不同的策略。切片速度略慢。\n"
"蛇形:逐行往复的蛇形遍历,并通过 2-opt 进行优化。非常适合由大量小零件组成的规则阵列。\n"
"\n"
"当同一层中使用多种耗材丝或工具时,优先减少换料次数:对象会先按耗材丝分组,本设置仅决定每个耗材丝分组内实例的顺序,因此整体顺序看起来可能不是整个热床上的最短路径。"
msgid "As object list"
msgstr "按对象列表中的顺序"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "全部比较(最短路径)"
# AI Translated
msgid "Snake"
msgstr "蛇形"
msgid "Slow printing down for better layer cooling"
msgstr "降低打印速度 以得到更好的冷却"
@@ -14075,6 +14189,14 @@ msgstr "TPMS-FK结构"
msgid "Gyroid"
msgstr "螺旋体"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "稀疏填充平滑系数"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "控制稀疏填充拐角的圆滑程度。0% 保持原有的尖锐路径100% 则在相邻填充线之间生成尽可能大的圆弧。"
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "顶面填充的加速度。使用较低值可能会改善顶面质量"
@@ -14615,6 +14737,14 @@ msgstr "打印机兼容的G-code风格'"
msgid "Klipper"
msgstr "Klipper固件"
# AI Translated
msgid "Skip G-code config block"
msgstr "跳过 G-code 配置块"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "不将 CONFIG_BLOCK切片软件配置的键值对写入 G-code 文件。这对固件在解析这些注释行时会崩溃的打印机(例如 Anycubic go-klipper有帮助。注意G-code 文件将不再包含切片设置,因此重新导入到 OrcaSlicer 时无法恢复配置。"
msgid "Pellet Modded Printer"
msgstr "颗粒改装打印机"
@@ -15660,6 +15790,14 @@ msgstr "更换挤出机时长回缩"
msgid "Retraction distance when extruder change"
msgstr "更换挤出机时的回缩距离"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "回抽长度(换工具头)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "在换工具头之前触发回抽时,耗材丝会按指定的长度回抽(长度是在耗材丝进入挤出机之前,以原始耗材丝测量的)。"
msgid "Z-hop height"
msgstr "Z抬升高度"
@@ -15753,6 +15891,10 @@ msgstr "额外回填长度"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "每当空驶后回抽被补偿时,挤出机将推入额外数量的耗材丝。很少需要此设置。"
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "额外回填长度(换工具头)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "当换色后回抽被补偿时,挤出机将推入额外数量的耗材丝。"
@@ -16167,6 +16309,14 @@ msgstr "在擦拭塔上换头"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "在发出换头命令 (Tx) 之前,强制打印头先移动到擦拭塔。仅与使用第 2 类擦拭塔的多挤出机多打印头打印机相关。默认情况下Orca 会在多打印头机器上跳过此移动,因为固件会处理换头,这可能导致 Tx 命令在打印件上方发出。如果您希望换头命令始终在擦拭塔上方发出,请启用此选项。"
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "在擦拭塔上等待温度"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "拾取新工具头后不等待其达到打印温度,直接移动到擦拭塔,并在冲刷前于擦拭塔上等待温度。升温过程中渗出的耗材丝会落在擦拭塔上而不是模型上,且移动时间与加热过程重叠。仅适用于使用 2 型擦拭塔的多挤出机(多工具头)打印机。固件或换工具头宏本身不得等待温度。禁用时,等待温度的指令将在换工具头命令之后立即发出。"
msgid "No sparse layers (beta)"
msgstr "无稀疏层 (实验功能)"
@@ -18278,6 +18428,20 @@ msgstr ""
"主机名 %1% 指向了多个IP地址\n"
"请在其中选择一个正在使用的地址。"
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "根据喷嘴自动缩放"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"该模型是按 0.4 mm 喷嘴和 0.2 mm 层高设计的。 \n"
"启用缩放选项后(推荐),模型会根据当前喷嘴直径和合适的层高动态调整尺寸,使测试既准确又易于读取。\n"
"只有当您希望完全按原样打印参考模型时,才关闭缩放。"
msgid "PA Calibration"
msgstr "压力提前/PA校准"
@@ -18412,6 +18576,14 @@ msgstr "起始速度"
msgid "End speed: "
msgstr "结束速度"
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "自动调整以适应最大体积流量"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "如果结束速度会超过耗材丝的最大体积流量,则自动降低层高(保持标准数值并处于机器限制范围内)以达到该速度。如果连最小层高也不够,则改为降低结束速度。"
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18423,6 +18595,57 @@ msgstr ""
"步进长度 >= 0\n"
"结束 > 开始 + 步进长度)"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"结束速度(%.0f mm/s超过了耗材丝的最大体积流量%.1f mm³/s在当前线宽和层高下外墙被限制在约 %.0f mm/s。\n"
" 超过该值的速度会被钳制,因此塔的上部区块不会以请求的速度打印。\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"结束速度(%.0f mm/s超过了耗材丝的最大体积流量%.1f mm³/s默认层高 %.2f mm 时)。\n"
"\n"
"层高已降至 %.2f mm该打印机配置中使用的数值以便塔能够达到请求的速度。"
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"即使采用该打印机配置中使用的最小层高(%.2f mm结束速度%.0f mm/s仍超过耗材丝的最大体积流量%.1f mm³/s。\n"
"\n"
"层高将设为 %.2f mm结束速度将降至 %.0f mm/s。\n"
"\n"
"是否继续?"
# AI Translated
msgid "Continue anyway?"
msgstr "仍要继续吗?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "启用“自动调整”可自动解决该问题,或者仍要继续?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "启用“根据喷嘴自动缩放”和“自动调整”可自动解决该问题,或者仍要继续?"
msgid "Start retraction length: "
msgstr "起始回抽长度"
@@ -19316,9 +19539,6 @@ msgstr "物理打印机"
msgid "Print Host upload"
msgstr "打印主机上传"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。"
msgid "Select a Flashforge printer"
msgstr "选择一台 Flashforge 打印机"
@@ -20208,9 +20428,6 @@ msgstr "在尝试登录时发生了异常,请重试。"
msgid "User canceled."
msgstr "用户已取消。"
msgid "Head diameter"
msgstr "Brim 直径"
msgid "Max angle"
msgstr "最大角度"
@@ -20994,6 +21211,27 @@ msgstr ""
"避免翘曲\n"
"您知道吗打印ABS这类易翘曲材料时适当提高热床温度可以降低翘曲的概率。"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "层高太小。\n"
#~ "将设置为min_layer_height\n"
#~ "层高太小。\n"
#~ "将自动设置为min_layer_height的值\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。"
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "是否自动调整到范围内?\n"
#~ msgid "Head diameter"
#~ msgstr "Brim 直径"
#~ msgid "Print order within a single layer."
#~ msgstr "同一层内的打印顺序"
#~ msgid "Bottom"
#~ msgstr "底部"
@@ -21086,9 +21324,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Renders cast shadows on the plate in realistic view."
#~ msgstr "在写实渲染中渲染投射到打印板上的阴影。"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 21:59-0300\n"
"POT-Creation-Date: 2026-08-19 14:07-0300\n"
"PO-Revision-Date: 2025-11-28 13:48-0600\n"
"Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n"
"Language-Team: \n"
@@ -3795,6 +3795,10 @@ msgstr "自動擺放中..."
msgid "Arranging"
msgstr "自動擺放"
# AI Translated
msgid "Arranging "
msgstr "自動擺放 "
msgid "Arranging canceled."
msgstr "已取消自動擺放。"
@@ -4675,7 +4679,7 @@ msgid ""
"Too small max volumetric speed.\n"
"Value was reset to 0.5"
msgstr ""
"最大體積速度設定過小\n"
"最大體積流量設定過小\n"
"重設為 0.5"
#, c-format, boost-format
@@ -4687,6 +4691,23 @@ msgstr "目前列印裝置內部溫度高於線材的安全溫度,可能會導
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
msgstr "最低倉室溫度(%d℃高於目標倉室溫度%d℃。最低值是列印開始的門檻此時倉室會持續朝目標溫度加熱因此不應超過目標值。系統會將其限制在目標值。"
# AI Translated
#, c-format, boost-format
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
msgstr "層高過小,將設定為最小值(%g mm。"
# AI Translated
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "層高超出了印表裝置設定 -> 擠出機 -> 層高限制中設定的範圍,這可能會導致列印品質問題。"
# AI Translated
#, c-format, boost-format
msgid "Adjust it to the limit (%g mm) automatically?"
msgstr "是否自動調整至限制值(%g mm"
msgid "Adjust"
msgstr "調整"
msgid ""
"Layer height too small\n"
"It has been reset to 0.2"
@@ -4821,6 +4842,13 @@ msgstr ""
"是 - 啟用 Arachne Wall 產生器\n"
"否 - 停用 Arachne Wall 產生器,並將 Fuzzy Skin 設定為 [位移] 模式"
# AI Translated
msgid "Brim ear radius"
msgstr "耳狀 Brim 半徑"
msgid "Brim width"
msgstr "Brim 寬度"
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
msgstr "花瓶模式僅適用於牆體圈數為 1、停用支撐、停用偵測堵塞、頂部外殼層數為 0、稀疏填充密度為 0且延時攝影類型為傳統模式時。"
@@ -5075,6 +5103,14 @@ msgstr "產生校正代碼失敗"
msgid "Calibration error"
msgstr "校正錯誤"
# AI Translated
msgid "This printer is not configured with the hardware this control needs."
msgstr "此列印裝置未配置此控制項所需的硬體。"
# AI Translated
msgid "This control is not supported on this printer."
msgstr "此列印裝置不支援此控制項。"
# AI Translated
msgid "Network unavailable"
msgstr "網路無法使用"
@@ -5932,7 +5968,7 @@ msgstr "體積:"
msgid "Size:"
msgstr "尺寸:"
#, c-format, boost-format
#, boost-format
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
msgstr "發現 G-code 路徑在 %d 層Z = %.2lf mm 處的衝突。請將有衝突的物件分離得更遠(%s <-> %s。"
@@ -6114,6 +6150,10 @@ msgstr "多臺裝置"
msgid "Project"
msgstr "專案"
# AI Translated
msgid "Device (Web)"
msgstr "裝置(網頁)"
msgid "Yes"
msgstr "是"
@@ -8189,21 +8229,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, boost-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, boost-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, boost-format
msgid "✖ Skipped %s: failed to replace.\n"
msgstr "✖ 已跳過 %s:無法替換。\n"
#, boost-format
msgid "✔ Replaced %1%.\n"
msgstr "✔ 已替換 %1%。\n"
#, c-format, boost-format
msgid "✔ Replaced %s.\n"
msgstr "✔ 已替換 %s。\n"
msgid "Replaced volumes"
msgstr "已替換體積"
@@ -8936,6 +8976,18 @@ msgstr "啟用時可以同時傳送到並管理多個機臺。"
msgid "Pop up to select filament grouping mode"
msgstr "彈出視窗選擇線材分組模式"
# AI Translated
msgid "Visible plugin pages"
msgstr "可見的外掛頁面數"
# AI Translated
msgid "pages"
msgstr "頁"
# AI Translated
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
msgstr "以固定分頁顯示的外掛頁面數量,其餘頁面會收合至最後一個分頁的下拉選單中。"
msgid "Behaviour"
msgstr "行為"
@@ -9151,6 +9203,21 @@ msgstr "使下方層變暗"
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
msgstr "在切片預覽中拖曳層滑桿時,將目前層以下的各層算繪為變暗,如此只有正在檢視的層以全亮度顯示。"
# AI Translated
msgid "Dimmed layer brightness"
msgstr "變暗層的亮度"
msgid "%"
msgstr "%"
# AI Translated
msgid ""
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
msgstr ""
"啟用「使下方層變暗」時,變暗的層以多高的亮度顯示。\n"
"99% 幾乎不會變暗0% 會顯示為全黑。上限為 99%,因為 100% 與停用此選項的效果相同。"
msgid "Login region"
msgstr "登入區域"
@@ -9275,6 +9342,18 @@ msgstr "顯示不支援的預設"
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
msgstr "在列印裝置和線材下拉選單中顯示不相容/不支援的預設。這些預設無法選取。"
# AI Translated
msgid "(Experimental) Use printer agents instead of print hosts"
msgstr "(實驗性)使用列印裝置代理程式取代列印主機"
# AI Translated
msgid ""
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
"When disabled, OrcaSlicer uses the legacy print-host behavior."
msgstr ""
"將非 Bambu 列印裝置的列印工作透過列印裝置外掛代理程式傳送,而非傳統的列印主機上傳流程。\n"
"停用時OrcaSlicer 會使用舊有的列印主機行為。"
# AI Translated
msgid "Experimental Features"
msgstr "實驗性功能"
@@ -9539,9 +9618,25 @@ msgstr "使用者預設"
msgid "Preset Inside Project"
msgstr "項目預設"
# AI Translated
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
msgstr "將父配置繼承的所有數值複製到目前的配置,並解除繼承關係。僅與父配置相容的配置可能會變成不受支援。"
msgid "Detach from parent"
msgstr "從父預設分離"
# AI Translated
msgid "Unique preset"
msgstr "獨立配置"
# AI Translated
msgid "Parent preset"
msgstr "父配置"
# AI Translated
msgid "This preset does not inherit from another preset."
msgstr "此配置未繼承自其他配置。"
msgid "Name is unavailable."
msgstr "名稱不可用。"
@@ -10280,22 +10375,6 @@ msgstr "您確認要啟用此選項嗎?"
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
msgstr "填充模式通常設計為自動處理旋轉以確保正確列印並實現其預期效果例如Gyroid、Cubic。旋轉目前的稀疏填充模式可能會導致支撐不足。請謹慎操作並仔細檢查任何潛在的列印問題。您確定要啟用此選項嗎"
msgid ""
"Layer height is too small.\n"
"It will set to min_layer_height\n"
msgstr ""
"層高過薄\n"
"將改為 min_layer_height\n"
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。"
msgid "Adjust to the set range automatically?\n"
msgstr "是否自動調整至設定範圍?\n"
msgid "Adjust"
msgstr "調整"
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
msgstr "實驗性功能:在換線過程中以更大的距離收回並切斷線材,以減少沖洗量。儘管這可以顯著減少沖洗,但也可能增加噴嘴堵塞或其他列印問題的風險。"
@@ -10488,6 +10567,9 @@ msgstr "偵測到保留的關鍵字"
msgid "Setting Overrides"
msgstr "參數覆蓋"
msgid "Retraction when switching material"
msgstr "切換線材時的回抽量"
msgid "Basic information"
msgstr "基本資訊"
@@ -10618,6 +10700,12 @@ msgstr "相容的切片設定"
msgid "Printable space"
msgstr "可列印區域"
msgid "Printer Agent"
msgstr "列印裝置代理"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。"
#. TRN: The first argument is the parameter's name; the second argument is its value.
#, boost-format
msgid "Invalid value provided for parameter %1%: %2%"
@@ -10743,9 +10831,6 @@ msgstr "層高限制"
msgid "Z-Hop"
msgstr "Z 軸抬升"
msgid "Retraction when switching material"
msgstr "切換線材時的回抽量"
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -12094,6 +12179,10 @@ msgstr "離淨空區域太近,會發生碰撞。\n"
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr "離堵塞偵測區域太近,會發生碰撞。\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr "有部分超出可列印區域,無法列印。\n"
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
msgstr "所選的噴嘴溫度不相容。每種線材的噴嘴溫度都必須落在其他線材的建議噴嘴溫度範圍內。否則可能會發生噴嘴堵塞或列印裝置損壞。"
@@ -12407,9 +12496,6 @@ msgstr "使用 3MF 取代 G-code"
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
msgstr "若列印裝置接受 3MF 檔案作為列印作業請啟用此選項。啟用後Orca Slicer 會將切片後的檔案以 .gcode.3mf 形式傳送,而非單純的 .gcode 檔案。"
msgid "Printer Agent"
msgstr "列印裝置代理"
msgid "Select the network agent implementation for printer communication."
msgstr "選擇用於列印裝置通訊的網路代理實作。"
@@ -13055,9 +13141,6 @@ msgstr ""
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
msgstr "內部橋接速度。如果該值以百分比表示,將基於 bridge_speed 進行計算。預設值為 150%。"
msgid "Brim width"
msgstr "Brim 寬度"
msgid "This is the distance from the model to the outermost brim line."
msgstr "從模型到 Brim 最外圈的距離"
@@ -13138,6 +13221,14 @@ msgstr ""
"在偵測尖銳角度之前,幾何形狀將被簡化。此參數表示簡化的最小偏差長度。\n"
"設為 0 以停用"
# AI Translated
msgid "Brim ears outer only"
msgstr "僅外輪廓產生耳狀 Brim"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "僅在模型的外輪廓上產生耳狀 Brim不包含孔洞與封閉區域。"
msgid "upward compatible machine"
msgstr "向上相容的裝置"
@@ -13162,12 +13253,37 @@ msgstr "逐件"
msgid "Intra-layer order"
msgstr "單層順序"
msgid "Print order within a single layer."
msgstr "每一層的列印順序"
# AI Translated
msgid ""
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
"\n"
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
"\n"
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
msgstr ""
"在同一層內走訪各物件實例的順序,這會決定在實例之間移動所花費的空駛量。\n"
"\n"
"預設:以最近鄰方式串接,並以 2-opt 與交叉消除進行改善。通常是不錯的選擇。\n"
"按照物件清單排序:不做任何路徑最佳化,依照物件清單的順序列印各實例。需要可預測、手動控制的順序時使用。\n"
"全部比較(最短路徑):評估所有策略並採用最短的一種。物件實例的順序在整個列印工作中只決定一次,而個別島嶼的排序則逐層決定,因此不同層可能採用不同的策略。切片速度略慢。\n"
"蛇形:逐行往復的蛇形走訪,並以 2-opt 進行改善。非常適合由大量小零件組成的規則陣列。\n"
"\n"
"當同一層中使用多種線材或工具時,會優先減少換料次數:物件會先依線材分組,此設定僅決定每個線材群組內實例的順序,因此整體順序看起來可能不是整個列印板上的最短路徑。"
msgid "As object list"
msgstr "按照物件清單排序"
# AI Translated
msgid "Best of all (shortest path)"
msgstr "全部比較(最短路徑)"
# AI Translated
msgid "Snake"
msgstr "蛇形"
msgid "Slow printing down for better layer cooling"
msgstr "降低列印速度 以得到更好的冷卻"
@@ -14272,6 +14388,14 @@ msgstr "TPMS-FK結構"
msgid "Gyroid"
msgstr "螺旋體"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "稀疏填充平滑係數"
# AI Translated
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
msgstr "控制稀疏填充轉角的圓滑程度。0% 保持原有的銳利路徑100% 則在相鄰填充線之間產生盡可能大的圓弧。"
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
msgstr "頂面填充的加速度。使用較低值可能會改善頂面列印品質"
@@ -14812,6 +14936,14 @@ msgstr "列印裝置相容的 G-code 樣式"
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "略過 G-code 設定區塊"
# AI Translated
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
msgstr "不將 CONFIG_BLOCK切片軟體設定的鍵值對寫入 G-code 檔案。這對於韌體在解析這些註解行時會當機的列印裝置(例如 Anycubic go-klipper有幫助。注意G-code 檔案將不再包含切片設定,因此重新匯入 OrcaSlicer 時無法還原設定。"
msgid "Pellet Modded Printer"
msgstr "顆粒改裝列印裝置"
@@ -15865,6 +15997,14 @@ msgstr "更換擠出機時長回抽"
msgid "Retraction distance when extruder change"
msgstr "更換擠出機時的回抽距離"
# AI Translated
msgid "Retraction Length (Toolchange)"
msgstr "回抽長度(換工具)"
# AI Translated
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
msgstr "在換工具之前觸發回抽時,線材會依指定的長度回抽(長度是在線材進入擠出機之前,以原始線材測量)。"
msgid "Z-hop height"
msgstr "Z 抬升高度"
@@ -15958,6 +16098,10 @@ msgstr "額外回填長度"
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
msgstr "每當空駛後回抽被補償時,擠出機將推入額外長度的線材。很少需要此設定。"
# AI Translated
msgid "Extra length on restart (Toolchange)"
msgstr "額外回填長度(換工具)"
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
msgstr "當換色後回抽被補償時,擠出機將推入額外長度的線材。"
@@ -16361,6 +16505,14 @@ msgstr "在換料塔上換刀"
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
msgstr "強制工具頭在發出換刀指令 (Tx) 之前先移動到換料塔。僅適用於使用 Type 2 換料塔的多擠出機多工具頭列印裝置。預設情況下Orca 會在多工具頭機器上略過此空駛,因為韌體會處理工具頭交換,這可能導致 Tx 指令在已列印零件上方發出。若您希望換刀一律改在換料塔上方發出,請啟用此選項。"
# AI Translated
msgid "Wait for temperature on wipe tower"
msgstr "在換料塔上等待溫度"
# AI Translated
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
msgstr "取用新工具時不等待其達到列印溫度,先移動到換料塔,並在清理前於換料塔上等待溫度。升溫過程中滲出的線材會落在換料塔上而非模型上,且移動時間與加熱過程重疊。僅適用於使用第 2 型換料塔的多擠出機(多工具頭)列印裝置。韌體或換工具巨集本身不得等待溫度。停用時,等待溫度的指令會在換工具命令之後立即發出。"
msgid "No sparse layers (beta)"
msgstr "取消稀疏層Beta"
@@ -18461,6 +18613,20 @@ msgstr ""
"有多個 IP 位址解析到主機名稱 %1%。\n"
"請選擇一個要使用的 IP 位址。"
# AI Translated
msgid "Auto-scale for nozzle"
msgstr "依噴嘴自動縮放"
# AI Translated
msgid ""
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
"Turn scaling off only if you wish to print the reference model exactly as-is."
msgstr ""
"此模型是以 0.4 mm 噴嘴與 0.2 mm 層高為基準設計的。 \n"
"啟用縮放選項後(建議),模型會依目前的噴嘴直徑與合適的層高動態調整尺寸,使測試既準確又容易判讀。\n"
"只有在您想完全按原樣列印參考模型時,才關閉縮放。"
msgid "PA Calibration"
msgstr "PA 校正"
@@ -18597,6 +18763,14 @@ msgstr "起始速度:"
msgid "End speed: "
msgstr "結束速度:"
# AI Translated
msgid "Auto-adjust to max volumetric speed"
msgstr "自動調整以符合最大體積流量"
# AI Translated
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
msgstr "如果結束速度會超過線材的最大體積流量,則自動降低層高(維持標準數值並處於機器限制範圍內)以達到該速度。如果連最小層高也不夠,則改為降低結束速度。"
msgid ""
"Please input valid values:\n"
"start > 10\n"
@@ -18608,6 +18782,57 @@ msgstr ""
"步距 >= 0\n"
"結束 > 開始 + 步距)"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
"\n"
"%s"
msgstr ""
"結束速度(%.0f mm/s超過線材的最大體積流量%.1f mm³/s在目前的線寬與層高下外牆被限制在約 %.0f mm/s。\n"
" 超過該值的速度會被箝制,因此塔的上部區塊不會以要求的速度列印。\n"
"\n"
"%s"
# AI Translated
#, c-format, boost-format
msgid ""
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
"\n"
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
msgstr ""
"結束速度(%.0f mm/s超過線材的最大體積流量%.1f mm³/s預設層高 %.2f mm 時)。\n"
"\n"
"層高已降至 %.2f mm此印表機的設定檔中使用的數值以便塔能夠達到要求的速度。"
# AI Translated
#, c-format, boost-format
msgid ""
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
"\n"
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
"\n"
"Continue?"
msgstr ""
"即使採用此印表機的設定檔中使用的最小層高(%.2f mm結束速度%.0f mm/s仍超過線材的最大體積流量%.1f mm³/s。\n"
"\n"
"層高將設為 %.2f mm結束速度將降至 %.0f mm/s。\n"
"\n"
"是否繼續?"
# AI Translated
msgid "Continue anyway?"
msgstr "仍要繼續嗎?"
# AI Translated
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "啟用「自動調整」可自動解決此問題,或者仍要繼續?"
# AI Translated
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
msgstr "啟用「依噴嘴自動縮放」和「自動調整」可自動解決此問題,或者仍要繼續?"
msgid "Start retraction length: "
msgstr "起始回抽長度:"
@@ -19505,9 +19730,6 @@ msgstr "實體列印裝置"
msgid "Print Host upload"
msgstr "列印主機上傳"
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。"
msgid "Select a Flashforge printer"
msgstr "選取 Flashforge 列印裝置"
@@ -20399,9 +20621,6 @@ msgstr "嘗試登入時發生了意外錯誤,請再試一次。"
msgid "User canceled."
msgstr "使用者取消。"
msgid "Head diameter"
msgstr "頭直徑"
msgid "Max angle"
msgstr "最大角度"
@@ -21206,6 +21425,25 @@ msgstr ""
"避免翹曲\n"
"您知道嗎?當列印容易翹曲的材料(如 ABS適當提高熱床溫度可以降低翹曲的機率。"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
#~ msgstr ""
#~ "層高過薄\n"
#~ "將改為 min_layer_height\n"
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
#~ msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。"
#~ msgid "Adjust to the set range automatically?\n"
#~ msgstr "是否自動調整至設定範圍?\n"
#~ msgid "Head diameter"
#~ msgstr "頭直徑"
#~ msgid "Print order within a single layer."
#~ msgstr "每一層的列印順序"
#~ msgid "Bottom"
#~ msgstr "底部"
@@ -21298,9 +21536,6 @@ msgstr ""
#~ msgid "°C"
#~ msgstr "°C"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Renders cast shadows on the plate in realistic view."
#~ msgstr "在擬真檢視中於列印板上算繪投射陰影。"

View File

@@ -1,6 +1,6 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"filament_id": "OFLfywkp",
"setting_id": "wAJTMxtCY7EoavRi",
"name": "Afinia ABS+@HS",
"from": "system",

View File

@@ -1,6 +1,6 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"filament_id": "OFV5wEMe",
"setting_id": "qCDnb2iBaz4hd4vX",
"name": "Afinia ABS@HS",
"from": "system",

View File

@@ -1,6 +1,6 @@
{
"type": "filament",
"filament_id": "GFA00_01",
"filament_id": "OF9HCdyQ",
"setting_id": "N3sCgjdjvp6FTtw9",
"name": "Afinia PLA@HS",
"from": "system",

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_tpu",
"from": "system",
"setting_id": "zUqTgAEbqTN1EdRl",
"filament_id": "GFU01_01",
"filament_id": "OFDJU6R3",
"instantiation": "true",
"filament_vendor": [
"Afinia"

View File

@@ -1,6 +1,6 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"filament_id": "OFXi59OX",
"setting_id": "OxIiEYjbhEvSykaQ",
"name": "Afinia Value ABS@HS",
"from": "system",

View File

@@ -1,6 +1,6 @@
{
"type": "filament",
"filament_id": "GFA00_01",
"filament_id": "OFgHh8ly",
"setting_id": "BASsUdyvElEVJ9AA",
"name": "Afinia Value PLA@HS",
"from": "system",

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic ABS @base",
"inherits": "fdm_filament_abs",
"from": "system",
"filament_id": "GFB99",
"filament_id": "OF3P0BQA",
"instantiation": "false"
}

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic ASA @base",
"inherits": "fdm_filament_asa",
"from": "system",
"filament_id": "GFB98",
"filament_id": "OFRiyes1",
"instantiation": "false"
}

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic PA @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFN99",
"filament_id": "OFMgJQCZ",
"instantiation": "false"
}

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PA-CF @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFN98",
"filament_id": "OF7uE5KB",
"instantiation": "false",
"filament_type": [
"PA-CF"

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic PC @base",
"inherits": "fdm_filament_pc",
"from": "system",
"filament_id": "GFC99",
"filament_id": "OFGPJxnt",
"instantiation": "false"
}

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PETG @base",
"inherits": "fdm_filament_pet",
"from": "system",
"filament_id": "GFG99",
"filament_id": "OFgvOmM2",
"instantiation": "false",
"filament_type": [
"PETG"

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PETG-CF @base",
"inherits": "fdm_filament_pet",
"from": "system",
"filament_id": "GFG98",
"filament_id": "OF1daEUW",
"instantiation": "false",
"filament_type": [
"PETG-CF"

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic PLA @base",
"inherits": "fdm_filament_pla",
"from": "system",
"filament_id": "GFL99",
"filament_id": "OFndmfJ1",
"instantiation": "false"
}

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PLA Silk @base",
"inherits": "fdm_filament_pla",
"from": "system",
"filament_id": "GFL96",
"filament_id": "OFXyyfX6",
"instantiation": "false",
"filament_cost": [
"20"

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PLA+ @base",
"inherits": "fdm_filament_pla",
"from": "system",
"filament_id": "GFL95",
"filament_id": "OFIYTy8S",
"instantiation": "false",
"filament_cost": [
"25"

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic PLA-CF @base",
"inherits": "fdm_filament_pla",
"from": "system",
"filament_id": "GFL98",
"filament_id": "OFB0a3hT",
"instantiation": "false",
"filament_type": [
"PLA-CF"

View File

@@ -3,6 +3,6 @@
"name": "Anker Generic PVA @base",
"inherits": "fdm_filament_pva",
"from": "system",
"filament_id": "GFS99",
"filament_id": "OFsCbVbN",
"instantiation": "false"
}

View File

@@ -3,7 +3,7 @@
"name": "Anker Generic TPU @base",
"inherits": "fdm_filament_tpu",
"from": "system",
"filament_id": "GFU99",
"filament_id": "OF6tKa1Z",
"instantiation": "false",
"filament_retraction_speed": "90",
"filament_deretraction_speed": "50",

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "RDI26qeSRSTe0PDg",
"filament_id": "GFB99",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "Moc1cylP6mmSQjlb",
"filament_id": "GFB99",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "2xgfnUKyOUQwYWPa",
"filament_id": "GFB99",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle"

View File

@@ -4,11 +4,14 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "NOiAgxA0BbvLhR1v",
"filament_id": "GFB99",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Anycubic"
],
"filament_flow_ratio": [
"0.95"
],

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "MDWaiSjl89E6Edsn",
"filament_id": "GFABS",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "wZjVYc7dBDSKRusJ",
"filament_id": "GFABS",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "AbB6JtoPRsNgmxyy",
"filament_id": "GFABS",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "exX565xnrLPkYkvu",
"filament_id": "GFABS",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "KeEk3yQZrKmJY9Q0",
"filament_id": "GFABS",
"filament_id": "OF223rZv",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ABS @Anycubic Kobra X 0.4 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "Anycubic Generic ASA",
"from": "system",
"setting_id": "U66DGcpZeZ24VfPe",
"filament_id": "GFA99",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_vendor": [
"Anycubic"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "06j8OTuYw3Sh9BxL",
"filament_id": "GFA99",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "s2XJm0JghCSUDzhh",
"filament_id": "GFA99",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle"

View File

@@ -4,11 +4,14 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "rf792xZNR7tRGKNg",
"filament_id": "GFA99",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Anycubic"
],
"filament_flow_ratio": [
"0.98"
],

View File

@@ -4,11 +4,14 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "wqK6AVf1mNkIOmnt",
"filament_id": "GFASA",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle"
],
"filament_vendor": [
"Anycubic"
],
"filament_type": [
"ASA"
],

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "aMgpooFosBBvlKKR",
"filament_id": "GFASA",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "Isk7NkdH7GxsEZkS",
"filament_id": "GFASA",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "Ew0Lg6u3e5Xj19Bz",
"filament_id": "GFASA",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "PEg6aLXcyUc70p9F",
"filament_id": "GFASA",
"filament_id": "OF0yFLkY",
"instantiation": "true",
"filament_settings_id": [
"Anycubic ASA @Anycubic Kobra X 0.4 nozzle"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_abs",
"from": "system",
"setting_id": "az6wmXeWSCKcUEsK",
"filament_id": "GFB99",
"filament_id": "OF5Zk4e1",
"instantiation": "true",
"filament_flow_ratio": [
"0.926"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_asa",
"from": "system",
"setting_id": "qKcef8t7nj8nBjPu",
"filament_id": "GFB98",
"filament_id": "OFI80Hct",
"instantiation": "true",
"filament_flow_ratio": [
"0.93"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pa",
"from": "system",
"setting_id": "j2PXsJyI9YyoE8lc",
"filament_id": "GFN98",
"filament_id": "OFPdhDlK",
"instantiation": "true",
"filament_type": [
"PA-CF"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pa",
"from": "system",
"setting_id": "xzI6EgoKa3DFYyoZ",
"filament_id": "GFN99",
"filament_id": "OFB1Tv1E",
"instantiation": "true",
"nozzle_temperature_initial_layer": [
"280"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pc",
"from": "system",
"setting_id": "3zgBtEkj1fQpDkxO",
"filament_id": "GFC99",
"filament_id": "OFWY6vBh",
"instantiation": "true",
"filament_max_volumetric_speed": [
"12"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pet",
"from": "system",
"setting_id": "CEd987NP90bPdkW7",
"filament_id": "GFG99",
"filament_id": "OFWzr7m0",
"instantiation": "true",
"reduce_fan_stop_start_freq": [
"1"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pla",
"from": "system",
"setting_id": "9gFgyEJelaCIVwAH",
"filament_id": "GFL98",
"filament_id": "OFNcdCrm",
"instantiation": "true",
"filament_flow_ratio": [
"0.95"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pla",
"from": "system",
"setting_id": "2MiX54GMiZjFzwBI",
"filament_id": "GFL99",
"filament_id": "OFKyCgaK",
"instantiation": "true",
"filament_flow_ratio": [
"0.98"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_pva",
"from": "system",
"setting_id": "I1GMbOsMYktU7EbM",
"filament_id": "GFS99",
"filament_id": "OFSGbf2I",
"instantiation": "true",
"filament_flow_ratio": [
"0.95"

View File

@@ -4,7 +4,7 @@
"inherits": "fdm_filament_tpu",
"from": "system",
"setting_id": "xrbLc7y1AInpumtv",
"filament_id": "GFU99",
"filament_id": "OFGKLoUm",
"instantiation": "true",
"filament_max_volumetric_speed": [
"3.2"

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