Compare commits

...
Author SHA1 Message Date
Hanif Koh 2b2c710626 Order GCodeWriter Initializers Like the Members Moved to Protected
The lift, speed and cached-extruder members now live in the protected section ahead of the private ones; list their initializers first so the list reads in construction order. No behaviour change.
2026-09-14 17:27:33 +08:00
Hanif Koh 2b1a7e38df Drop Redundant Belt Checks in BeltGCode
BeltGCode is only created for belt printers, so its hooks no longer re-check belt_printer, and the BBL-machine flag is set once on whichever writer survives init_belt_writer instead of on one about to be discarded.
2026-09-14 17:27:33 +08:00
Hanif Koh b4052ec99f Drop the Redundant Lift Type Alias in eager_lift
effective_type was a plain copy of the parameter.
2026-09-14 17:27:33 +08:00
Hanif Koh 14cf7861e0 Fix Belt Tooltip Spacing and Legend Casing
Drop double spaces in the belt tilt tooltips and match the preview legend header to
the "Belt printer" settings group.
2026-09-14 17:27:33 +08:00
Hanif Koh 18c08862a8 Align up_direction Position in TriangleSelector Fill Calls
seed_fill_select_triangles() now takes up_direction right after highlight_by_angle_deg, as select_patch() does.
2026-09-14 17:27:33 +08:00
Hanif Koh 62ef0fa4f8 Write the Standard Layer Change Tag on Belt Brim Apron Layers
Apron layers appended print_z to the layer change tag, unlike every other layer; write the plain tag line.
2026-09-14 17:27:33 +08:00
Hanif Koh a8a45439db Share One Build Plate Tilt Up-Direction Helper Across the GUI
The bed gravity arrow, volume rendering and the painter/support gizmos each rebuilt
the tilt up-vector from build_plate_tilt_x/y; use one helper that also tolerates
presets without the keys.
2026-09-14 17:27:33 +08:00
Hanif Koh 5cd6661280 Check the Belt Temperature Tower Model Load
Bail out like the other calibration paths when add_model() fails instead of
indexing the empty model.
2026-09-14 17:27:33 +08:00
Hanif Koh 33aec258da Skip CLI Wipe Tower Reservation on Belt Printers
Print::has_wipe_tower() is always false for belt printers, but CLI arrange, plate checks and the pre-slice tower clamp still reserved a phantom tower footprint and wrote a clamped wipe_tower_x/y into the config.
2026-09-14 17:27:33 +08:00
Hanif Koh 76aba24ddf Number Belt Extension Support Layers Sequentially
Extension layers were all created with id 0, so every one of them could be taken for the first layer by id-only checks (ooze-prevention standby temperature, cached layer ids). Renumber the support layers after inserting them.
2026-09-14 17:27:33 +08:00
Hanif Koh cb5b489e90 Invalidate Only G-code Export for Belt Output Options
gcode_back_transform, first_layer_plane* and belt_printer_infinite_y fell through to invalidate_all_steps(), which re-ran tool ordering, skirt/brim and G-code export on toggles that only affect G-code export.
2026-09-14 17:27:33 +08:00
Hanif Koh 19a085206c Print Belt Brim Aprons in Each Object's Brim Filament
Apron-only layers printed every band with the first tool, so objects with different brim filaments at the same apron Z shared one filament. Emit each brim filament's bands with its own toolchange.
2026-09-14 17:27:33 +08:00
Hanif Koh 708212a306 Share One Belt Brim Band Loop Between Apron-Only and Ordinary Layers
The ordinary-layer path kept its own copy of the apron band loop. Give emit_belt_brim_bands() an optional brim filament filter and call it from the per-extruder lambda; without a filter it still prints every band, so apron-only layers are unchanged.
2026-09-14 17:27:33 +08:00
Hanif Koh 3b302b4666 Derive Belt Support Tilt From Slicing Rotation in Print::apply
build_plate_tilt_x/y was synced from belt_slice_rotation* only by the printer Tab, so CLI or 3MF edits of the rotation left the support tilt stale.
2026-09-14 17:27:32 +08:00
Hanif Koh 4a7311bf01 Rebuild the Brim Type Combobox Only When Its Entries Change
toggle_options() now runs on every value change and mode switch; rebuild the
brim_type choices only when the leading-edge entry has to be added or removed.
2026-09-14 17:27:32 +08:00
Hanif Koh f2a11928f6 Read the Belt Tilt Only from the Belt G-code Header
Every printer's config block lists belt_slice_rotation_angle (default 45), so the processor marked all G-code as belt G-code: imported flat G-code got the belt view on a belt printer, and the belt-only Z handling in the processor ran for non-belt prints whose config block precedes the body. Take the angle only from outside the config block, where only the belt header writes it.
2026-09-14 17:27:32 +08:00
Hanif Koh 4ed56954e8 Limit Build Plate Tilt Range Below 90 Degrees
A 90 degree tilt has no finite gravity drift per layer, so the option range
now stops at 89 degrees, matching the cap applied by the support generators.
2026-09-14 17:27:32 +08:00
Hanif Koh 6e33f3f5dd Share and Clamp the Build Plate Tilt Shift in Support Generators
The three support generators each computed lh * tan(tilt), which overflows
coord_t at 90 degrees and flips sign beyond it (belt sync can write up to
180). One helper now returns the tilt slope with the tilt capped at 89 degrees.
2026-09-14 17:27:32 +08:00
Hanif Koh 5092831007 Apply the Belt Slicing Transform to Painted Supports and Seams
Painted support/seam facets, support volumes, seam occlusion, MMU and fuzzy skin painting (top/bottom
and side facets) and the adaptive infill octree used trafo_centered(), or trafo() with a centre-offset
shift, while the layers were sliced with the belt rotation, remap and Z lift; they now share
PrintObject::trafo_sliced().
2026-09-14 17:27:32 +08:00
Hanif Koh 9cca3093ee Keep the Plate Offset When Swapping in the Belt Writer
The belt writer replaced the plate-offset-carrying writer mid-export, so belt G-code for any plate but the first kept the plate origin and long-travel clipping used the wrong frame. GCode now remembers the offset and hands it to the new writer, and the writer's first-layer probes use the plate-local point it emits.
2026-09-14 16:41:40 +08:00
Hanif Koh 6873267a9c Remove Plate Tilt Keys from Per-Object Settings Tables
build_plate_tilt_x/y are printer-preset keys; listing them in the per-object
frequent-settings and object-table bundles stored ignored values in object
configs and crashed the object table on the process config lookup.
2026-09-14 16:41:40 +08:00
Hanif Koh 8e330f951a Merge Main into Belt Printer
Merge origin/main (00429da739) into belt-printer.

Conflicts resolved:
- src/CMakeLists.txt: keep both wxInspector workarounds.
- GCodeProcessor.cpp: keep the belt compare_pos / z_for_height lines.
- PrintObjectSlice.cpp: the belt bbox-Z guard also covers main's
  printable_region_ids bookkeeping.
- TreeSupport.cpp: the belt-floor check runs before main's PendingNode
  queueing.
- Tab.hpp: keep the belt fields, drop the removed upload description
  fields.
- tests/libslic3r/CMakeLists.txt: keep both test files.

Also included:
- eSUN PLA belt presets declare their own filament_id (OFkrxQC4) and
  scripts/filament_id_snapshot.json is regenerated, as main's filament_id
  check requires.
- Custom.json version bumped to 02.04.00.05 so the belt entries reach
  existing installs.
- Fix the ambiguous WithinRel call in the belt apron width test, which
  otherwise breaks the fff_print build.
2026-09-14 16:33:08 +08:00
HanifKoh 00429da739 Apply the GUI's Mixed Filament Rules on the CLI (#15636)
A valid mixed filament already slices the same on the CLI as in the GUI;
these are the places where the CLI still skipped a rule the GUI applies.

- Keep the prime tower when a mixed filament is used, even if every
  --load-filaments preset is the same. A mixed filament swaps between its
  components every layer, so turning the tower off left the swaps with
  nothing to purge on.
- Leave a mixed slot's row and column of the flush matrix at zero when
  --filament-colour triggers a recompute, as the GUI does; a mixed slot
  never reaches a nozzle.
- Refuse a mixed slot that has no filament of its own. Feature filament
  ids aimed at it were past the filament count, got reset to filament 1
  and the model silently printed in one colour.
- Refuse a plate that uses a mixed filament whose components are
  different filament types, the type half of the GUI's
  Sidebar::has_broken_mixed_filament. Missing or out-of-range components
  are already rejected for the whole project by validate().
  get_extruders_under_cli gains an expand_mixed_slots flag so the gate
  can see mixed slots rather than their components; existing callers
  keep the expanded list.

Both refusals exit with the new CLI_MIXED_FILAMENT_INVALID (-69).
2026-09-14 14:28:08 +08:00
HanifKoh 31f6eb2718 Keep the First Value When a Per-Filament Variant Option Is Too Short (#15639)
update_values_to_printer_extruders_for_multiple_filaments picks each
filament's value from the flattened (filament x variant) columns of every
per-filament variant option. When a column index fell past the end of the
option's values, it skipped that filament and left the zero the output
vector was created with.

The GUI always hands this function full columns, but the CLI does not:

- a CLI override of a single value, such as --nozzle-temperature=211 on a
  four-filament project, came out as 211,0,0,0, so three filaments would
  print at 0 C;
- loading fewer filament presets than the project has filaments left the
  remaining filaments' columns missing, so filament_cooling_before_tower
  came out as 10,10,0,0 and filament_ramming_volumetric_speed as -1,-1,0,0.

An out-of-range column now keeps the option's first value, the fallback
get_at() and the sibling gather step already use. The seven per-type copies
of the loop are replaced by that same gather_option_values helper, moved
above the function; it now takes its caller's name for its log lines. An
empty option, which has no first value, is given one registered default per
filament first; it used to be replaced with zeros.

On a partial load a filament whose preset was not loaded takes the first
filament's value rather than its own preset's, which the CLI does not load;
for the options seen in practice those agree.
2026-09-14 14:26:32 +08:00
Ian Chua a09d6a565c feat: plater notification API for plugins (#15318)
# 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 a really basic API to push notifications to the plater.

Plugin used in demo: 

[plater_notification.py](https://github.com/user-attachments/files/31293074/plater_notification.py)

# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
<img width="2172" height="1241" alt="image"
src="https://github.com/user-attachments/assets/540319ca-a11a-4b48-9b80-82fb6b0849d9"
/>

## Tests

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

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

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-14 11:46:43 +08:00
Ian Chua 214b5e2b0a Merge branch 'main' into feat/plater-notification-api 2026-09-14 11:46:36 +08:00
packerlschupfer c5b152b722 CLI: record command-line overrides in different_settings_to_system (#15642)
* CLI: record command-line overrides in different_settings_to_system

Settings passed on the command line (--sparse-infill-density 25% ...) override
the loaded presets when m_extra_config is applied to m_print_config, but nothing
recorded them in different_settings_to_system. The exported project therefore
carried the new value with no mark that it was modified, and re-opening it in the
GUI reverted it to the system preset's value -- the same failure the preset-leaf
diff fixes for user presets, via a different source of override.

The key set comes from m_config, not m_extra_config. read_cli() puts only what the
user typed into m_config and setup() adds nothing but CLI-own defaults (none of
the keys run() materialises there is a preset option), whereas the CLI writes its
own values into m_extra_config (has_filament_switcher, filament_colour,
filament_map ...), which must not be reported as user overrides.

Values are snapshotted just before the apply and only keys the override actually
changed are recorded: a typed value equal to the loaded one modifies nothing, and
listing it would read as a spurious difference against what the GUI writes. Each
key lands in the column(s) whose preset type owns it -- process, every filament,
printer -- and a key already present is not duplicated. Keys no preset owns
(curr_bed_type, a project setting) land nowhere, as in the GUI.

Follow-up to #15595, split out at review.

* CLI: judge command-line overrides the way the value is read

Review follow-ups on the override recording:

- Lists were compared as whole serialized strings. read_cli() builds a fresh
  one-entry list, so --nozzle-temperature 245 against 245,245,245 on a
  three-filament project was recorded in every filament column although nothing
  changed. Lists are now compared entry by entry with a missing entry read as the
  first, as get_at() reads it (and as resize() pads).

- The log line fired for every changed key, including ones no preset owns
  (curr_bed_type) and which therefore land in no column. It now fires only when a
  column took the key.

- m_print_config.has(key) straight after apply(m_extra_config, true) was always
  true, both configs sharing print_config_def; removed. columns.size() >= 2 also
  always holds after the resize to filament_count + 2 -- different_settings_to_system
  is not a CLI option, so nothing in between can shrink it -- but that rests on code
  far away, so it stays a plain check rather than an assert: release builds compile
  asserts out, and a _GLIBCXX_ASSERTIONS build would abort on columns[0].

Deliberately NOT done: comparing a key the loaded config lacks against its
built-in default. On reopen the GUI restores an unlisted key from the SYSTEM
preset, not the default. A 3MF written before an option existed leaves it absent
here, so --sparse-infill-density 20% (the default) against a Prusa system 15% would
go unrecorded and be reverted to 15%. Absent keys stay always-recorded:
over-recording is cosmetic, under-recording loses the value. Verified that such a
key really is absent at this point, rather than filled from the system preset.

Reported by HanifKoh and raistlin7447 in review of #15642.
2026-09-14 11:37:05 +08:00
Kiss LorandandRodrigo Faselli fd63164268 Fix Printer Agent preset undo (#15645)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-09-13 21:03:45 -03:00
Kiss Lorand aef9ca2efb Fix label object error for toolchanges without object instances (#15666) 2026-09-13 19:42:49 -03:00
Kris Austin 26fa1694d9 ci: save the compiler cache from cancelled and failed builds too (#15668) 2026-09-13 19:08:08 -03:00
Daniel WilliamsandRodrigo Faselli 636b623cb7 tests: regression test that every PrintRegion/Object field is in a preset key list (#13466)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-09-13 17:55:42 -03:00
Kris Austin d643b10ac4 build: expand PrintConfig.hpp option lists twice per class instead of five times (#15658) 2026-09-13 17:46:03 -03:00
Kris Austin 9e8fbc17dd ci: clear the per-run annotations and revive the weekly doxygen job (#15659) 2026-09-13 16:39:55 -03:00
yw4z 15ebdc3799 enable menu icons on macOS and Linux for plate / background menus (#15620)
Update GUI_Factories.cpp
2026-09-13 19:41:27 +08:00
TheLegendTubaGuy a7775296b0 Fix macOS custom color accuracy (#15283)
* Fix macOS custom color accuracy

* Fix wxWidgets dependency patch command

* Apply macOS color patch to current wxWidgets branch
2026-09-13 18:29:35 +08:00
Kiss Lorand c21e48450c Fix single-instance activation maximizing OrcaSlicer (#15665) 2026-09-12 16:21:14 -03:00
Kris Austin bb8c2ae5ce build: enable -Werror with a documented exception list (#15660) 2026-09-12 15:52:05 -03:00
Kris Austin fe0d47c7a3 feat(issues): add a crash report template (#15524) 2026-09-12 15:04:44 -03:00
Kiss Lorand c5965fa4d9 Fix: clear stale paths when merging perimeter regions (#15662) 2026-09-12 14:31:28 -03:00
Rodrigo Faselli db9163ec34 Set the CMake policy CMP0177 (#15657)
Update CMakeLists.txt
2026-09-12 13:26:11 -03:00
Kris Austin e7ca4fb87e build: trim GUI_App.hpp includes so edits stop rebuilding the whole GUI (#15644) 2026-09-12 12:09:39 -03:00
Valerii Bokhan 0888e331b5 fix: validate float-or-percent input ranges (#15392) 2026-09-12 10:59:13 -03:00
packerlschupfer ccd6086787 CLI: evaluate compatible_printers_condition in the compat checks (#15449)
* CLI: evaluate compatible_printers_condition in the compat checks

Slicing from the CLI with --load-settings exits with
CLI_PROCESS_NOT_COMPATIBLE (-17), "The selected printer is not compatible
with the process preset in the 3mf.", for process/printer pairs the GUI
accepts. Reproducible with stock, unmodified Prusa system profiles:

  orca-slicer --datadir <datadir> \
    --load-settings "<datadir>/system/Prusa/process/0.20mm SPEED @CORE One HF 0.4.json;<datadir>/system/Prusa/machine/Prusa CORE One HF 0.4 nozzle.json" \
    --load-filaments "<datadir>/system/Prusa/filament/Prusament PETG @CORE One HF 0.4.json" \
    --slice 0 --outputdir /tmp/out model.stl

The four compat checks in CLI::run did a literal name match against the
`compatible_printers` list only:

    for (index ...) if (new_print_compatible_printers[index] == new_printer_system_name)
        process_compatible = true;

Process profiles that declare compatibility through
`compatible_printers_condition` and leave `compatible_printers` empty are
therefore always reported incompatible -- the condition is never consulted.
For 0.20mm SPEED @CORE One HF 0.4 that condition is:

    printer_notes=~/.*PRINTER_MODEL_COREONE[^_a-zA-Z0-9].*/ and
    nozzle_diameter[0]==0.4 and printer_notes=~/.*HF_NOZZLE.*/

The GUI does not have this bug: is_compatible_with_printer() in Preset.cpp
treats an empty list as "no explicit constraint" and evaluates the
condition in that case.

Fix: replace the four loops with a check_compat lambda that calls
is_compatible_with_printer() -- the same helper the GUI uses -- wrapping
the already-loaded DynamicPrintConfigs in lightweight Preset /
PresetWithVendorProfile shells. The 3MF-embedded process/printer full
configs are kept in current_process_full_config /
current_printer_full_config so the condition can be evaluated for the
reprocess paths too; those fall back to the previous literal match when
the full config was not preserved.

Behaviour is unchanged where an explicit compatible_printers list exists:
is_compatible_with_printer() performs the same name match, and returns
true when both list and condition are empty, matching the existing
"old 3mf, no compatible printers, set to compatible" path.

Split out of #13731 (section 1) as a standalone, single-purpose change.
Orthogonal to the inherits-chain resolution work in #14718 / #15302 /
#15438; those decide which values a preset resolves to, this decides
whether the resulting pair is considered compatible.

* CLI: translate the 3MF's renamed compatibility keys before the compat check

The 3MF fallback fed the project config to is_compatible_with_printer() as-is,
but a project config does not carry compatible_printers or
compatible_printers_condition. PresetBundle::construct_full_config() erases both
and re-emits them as print_compatible_printers and
compatible_machine_expression_group; they are renamed back only on the
PresetBundle load path, which the CLI does not take. The check therefore saw no
list and no condition, read that as 'no constraint' and accepted every printer.

That is not just a wrong accept. An early true skips the !process_compatible
block that sets machine_switch, so the new printer is never appended to
print_compatible_printers and the exported 3MF stays marked compatible only with
the printer it came from -- which is exactly what that block exists to prevent.

Translate the two keys back before the check. Index 0 of the expression group is
the print preset; the group is filled print, filaments, printer.

Also note in the comment that profiles/BBL/{process,machine}_full/ are gitignored
and generated by nothing in-tree, so current_*_full_config is always empty and
this fallback is the only live path -- not the rare non-BBL case the original
comment implied.

Reported with measurements by HanifKoh in review of #15449.

Preset: add a config-level is_compatible_with_printer() overload

The CLI holds resolved DynamicPrintConfigs, not Presets, so it wrapped them in
throwaway Preset shells at the call site. Moving that into Preset.cpp puts the
compatibility policy -- including the documented fail-open on a malformed
compatible_printers_condition -- in one place for the GUI and the CLI, rather
than leaving a second copy of the plumbing in OrcaSlicer.cpp to drift.

Purely additive: neither existing overload changes, so no GUI behaviour moves.

Requested by HanifKoh in review of #15449.

(cherry picked from commit 14ca1972ef4d3c7d90935d159423013a40a6bd70)

* CLI: never overwrite a real compat key with an empty renamed one

7e7f0e3 translated compatible_machine_expression_group[0] into
compatible_printers_condition whenever the group vector was non-empty. A project
the CLI exported itself carries the real compatible_printers_condition AND an
all-empty group, ["", "", ""], so the valid condition was overwritten with
"", the check saw no constraint, and every printer was accepted.

That fixed GUI-shaped projects and broke CLI-shaped ones. Bisected across six
builds re-slicing one CLI-exported CORE One project with an MK4S: every build
before 7e7f0e3 gives 'compatible 0' and takes the machine-switch path; with it,
'compatible 1' and no switch.

The raw keys now win whenever they carry something; the renamed ones are only a
fallback, and an empty value is never written over a real one. Same for the list:
print_compatible_printers is used only when compatible_printers is absent or
empty and it itself is not.

Found by a peer session re-testing the installed build.
2026-09-12 11:17:10 +08:00
Kris Austin e998ad968a ci: cache the Flatpak job's compiled objects with ccache (#15650) 2026-09-11 22:43:48 -03:00
Kris AustinandRaoul Rubien 081bb9a703 build: clear 41 -Woverloaded-virtual warnings, the last of the category (#15637)
Co-authored-by: Raoul Rubien <rubienr@sbox.tugraz.at>
2026-09-11 21:27:30 -03:00
Kris Austin 75f5fe22e8 build: clear 12 platform-gated warnings the x64 census could not see (#15633) 2026-09-11 21:24:37 -03:00
Kris Austin 74cf148384 fix: sequential-print arrange settings are ignored and never persisted (#15425) 2026-09-11 21:22:16 -03:00
packerlschupfer 1e76e733b7 CLI: record user overrides in different_settings_to_system for 3MF export (#15595)
* CLI: record user overrides in different_settings_to_system for 3MF export

Three sites in CLI::run wrote an empty `different_settings_to_system` column
and left a //todo:

    //todo: support user machine preset's different settings
    different_settings[filament_count+1] = "";
    //todo: support system process preset
    different_settings[0] = "";
    //todo: update different settings of filaments
    different_settings[filament_index] = "";

So a 3MF exported by the CLI does not record which keys the user actually
overrode relative to the system parent. Re-opening such a project in the GUI
then shows spurious "unsaved changes", and accepting that dialog can revert
inherited process/filament/machine values to system defaults.

The column could not be filled before because the CLI had no resolved view of
the parent preset. It does now: #15438 builds a PresetBundle for inherits
resolution, so the parent can be looked up by name and diffed against the
resolved leaf. This adds no extra loading -- the bundle is the one already
built, and the helper returns "" whenever it is unavailable or the parent
cannot be found, which is the previous behaviour.

Preset metadata is filtered out of the diff: `inherits`, the three
`*_settings_id` keys, and `compatible_printers` / `compatible_prints` and
their `_condition` variants, which have their own tracking columns
(`inherits_group`, per-slot lists) and would otherwise double-count.

A value already carried by the loaded JSON still wins for the process slot, so
presets saved with a `different_settings_to_system` field behave as before;
the computed value only fills the gap where that field is absent, which is the
case for every user preset in my datadir (0 of 47 carry it).

System presets keep an empty column: there are no user overrides to record.

* CLI: diff the filament slot before load_default_gcodes_to_config

The process and machine slots compute their different_settings_to_system column
before load_default_gcodes_to_config(); the filament slot did it after. That
call materialises absent gcode keys via option(..., true), and
DynamicConfig::diff only compares keys present in both configs -- so a gcode key
the resolved leaf did not carry would go from 'not compared' to 'compared as
empty against the parent' and land in the column as an override the user never
made.

Hoisted into a local above the call, guarded by load_filament_count > 0 so the
work is skipped exactly where it was before, and assigned at the original site.
The diff now also runs before config.erase("filament_settings_id"), which is
immaterial: cli_different_settings already filters filament_settings_id along
with the other *_settings_id keys.

This is a consistency fix rather than a demonstrated defect -- resolve_preset
merges the parent config, so in practice the gcode keys are already present on
both sides and the diff is unaffected. It removes the dependence on that
invariant, which the other two slots never had.

Reported by HanifKoh in review of #15595.
2026-09-12 04:31:12 +08:00
HanifKoh f21f062ded Cache compiled objects between CI runs (#15611)
# 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?
-->

Every CI build leg compiles the whole tree from scratch: 42 to 57
minutes of each build job, on every push and every pull request, roughly
200 runs a week. This PR caches the compiled objects with ccache so that
a run only compiles what changed since the last push to main. With a
warm cache the compile steps take 1 to 4 minutes on all six legs and a
pull-request run finishes in about 30 minutes instead of 75.

Three prerequisites landed last week and made this measurable: #15537
took `GIT_COMMIT_HASH` off the compile line, #15552 made a build without
the precompiled header work on Windows, and #15501 stopped the Flatpak
job from rebuilding its dependencies.

## Changes

### Compiler cache in `build_orca.yml`

Each build leg (Linux x86_64/aarch64, Windows x64/arm64, macOS
arm64/x86_64) restores a cache entry keyed by that leg, compiles through
`ccache` via `CMAKE_<LANG>_COMPILER_LAUNCHER`, and prints its hit
statistics at the end of the job. The macOS universal combine does not
compile and is left out.

Who writes the cache is the important part. Cache entries are immutable
and a restore always takes the newest matching one, so every save is a
new entry that is never read again once a newer one exists. Therefore:

- **Pushes save.** After a successful save, the older entries for the
same leg on the same ref are deleted, so a branch holds exactly one
entry per leg. The save comes first, so a failed save leaves the
previous entry in place.
- **Pull requests restore only.** They read main's entries (GitHub lets
a PR read the base branch's caches) and keep nothing. Saving from PRs
would add about 6 GB per run that no other run can read.

The store is therefore a flat ~7 GB (one entry per leg: Linux ~1 GB,
Windows ~2 GB, macOS ~0.6 GB), not a growing one. The
`hendrikmuhs/ccache-action` only installs and configures ccache; restore
and save go through `actions/cache` with one path string, because the
cache service only matches entries saved under the identical path and
the action spells it differently on Windows. A failed ccache install
falls back to an uncached build rather than failing the job.

### Precompiled header off when the cache is on

With `SLIC3R_PCH` left on, a warm cache hit only 19 % of compiles: Clang
stamps the PCH with the build time, CMake does not pass
`-fno-pch-timestamp`, and everything that includes the PCH (libslic3r
and libslic3r_gui, ~750 files) missed every run. `build_linux.sh -p`
exists for exactly this reason. The workflow now exports
`ORCA_EXTRA_BUILD_ARGS=-DSLIC3R_PCH=OFF` whenever ccache is enabled,
which brings the warm hit rate to 98.4–98.9 %.

The cost is on cold compiles, which are 25–60 % slower than today's PCH
build (ccache preprocesses every miss before compiling it, and the miss
compiles without PCH). Main pays this once after an image update or a
wide header change; PRs pay it only for the files their change
invalidates. A change to a header included by half the tree
(`PrintConfig.hpp`, `Preset.hpp`, `Model.hpp`) lands a run at 1.2–1.9×
today's time. `ccache`'s depend mode would remove the preprocessor pass
and is the natural follow-up.

### Includes the precompiled header was supplying on macOS

A build without PCH had never been tried on macOS. Three files used what
`pchheader.hpp` happened to include: `LocalesUtils.cpp` needs
`<sstream>` and `<iomanip>`, and `AmsMappingPopup.cpp` /
`PhysicalPrinterDialog.cpp` need `<wx/tooltip.h>`. libstdc++ and the GTK
wx port pull these in transitively; libc++ and the Cocoa port do not.
This is the macOS counterpart of #15552 and is worth merging on its own.

### `ORCA_EXTRA_BUILD_ARGS` pass-through

`build_linux.sh` already forwarded this variable to the slicer
configure. `build_release_macos.sh` now reads it into an array
(shellcheck-clean), and `build_release_vs.bat` appends it on both
configure lines, so CI can add a CMake option without editing three
scripts.

## Behaviour reviewers should know about

- **Main-only cache writes need `actions: write`** on the workflow token
to delete the previous entry. The default token already has it (the
nightly deploy steps write with it), so no `permissions:` block was
added. A fork PR's read-only token never reaches the delete step.
- **A runner image update cold-starts the cache** as configured, because
ccache keys the compiler by its mtime and every image rebuild reinstalls
it. Images updated 20260819 → 20260828 during this work, about every one
to two weeks. Keying on the compiler version string (`compiler_check`)
would avoid that; left as a follow-up since it changes every hash.
- **What is now the critical path:** the two Flatpak jobs (46–66 min,
untouched here), the orca-test-repo regression suite run inline in the
Linux job (7 min), and NSIS/PDB/MSIX packaging on Windows (6 min). Those
are the next wins.
- **Open question:** CI still drives `build_release_vs.bat`. #15552 gave
`build_win.bat` a `--cache ccache --no-pch` option; moving the Windows
job onto it would replace the batch-file change here.

# Screenshots/Recordings/Graphs

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

Compile step of each build leg, minutes. Main's numbers are from run
34324625046.

| Leg | main | cold, PCH on | warm, PCH on | cold, PCH off | warm, PCH
off | ~50 % of headers changed | 5 source files changed |
|---|---|---|---|---|---|---|---|
| Linux x86_64 | 48 | ~75 | (19 % hits) | ~110 | **2.6** | 91.3 (452/928
misses) | 3.4 |
| Linux aarch64 | 41.7 | 53.4 | 52.2 (178/927 hits) | 58.8 | **2.5** |
55.8 (452/928) | 2.9 |
| Windows x64 | 57 | 85.5 | — | ~105 | **2.4** | 76.8 (449/974) | 2.5 |
| Windows arm64 | ~45 | 64.4 | — | ~78 | **4.3** | 59.6 (450/974) | 4.2
|
| macOS arm64 | 51 | ~71 | — | — | **0.8** | 79.7 (453/947) | 0.9 |
| macOS x86_64 | ~43 | 70.2 | — | — | **1.0** | 68.1 (411/742) | 1.0 |

Warm hit rates: 98.4–98.9 % on every leg; the 11–14 misses are what any
commit changes (version stamp and its includers). The "50 % of headers"
column is a real event: #15251 and #15416 merged into main between two
runs, changing 20 headers that reach 453 of 870 translation units.

Whole run, before and after (a pull-request run; wall clock to the last
non-Flatpak job):

| Job | main (run 34324625046) | warm cache (run 34444305385) | what
remains |
|---|---|---|---|
| Windows arm64 | 50.0 | 15.7 | compile 4.3, NSIS 3.5, cache save 1.6,
deps restore 1.1, cache restore 1.0 |
| Windows x64 | 67.4 | 13.2 | NSIS 3.2, PDB 2.6, compile 2.4, MSIX 0.5 |
| Linux x86_64 | 57.5 | 12.6 | orca-test-repo regression 7.6, compile
2.6 |
| macOS x86_64 | 46.9 | 6.1 | free disk space 2.3, compile 1.0 |
| Linux aarch64 | 43.9 | 4.6 | compile 2.5, apt 0.9 |
| macOS arm64 | 54.9 | 4.4 | free disk space 1.7, compile 0.8 |
| macOS universal | 7.7 | 2.2 | signing and notarisation only on main |
| Flatpak x86_64 / aarch64 | 66.6 / 46.5 | unchanged | full compile
inside flatpak-builder |
| **Wall clock** | **75 min** | **31 min** (Flatpak excluded; 66 with
it) | macOS runner queueing now exceeds job time |

Cache storage: one generation per leg is 400–680 MB compressed at PCH
on, 0.6–2 GB at PCH off; six legs ≈ 7 GB. Without the delete step, 21
main pushes a week would hold ~80 GB of entries that are never read.

## Tests

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

- Thirteen CI runs on this PR, one change per run, with the ccache
statistics printed by every leg: cold (34336272234), warm with PCH
(34346737197), cold and warm without PCH (34352209577, 34364791732), the
macOS include fixes (34435044411, 34435968806 with `ninja -k 0` to list
every remaining file, 34439532375), all legs warm (34444305385), the
keep-only-newest cleanup (34450381312, then 34452640274 after the
Windows CRLF fix), the half-tree invalidation (34452640274), the
five-file change (34463517683, 34464720539), and this final shape
(34466377763, restore-only).
- Unit tests on all five platforms, the profile slice check, the Windows
build-script suite, Shellcheck and the universal DMG build all pass on
the cached binaries.
- The cleanup was verified against the PR's own cache scope: 44 entries
from the earlier runs reduced to exactly one per leg, on all three
platforms, after fixing the CRLF that made `gh cache delete` fail on
Windows.
- A libc++ syntax-only pass over all 1986 C++ translation units on Linux
found the `LocalesUtils.cpp` include; the two wx includes only surface
in a real macOS build and were found with a keep-going build in one
round.

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

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-12 00:46:24 +08:00
Hanif Koh 6a88f0790e Enable ccache Depend Mode
A miss used to cost a preprocessor pass for the hash and then the real
compile. With the depend mode ccache hashes the include list the
compiler reports, so a miss costs only the compile. Ninja already asks
every compiler here for that list.
2026-09-11 23:02:31 +08:00
Hanif Koh 6f90ff6e93 Allow ccache with PCH
Clang records the modification time of every input in the precompiled
header, so a fresh checkout produces a different header and every file
that includes it misses the compiler cache. -fno-pch-timestamp makes the
header reproducible, and pch_defines lets ccache cache the header itself.
The precompiled header no longer has to be turned off when the cache is
on.
2026-09-11 23:02:21 +08:00
Hanif Koh 67f77e16c3 ci: cache compiled objects between runs
Every CI leg compiled the whole tree from scratch, 42 to 57 minutes of
each build job. Objects are now cached with ccache, one entry per leg
kept on the branch that built it: a push saves the cache and drops the
previous entry, a pull request restores main's and keeps nothing.

The precompiled header is turned off whenever the cache is on: Clang
stamps it with the build time, so every file including it missed. With
it off, a warm run hits 98.5 to 98.9 % of compiles and the compile steps
take 1 to 4 minutes; a cold run costs 25 to 60 % more than before, and a
change to a widely included header lands in between.
2026-09-11 23:02:21 +08:00
mschfhandyw4z 0a3724ed2f fix(profiles): set PETG SuperTack temperatures to 60°C (#15189)
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-09-11 12:05:17 +03:00
TheLegendTubaGuyandyw4z 613dbcb21b Add Flashforge Creator 5 and Creator 5 Pro 0.25 mm nozzle profiles (#15282)
* Add Creator 5 0.25 mm nozzle profiles

* Fix Creator 5 process profile load order

* Bump Flashforge profile version

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-09-11 12:03:14 +03:00
TheLegendTubaGuyandyw4z 4ad3d11c7a Fix Qidi X-Plus 5 chamber heating profiles (#15556)
* Fix Qidi X-Plus 5 chamber heating profiles

* Restore Qidi ABS Odorless chamber temperature

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-09-11 11:52:37 +03:00
Alexandre Folle de Menezes 3331280b34 Verify and improve AI pt_BR translations (#15621) 2026-09-11 11:36:59 +03:00
Hanif Koh a6cf5cc1e3 Add the includes the precompiled header was supplying on macOS
A build without SLIC3R_PCH had never been tried on macOS. Three files
used what pchheader.hpp happened to include: LocalesUtils.cpp needs
<sstream> and <iomanip>, and the two dialogs need <wx/tooltip.h>. The
GTK port's headers and libstdc++ pull these in transitively, the Cocoa
port's headers and libc++ do not.
2026-09-11 13:02:57 +08:00
Ian Chua baa91282e3 Plugin system UI Fixes / Improvements (#15568)
this one is wxWidgets related ones. will send web dialogs related one
later

# Slicing-Pipeline management
• Matched UI components and colors
• All row clickable for editing to make it easier to click
• Add button also uses full row to make it easier to click
• Simplified code

before
<img width="411" height="211" alt="Screenshot-20260907131847"
src="https://github.com/user-attachments/assets/c6f12f40-0592-4723-ae2c-f6f179f8b819"
/>

after
<img width="420" height="238" alt="Screenshot-20260907131905"
src="https://github.com/user-attachments/assets/8bb63c76-00d8-44eb-9c03-0bfde4915c3e"
/>

<img width="470" height="327" alt="orca-slicer_F5Lszk6Mc3"
src="https://github.com/user-attachments/assets/90023ede-f5de-4b77-8409-39c800ab9618"
/>


# Plugin choice dialog
• Matched UI components and colors

before
<img width="313" height="189" alt="Screenshot-20260907132149"
src="https://github.com/user-attachments/assets/fc0ab0b1-f03a-407e-93f6-adecc2bcbb07"
/>

after
<img width="405" height="213" alt="Screenshot-20260907132203"
src="https://github.com/user-attachments/assets/4f73d7c3-6af8-4ba8-bfea-a2758288f999"
/>

# No plugin message
before
<img width="370" height="165" alt="Screenshot-20260908111523"
src="https://github.com/user-attachments/assets/fdf13dcd-ae18-4511-9936-42ea1c2fdacd"
/>

after
<img width="399" height="183" alt="Screenshot-20260908111338"
src="https://github.com/user-attachments/assets/875f5cdb-eecc-43e9-ac5d-a9d8c3708e05"
/>

# Progress dialog
this one also effects other progress dialogs as well
i was not able to recolor progress bar on previous version of wxWidgets.

before
<img width="373" height="164" alt="Screenshot-20260910163859"
src="https://github.com/user-attachments/assets/c6f408e7-da45-413e-9bd2-f987a7d20685"
/>

after
<img width="393" height="144" alt="Screenshot-20260910165844"
src="https://github.com/user-attachments/assets/a150294d-677a-42b9-98e2-c1b571b1d4ed"
/>


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

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-11 11:19:32 +08:00
Ian Chua 7a6026d3e8 Merge branch 'main' into plugin-ui-1 2026-09-11 11:19:23 +08:00
HanifKoh 8d874cdc36 Register Instance Copies and Moves with Their Plate (#15613)
# Description

Each plate keeps a registry of the instances it holds
(`PartPlate::obj_to_instance_set`). The plate's filament list
(`get_extruders`), its wipe tower preview and position clamp, the object
list grouping and the saved project's per-plate instance list all read
it. Two paths left it stale:

* `Plater::increase_instances` (the `+` key / toolbar) adds the copy to
the model but never registers it with any plate.
* `GLCanvas3D::do_move` (drag release and arrow keys) ended with
`notify_instance_update(-1, 0)`, so only instance 0 of each selected
object was re-registered. Rotate, scale and mirror already notify every
instance.

So a copy created with `+` and dragged onto another plate stayed unknown
to that plate: the project saved afterwards listed it on no plate, and a
multi-filament copy moved onto a single-filament plate drew no wipe
tower there and never got its tower position clamped. The Print side
selects instances by geometry, so the plate still sliced, which is why
this went unnoticed.

This PR

* registers new copies with their plate at creation;
* has `do_move` notify exactly the instances it moved (every instance of
the object when a part was moved in Volume mode), rather than instance 0
or all instances - notifying an instance that stayed put invalidates its
plate's slice result, so `(-1, -1)` as used by rotate would have
un-sliced every plate holding a sibling copy;
* drops the registry entry again when `decrease_instances` removes a
copy.

A second commit finishes the switch #15532 started with
`contain_any_instance_totally()`: `get_extruders_without_support()`,
`check_single_extruder_mixed_filament_risk()` and
`check_compatible_of_nozzle_and_filament()` still tested instance 0
only, so an object whose copy - not its original - sits on the plate was
skipped by all three.

No new options, no format change. The `is_new` flag is deliberately not
passed for the copies: a copy landing on a spiral-vase plate gets the
same "apply spiral mode settings?" prompt a dragged instance gets,
instead of a silent rewrite of the object's settings.

# Screenshots/Recordings/Graphs
Before:
<img width="1920" height="1080" alt="05-moved"
src="https://github.com/user-attachments/assets/3cf9f5a9-1a4e-41e8-8c57-578f849d8c29"
/>

After:
<img width="1920" height="1080" alt="05-moved"
src="https://github.com/user-attachments/assets/1b801a7e-b7cd-4ffb-bd1d-b701f90dade6"
/>


## Tests

Re-run after the rebase, both binaries driven through the same headless
harness (Xvfb 1920x1080, llvmpipe) on the same fixture: `cubeA`
(filament 1) alone on plate 1, `cubeB` (a two-part object, filaments 2
and 1) alone on plate 2, so plate 1 shows no wipe tower at load. Select
the plate-2 object, press `+`, walk the copy onto plate 1 with 36 x Left
(10 mm per press, one `do_move` each), save, slice plate 1.

Before is main `8af92214d0` - i.e. with #15532's
`contain_any_instance_totally()` already in place, so the only
difference is this PR.

* **Before:** the saved `model_settings.config` lists plate 1 with
`cubeA` only and plate 2 with `cubeB` instance 0. The copy (instance 1)
is listed **on no plate at all**, and plate 1 draws no wipe tower even
though a two-filament object is sitting on it.
* **After:** plate 1 lists `cubeA` **and** `cubeB` instance 1; plate 2
still lists instance 0. The plate-1 tower preview appears, and slicing
plate 1 succeeds with the tower actually generated - the filament panel
reports 1.10 m / 0.48 m in its Tower column over 51 filament changes,
and the G-code carries `EXCLUDE_OBJECT_END NAME=cubeB.stl_id_1_copy_0`.

Same camera and fixture on both runs, so the screenshots above are
directly comparable.
2026-09-11 11:18:36 +08:00
Kiss Lorand a49b892708 Fix bridge flow invalidation for zero-gap supports (#15626) 2026-09-10 18:23:31 -03:00
Kris Austin d127db4d99 build: clear 5 warning categories across 19 sites (#15628) 2026-09-10 18:15:39 -03:00
Kiss Lorand 0a630738f1 Fix untranslated language dialog captions (#15600) 2026-09-10 18:15:06 -03:00
Kris Austin d97dea2c41 build: clear 10 driver warnings from CGAL's fp flag pair under clang-cl (#15629) 2026-09-10 18:08:54 -03:00
yw4z a640e32a19 fix build error 2026-09-10 17:29:25 +03:00
yw4z d09c3568c5 match style of progress dialog 2026-09-10 17:02:29 +03:00
yw4z 29b3282c8b Update PluginPickerDialog.cpp 2026-09-10 15:45:00 +03:00
Ian Chua ac1ed139d7 Merge branch 'main' into plugin-ui-1 2026-09-10 20:11:44 +08:00
Ian Chua b709e3fec0 hotfix: system bundles being copied from resources folder on every startup (#15627)
# 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?
-->
#15416 introduced a bug that caused system profiles to be copied over to
the system folder in the roaming folder on every startup.

# Screenshots/Recordings/Graphs

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

## Tests

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

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

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-10 19:32:21 +08:00
Ian Chua 7e96a58770 Merge branch 'main' into hotfix/duplicate-bundle-copy 2026-09-10 19:32:05 +08:00
Ian Chua a93c6ea67b hotfix: system bundles being copied from resources folder on every startup 2026-09-10 19:29:58 +08:00
Valerii Bokhan e8d35fadd4 Fix internal bridges over Hilbert Curve/Octagram Spiral sparse infill (#15206)
* Fix internal bridges over Hilbert Curve/Octagram Spiral sparse infill

For patterns with curved/turning anchor lines (Hilbert Curve, Octagram
Spiral), the bridge_over_infill algorithm produced incorrect results:

1. determine_bridging_angle: sampling curved anchor orientations
   produced noise across all turning directions (0/90/180/270°)
   instead of a single dominant one, yielding unstable bridge angles
   with 180° spread. Fix: use the configured infill_direction + 90°
   directly, bypassing the noisy sampling. The old blind +0.25*PI
   (Hilbert) and +1/16*PI (Octagram) offsets are removed.

2. construct_anchored_polygon: curved Hilbert/Octagram anchors
   intersected each vertical scan line many times at wildly different
   Y positions, producing chaotic polygon sections — holes in random
   places, bridges over air, rotated bridges. Fix: replace the curved
   infill polylines with synthetic straight lines parallel to
   infill_direction, spaced at the real infill line spacing
   (flow_spacing / density). Lines are centered on the limiting_area
   bbox center so that after rotation they span the full bridged_area.
   Anchors are left at full bbox length (not clipped) to guarantee
   every scan line finds an anchor.

Rectilinear and other straight-line patterns are unaffected.

Known limitation: some bridge edges may still terminate over air in
edge cases where the nearest synthetic anchor line is more than one
infill spacing away from the bridge boundary. This will be addressed
in a follow-up.

* fix: anchor internal bridges to actual sparse infill

Preserve real anchors across regions and align plane-path anchor origins with printed infill. Respect lower-layer rotation templates and model alignment, and sample curved bridge boundaries more finely.

Add regression coverage for anchor alignment, bridge angles and region isolation, with Orca comments explaining the geometry constraints. Verified 175 FFF tests before the comment-only follow-up; preserve CRLF in modified files.

* Fix internal bridge support contacts and separated infill origins

Restore anchor contact after bridge smoothing and share per-body pattern origins between anchors and printed infill. Recompute origins when preparation settings change.

Cover multiline counts 1, 2 and 3 and add regressions for printed bridge support, separated infill alignment and reslicing.

* Add explicit standard headers to PrintObject tests

* test: cover surface centering when infill settings change

Verify top and bottom Archimedean Chords and Octagram Spiral paths after switching centering modes or toggling separated infills. Compare reslicing against fresh slicing and document dependent infill invalidation.

* test: preserve directional surface infill when settings change

* perf: index layer islands for connected-body detection

* test: use public print pipeline for body centering checks
2026-09-10 08:03:50 -03:00
Kris Austin 7888452666 build: clear 7 warning categories across 26 sites (#15615)
* build: clear 2 warnings - cast the NSTextField the class check already proved

mainframe_text_field is NSTextField* and was assigned a bare NSView*, which
Clang reports as -Wincompatible-pointer-types. Both assignments sit inside
if ([viewObject class] == [NSTextField self]), so the runtime type is already
guaranteed, and the line above the second one casts the same variable the same
way to call setTextColor. macOS only, since nothing else compiles this file.

* build: clear 6 warning categories from the clang-cl inventory

-Wmissing-braces (9). Aggregates whose first member is itself an aggregate.
GUID's fourth member is BYTE[8], so the trailing eight bytes take their own
braces. The others were reaching for zero-initialization with {0} and say {}
now. bbs_3mf's backup Task ends in an anonymous union, which needs braces of
its own; those braces initialize the union's first member rather than the one
named at the call site, so the RemoveBackup site says so in a comment.

-Wmacro-redefined (11). SendMultiMachinePage.hpp defines five names that
Preferences.hpp, PresetBundleDialog.hpp, ExportPresetBundleDialog.hpp and
TroubleshootDialog.hpp also define with different values, so the value in
force depended on include order. All nine of this file's DESIGN_ macros take
the SEND_ prefix it already uses for its own macros, values unchanged, so a
DESIGN_ name added elsewhere later cannot collide with it again. They read as
one page-local palette, a 900 to 400 gray ramp plus sizes, so the four with
no current readers stay: dropping them would leave gaps in a named scale. test_marchingsquares.cpp defines NOMINMAX,
which libslic3r already passes as a PUBLIC compile definition, so it takes
the #ifndef guard the other suites use.

-Wbraced-scalar-init (3). Two PushStyleVar calls resolve to the float
overload, so the braces were initializing a scalar. ConfigOptionFloatsNullable
already takes an initializer_list, so the inner braces did the same thing.

-Wmicrosoft-goto (2). Both gotos in copy_file_gui jump forward over the
initialization of size, dwRead and dwWrite, which only MSVC accepts. Those
declarations move up to join the others at the top of the function.

-Wunused-private-field (3). Every use of ColourPicker's m_clrData and
m_picker_widget is behind !defined(__linux__), so on Linux they are written
and never read; the members now carry the same guard. ParamsPanel's
m_size_move is read nowhere. Tab has its own, which is the one Tab.cpp uses.

-Wnonportable-include-path (2). BaseException.h asked for "stackwalker.h"
and the file on disk is StackWalker.h.
2026-09-10 07:39:14 -03:00
Ian Chua 6c92920aa1 fix: add opc support for ota workflow (#15416)
# 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?
-->

Addition to #14217 to support OTA updates when the zip content is an OPC
file.

# Screenshots/Recordings/Graphs

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

## Tests

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

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

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-09-10 15:54:56 +08:00
Ian Chua eb0b67740e Merge branch 'main' into fix/opc-support-for-ota 2026-09-10 15:42:14 +08:00
SoftFever 3788a19730 Publish 3MF Workflow (#15251)
# Description

This PR introduces a publish workflow for sharing selected slicer
settings in .3mf projects without exposing or overriding the recipient's
complete printer, filament, or process profiles. A published file
specifies "requirements" for a model — printer, process, and per-slot
filament requirements — while importing it preserves the rest of the
recipient's workflow.

Publish dialog (File → Publish, Ctrl+Shift+E)
- Tabbed dialog (Printer / Filament / Process) with search, Select All /
Select Visible, and DPI rescaling.
- Per-material pages expose three kinds of content: individually
selected filament keys, a Full Publish toggle that embeds the slot's
entire filament preset, and required type and color rows for the slot.
- Publishing is allowed with no settings selected (the file then carries
only identity/requirement data).
- Reuses configuration value formatting extracted into a shared
ConfigValueFormatter.

Export
- Published 3MFs carry published, published_keys, and
published_material_keys metadata.
- A minimal export mode serializes only the selected values, material
identity, and plate geometry, omits embedded preset files, and masks
full-publish vector options to the author's slot so unrelated slot data
never leaks into the file.

Loading
- Only author-selected settings are applied; the recipient's presets are
otherwise preserved and structural/non-publishable keys are protected
(skipped keys are reported).
- Material settings match by filament ID, type, vendor, and slot.
Per-slot type requirements keep a matching receiver material, replace a
mismatched slot with the first same-type library filament (with a
notification), and fall back to a temporary embedded preset or skipped
keys when no match exists. Required colors are applied regardless of the
type match.
- A published 3MF loads as a new project: its path is not adopted as the
project filename (Save prompts instead of overwriting the shared file),
the title reverts to "Untitled", and the published metadata is stripped
so a later save produces a normal 3MF.
- Customized-preset and modified-G-code warnings are suppressed, since
the author's presets and G-code are not applied.
- Previously published 3MF files continue to load through the existing
matching path.

# Screenshots/Recordings/Graphs
<img width="1405" height="734" alt="publish_dialog"
src="https://github.com/user-attachments/assets/96b833c1-2b86-4c09-92b4-a4471a567e62"
/>


[publish_dialog_settings.webm](https://github.com/user-attachments/assets/acf22dd9-ae9b-4a58-b77d-8c2d9ffbc7a5)


## Tests
Added tests covering:
- Coverage for export slot masking, metadata round-trip,
type-match/replace/fallback semantics, slot growth, and skipped-key
reporting.
2026-09-10 15:35:17 +08:00
Ian Chua 0acf76780f Merge branch 'main' into plugin-ui-1 2026-09-10 13:14:51 +08:00
Hanif Koh 8c8e6fd069 Let the Remaining Per-Plate Object Scans See Every Instance
get_extruders() and estimate_wipe_tower_size() already ask whether any
instance of an object sits on the plate; the support-less extruder scan, the
mixed-filament risk check and the nozzle/filament compatibility check still
tested instance 0 only, so an object whose copy - not its original - was
placed on the plate was skipped by all three.
2026-09-10 12:39:55 +08:00
Hanif Koh a5d0d33df3 Register Instance Copies and Moves with Their Plate
An instance added with "+" was never registered with the plate it landed on,
and moving an instance only re-registered instance 0 of its object, so a copy
dragged onto another plate stayed unknown to that plate's registry. The
plate's filament list, its wipe tower preview and the position clamp all read
that registry, so a multi-filament copy moved onto a single-filament plate
drew no tower there and its tower position was never clamped.

Register new copies at creation, notify exactly the instances a move changed
(every instance of the object when one of its parts moved), and drop the
registry entry when a copy is removed again.
2026-09-10 12:39:55 +08:00
Lam Wei Lun 9e4f8aac80 Merge and fix conflicts 2026-09-10 12:11:20 +08:00
Kris Austin e296d5daac build: fix 9 defects found by clang-cl warnings (#15583) 2026-09-09 19:13:05 -03:00
TheLegendTubaGuy dbeef900cc Fix Windows build test midnight race (#15616) 2026-09-09 14:18:21 -03:00
Kris Austin f18eb21b82 build: clear 11 single-site clang-cl warning categories (#15584)
build: clear eleven single-site clang-cl warning categories

Each of these is the last site left in its category, and every one is the
compiler saying it cannot tell what the code meant. Nothing here changes
defined behavior.

- OrcaSlicer_app_msvc.cpp printed a DWORD with %d
- StackWalker.cpp ran delete[] through an LPVOID
- ToolOrdering.cpp used a bare ; as a deliberate skip loop's body
- WipeTower.cpp had finish_block_tcr = finish_block_tcr, so the branch that
  reached it did nothing. Folding the condition into the enclosing if leaves
  the other branch untouched
- GCodeProcessor.cpp had an else binding to the inner if while the outer if
  carried no braces
- AmsMappingPopupUpdate.cpp wrote >= 1 || <= 3 where its own comment says &&
- CalibrationWizardPresetPage.cpp left max_decimal_length unset through a
  pair of conditions that cover every value but not visibly so
- DevManager.cpp bound map elements to pair<K, V> rather than
  pair<const K, V>, copying every one
- SyncAmsInfoDialog.cpp had extraneous parentheses around a comparison
- Http.cpp had if (speed > 0.01) speed = speed;. speed now starts at 0 as
  well, because curl_easy_getinfo leaves the target untouched when it fails
  and the value reaches Progress either way
- SnapmakerPrinterAgent.cpp truncated npos into an unsigned int, so the
  != npos guard was always true. A colour with no # still yields 0, because
  the wrap produced 0 as well

Nine categories go to zero. -Wtautological-overlap-compare and
-Wsometimes-uninitialized reach zero when #15583 merges their second site.
2026-09-09 12:01:19 -03:00
Lam Wei Lun 0927a5d5e7 Merge main 2026-09-09 19:12:23 +08:00
Kris Austin 913afc51b7 build: clear 3 warnings - lambda captures that are not required (#15596)
config_substitution_rule is a const enum with a constant initializer, so a
lambda can read it without capturing it. Capturing it explicitly is what
-Wunused-lambda-capture reports.

The category was taken to zero by #15417 and merged on 2026-09-02. These
three sites arrived on 2026-09-08 in bcb4f17d9a, "fix(cli): resolve inherited
presets through vendor manifests" (#15438). All three lambdas still read the
value, which needs no capture and is unchanged.
2026-09-09 08:07:54 -03:00
Kris Austin fa3dbfcc6f fix: clear 1 warning - report the real error when a Windows G-code export fails (#15582)
fix: report the real error when a Windows G-code export fails

copy_file built its failure message as "Error: " + errCode. Adding a DWORD
to a string literal is pointer arithmetic, not concatenation, so the pointer
lands errCode bytes into an 8-byte literal and runs past its end for any code
above 7. std::string then calls strlen on it and throws length_error, and the
catch(...) in BackgroundSlicingProcess::finalize_gcode replaces the diagnosis
with "Unknown error occurred during exporting G-code."

Every code a user is likely to hit is past the end: write-protected media is
19, no media 21, a full disk 112, and a destination held open by another
program 32. Codes 1 to 7 stay inside the literal and produce a truncated
message instead. So the "Maybe the SD card is write locked?" text has not
been reachable on Windows since this path was added in #2923.

Now that it is reachable, that guess only fits removable media, so it is
conditional on m_export_path_on_removable_media. The existing string is
untouched and keeps its 23 translations; the fixed-drive case adds one string.
2026-09-09 07:55:19 -03:00
Kris Austin 46180c3f54 build: clear 3 warnings - a precedence bug, an arm64-only pragma, and a CLI error label (#15601)
* build: clear 2 warnings - a precedence bug and an arm64-only pragma

Both were found by promoting every warning to an error across the CI matrix.
Neither is reported by clang-cl on Windows x64, which is the configuration the
#15374 inventory measures.

LineSplit.hpp reserved with path.size() + closed ? 1 : 0. Addition binds
tighter than ?:, so that parses as (path.size() + closed) ? 1 : 0, and the
function returns early when path is empty, so the condition is always true and
the reserve is always 1. The vector then grows by reallocation instead of
reserving once. Output is unaffected, since reserve only sets capacity.
Reported by Clang on Linux, macOS and Flatpak; GCC does not diagnose it.

Int128.hpp declared #pragma intrinsic(_mul128) under _WIN64, which is defined
on Windows arm64 as well, where that x64 intrinsic does not exist. The call
site at line 190 is already guarded on _M_X64 and carries a comment saying
ARM64 has no _mul128, so the pragma now uses the same guard. x64 is unchanged
because _M_X64 is defined there.

* build: clear 1 warning - CLI error label prints 1 instead of a name

construct_assemble_list is a function, so streaming it converts the function
pointer to bool. When that catch block fires the CLI prints "1: <message>".

This line was already fixed in #5963 and came back in the wholesale revert of
that PR two weeks later, which was reverting an auto-orientation regression
somewhere in its 184 files. The string is restored exactly as it was merged
then.
2026-09-09 07:51:10 -03:00
Kris Austin a3c9041c10 build: clear 2 warnings - sites GCC reports and Clang does not (#15597)
Both are in our own code and neither shows up in a clang-cl or clang census,
so the Windows and CI matrices have never reported them.

FillRectilinear.cpp draws two trapezoid diagrams whose lines end in a
backslash, which continues a // comment onto the next line. GCC calls that a
multi-line comment. The diagrams are now block comments, where the rule does
not apply, and the drawings are unchanged.

CutObjectBase has a user-provided operator= and a virtual destructor, either
of which deprecates its implicitly generated copy constructor. bbs_3mf.cpp
copies the type through CutObjectInfo. The copy constructor is now declared
and defaulted, leaving the class with no implicit copy member. Move
operations were already suppressed by the user-provided operator=, so nothing
changes there.
2026-09-09 07:45:25 -03:00
Kris Austin c70a613548 build: clear 8 warnings - && inside || without parentheses (#15587)
Every edit makes the precedence the compiler already applies explicit. None
of them regroups an expression, so behavior is unchanged at all eight sites.
Strip parentheses and whitespace from the diff and the token stream matches.

GCodeProcessor.cpp:1472 tests == where the symmetric clause below tests !=,
which reads like a typo and is not one. A comment now explains why.

OrcaSlicer.cpp:4760 was the only judgment call. Its leading !is_seq_print is
bare while both operands are parenthesized, so the written form matches what
the compiler does. Kept rather than guessed at.
2026-09-09 07:43:08 -03:00
Kris Austin 10c123f2aa build: clear 6 warnings - data passed as ImGui format strings (#15585)
ImGui::Text and ImGui::TextColored take a printf format, so these six sites
passed data where a literal belonged. A % in that data reads a vararg that
was never supplied.

Three sites in GLCanvas3D's paint toolbar passed filament text, which comes
from the filament preset config and is user-editable. Two more passed
translated strings, where a % in any of the 23 catalogs does the same.
GLGizmoSimplify passed its progress label.

That label had been built with an escaped %% because it was being used as a
format string. Passing it as an argument instead needs a single %, so it
still renders as "42%".

ToUTF8() returns a buffer class, which converts to const char* for a named
parameter but not through varargs, so those two sites need .data().

GLGizmoSimplify.cpp:335 is unchanged, because _u8L("%d triangles") is passed
with a real argument and has to stay a format string.
2026-09-09 07:41:51 -03:00
d112a0af29 Fix two stack buffer overflows in ADMesh stl_read (unbounded solid name + MW metadata parse) (#15594)
Fix two stack buffer overflows in ADMesh stl_read (solid name + MW parse)

Bound the ASCII-STL solid-name fscanf scanset to the buffer size, and bound
the OrcaSlicer-specific "MW" metadata sscanf %s conversions to their buffers:

- fscanf(fp, " solid %[^\n]", solid_name)  -> %255[^\n]   (solid_name[256])
- sscanf(mw_position+3, "%s %s %s", ...)   -> %15s %127s %15s
  (version_str[16], model_id_str[128], country_code_str[16])

Both are reachable by opening a crafted .stl and overwrite saved stack state
(instruction-pointer control on the no-PAC arm64 macOS build). The solid-name
defect is inherited from the shared ADMesh loader (bambulab/BambuStudio#12153);
the MW parse is OrcaSlicer-specific.

Co-authored-by: Kevin Finisterre <kfinisterre@KevinsMacStudio.localdomain>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 07:39:08 -03:00
Lam Wei Lun a4c399d250 Merge main and resolved conflicts 2026-09-09 11:05:52 +08:00
yw4z 8740696e75 init 2026-09-07 13:16:31 +03:00
Ian Chua 9df23cab62 fix: opc updates being discarded 2026-09-04 14:59:53 +08:00
Lam Wei Lun c6ab725584 Fixes issue with mixed filament being loaded into a real slot 2026-09-04 14:41:20 +08:00
Lam Wei Lun bbb4681b32 Merge branch 'main' into publish_3mf 2026-09-04 12:24:57 +08:00
Joseph Robertson c96945490b Belt Printer Sept 1 Rebase (#15526)
Also a bunch of bug fixes, thanks to the Baby Belt community for finding
issues!
2026-09-03 13:35:23 -05:00
Ian Chua 07dafaf299 fix: default enable-ota flag and fixing startup missing vendor 2026-09-03 17:13:09 +08:00
Ian Chua c5952c3308 Merge branch 'main' into fix/opc-support-for-ota 2026-09-03 14:54:51 +08:00
Lam Wei Lun 904796cf24 Correctness fixes. Remove hard-coded appends for printer settings 2026-09-03 14:12:51 +08:00
Lam Wei Lun bcff39661c Comments and dead code cleanup 2026-09-03 13:40:58 +08:00
Lam Wei Lun 8c7160079e Revert clang-format changes then reapplied chagnes for Plater/PresetBundle. Fixed extruder masking incorrectness. Fix warning notifications stacking 2026-09-03 13:17:13 +08:00
Lam Wei Lun 686b7f66ac Merge main and fixed conflicts 2026-09-03 10:55:01 +08:00
Lam Wei Lun 9b8d93bef2 merge main 2026-09-02 18:09:29 +08:00
Lam Wei Lun 85f14673f0 Only show the currently in used filaments for publishing 2026-09-02 18:09:23 +08:00
Lam Wei Lun e17f932aff Update Publish Guide Links 2026-09-02 17:22:06 +08:00
Lam Wei Lun f1719b5580 Fixes mixed filament growth bug. Fixes unit test 2026-09-02 14:29:15 +08:00
Lam Wei Lun 4654d24f6f Add a OrcaSlicer badge in the thumbnail preview for published 3MF projects. Add a visual indicator in the publish dialog to show that something in the section is toggled 2026-09-02 12:38:27 +08:00
Lam Wei Lun f5984e7523 Merge main 2026-09-02 11:43:04 +08:00
Lam Wei Lun f85902b0ce Preserving state of publish dialog 2026-09-02 10:45:47 +08:00
Lam Wei Lun d00af63a61 Removes identity matching for when slots need to grow without writing type key 2026-09-01 18:18:33 +08:00
Lam Wei Lun 6985075c5b Change the PUB badge to OrcaSlicer's color 2026-09-01 18:17:28 +08:00
Lam Wei Lun 90d5654db9 Shifted the guide links to the bottom left of the publish dialog 2026-09-01 17:56:47 +08:00
Lam Wei Lun 7133d6b225 Added wiki and youtube guide link as placeholders. Add to recently opened in home screen after publishing. Show PUB badge. Add .published as a file save name hint. 2026-09-01 16:59:25 +08:00
Lam Wei Lun 49c4b09db6 Show alias instead of full name in publish dialog 2026-09-01 14:56:03 +08:00
Lam Wei Lun 174d23e22f Fixes windows light mode text issues 2026-09-01 12:40:41 +08:00
SoftFever 7c063b2933 Merge branch 'main' into publish_3mf 2026-09-01 12:20:48 +08:00
Lam Wei Lun 6fef33cdb3 Merge main 2026-08-31 18:01:31 +08:00
Lam Wei Lun 684cd37f8d UI Fixes and Polish 2026-08-31 18:01:15 +08:00
Ian Chua b585d9f3d9 feat: add new profiles over ota & updater url via app config 2026-08-31 17:45:29 +08:00
Lam Wei Lun 21c0bf795a Fixes indentation on the Full Publish toggle 2026-08-31 16:19:10 +08:00
Ian Chua c4fea8ad24 gate workflow with enable_ota flag in app config 2026-08-31 15:48:13 +08:00
Lam Wei Lun a6483e79b2 Fix ImGui crash 2026-08-31 14:50:15 +08:00
Lam Wei Lun fff0efdb27 Fixes filament import bug 2026-08-31 13:57:21 +08:00
harrierpigeon e5d4ad2aa7 Merge remote-tracking branch 'upstream/main' into haryr/aug25-rebase
# Conflicts:
#	src/libslic3r/Support/TreeSupport.cpp
2026-08-30 23:31:48 -05:00
harrierpigeonandClaude Opus 5 4fab8d0b39 fix: adapt belt sub-layer group emission to upstream m_writer unique_ptr
Upstream changed GCode::m_writer from a value to std::unique_ptr<GCodeWriter>;
the belt mixed_sub_layer_groups path still used value syntax and did not compile.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ChxXYc6Dp46qAN9c2rQCe
2026-08-30 23:31:21 -05:00
harrierpigeon e341a9b84e Merge remote-tracking branch 'upstream/main' into haryr/aug25-rebase
# Conflicts:
#	src/libslic3r/GCode/ToolOrdering.cpp
#	src/libslic3r/Print.cpp
#	src/libslic3r/PrintApply.cpp
#	src/libslic3r/PrintConfig.cpp
#	src/slic3r/GUI/Tab.cpp
2026-08-30 23:30:51 -05:00
Lam Wei Lun 6ffb20a7f5 Update translations. Change import filament message to warning instead. Change messages to be simpler 2026-08-31 12:08:08 +08:00
Lam Wei Lun 06517e623f Fixes issue where user imports a 3MF file where filament slots exceeds the maximum number of slots that user has on its printer 2026-08-31 10:46:23 +08:00
Ian Chua d9fa43f1d7 fix: add opc support for ota workflow 2026-08-28 19:40:31 +08:00
Lam Wei Lun a62db72e02 Publish 3MF: import-side hardening and test coverage
Validate mixed-filament definitions during the published material pass: definitions whose components reference slots that do not exist or hold other mixed filaments, or that carry fewer than two components, are reported through the shared skipped_keys channel instead of shipping a mix the GUI integrity check would only flag later.

Fix the slot-limit exhaustion report being silently dropped: it wrote to published_config->skipped_keys, which the pass's final move-assignment from the local vector clobbers. All rejections now go through the local.

Remove the unreachable persist branch from add_detached_preset: no caller passes save_to_project=false, so the parameter is gone and the copy is always project-embedded.

Tests: cover the exhaustion path, the new definition validation, the identity-tier matching matrix (including substitute reporting), the structural-key denylist, whole-vector size-mismatch skips, relocation payload degradation, the "(Published 2)" uniquify chain, mixed blend colours staying out of shared preset configs, and duplicate-slot last-wins. Also fix the legacy-3mf scenario passing vacuously behind an if-guarded assertion. All existing published/3mf tests pass unchanged.
2026-08-28 15:24:03 +08:00
Lam Wei Lun 1c09ef14a5 Update translations. Update warning messages to be more user friendly. Update gradient color chips in publish dialog 2026-08-28 12:57:00 +08:00
Lam Wei Lun 25b008ba3e Merge main 2026-08-28 10:38:36 +08:00
Lam Wei Lun 28b325805b Fixed issues with remapping mixed filaments when importing published 3MF 2026-08-28 10:37:54 +08:00
Lam Wei Lun 23b98e2ca5 Initial commit for warning popup when required filaments are not selected for mixed filaments 2026-08-27 17:04:27 +08:00
Lam Wei Lun 20e5a7e042 Merge main 2026-08-27 14:11:41 +08:00
Lam Wei Lun 76d9b8bac0 Publish 3MF: support mixed filaments and per-extruder slot selection
- Publish mixed-filament slots as whole units: serialize the filament_mixed_* definition into project_config on import, grow the receiver's parallel arrays in lockstep, and report unappliable definitions as skipped instead of dropping them silently

- Per-extruder printer selection: one inner tab per extruder, rows keyed by full "#N" ids; single-extruder receivers collapse variants onto their slot (first applied, rest skipped), multi-extruder receivers override element-wise

- New per-slot "Enable" toggle gating what gets published; enabling a mix auto-enables + Full Publishes its components

- Mixed page previews: fixed-size ratio bar, ternary triangle (3 components) and Material Ratio vs Model Height graph (gradients), always visible regardless of Enable

- Tab strip shows full swatch compositions with adjustable spacing; barycentric helpers shared via FilamentBitmapUtils
2026-08-27 13:17:19 +08:00
Lam Wei Lun ce277ebbf5 Merge main + clean up code + fix missing include 2026-08-26 16:02:16 +08:00
Lam Wei Lun feb0e479fa Published flag hardening. Better error handling path for when publish fails (unlikely) 2026-08-26 13:06:24 +08:00
Lam Wei Lun 036c4004f7 Fixes publish dialog filtering issue 2026-08-26 12:33:31 +08:00
Lam Wei Lun cc267055e1 Use proper floating point comparison functions in publish unit test 2026-08-26 11:33:50 +08:00
harrierpigeon a7bc054974 docs: authorize private build notifications 2026-08-25 10:27:21 -05:00
harrierpigeon 30351d40e1 tests: adapt belt brim coverage to upstream validation 2026-08-25 10:27:08 -05:00
harrierpigeon d289478618 Merge remote-tracking branch 'upstream/main' into haryr/aug25-rebase
# Conflicts:
#	resources/profiles/Custom.json
#	src/libslic3r/Brim.cpp
#	src/libslic3r/GCode.cpp
#	src/libslic3r/GCode.hpp
#	src/libslic3r/Preset.cpp
#	src/slic3r/GUI/3DScene.cpp
#	src/slic3r/GUI/ConfigManipulation.cpp
#	src/slic3r/GUI/GLCanvas3D.cpp
#	src/slic3r/GUI/Plater.cpp
2026-08-25 06:50:46 -05:00
Lam Wei Lun e1a79c4112 Code cleanup and renamed published_* flags to orca_published_* flags to be less generic 2026-08-25 17:37:04 +08:00
Lam Wei Lun 51b646efcf Better safety if publish workflow crashes. Cleanup on Button 2026-08-25 16:40:18 +08:00
Lam Wei Lun 795514900d Fix Windows paint on resize issue. Automatically resize to fit tabs and button content 2026-08-25 15:18:38 +08:00
Lam Wei Lun d4cb739b8b Dead code removal and comment cleanup 2026-08-25 14:17:56 +08:00
Ian Chua b8e0f9cdfb Merge branch 'main' into feat/plater-notification-api 2026-08-25 13:45:57 +08:00
Lam Wei Lun 0ba7bae794 Fix conflicts. Update unit tests 2026-08-25 13:18:00 +08:00
Lam Wei Lun c2357fdac6 Merge main 2026-08-25 12:34:48 +08:00
Lam Wei Lun 52aa5a52e9 Published 3MF: import Full Publish materials as standalone detached presets inside the project 2026-08-25 12:27:45 +08:00
Joseph Robertson 306e379a2a Multicolor Belt Support & various bug fixes (#15361)
# Description
lots of small bugfixes, and multicolor belt support.
[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-08-24 23:23:47 -05:00
Lam Wei Lun 3ed1f64f2e Merge main 2026-08-24 14:19:49 +08:00
Lam Wei Lun 2aff31c07a Published 3MF: match filament slots by exported identity without a Type requirement 2026-08-24 13:19:57 +08:00
Lam Wei Lun 28b1f3ab03 Merge main 2026-08-21 19:05:15 +08:00
Lam Wei Lun 36e5d4770b Code cleanup and fixes 2026-08-21 19:04:10 +08:00
Lam Wei Lun 95e392e206 Code cleanup 2026-08-21 18:36:30 +08:00
Ian Chua 790a010615 feat: plater notification API for plugins 2026-08-21 14:40:35 +08:00
Lam Wei Lun a5033afaf8 UI cleanup and translations updated 2026-08-21 14:26:20 +08:00
Lam Wei Lun a0e95abebe Fix unit test: 2026-08-21 13:26:17 +08:00
Lam Wei Lun aa3ce35683 Published 3MF: silent geometry-only fallback in old versions via tag/config-less export 2026-08-21 13:00:32 +08:00
Lam Wei Lun 19a0407560 Merge main 2026-08-21 12:28:24 +08:00
Lam Wei Lun 4c8e851b46 Direct name matching for filament import flow fixed. Merge main and conflicts resolved 2026-08-20 14:44:40 +08:00
Lam Wei Lun aeaa3c5d66 Bug fix for perfect name matching 2026-08-19 16:57:45 +08:00
Lam Wei Lun 2e0ef11b0f Merge from main and fix merge conflicts 2026-08-19 16:16:21 +08:00
Lam Wei Lun 1b770e8638 Bug fixes and test cases for import filament of published 3MF. Update translations 2026-08-19 15:47:28 +08:00
Lam Wei Lun 36a8811cc0 Change label to "Publish 3MF..." 2026-08-18 16:29:27 +08:00
Lam Wei Lun b82d4f3af8 Fix issues with filament import when receiver has fewer filament slots than the author's 3MF format 2026-08-18 15:11:00 +08:00
Lam Wei Lun 6aab2b22a1 Merge 2026-08-18 13:50:07 +08:00
Lam Wei Lun 6c429059e0 Extend Publish workflow with full-filament and type/color requirements
Per material slot, the Publish dialog can now embed the entire filament preset ("Full Publish") and require a curated filament type and/or colour:

- On export, full-publish vector options are masked to the author's slot so unrelated slot data never leaks into the published file.

- On load, slots are matched by the published type: a match keeps the receiver's material (full dumps ignored, partial keys applied); a mismatch replaces the slot with the first visible same-type library filament, falling back to a temporary embedded preset or skipped keys when none exists. Required colours apply regardless of the type match.

- The receiver's slot count grows only to the highest published slot.

- Published 3MFs load as a new project: the file's path is not adopted as the project filename, published metadata is stripped from the model, and the file is added to recent projects.

- Notifications list replaced slots, and the edited filament preset is refreshed so applied values surface in the GUI.

- Dialog: "Full Publish" toggle replaces the material opt-in and select-all headers; new Color/Type requirement rows with swatches.

- Add Ctrl+Shift+E shortcut for the Publish dialog (menu, key handling, and the keyboard shortcuts dialog).

- Tests for export slot masking, metadata round-trip, replacement semantics, slot growth, and skipped-key reporting.
2026-08-18 13:49:10 +08:00
Lam Wei Lun 2b18744cc2 Allow model to be Published without any settings modified 2026-08-17 17:50:54 +08:00
Lam Wei Lun eaaffd2706 Merge from main 2026-08-17 13:03:29 +08:00
Lam Wei Lun 92123cdc2c Add filament color next to tab button in filament setting 2026-08-14 16:50:33 +08:00
Lam Wei Lun 76ec2f10c6 Switch to a Tab layout for the Publish dialog 2026-08-14 16:19:46 +08:00
Lam Wei Lun 99db5cca38 Renamed to Publish instead of Publish Settings 2026-08-14 14:00:20 +08:00
Lam Wei Lun d124e1ccbc Update unit test 2026-08-14 13:41:38 +08:00
Lam Wei Lun 96f5a23387 Only serialize selected published settings. Minor cleanup 2026-08-14 12:53:44 +08:00
Lam Wei Lun b488067f82 Merge from main 2026-08-14 10:50:24 +08:00
Lam Wei Lun b280ab555c Initial Commit for Publish Settings workflow 2026-08-14 10:49:49 +08:00
harrierpigeon 3d11b60e71 Harden belt purge tower replanning 2026-08-08 20:14:52 -05:00
Joseph Robertson e8597fe942 Merge pull request #61 from HarrierPigeon/belt/purgeTower
Add Purge Tower and Finalize Multicolor Support
2026-08-08 18:59:00 -05:00
harrierpigeon 99ee8893cd Fix belt purge tower activation and placement safety 2026-08-08 17:14:26 -05:00
harrierpigeon ee3e014f02 allow belt purge to skip unnecessary purge volume 2026-08-08 16:35:55 -05:00
harrierpigeon 3d270c2aa7 workable belt purge, via N-1 individual "purge objects" 2026-08-08 16:35:55 -05:00
harrierpigeon 5ea6ccc56a cleanup, early purge tower stop if no longer necessary 2026-08-08 16:35:55 -05:00
harrierpigeon bcfb09481c pull purge tower into its own files, make purge tower semi-transparent like other purge towers 2026-08-08 16:35:55 -05:00
harrierpigeon c80f1ab312 cancel top of purge tower early if no extra parts to print 2026-08-08 16:35:55 -05:00
harrierpigeon 131b61b726 auto purge tower height calculation works 2026-08-08 16:35:55 -05:00
harrierpigeon d367bcef92 extra height compensation 2026-08-08 16:35:55 -05:00
harrierpigeon 79c93733d3 purge tower additional compensation 2026-08-08 16:35:55 -05:00
harrierpigeon 7cc50d750c automated placement works 2026-08-08 16:35:55 -05:00
harrierpigeon 62d8f22f52 purge tower still centered on X max 2026-08-08 16:35:55 -05:00
harrierpigeon 60e9ee26c9 strategy incremental 2 2026-08-08 16:35:55 -05:00
harrierpigeon 854dae8dd2 strategy incremental 2026-08-08 16:35:54 -05:00
harrierpigeon ec4e9717d3 Part Two: Functional Results 2026-08-08 16:35:54 -05:00
harrierpigeon 88726d76e8 Purge tower part 1 2026-08-08 16:35:54 -05:00
Joseph Robertson 39b087d6ea fix non 45 degree slicing methods (#15181)
# Description
During the UI/UX improvements about a month ago, I got the transforms
wrong, and slicing at anything other than a 45 degree angle was
affected.

Validated on a baby belt pro at 30 & 45 degrees.


[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-08-08 12:37:17 -05:00
harrierpigeon 8b2e28817d fix non 45 degree slicing methods after regression created while cleaning up UI 2026-08-08 12:33:41 -05:00
Joseph Robertson ac9b5433b7 Belt printer: regression fixes + Belt Printer Brims (#15155) fixes (#15156)
## Summary

Fixes for the `belt-printer` branch ahead of upstreaming, in two groups
(10 commits). Targets `belt-printer` (not `main`) since group 2 fixes
the not-yet-merged Belt Printer Brims feature.

Every fix keeps non-belt (and brim-disabled) output unchanged; belt-only
behavior is corrected. All changed translation units and the two test
files were type-checked (`-fsyntax-only`); a full build + `ctest` still
needs to run in an environment with current deps.

## Group 1 — pre-existing belt-printer regressions

- **[HIGH] BuildVolume belt state not reset when leaving belt mode** —
toggling belt off (or switching belt→normal with matching bed geometry)
left the `BuildVolume` with `m_is_belt_printer=true` and inflated Y
bounds, so out-of-bounds objects were treated as printable on a normal
printer.
- **[HIGH] `GCodeProcessorResult::reset()` didn't clear belt fields**
(`belt_tilt_angle`, `belt_z_origin`, `preslice_remap_*`) — a reused
result corrupted a normal print's start-gcode preview Z.
- **[LOW-MED] `TreeSupport::drop_nodes`** — restored the single critical
section around node invalidation (the two `valid=false` writes had been
moved outside the mutex on the shared tree-support path); removed an
unused local.
- **[LOW] Support overhang hot paths** — avoid unconditional lower-layer
polygon copies when there is no build-plate tilt (`SupportMaterial`,
`TreeSupport3D`); untilted output matches upstream exactly.
- **[LOW] Render loop** — hoisted the frame-invariant slope
`up_direction`/`normal_z` (and their per-volume config lookup) out of
the per-volume loop.
- **[LOW] FDM-support "select by angle"** — restored the exact upstream
threshold when the build plate is untilted (the generalized form
differed for non-uniformly-scaled objects); tilted-gravity form kept
only under tilt.
- **[LOW] Printer tab tilt sync** — only clears the belt-derived
`build_plate_tilt` on a genuine in-place belt→off toggle (tracked,
seeded on preset load), no longer wiping a manually-set tilt.
- **[LOW / opt-in] Axis-remap G-code emission** — always emit full XYZ
under an active `gcode_remap_*`, apply the remap on all base
`travel_to_xyz` destinations, fall back to a linear lift for spiral/arc
under remap, sync `set_axis_remap` each export; fixed belt first-layer
travel speed. Identity/default output unchanged.

## Group 2 — Belt Printer Brims (#15155) fixes

- **[CRITICAL] Dropped brim at first belt contact** — a coincident brim
band on an object layer with no extrusion pass (zero-extrusion leading
slice, or belt support below the Z=0 floor with no coinciding object
extrusion) was never emitted. Now each coincident band's brim filament
is registered in `ToolOrdering`, each band is emitted exactly once in
its brim-filament pass, and an end-of-layer orphan sweep emits any band
whose object layer produced no visit.
- **[Multi-extruder] Wrong tool / double emission** — apron and
coincident bands now print once, in the correct brim-filament pass,
brim-first (were previously emitted with the active tool and could
double-emit per filament plan). Single-extruder / single-object output
is byte-identical apart from the previously-dropped bands now printing.
- **Inner-only predicate** — `has_belt_brim()` no longer reports a brim
(and no longer rejects the prime tower / spiral vase) for `inner_only` +
`brim_width=0` + leading/extra > 0, which produces no inner geometry;
mirrored in `wants_brim`.
- **ToolOrdering raft-gap comment** — clarified why raft-gap synthesis
is suppressed for all belt printers (belt has no rafts;
sub-object-bottom layers are apron / belt-support-below-floor /
lead-in). No behavior change.
- **Tests** — deterministic coverage: brim present at first belt contact
(support on/off), brim-before-perimeters once (no drop/double), single-
and multi-extruder tool selection with no doubling, multi-object
per-filament ordering, inner-only+leading-only not rejecting prime
tower/spiral, and inner-ring / leading-edge-only geometry units.

## Testing

- `-fsyntax-only` passes for all 16 changed source TUs + 2 test TUs
against this branch.
- Please run the full build and `ctest -R 'SkirtBrim|BeltBrim'` before
merging.

## Known follow-up (out of scope)

`extrude_arc_to_xy` does not remap its I-J center, so arc-fitted
*extrusions* under standalone axis-remap would be geometrically wrong —
a separate fix if that combination is supported.

Opened as **draft**.
2026-08-06 17:38:11 -05:00
harrierpigeon a453cb1eba tests: cover belt-brim first-contact emission, tool selection, inner/leading-edge, and predicate (E)
Deterministic tests for: coincident brim at first belt contact not dropped
(C), single- and multi-extruder brim tool selection with no doubling (B),
multi-object apron ordering, inner-only+leading-only not rejecting prime
tower/spiral (D), and inner/holed + leading-edge-only geometry.
2026-08-06 15:40:04 -05:00
harrierpigeon 1bd3404c03 Fix belt brim emission: dropped first-contact bands, tool selection, inner-only predicate (A,B,C,D)
- Emit coincident belt_brim_by_layer bands even when the leading object layer
  has no InstanceVisit (zero-extrusion lead-in / no coinciding support), so the
  brim at first belt contact is no longer dropped.
- Register each coincident band's brim filament in ToolOrdering and emit each
  band exactly once, in its brim-filament pass; emit ordinary-layer aprons in
  the brim pass before object extrusion (correct tool, brim-first) instead of
  with whatever tool was active.
- has_belt_brim(): inner-only brims need brim_width>0 (leading/extra produce no
  inner geometry), fixing spurious prime-tower/spiral rejection; mirror in
  wants_brim. Single-extruder/single-object output is unchanged except
  previously-dropped bands now print.
2026-08-06 15:40:04 -05:00
harrierpigeon c1a90fc451 Fix: correct axis-remap G-code emission and belt first-layer travel speed (B2, B3)
- BeltGCodeWriter::travel_to_xyz final branch used config.travel_speed
  instead of the computed first-layer-aware travel_speed.
- extrude_to_xyz decided emit_xyz vs emit_xy from pre-remap Z; emit full
  XYZ whenever an axis remap is active so remapped machine-Z is never
  dropped.
- base travel_to_xyz now applies apply_axis_remap() on all emitted
  destinations (standalone remap on non-belt printers was unremapped).
- spiral/arc travels fall back to normal linear lift under active remap
  (endpoint-only remap can't preserve arc plane/I-J).
- set_axis_remap() is now synced unconditionally each export to avoid a
  reused writer retaining a stale non-identity mapping.
2026-08-06 14:26:45 -05:00
harrierpigeon 7fc86db5f0 Fix: only clear belt-derived build_plate_tilt on genuine belt->off transition (R8)
update_fff() zeroed any build_plate_tilt matching the dormant belt-derived
tilt (default X/45) within 0.01, wiping a legitimate manual tilt on a
non-belt tilted-bed printer. Track the belt->non-belt transition and the
exact values belt-sync wrote, clearing only those on an in-place toggle;
reset tracking on preset load so preset switches never wipe tilt.
2026-08-06 14:26:45 -05:00
harrierpigeon 6fd2de76e6 Fix: preserve upstream select-by-angle behavior when build plate is untilted (R7)
select_facets_by_angle replaced upstream's limit.dot(down) threshold with
cos(threshold), changing facet selection for non-uniformly-scaled/mirror
objects on ALL printers. Restore the exact upstream computation when no
build-plate tilt is active; keep the tilted-gravity form only under tilt.
2026-08-06 14:26:45 -05:00
harrierpigeon f8fe5a07cd Perf: hoist frame-invariant slope up_direction/normal_z out of the per-volume render loop (R6)
Belt slope-shading changes recomputed up_direction (with a printer-preset
config lookup) and normal_z per volume; both are frame-invariant. Compute
once before the to_render loop and reuse the already-hoisted
support_normal_z. Uniforms are still set per volume; visuals unchanged.
2026-08-06 14:26:45 -05:00
harrierpigeon 049612022a Perf: avoid unconditional lower-layer polygon copies in support overhang paths (R4, R5)
SupportMaterial::detect_overhangs copied lower_layer_polygons per region
even without build-plate tilt; hoist the tilted copy out of the region
loop and use the original polygons directly when untilted. TreeSupport3D
flattened lslices_extrudable to Polygons unconditionally; restore the
upstream ExPolygons offset on the untilted path.
2026-08-06 14:26:45 -05:00
harrierpigeon 10810908a9 Fix: restore atomic node invalidation in TreeSupport::drop_nodes + drop unused var (R3, R9)
The 2-node merge moved the two valid=false writes outside the mutex that
upstream held together with the contact_nodes push_back; restore a single
critical section per branch (belt branch also guards to_buildplate).
Remove an unused top_interface_layers local in drop_nodes.
2026-08-06 14:26:45 -05:00
harrierpigeon 0d92180325 Fix: clear belt fields in GCodeProcessorResult::reset() (R2)
reset() cleared the sibling machine_frame_transform_active but not
belt_tilt_angle/belt_z_origin/preslice_remap_*; a reused result carried
stale belt metadata into a subsequent normal print, flipping the store_z
branch and corrupting start-gcode preview Z for non-belt prints.
2026-08-06 14:26:45 -05:00
harrierpigeon 88d5e9e442 Fix: reset BuildVolume belt state when leaving belt mode (R1)
Non-belt branch of set_bed_shape reset only the 3DBed renderer, not the
BuildVolume; Bed3D::set_shape early-returns on unchanged bed, so a
belt->normal switch or in-place belt toggle-off left the BuildVolume with
m_is_belt_printer=true and inflated Y bounds -> out-of-bounds objects
treated as printable on a normal printer.
2026-08-06 14:26:45 -05:00
Joseph Robertson c51d19f6b2 Add Belt Printer Brims (#15155)
# Description

This adds brim support to belt printers.

Added a new belt printer specific mode, Leading Edge Only and two new
belt-specific parameters, Leading Edge Brim Length, which increases the
number of brim lines on the side of the part printed first, and Extra
Brim Width, which increases the width of brims along the X axis. Because
belt printer first layers are effectively a single line, getting them to
stick properly can be a pain. This PR aims to help alleviate that, or at
least give more options for control.


<img width="1849" height="1043" alt="Screenshot from 2026-08-06
12-20-21"
src="https://github.com/user-attachments/assets/f963ed8e-53e7-48f8-a495-123cb9ae27f7"
/>



[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-08-06 14:18:21 -05:00
harrierpigeon 849e6493f8 Belt brim: offer "Leading edge only" only on belt printers
"Leading edge only" describes where a part meets a moving belt, so it has no
meaning on a fixed bed and should not clutter the Brim type dropdown there.

Filtered the same way support_style and wipe_tower_wall_type already are a few
lines above in TabPrint::toggle_options(): the field holds its own copy of the
option definition, and Choice maps the combobox selection straight onto that
copy's enum_values, so rewriting the values, the labels and the combobox items
together keeps the mapping correct.

The entry is kept when it is the current value, so opening a project that uses
it on a non-belt printer cannot leave the control displaying an option it does
not offer - which would silently rewrite the setting on the next edit.
Print::validate() already warns that it prints as an ordinary outer brim there.

Matches the scope of the existing precedents: the per-object override panel is
not filtered.
2026-08-06 03:54:19 -05:00
harrierpigeon b1905ebc20 Belt brim: fixes from review
Six issues found by reviewing the previous commit against belt-printer, two of
them release-blocking.

Data race (high).  Print::process() runs generate_support_material() for all
objects in a tbb::parallel_for, and make_belt_brim() runs at its tail, but
belt_brim_obstacles() read every OTHER object's support_layers() - which a
concurrent task may be inside clear_support_layers() deleting.  That is a
use-after-free, and even when it survives, the obstacle set depends on which
object finishes first.  Only this object's own supports are consulted now; they
are complete at that point.  Foreign objects still contribute their slices,
which are finished and immutable before the support phase.

Apron bands dropped (high), two separate causes.  An apron band prints below
its own object's first layer, but another object can already be printing at
that print_z, in which case process_layer() takes the ordinary path and never
emitted the band - the emission is now shared by both paths.  Separately, a
band whose print_z matched a support layer of the SAME object was overwritten
in the print-wide merge, which keeps one record per object per z and could not
detect the collision because LayerToPrint::layer() is null for a band.  The
per-object pairing loop is now a three-way merge over object, support and apron
streams, so each object contributes at most one record per z.

Multi-instance was far too strict (medium).  It refused belt brim for every
multi-instance object, killing plain brim width and inner brim too, and only
warned when a leading length was set.  Only movement ALONG the belt changes an
instance's belt-floor Z, so copies side by side ACROSS the belt share one set of
bands perfectly well; belt_brim_instances_compatible() now tests just that, and
the warning fires whenever the brim is actually suppressed.

Apron layer bookkeeping (medium).  Apron layers count toward m_layer_count and
advance m_layer_index, but emitted no Z/height tags, left m_last_layer_z,
m_max_layer_z and m_last_height stale - so the first object layer computed its
height against a pre-apron Z - and skipped before_layer_change_gcode and
layer_change_gcode entirely.  All of that now matches the ordinary path.

Obstacle cost (low).  belt_brim_obstacles() ran a full-plate union per band.
A bounding-box pre-filter drops non-overlapping objects before materialising any
polygon, and the union is skipped for trivial inputs.

Deliberately unchanged: every apron band still reports cooling layer_id 0.
CoolingBuffer uses it for the initial_layer_fan_speed override and the
close_fan_the_first_x_layers gate, and every band lies on the belt plane itself,
so it is all first-layer material by the only definition that means anything on
a belt.  Numbering the bands would ramp the fan up while still printing on the
belt.  Now documented at the assignment rather than left implicit.
2026-08-06 01:08:44 -05:00
harrierpigeon 55b4dca9bc Belt printers: brim laid onto the tilted belt, with a leading apron
A belt printer slices in a rotated frame, so the belt surface is a tilted
plane rather than the Z=0 bed plane.  Each slicing layer touches the belt
only along a narrow strip at its leading edge - about 0.2mm at 45 degrees -
so a part's first layer is really a first line, with almost no contact patch
to hold it down while the belt drags it forward.  Brim was hard-disabled on
belt printers, leaving no remedy at all.

Generate the brim on the belt plane instead.  The object's belt footprint is
the union over layers of each slice clipped to that layer's contact band; the
brim is offset from it in a "flattened" frame where the shear axis is
stretched by 1/cos(tilt), so ordinary Clipper offsets measure true on-belt
distance.  It is emitted as cross-belt lines, one per layer band, anchored to
a fixed fraction of the band so every line shares a nozzle-to-belt clearance
and therefore comes out the same width; flow is matched to the resulting band
pitch, keeping the sheet uniform and gap-free.

Three new controls, all belt-only:

  * Leading brim length - extends the brim ahead of the part along the belt,
    on every downhill-facing edge of its contact area.  This apron necessarily
    prints BELOW the object's first layer, since layer 0 is the part's leading
    contact, so it needs brim-only bands of its own.
  * Extra brim width - widens the brim sideways across the belt only.
  * Brim type "Leading edge only" - brim at the part's first belt contact and
    nothing after it.  Appended last in BrimType so no existing value shifts;
    degrades to an outer brim off belt printers, with a warning.

The apron bands are lightweight records rather than a Layer subclass, so no
fabricated Layer::id() can leak into initial-layer temperature selection, the
spiral vase probe, cooling or gradual interpolation.  They are generated in
posSupportMaterial because their print_z values must exist before ToolOrdering
is built at psWipeTower, and they are emitted from a short dedicated branch in
process_layer that runs before any layer pointer is dereferenced.

The footprint is closed before offsetting outwards: a belt contact patch is
often a broken-up strip, and the merged offset rings of two islands closer
than 2 x brim_width would otherwise fill the space between them - space that
lies under the part.

Also fixes a pre-existing bug where PrintObject::get_first_layer_bbox()
overwrote a valid bbox with an unassigned one on any belt printer with a brim
configured, because has_brim() was true while make_brim() returned early.

Belt brim is refused alongside the prime tower and spiral vase, and requires
one instance per PrintObject - translating an instance along the belt axis
changes its physical belt-floor Z.  Untilted belt printers are unchanged: they
still get no brim, since the plate brim is emitted out of skirt_brim_groups(),
which _make_skirt() never builds for a belt printer.
2026-08-06 01:08:44 -05:00
Joseph Robertson 386364f84b belt profiles: fix belt printer CI failures (slice check + setting_id) (#15127)
The belt-printer branch is failing two profile gates. Both stem from the
three belt-only vendors (Custom's generic belt printer, IdeaFormer,
Printcepts) not existing upstream, so upstream maintenance passed them
by.

Slice check: 4 of 1015 printers failed - Custom's MyBeltPrinter 0.2/0.4/
0.6/0.8 nozzle all fell back to "Default Setting". No process profile in
the Custom vendor listed any MyBeltPrinter in compatible_printers, and
Custom's fdm_belt_common pointed default_print_profile at "0.20mm
Standard @System", which does not exist in that vendor's index, so the
generic belt printer had no usable process at all. This gap dates to
when MyBeltPrinter was added (2026-04-07); it only started failing now
because the slice-check job is newer than that.

Adds two process profiles modelled on the sibling @MyKlipper ones:
  - 0.20mm Standard @MyBeltPrinter - 0.4/0.6/0.8 nozzles
  - 0.12mm Fine @MyBeltPrinter     - 0.2/0.4 nozzles
The split is forced by hardware: the 0.2 nozzle preset caps
max_layer_height at 0.16, so a single 0.20mm profile cannot legally
cover
it. fdm_belt_common now defaults to the standard profile and the 0.2
nozzle preset overrides to the fine one.

setting_id: 14 files failed the rules introduced in #14432. That
migration renumbered 7425 files across 61 vendors but skipped these
three, leaving BabyBelt Pro, IdeaFormer IR3 V2 and MyBeltPrinter
squatting the "G*" id space reserved for Bambu (GMPC0BBP01, GMIF001,
GM_BELT_00x) and four instantiated filament/process presets carrying no
setting_id at all. Regenerated with
scripts/assign_vendor_setting_ids.py.

Also repoints the identical dangling "0.20mm Standard @System" in
Printcepts' and IdeaFormer's fdm_belt_common at their own real process
profiles. That is a no-op today because both concrete printers override
it, but it is the same landmine that took out MyBeltPrinter.

Vendor index versions bumped so check_installed_vendor_profiles() will
re-install the corrected profiles over an existing install.

Note: changing a shipped preset's setting_id can orphan user presets
that reference it as base_id. #14432 accepted that tradeoff for 61
vendors; this keeps these three consistent with the rest.

Verified: orca_extra_profile_check.py reports 0 errors across 66 vendors
(was 14 files with errors), and OrcaSlicer_profile_validator -s slices
all 1015 printer presets successfully (was 4 failures).


[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-08-04 17:16:14 -05:00
harrierpigeon 725df64108 profiles: fix belt printer CI failures (slice check + setting_id)
The belt-printer branch is failing two profile gates. Both stem from the
three belt-only vendors (Custom's generic belt printer, IdeaFormer,
Printcepts) not existing upstream, so upstream maintenance passed them by.

Slice check: 4 of 1015 printers failed - Custom's MyBeltPrinter 0.2/0.4/
0.6/0.8 nozzle all fell back to "Default Setting". No process profile in
the Custom vendor listed any MyBeltPrinter in compatible_printers, and
Custom's fdm_belt_common pointed default_print_profile at
"0.20mm Standard @System", which does not exist in that vendor's index,
so the generic belt printer had no usable process at all. This gap dates
to when MyBeltPrinter was added (2026-04-07); it only started failing now
because the slice-check job is newer than that.

Adds two process profiles modelled on the sibling @MyKlipper ones:
  - 0.20mm Standard @MyBeltPrinter - 0.4/0.6/0.8 nozzles
  - 0.12mm Fine @MyBeltPrinter     - 0.2/0.4 nozzles
The split is forced by hardware: the 0.2 nozzle preset caps
max_layer_height at 0.16, so a single 0.20mm profile cannot legally cover
it. fdm_belt_common now defaults to the standard profile and the 0.2
nozzle preset overrides to the fine one.

setting_id: 14 files failed the rules introduced in #14432. That
migration renumbered 7425 files across 61 vendors but skipped these three,
leaving BabyBelt Pro, IdeaFormer IR3 V2 and MyBeltPrinter squatting the
"G*" id space reserved for Bambu (GMPC0BBP01, GMIF001, GM_BELT_00x) and
four instantiated filament/process presets carrying no setting_id at all.
Regenerated with scripts/assign_vendor_setting_ids.py.

Also repoints the identical dangling "0.20mm Standard @System" in
Printcepts' and IdeaFormer's fdm_belt_common at their own real process
profiles. That is a no-op today because both concrete printers override
it, but it is the same landmine that took out MyBeltPrinter.

Vendor index versions bumped so check_installed_vendor_profiles() will
re-install the corrected profiles over an existing install.

Note: changing a shipped preset's setting_id can orphan user presets that
reference it as base_id. #14432 accepted that tradeoff for 61 vendors;
this keeps these three consistent with the rest.

Verified: orca_extra_profile_check.py reports 0 errors across 66 vendors
(was 14 files with errors), and OrcaSlicer_profile_validator -s slices all
1015 printer presets successfully (was 4 failures).
2026-08-04 17:15:20 -05:00
Joseph Robertson c5bf238859 Update Belt-Printer Branch (#15087)
gets belt-printer on top of upstream again.
2026-08-03 02:09:41 -05:00
harrierpigeon f563df04f6 belt: default first_layer_plane to Auto, not BeltAffine
BeltAffine activates the FirstLayerPlane evaluator unconditionally, so on a
non-belt printer on_first_layer(point) stopped agreeing with the legacy
slicing-layer-0 test. Every per-path first-layer call site in _extrude then
took the non-first-layer branch, and first-layer speeds were skipped: brim
came out at the volumetric fallback (24.6 mm/s) instead of initial_layer_speed
(10 mm/s). This is the shared speed path, so it affected all printers on this
branch, not just belt ones.

Auto resolves to BeltAffine only when belt_printer is set with a non-zero
slicing rotation, and to XY (evaluator inactive, legacy behaviour) otherwise --
exactly what the option's own description already promised.

Caught by "Brim uses first layer speed" (upstream #14616), which arrived with
the upstream merge; the bad default dates back to a9bae54f20 (#30). Verified
against a pristine upstream/main build, which passes the same test.

tests/fff_print: 100/100 test cases, 1085 assertions (was 99/100).
Both belt regression tests still pass, confirming Auto still resolves to
BeltAffine for belt printers.

Note: this changes a config default. Projects and profiles that stored
first_layer_plane explicitly are unaffected; those relying on the default will
now get correct first-layer speeds on non-belt printers, so their G-code
changes accordingly.
2026-08-03 01:52:43 -05:00
harrierpigeon 613dad92a1 Add belt-printer regression test for prepare-stage move Z
Processes a minimal belt start sequence through GCodeProcessor::process_buffer
and asserts the move preceding the first extrusion keeps its real Z, so it can
no longer back-transform to model Y~=0 and produce the phantom extrusion line.

Belt printers are non-Bambu, so the processor uses the compatible reserved
tags ("TYPE:"); the test sets s_IsBBLPrinter=false (saved/restored via an RAII
guard) to mirror the real printer. Proven to fail without the fix (the
prepare-stage move's Z is pinned to the first-layer height, 0 here) and pass
with it.
2026-08-03 01:18:55 -05:00
harrierpigeon a83cd8aa29 Fix belt printer phantom extrusion line from Y=0 in preview
On a belt printer the sliced preview drew a stray extrusion-colored line
from Y~=0 to the model, rendered in the first extrusion role's color. It is
not a travel and does not occur on non-belt printers.

GCodeProcessor::store_move_vertex pins a move's stored Z to the first-layer
height during the start-G-code "prepare" stage. That is a harmless cosmetic
tidy-up on a normal printer, but on a belt printer the designed-view
back-transform couples machine Z into the rendered model Y (the belt tilt
mixes the height and belt-feed axes). Pinning Z back-transforms the last
prepare-stage move (the unretract before the first extrusion) to model
Y ~= 0, and libvgcode then draws a phantom extrusion segment from Y ~= 0 to
the first real toolpath.

Keep the real Z for belt printers (gated on belt_tilt_angle, parsed from the
G-code header before the body) so prepare-stage moves back-transform
correctly. Non-belt processing is byte-identical. The emitted G-code was
already correct; this is a preview-geometry fix.
2026-08-03 01:09:23 -05:00
harrierpigeon 02e313a115 Add belt-printer regression test for start-of-print gantry move
Locks in the fix from the previous commit. A fresh BeltGCodeWriter has an
unestablished planar position (is_current_position_clear() == false) and its
m_pos.xy is the origin (0,0). With a pending NormalLift z-hop, travel_to_xyz
used to lift in place via _travel_to_z(), which in belt mode shears the origin
into a machine Y ~= the layer Z — a move far up the gantry.

The test configures an X-tilt 45 deg belt transform, defers a z-hop via
lazy_lift, travels to a near-belt first point (transformed gantry Y ~= 1mm),
and asserts no emitted move has Y anywhere near the layer Z. Verified to fail
without the fix (max emitted Y = 100.0 vs the destination's ~1.0) and pass with
it.
2026-08-03 01:09:11 -05:00
harrierpigeon 04554abae6 Fix belt printer illegal gantry move at print start
On a belt printer the first travel of the print emitted a bogus move to
the bed corner with the nozzle far up the gantry, e.g.
  G1 X95 Y168.19 Z237.857 F12000
right after the first "; printing object" line. Y168 (≈ the layer Z)
is out of the gantry's range.

Root cause: the layer-change z-hop is deferred via lazy_lift and consumed
by the first BeltGCodeWriter::travel_to_xyz, whose NormalLift branch does a
separate lift-in-place via _travel_to_z(target.z()). On a normal printer
_travel_to_z emits a Z-only move, but in belt mode Z is coupled to Y/X, so
_travel_to_z re-emits the current m_pos through the belt shear. At print
start (and after custom gcode) m_pos.xy is still the uninitialised origin
(0,0), which the back-transform + axis-remap shear into machine
(X=bed_max, Y=layer_z) — the illegal move.

Guard the NormalLift branch on is_current_position_clear(), matching the
SlopeLift branch directly above it which already does so. When the position
isn't established there is nothing to lift over, and the xy_z_move that
follows travels straight to the destination with full XYZ, establishing the
correct position. Bookkeeping is unaffected: in this path m_lifted stays 0,
so no spurious restore move is produced.

Verified by re-slicing the repro project: the start-of-print move is now
G1 X44.946 Y.621 Z237.857 (straight to the first object point), no move
touches the bed-max X edge, and the max Y over the whole file is 62.8mm
(printable_height 100).
2026-08-03 00:15:24 -05:00
HarrierPigeon 0342e06d87 last step in fixing the g-code stuff up 2026-08-02 22:13:34 -05:00
HarrierPigeon 79fd847ce3 fix pre-slice warnings 2026-08-02 22:12:46 -05:00
HarrierPigeon 8f6802fff8 step one: post-process analysis 2026-08-02 22:12:09 -05:00
harrierpigeon b61ba98183 belt: adapt BeltGCodeWriter to upstream's per-extruder speed options
Upstream retyped travel_speed and travel_speed_z to ConfigOptionFloatsNullable
and initial_layer_travel_speed to ConfigOptionFloatsOrPercentsNullable, so the
scalar .value / get_abs_value() accessors no longer compile. BeltGCodeWriter.cpp
is belt-only and merged without conflict, so this only surfaced at build time.

Index them the way the base GCodeWriter does -- .get_at(m_cached_extruder_idx)
and get_abs_value_at(..., m_cached_extruder_idx) -- keeping belt's per-point
first_layer_for_point test rather than the base class's m_is_first_layer.

m_cached_extruder_idx moves from private to the existing protected block that
already exposes writer state to subclasses, so the belt writer resolves the
per-extruder index identically to the base writer instead of guessing one.
2026-08-02 16:20:22 -05:00
harrierpigeon 175075fd08 Merge upstream/main into belt-printer
Brings the belt-printer work up to date with 591 upstream commits.

Conflict resolutions (12 files, 42 hunks):

- GCode.cpp: adopted upstream's per-filament/per-nozzle config refactor
  (get_filament_config_index, NOZZLE_CONFIG), the extracted
  generate_timelapse_gcode + farthest-point timelapse, and the
  ConfigOptionFloatsNullable calibration options. Re-applied the belt
  hooks on top: init_belt_writer / axis remap / FirstLayerPlane setup,
  on_set_origin, the belt-corrected calib_z for the volumetric speed
  tower, and path_on_first_layer (belt's per-path first-layer test) in
  place of upstream's layer-index on_first_layer() in the acceleration,
  jerk and overhang-detection paths. Swept upstream's new m_writer.
  uses to m_writer-> since belt holds the writer by unique_ptr.
- interpolate_value_across_layers: kept upstream's banded stepping and
  belt's object-Z-span ratio; dropped upstream's duplicate ratio decl.
- Plater.cpp: took upstream's guarded add_model(...) early-returns and
  the VFA vfa_layer_height plumbing; kept the belt temp-tower path,
  _calib_apply_belt_mode and belt_calib_flip_ringing_tower. Dropped the
  VFA "cut upper" block, superseded upstream by model scaling.
- Brim.cpp: upstream's ObjectInstanceID-keyed brimAreaMap, keeping the
  belt early-return.
- 3DScene.cpp: kept both the belt build-plate tilt up_direction and
  upstream's per-extruder printable-height shading.
- GCodeViewer.cpp: kept upstream's dim-previous-layers setup and belt's
  exemption from the same-result early return.
- TreeSupport.cpp: upstream's >= 0 roof-layer fix inside belt's
  belt-floor branch.
- calib.cpp / GCode.hpp / GCodeWriter.{cpp,hpp} / Print.hpp: upstream's
  additions adapted to belt's pointer-held writer and helpers.
- Custom.json: kept profile version 02.04.00.03 (belt) over upstream's
  02.04.00.01; both bumped from 02.04.00.00.

Building this tree needs the wxInspector dependency, which upstream
added in the interim (python3 and wxWidgets 3.3.2 were already present
in the shared deps prefix).
2026-08-02 16:09:27 -05:00
Joseph Robertson 5428a0715d update belt-printer (#14446)
[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-06-26 23:02:49 -05:00
Joseph Robertson 75770321dd Update Belt-Printer (#14425) 2026-06-25 22:40:26 -05:00
Joseph Robertson c950c3fb6b Add BabyBelt Pro Profile, Courtesy of Rexit (#14424) 2026-06-25 22:39:12 -05:00
Joseph Robertson 2ca843a38e Belt Printing: Bugfix: Solid Organic Tree Base, Slim Tree Skirt, Renderer (#14395)
* fix tree support brim
* treesupport3d part 1: more diagnostic logging.  (todo once things are fixed: remove this / gate it properly)
* make area under Z=0 in rotated slice pipeline not solid
* fix solid Z=0 layer for belt printers
* fix renderer
* clean up logging
* final review pass
2026-06-24 22:01:29 -05:00
Joseph Robertson 0ef7c6d581 Belt Printing: Update (#14393)
# 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?
-->

# 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-06-24 21:34:53 -05:00
Joseph Robertson 34b0d36cda Belt Printer Initial Push (#14385)
# Description

Initial push - documentation available at #12998 

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-06-24 09:42:40 -05:00
Joseph Robertson d619c7e19c Merge branch 'belt-printer' into belt/baseChanges 2026-06-24 09:42:25 -05:00
Joseph Robertson 31b44cb731 Merge pull request #66 from HarrierPigeon/belt/tommyb-rendererChanges
Clean up and implement @tommasobbianchi's belt renderer changes
2026-06-23 00:27:39 -05:00
harrierpigeon ddbee84e68 render the G-code preview upright (designed view) + toggle UI 2026-06-23 00:14:17 -05:00
Joseph Robertson bf6cce1f40 Merge pull request #45 from tommasobbianchi/feat/belt-gcode-cartesian-preview
belt: render the G-code preview upright (model/Cartesian space)
2026-06-22 19:59:27 -05:00
Joseph Robertson 8bdf0df00a Merge branch 'main' into belt/baseChanges 2026-06-22 19:36:17 -05:00
Joseph Robertson d6c9187c71 Merge branch 'main' into belt/baseChanges 2026-06-22 19:36:17 -05:00
Ian Bassi 0cdfb88357 Lang: Gettext update (#14361) 2026-06-22 20:16:55 -03:00
foXaCe 14cec7239b i18n(fr): translate strings added after the post-refactor sync (#14304) 2026-06-22 20:13:19 -03:00
Heiko LiebscherandClaude Opus 4.8 86c6a1a66f Improve German (de) translation (#14352)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:40:14 -03:00
SoftFever 07f08dfe40 bump version to 2.5.0-dev 2026-06-22 00:50:51 +08:00
Noisyfox a4fb5af9e1 Don't allow adding more colors for non-semm printers on obj import color remapping dialog (#14275) 2026-06-21 18:20:58 +08:00
Tommaso Bianchi 8593d66a39 belt: correct the designed-view preview's belt-Z origin and reject mis-mapped outliers
The Cartesian designed-view preview over-extended the toolpaths past the model
shell by a height-proportional amount (up to ~20mm tall parts), most visibly on
long multi-part prints; compact parts like a calibration cube looked fine.

Two coupled causes:
- Belt start G-code that primes with a Z advance and a 'G92 Z0' reset leaves a
  constant machine-Z origin in the GCodeProcessor, so move positions are stored as
  gcode_Z + origin. The linear back-transform mixes that constant with the
  gantry-Y term, leaving a per-move designed-Y error that min-corner anchoring
  cannot cancel when an elevated move (e.g. a bridge) happens to cancel it at the
  bbox minimum. Expose GCodeProcessorResult::belt_z_origin (the m_origin[Z] left by
  the start G-code) and subtract it before the back-transform.
- Elevated features (bridges/overhangs) are mis-mapped by the linear inverse to
  outside the model body; build the anchor bbox only from moves within model_bb +/-
  10mm, with a fallback to the full bbox when the clip would drop the bulk (object
  placed away from the belt entry) so the gross-offset case still anchors.

Preview-only; G-code output is unchanged.
2026-06-21 06:48:44 +02:00
Tommaso Bianchi 3fc3b8a8ae belt: anchor the designed-view G-code preview onto the model bounding box
The belt designed (upright) preview back-transforms the machine-frame G-code
into model space with the linear belt inverse. That inverse recovers the
print's shape and orientation, but not the per-object placement/lift
translation: the object's position on the belt, the BeltSliceStrategy min-Z
lift, and the centering pre-translate are applied OUTSIDE
build_forward_transform() (see PrintObjectSlice.cpp), so its linear inverse
cannot undo them. The result was a constant offset (~20 mm on the belt-advance
axis) of the toolpaths from the model shell, on every model.

Recover the missing translation generally — independent of the offset's exact
source or the axis remap — by anchoring the back-transformed object body
(extrusions on layer_id >= 1, i.e. excluding the layer-0 prime/skirt) onto the
upright model bounding box, the same space the shells render in, and folding
that translation into the belt inverse before converting to libvgcode.

Replaces the previous Y=0 anchoring in LibVGCodeWrapper, which pinned the
toolpaths to the belt entry rather than to the model and so left the offset in
place for any object not sitting at the origin.
2026-06-21 06:48:44 +02:00
Tommaso Bianchi 695a1f897a belt: render the G-code preview in model (Cartesian) space
On a belt printer the emitted G-code is in the machine frame (45-deg sheared,
axis-remapped, scaled), so the toolpath preview shows the print as a sheared
slab floating off the bed. Map each toolpath vertex back to model/Cartesian
space for the "designed" view.

The back-transform is the inverse of the full G-code forward pipeline
(BeltGCodeWriter::to_machine_coords):
  model = [BeltForward^-1 if !gcode_back_transform] . AxisRemap^-1 . MachineFrame^-1
built from config, so it handles any rotation / shear / scale / axis-remap
combination, not just plain 45-deg belt slicing. Computed in load_as_gcode()
from print.config() and applied per-vertex inside libvgcode::convert (display
position only; layer_id, times and the volumetric/flow math keep the raw
machine values, so the layer slider and stats are unaffected).

- Toggle with the existing "Show designed view" checkbox / hotkey B; off shows
  the raw machine-frame G-code (useful for debugging the transform itself).
  Defaults to on.
- Belt printers skip the same-result-id load cache so the upright view applies
  and the toggle takes effect even when the G-code is unchanged.
- The object extrusions (layer_id >= 1) are anchored to the belt entry to drop
  the constant machine-origin offset (start-G-code belt advance) that the linear
  back-transform alone does not capture; start-G-code prime lines are excluded
  so they don't steal the anchor.
2026-06-21 06:48:44 +02:00
Tommaso Bianchi 2d69f6e17c belt: expose MachineFrameTransform's composed matrix
Add a const accessor for the shear*scale transform so the G-code viewer can
build the machine->model back-transform for the upright belt preview.
2026-06-21 06:48:44 +02:00
Joseph Robertson 340ce575e2 Merge branch 'main' into belt/baseChanges 2026-06-20 15:56:59 -05:00
Joseph Robertson d795900fcf Merge pull request #64 from tommasobbianchi/feat/esun-pla-maxvolspeed-tuning
IdeaFormer IR3 V2: tune eSUN PLA white speed from HW max-vol-speed calibration
2026-06-18 09:42:19 -05:00
Joseph Robertson 9b1fb2217a Merge branch 'main' into belt/baseChanges 2026-06-18 09:41:14 -05:00
Tommaso BianchiandClaude Opus 4.8 ef6f65eacc IdeaFormer IR3 V2: tune eSUN PLA white speed from HW max-vol-speed calibration
Physical max-volumetric-speed test (belt #62 v4 asset) on the IR3 V2 with eSUN
PLA white: the wall stayed clean up to ~100 mm/s = ~20 mm3/s before
under-extrusion. The shipped cap of 10 mm3/s was ~half the real ceiling and
was silently throttling infill.

- eSUN PLA @IdeaFormer IR3 V2: filament_max_volumetric_speed 10 -> 20
- 0.20mm Standard @IdeaFormer IR3 V2: sparse_infill_speed 200 (~18 mm3/s at the
  new cap, no longer throttled). Outer wall (45), PA (0.12), accel (1000)
  unchanged — accuracy preserved.
- IdeaFormer.json version bump for profile-cache refresh.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 07:13:59 +02:00
Joseph Robertson 0add523e1b Merge branch 'main' into belt/baseChanges 2026-06-13 08:23:47 -05:00
Joseph Robertson 375036f330 Merge pull request #44 from tommasobbianchi/feat/belt-skip-height-check
belt: don't reject long objects (skip build-height check on belt printers)
2026-06-13 08:23:26 -05:00
Joseph Robertson fbbeb1fab0 Merge pull request #58 from HarrierPigeon/belt/tempTower-TommyB
Belt/temp tower tommy b
2026-06-12 05:53:32 -05:00
harrierpigeon 0bca3fd2e5 make belt printer specific temp tower only accessible to belt printers 2026-06-12 05:13:08 -05:00
Tommaso Bianchi 85fd613cf7 feat(belt/calib): add Overhang temperature-tower model (selectable) (#48)
Belt printers can't slice a tall vertical temperature tower. This adds a
belt-specific temperature-tower model — a row of discrete, individually
engraved provini laid along the belt, each printed at one temperature via
custom per-layer M104. Each provino is an inverted-L overhang that stresses
print quality, so the operator reads the best temperature off overhang
quality rather than a continuous ramp.

It is offered as a "Test model" choice in the temperature calibration dialog
(mirroring the Cornering test's selector), so users keep Joe's counter-rotated
sectioned tower as "Standard" and can pick this one as "Overhang":
- Calib_Params::test_model (existing field) carries the choice.
- Temp_Calibration_Dlg gets a Standard/Overhang radio.
- Plater::calib_temp belt branch: test_model 0 -> _calib_temp_belt_sectioned
  (unchanged Standard path), 1 -> the discrete-provini Overhang path.

Assets: belt_temp_provino_unit.stl + belt_temp_tower_<start>_<end>.stl (6
ranges) + gen_belt_temp_tower.py (manifold engraving). Based on
belt/generic-calibrations. The Overhang path is HW-validated on the IdeaFormer
IR3 V2 (discrete M104 + engraved numbers); not re-validated since the rebase.
2026-06-12 05:13:07 -05:00
Joseph Robertson 0da24cd38b Belt/Standard calibrations (#54)
Enables supported printing of standard Orcaslicer calibration profiles.

* Build 2 Checkpoint

* fix support generation wedge, ghost layers

* flip cornering tests 180 deg to waste less supports

* fix row spacing on the flow ratio calibrations

* more testing, this didn't fix anything

* switched rotation tools, same issue

* fixed Z-offset issues

* add rest of PA features, may look a bit weird on a belt

* make temp towers work

* re-enable spiral on calibrations that want it

* Final cleanup pre-PR and community testing
2026-06-12 03:14:12 -05:00
Rodrigo Faselli d7b75540d0 Merge branch 'main' into belt/baseChanges 2026-06-11 11:59:53 -03:00
Tommaso Bianchi b7bda9912b belt: fix IR3 V2 end G-code reversing the belt into the part (#56)
The IdeaFormer IR3 V2 End G-code ran `G28 ; home all`, which homes the
Z (belt) and Y (gantry) axes. On a belt printer Z is the conveyor, so
homing it runs the belt all the way back to origin, dragging the finished
part back under the gantry that G28 has just lowered — the head knocks the
print (reported by an IR3 V2 user; the `G1 Y50` lift came after the G28,
too late).

Replace the end sequence with a belt-safe one: switch to relative mode
(G91), lift the gantry for clearance, advance the belt forward one full
machine-depth (Z676, the 676 mm product depth) to eject the part and cycle
the belt surface clean, then home X only — never the Z/belt axis.
2026-06-11 09:30:35 -05:00
Tommaso Bianchi 4f3a608009 belt: don't flag the lead-in as an empty-layer error on belt printers (#47)
collect_layers_to_print() warns (CRITICAL) when an extrusion layer sits above
the previous one with an empty gap below — the fixed-bed assumption that
material with nothing under it is floating and unprintable. On a belt printer a
*leading* empty range (the gap starts at Z=0, no prior extrusion layer) is not
floating: it is the conveyor lead-in, and the part rests on the advancing belt
as the first material is laid down well above Z=0. A part not designed for a
belt (e.g. a flat test model tilted into the belt frame) then trips this as a
false "Object can't be printed for empty layer between 0 and N" error.

Suppress only the leading case (belt_printer && last_extrusion_layer == null);
genuine internal gaps are still flagged, since on a belt those can be an
over-angle overhang printing into air. Non-belt output is unchanged.
2026-06-10 23:54:02 -05:00
Tommaso BianchiandClaude Opus 4.8 f682ab5cd3 belt: replace height-check skip with a belt-correct vertical-clearance check
The original PR skipped the max-print-height check entirely on belt printers
because the sliced (virtual) Z is belt travel, not build height. As the reviewer
noted, that removed the only working height guard. Restore a correct guard:

- Print::validate: on belt printers, compare the upright object height
  (max over instances of the scene-space bbox) against printable_height directly.
  printable_height is the usable VERTICAL clearance above the belt: the gantry
  travels up the tilted plane (reach = height/cos(tilt)) and its axis range is
  sized for that (IR3 V2: ~354 mm gantry travel = 250 mm vertical at 45deg, and
  printable_height = 250). Hardware-confirmed 250 mm vertical clearance, so no
  cos(tilt) factor is applied.
- BuildVolume::set_belt_printer: drop the diagonal Z scaling; the build-volume Z
  already equals printable_height, keeping the live 'outside build volume'
  highlight in agreement with validate().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 21:41:18 +02:00
harrierpigeon 2bcb775b90 update IdeaFormer profiles to new generic belt printer config 2026-06-10 05:10:20 -05:00
Joseph Robertson e29a82c672 add attribution and design notes 2026-06-10 05:10:20 -05:00
Joseph Robertson 5b243eec92 Relocate Pre-Slice remap logic 2026-06-10 05:10:20 -05:00
Joseph Robertson fee6be98b2 unify frame tilt work 2026-06-10 05:10:20 -05:00
Joseph Robertson 9405ac5976 remove mesh origin snapping 2026-06-10 05:10:20 -05:00
Tommaso Bianchi 6ed2437848 Add IdeaFormer IR3 V2 belt printer profile - credit: tommasobbianchi (#43)
* Add IdeaFormer IR3 V2 belt printer profile

Self-contained vendor profile for the IdeaFormer IR3 V2 (45 deg belt printer):
machine (0.4 nozzle) + 0.20mm process + Generic PLA/PETG filaments, with the
belt machine-frame transforms set explicitly on the machine preset
(belt_printer, belt_slice_rotation x/45/global, build_plate_tilt_x=45,
gcode_remap_x/y/z, gcode_shear_z=pos_tan, gcode_scale_y=inv_cos).

The vendor bundles its own machine/process commons (fdm_belt_common,
fdm_klipper_common, fdm_machine_common, fdm_process_common) on purpose:
OrcaSlicer resolves system-preset inheritance per-vendor, so a profile that
inherits the Custom vendor's commons cross-vendor fails to resolve its parent
and the whole IdeaFormer vendor silently fails to load. Bundling the commons
(and listing them in IdeaFormer.json in dependency order) keeps the vendor
self-contained, matching how every other vendor folder is structured.

Machine limits, bed temperature (75 C for belt PLA) and start/end G-code are
taken from a working IdeaFormer IR3 V2.



* feat(belt/profile): eSUN PLA @IdeaFormer IR3 V2 — HW-calibrated belt filament

Add an eSUN PLA belt profile for the IR3 V2, inheriting Generic PLA @IdeaFormer
IR3 V2 (self-contained: parent is in the same IdeaFormer vendor, registered
after it in filament_list). HW-calibrated on the IR3 V2:
- nozzle_temperature 200/200 (temp-tower calibration)
- pressure_advance 0.12 (PA calibration)
- filament_max_volumetric_speed 10 mm³/s (max-vol-speed calibration: wall
  failed at 126 mm/s → 126 × 0.0798 mm³/mm ≈ 10 mm³/s)
2026-06-10 04:13:56 -05:00
Joseph Robertson da3fee2dfa Merge branch 'main' into belt/baseChanges 2026-06-05 11:55:44 -05:00
Joseph Robertson c0d6ae8540 Merge branch 'main' into belt/baseChanges 2026-06-05 03:12:27 -05:00
Joseph Robertson 573e1c6544 Belt/fix profiles and minor oopsies (#42)
* fix duplicate printer, bump version

* clean up extra tab in space

* fix generic defaults
2026-06-05 03:11:38 -05:00
Rodrigo Faselli 20be78a96e Merge branch 'main' into belt/baseChanges 2026-06-04 17:32:35 -03:00
Joseph Robertson 02d45c3258 Finish Fixes from Copilot Review (#39)
* fix: restore BuildVolume bounds when toggling belt mode

set_belt_printer() mutated m_bboxf when enabling but never restored
the original extents on disable or when switching infinite_y true->false,
leaving stale max.y/max.z values that broke collision and object_state
checks. Recompute m_bboxf from m_bed_shape + m_max_print_height at the
top of each call, then apply belt-specific adjustments on top.

Addresses Copilot review comment on PR #12998 (BuildVolume.cpp:196).

* chore: drop [BELT-DEBUG] to_machine_coords log to trace

Was emitting at warning level once per 0.2mm Z bucket during every belt
print export, polluting default user logs. Trace level matches the rest
of the belt diagnostics and is silent in production.

Addresses Copilot review comment on PR #12998 (BeltGCodeWriter.cpp:86).

* chore: drop [BELTRACE] make_perimeters/support logs to trace

Eight warning-level traces around make_perimeters and
generate_support_material were emitting on every call/exit during normal
slicing, cluttering default logs. They're concurrency-debug breadcrumbs
not user-facing diagnostics, so drop them to trace.

Addresses Copilot review comment on PR #12998 (PrintObject.cpp:438).

* perf: gate BeltSliceStrategy diagnostic bbox tracking behind compile flag

apply_to_trafo() walked every model vertex twice (once for min_z, once
for per-volume mesh/slicer bboxes) and emitted seven trace logs per
call. The bboxes and logs are diagnostic only; min_z is the load-bearing
output. Wrap the bbox accumulation, logging, and supporting headers in
SLIC3R_BELT_DIAGNOSTIC_LOG so production builds do the bare min_z scan.

Addresses Copilot review comment on PR #12998 (BeltSliceStrategy.cpp:95).

* fix: apply part_cooling_fan_min_pwm to first-layer plane fan crossings

apply_first_layer_plane_fan_eval emitted band-crossing M106 commands
through GCodeWriter::set_fan() without the per-printer PWM floor that
every other set_fan call in CoolingBuffer applies. On printers with a
non-zero part_cooling_fan_min_pwm, fans could fail to spin up at low
requested speeds near the belt surface.

Addresses Copilot review comment on PR #12998 (CoolingBuffer.cpp:1227).
2026-06-04 14:40:45 -05:00
harrierpigeon f9888c7d7a Merge remote-tracking branch 'upstream/main' into belt/baseChanges 2026-05-31 05:17:32 -05:00
Joseph Robertson 0bda684dd7 delete mesh transforms (#37)
* delete mesh shear, scale and refactor logger

* clean up config options

* reorder UI elements
2026-05-31 05:08:42 -05:00
Joseph Robertson 8a578cdf00 Merge branch 'main' into belt/baseChanges 2026-05-30 21:39:03 -05:00
Rodrigo Faselli 6b256db012 Merge branch 'main' into belt/baseChanges 2026-05-28 07:44:43 -03:00
Joseph Robertson 2dc4900292 Copilot review fixes & upstream code interaction fix (#34)
* first pass at review issue 8
* delete detritus
* fix build compile error due to upstream changes
2026-05-27 21:53:04 -05:00
Joseph RobertsonandCopilot Autofix powered by AI 0f75d6bc4e Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-27 19:25:02 -05:00
Joseph Robertson e913621369 Merge branch 'main' into belt/baseChanges 2026-05-27 11:50:16 -05:00
Joseph Robertson 48b6db93b8 Belt/slice rotate (#33)
* initial commit
* fix upper bounds for assemblies
* significantly less Z shift issues, still not quite tamped down yet though
* add instrumentation to logs
* finally found the issue
* update printer defaults
2026-05-27 11:45:38 -05:00
Joseph Robertson 72cafcbe06 Merge branch 'main' into belt/baseChanges 2026-05-22 15:23:07 -05:00
Joseph Robertson a9bae54f20 Rotate instead of shear for slicing stage (#30)
* initial commit

* fix upper bounds for assemblies

* significantly less Z shift issues, still not quite tamped down yet though

* add instrumentation to logs

* finally found the issue

* update printer defaults
2026-05-22 15:21:33 -05:00
Joseph Robertson 218881c6f6 fix assembly bounding box truncation problems noticed by hotcubcar (#28) 2026-05-20 02:46:41 -05:00
Joseph Robertson cd5fb68d38 Merge branch 'main' into belt/baseChanges 2026-05-19 23:00:14 -05:00
Joseph Robertson f87a46ec6e fix X mirroring (#26)
Thanks to @hotcubcar for catching this!
2026-05-19 22:54:50 -05:00
Rodrigo Faselli 8dc91d8b1d Merge branch 'main' into belt/baseChanges 2026-05-19 08:06:57 -03:00
Joseph Robertson da8b11b8ab HOTFIX: update generic belt printer profile (#23)
oops
2026-05-19 01:06:39 -05:00
Joseph Robertson c79970bedb Clean Up Settings Interface, Update Generic Profile (#22)
* clean up UI elements

* further cleaning

* final cleanup for first round of settings UI streamlining

* update generic belt printer settings

* fix generic again
2026-05-19 00:56:08 -05:00
harrierpigeonandClaude Opus 4.7 7252f6acb7 Merge upstream/main into belt/rebase/may-18
Reconciles the belt-printer branch with upstream PRs through #13723. Six
files had conflicts; three additional files needed manual follow-up fixes
where the auto-merge produced code that referenced upstream-renamed fields
or changed function signatures.

Notable reconciliations:
- TreeSupport.cpp: kept belt-floor early-exit branches around HEAD's
  drop-down logic, folded upstream's `(distance_to_top > 0 ? 1 : 0)`
  formula into the non-belt-floor path (upstream PR #11812). Dropped dead
  `roof_enabled`/`force_tip_to_roof` locals.
- TreeSupport3D.cpp: combined upstream's safety-offset + remove_small
  changes with HEAD's belt-floor clip in the per-slice trim loop. Dropped
  HEAD's `else` block (superseded by upstream's rewritten bottom-contact
  propagation) and re-added the belt-floor clip into the new propagation
  loop. Gated the propagation on belt printers to prevent OOM when
  belt-floor clipping produces empty initial slices.
- TriangleSelector.{cpp,hpp}: merged both new `select_patch` parameters
  (HEAD's `up_direction` and upstream's `select_partially`); body uses
  `dot(up_direction)` for the overhang angle check and forwards
  `select_partially` to `select_triangle`.
- SupportMaterial.cpp: `slicing_params.soluble_interface` →
  `zero_gap_interface_bottom` in HEAD's `detect_belt_floor_bottom_contacts`,
  matching upstream's same-purpose rename at line 2495.
- Custom.json, GCodeWriter.cpp: simple additive merges (kept entries /
  includes from both sides).

Verified by building OrcaSlicer (RelWithDebInfo) after a full deps
rebuild (Eigen v5.0.1, libigl v2.6.0 are now managed deps) and slicing
a scaled Benchy on the NORMALIZER belt-printer profile without OOM.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 21:53:24 -05:00
Joseph Robertson 6a2d690f45 Decouple Slicing From Machine Frame Logic (#21)
* minor logic swap

* first attempt, has a race condition

* fixed the offset issue

* found a solution, I think things work now (at least once I quash this race condition)

* still chasing down race conditions

* add manual shear / scale order strategy swap

* tweak manual shear, fix ui uninitialization crash

* fix z height / g-code desync issue

* fix shear then scale cutoff planes

* getting closer

* fix support termination planes

* fix incorrect offsets in shear-then-scale mode

* test - fix overextrusion due to model/layer scale
2026-05-18 19:01:43 -05:00
RF47 8fa6a4602b fix profile indentation 2026-05-09 19:51:18 -03:00
harrierpigeonandClaude Opus 4.7 0f29437135 Merge remote-tracking branch 'upstream/main' into belt/baseChanges
Conflicts resolved in src/libslic3r/GCode.cpp and src/slic3r/GUI/GUI_Factories.cpp.

GCode.cpp: combined upstream's air-filtration per-extruder gating
(activate_air_filtration_during_print / _on_completion), the new
extrusion-role-change gcode lambda, ZAA's path.z_contoured arc-fit
disable, raft-aware slow_down_layers branch, and Vec3d/Line3 ZAA
plumbing with the local belt-printer changes (path_on_first_layer,
effective_layer_index_for_point, should_disable_arc_fitting). All
auto-merged m_writer.X() calls converted to m_writer->X() to match
the local unique_ptr<GCodeWriter> refactor.

GUI_Factories.cpp: inserted brim_flow_ratio in the Support category
list and renumbered around the local build_plate_tilt_x/y entries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:23:41 -05:00
SoftFever 75cc0de071 Merge branch 'main' into belt/baseChanges 2026-04-17 15:44:03 +08:00
Joseph Robertson bc6d0ef0fb Add first layer detection and fan control - prototype 2026-04-13 22:29:23 -05:00
Joseph Robertson c17ae25bbc Merge branch 'main' into belt/baseChanges 2026-04-13 21:34:34 -05:00
harrierpigeon e981a517cd Merge branch 'belt/global-mesh-transform' into temp-pr19-merge 2026-04-10 11:49:37 -05:00
harrierpigeon 0703728e56 add global mesh transform option 2026-04-10 11:39:08 -05:00
SoftFever 1e9ee0c120 add a generic belt printer 2026-04-09 23:07:08 -05:00
harrierpigeon e9a579b604 switch default shear axis, swap to tan(a) instead of cot(a) 2026-04-09 23:07:07 -05:00
harrierpigeon 783acd932a revert CLAUDE.md 2026-04-09 23:07:07 -05:00
harrierpigeon c8a1bf3a99 Part 3.2: decouple axis remapping, enable viewing settings in Developer mode or when Belt mode is active 2026-04-09 23:07:07 -05:00
harrierpigeon 2facaac9e8 Part 3.1: refactor BeltTransform pipeline
add BeltGCodeWriter

add BeltGCode

consolidate changes into shared classes for BeltGcode
2026-04-09 23:07:07 -05:00
harrierpigeon 9bbac19de4 Part 2.7: Add G-code back-transform and tree support belt floor clipping
- Add BeltBackTransform class that inverts the shear/scale matrix and
  applies it in GCodeWriter::to_machine_coords() so G-code outputs in
  the machine's physical coordinate space, gated by new
  belt_gcode_back_transform config option
- Extend belt floor clipping to all three tree support pipelines
  (Prusa-style, Orca organic, TreeModelVolumes) with per-layer polygon
  clipping, anti-overhang integration, and belt raft extension layers
- Fix tree drop_nodes() belt termination, organic support global Z
  offset, collision calculation index bug, and first-layer brim/empty
  layer checks for belt printers

two-shot - first build built but didn't plumb to UI.  Woah.

add pre-slice axis remap, because Y needs to be Z

going to change tactic and move based on bbox min

switch to per axis snapping

per axis swap snap now per object

build plate tilt wasn't invalidating slicer settings

support upper bound now correct, need to get lower bound corrected

axis swapped support termination corrected

Z Shear works with and without pre-slice remap now
2026-04-09 23:07:07 -05:00
harrierpigeon ea5c6776b3 Part 2.6: Add belt floor support clipping for all support types
- Fix support clipping z-shift calculation by removing coordinate-space
  mismatch and sync belt_floor_z_shift with global_z_offset; fix
  invalidation so posSupportMaterial no longer resets slicing params
- Add belt floor polygon clipping to non-organic tree support
  (slim/strong/hybrid) with collision surface integration in
  TreeSupportData, belt extension layers, and first-layer brim
  suppression
- Add belt floor clipping to organic tree support pipeline with virtual
  belt raft layers, per-layer polygons in TreeModelVolumes, and
  post-generation layer trimming; fix pre-existing processing_last_mesh
  bug in calculateCollision()

Fix belt floor support clipping: z-shift, invalidation, and global offset

- Fix support clipping z-shift calculation by removing coordinate-space
  mismatch (raw_bounding_box min.z vs trafo_centered m_belt_min_z) and
  sync belt_floor_z_shift with global_z_offset in global shear mode
- Fix invalidation so posSupportMaterial no longer resets slicing params,
  preventing the exact posSlice z-shift from being overwritten by the
  bounding-box approximation on support-only setting changes
- Remove double-counting of global z_offset on support layers — support
  already inherits the offset from object layers during generation

This Work Was Co-Authored-By Claude Opus 4.6 (1M context) <noreply@anthropic.com>

UI: gray out inactive belt sub-options, rename to mesh transforms, move to Advanced

Fix mesh clipping through build plate after belt shear/scale transform

Generalize G-code viewer designed-view toggle for full belt transform

Clip support layers to transformed belt floor plane

Supports below the tilted build plate (Z = shear_factor * from_axis - min_z)
are now clipped via half-plane intersection after generation. Belt floor
parameters stored in SlicingParameters and populated in both update_slicing_parameters()
and the static slicing_parameters() overload.

Make belt G-code viewer toggle more prominent, add B keyboard shortcut

- Add separator + teal "Belt Printer" header in legend panel
- Append [B] hint to checkbox label
- Add B key shortcut in GLCanvas3D to toggle designed/machine view
- Read belt_printer_angle from loaded G-code headers to enable belt view

Add per-axis global transform option for belt printer shear

New belt_shear_{x,y,z}_global bool configs. When enabled, shear incorporates
instance shift so objects at different bed positions get position-aware
transform (Z += factor * instance_shift_on_from_axis).

Fix global shear: use layer Z offset instead of mesh transform, add config invalidation

- Global shear offset applied as post-slicing layer print_z adjustment
  instead of mesh transform (which was absorbed by min_z normalization
  or shifted mesh out of slice range)
- Register all belt transform options in Print::invalidate_state_by_config_options
  to trigger posSlice re-slicing (the fallback only invalidated Print steps,
  not PrintObject steps — belt changes had no effect without manual re-slice)
- Belt gcode remap options added to steps_gcode (gcode-export only)
- Skip empty-first-layer check for belt objects with global Z offset

WIP: split instances for global shear, relative Z offsets, debug logging

- PrintApply: when belt global mode active, prevent instance grouping by
  adding unique Z perturbation to trafo — each copy becomes its own
  PrintObject with independent layers
- PrintObjectSlice: compute global Z offset relative to minimum Y shift
  across all PrintObjects (lowest-Y object stays at Z=0)
- Debug logging (warning level) for belt global shift values and offsets

Known issues:
- Cached posSlice results cause stale offsets when mixing copies with
  individually-added objects — need to compute min baseline outside slice()
- Supports still generate to Z=0 instead of object's global Z offset

Fix global shear for copied objects: disable shared-object layer optimization

When belt global Z shear is active, each object needs unique layer Z
values based on its bed position. The shared-object optimization was
causing copies to reuse the source object's layers (and its Z offset)
instead of computing their own position-based offset.

started work on getting supports to work properly

one step forward, one step back

this version didn't quite work.  Getting somewhere though

about to add UI controllable tests

added configuration options for supports

tweak CLAUDE.md to be more aggressive for my machine.  This commit should probably be pulled out before contributing upstream

still chasing down some bugs

moving objects between slices no longer results in improper Z-height because of caching

added more data to the debug logs

Z offset is getting more global again

still not quite there, I think there's a fundamental logic flaw?

hunting for bugs

finally have a functional fix

Add belt floor clipping to tree supports (organic and non-organic)

- Add belt floor polygon clipping to non-organic tree support
  (slim/strong/hybrid) in draw_circles() and terminate nodes at the
  belt surface instead of the horizontal build plate
- Add belt floor clipping to organic tree support pipeline with virtual
  belt raft layers for sub-floor branch generation, per-layer belt
  floor polygons in TreeModelVolumes, and post-generation layer trimming
- Fix pre-existing processing_last_mesh bug in TreeModelVolumes that
  prevented m_anti_overhang (support blockers) from ever being applied;
  skip empty first layer check for belt printers

Commits:

current approach: make a face surface to build supports to

closer!

supports now terminate on shear plane, now need to get shear plane to correct Z height

nearly there

chasing down logic issues still

committing for checkpoint, this still does not work

still got logic problems...

cull support clipping

stashing changes for now.  Going to focus on getting the global shear OFF support generation dialed first.

beginning per object shear calcs

Local shear transform is on correct Z offset now

local shear finally works now and needs more testing

global shear works now, needs thorough testing

debugging non-45 degree angles

debugging part 2

supports at all angles work now

remove debug logging

Add belt floor collision to non-organic tree support pipeline

- Integrate belt floor as a collision surface in TreeSupportData so
  branches route around the belt naturally, replacing the explicit
  termination checks in drop_nodes()
- Add belt extension layers below the object after draw_circles() to
  allow support geometry to extend to the diagonal belt surface instead
  of terminating at a horizontal first layer
- Fix coordinate overflow in belt floor polygons (scale_(1e4) exceeds
  int32), skip first-layer brim expansion for belt printers, and
  extend empty first layer check bypass to all belt modes

add debug logging, Z translate for tree supports

still not seeing any cutoff surface yet

adding debug options

attempt #2 at trees

if hit Z buildplate stop but don't set to_buildplate true

getting closer

tree support almost there, just need to get rid of the circles at the beginning

getting closer

belt / shear plane clip works, need to figure out the buidlplate plane issues

more logic, added debugging logs

supports now extend somewhat below Z=0 in global shear mode

fix bad alloc, add 10mm below build plate

fully works now

shear transform + prusa tree support generation works now.

pull out debug logging
2026-04-09 23:07:07 -05:00
harrierpigeon 98f4d34dcb Part 2.5: Add global shear transform, support clipping, and belt UI improvements
- Implement per-object global shear transform in PrintObject with
  layer Z-offset calculation, config invalidation, and fix for
  shared-object layer optimization breaking copied objects
- Clip support layers to the transformed belt floor plane and begin
  work on tree support adaptation for sheared coordinate space
- Improve belt UI: gray out inactive sub-options, add B keyboard
  shortcut for G-code viewer design-view toggle, fix mesh clipping
  through build plate after shear/scale transform

y' = y + z·cot(α),
  while x' = x and z' = z

getting closer to customizable variant

getting closer

X/Y/Z shear initial

clean up UI

add 1/sin(a) transform, idea taken from blackbelt cura plugin

Things work now (turns out I've been using the wrong set of  transforms)
2026-04-09 23:07:07 -05:00
harrierpigeon 501aff7e53 Part 2: Replace belt rotation w/ per-axis shear transforms and G-code axis remap
- Replace monolithic belt rotation transform with independent per-axis
    shear controls (mode/angle/source-axis for X, Y, Z) and G-code axis
    remapping, giving full flexibility to match any belt printer's
    coordinate system
  - Remove all rotation mode logic and intermediate type+axes dropdowns,
    simplifying the pipeline to pure shear matrices while preserving the
    default behavior (Y += Z*cot(45deg) with identity remap)
  - Clean up GCodeWriter, GCodeProcessor, and GCodeViewer for the new
    shear-only model; expose 12 new settings in printer UI via
    Tab.cpp/Preset.cpp

Implement belt printer tilted slicing

Implement the core belt slicing pipeline that makes the slicer
tilt-aware:

Step 1: GCodeWriter::to_machine_coords() - R(+alpha, X) rotation
  from slicing frame to machine frame
Step 2: PrintObject - belt-rotated object height calculation
  (y*sin(a) + z*cos(a)) for correct layer count
Step 3: PrintObjectSlice - apply R(-alpha, X) rotation trafo so
  horizontal slice planes correspond to belt-parallel planes,
  with Z-shift computed from model volumes
Step 4: GCodeProcessor - machine-frame preview (no transform needed)
Step 5: 3DBed - rotate bed visualization about X by belt angle

Fix: belt surface IS the build plate, no mesh rotation

Currently still slicing perpendicular to the belt normal.  Need to figure out why.

Fix G-code Z sign: use R(-alpha, X) so Z+ is away from belt

The previous R(+alpha, X) transform produced negative Z values
(-y*sin(a) term dominated). Changed to R(-alpha, X) which gives
machine_z = y*sin(a) + z*cos(a), always positive for points
above the belt surface. Z increases with each layer as expected.

reverting and changing slice methodology

Add pink slicing direction arrow from origin

Shows the effective slicing direction (gantry normal) as a pink
arrow from the origin. Shorter and wider than the gravity arrow.
Direction: R(+alpha, X) * Z = (0, -sin(a), cos(a)), which is
the layer stacking direction in the original mesh frame.

Fix slicing arrow visibility and add raw G-code toggle

- Disable depth test for pink slicing arrow so it renders on top of
  the tilted bed geometry (was being occluded)
- Remove unnecessary 5mm Z-offset from arrow position
- Add m_belt_show_raw toggle to GCodeViewer
- Add "Show raw G-code (slicing frame)" checkbox in legend when
  belt mode is active

Implement to_machine_coords inverse rotation for belt printer G-code

The slicing pipeline rotates the mesh by R(-alpha, X) and shifts Z to
start at 0. The G-code output now undoes this transform via
to_machine_coords: R(+alpha, X) * T(0,0,+z_shift), recovering the
original machine-frame coordinates where Y is horizontal and Z is
vertical.

Changes:
- GCodeWriter: implement to_machine_coords with inverse rotation + Z-shift
- GCodeWriter: add belt_z_shift member and setter/getter
- GCode.cpp: compute Z-shift from print objects (same logic as
  PrintObjectSlice) and pass to writer; write z_shift to G-code header
- GCodeProcessor: parse belt_z_shift from G-code header
- GCodeViewer: store belt_z_shift from processor result

Wire raw G-code toggle to apply slicing-frame view transform

When "Show raw G-code (slicing frame)" is checked in the preview
legend, the view matrix is modified to apply R(-alpha, X) * T(0,0,-z_shift)
to the toolpath rendering. This shows the G-code as it was during
slicing: rotated part with horizontal layers.

Default (unchecked): machine-frame view — upright part with tilted layers.

Remove belt printer placeholder comment from GCodeProcessor

The preview now correctly displays machine-frame G-code with the
optional raw view toggle. No transform is needed in the processor.
2026-04-09 23:07:06 -05:00
harrierpigeon c808653565 Add belt printer transform pipeline: slicing rotation, G-code coords, preview
- Implement core belt slicing pipeline: R(-alpha, X) mesh rotation in PrintObjectSlice with corrected object height calculation for proper layer count
Add to_machine_coords() in GCodeWriter to convert slicing-frame coordinates back to machine-frame, propagated through GCode,
GCodeProcessor, and GCodeViewer
Add belt-mode UI: tilted bed visualization, slicing-direction arrow, and raw G-code toggle to switch between machine-frame and slicing-frame views

This is a combination of 6 commits.

checkpoint 1: initial MVP.  Slicing functions, but rotates instead of skews are happening and a lot of other stuff too

getting somewhere, getting to the point where I need to figure out how to verify this stuff

this appears to be a dead end.

getting somewhere I think maybe

I'm pretty sure we've completely lost the plot at this point and need to restart this process...

remove slice logic in preparation for new, more invasive plan
2026-04-09 23:07:06 -05:00
harrierpigeon a7441c7f48 stage in changes from off-plate-gravity and remove stuff I didn't need 2026-04-09 23:07:06 -05:00
SoftFever 3bc13e5cfd add a generic belt printer 2026-04-07 10:37:34 +08:00
SoftFever 141749a6f2 Merge branch 'main' into belt/baseChanges 2026-04-06 22:52:31 +08:00
harrierpigeon 4634a5dfd7 switch default shear axis, swap to tan(a) instead of cot(a) 2026-03-30 13:25:40 -05:00
harrierpigeon 372139c770 revert CLAUDE.md 2026-03-30 13:25:40 -05:00
harrierpigeon 44eebdb8ad Part 3.2: decouple axis remapping, enable viewing settings in Developer mode or when Belt mode is active 2026-03-30 13:25:40 -05:00
harrierpigeon c7aa4ca3ef Part 3.1: refactor BeltTransform pipeline
add BeltGCodeWriter

add BeltGCode

consolidate changes into shared classes for BeltGcode
2026-03-30 13:25:40 -05:00
harrierpigeon b297f68921 Part 2.7: Add G-code back-transform and tree support belt floor clipping
- Add BeltBackTransform class that inverts the shear/scale matrix and
  applies it in GCodeWriter::to_machine_coords() so G-code outputs in
  the machine's physical coordinate space, gated by new
  belt_gcode_back_transform config option
- Extend belt floor clipping to all three tree support pipelines
  (Prusa-style, Orca organic, TreeModelVolumes) with per-layer polygon
  clipping, anti-overhang integration, and belt raft extension layers
- Fix tree drop_nodes() belt termination, organic support global Z
  offset, collision calculation index bug, and first-layer brim/empty
  layer checks for belt printers

two-shot - first build built but didn't plumb to UI.  Woah.

add pre-slice axis remap, because Y needs to be Z

going to change tactic and move based on bbox min

switch to per axis snapping

per axis swap snap now per object

build plate tilt wasn't invalidating slicer settings

support upper bound now correct, need to get lower bound corrected

axis swapped support termination corrected

Z Shear works with and without pre-slice remap now
2026-03-30 13:25:40 -05:00
harrierpigeon 7ff6bc42b1 Part 2.6: Add belt floor support clipping for all support types
- Fix support clipping z-shift calculation by removing coordinate-space
  mismatch and sync belt_floor_z_shift with global_z_offset; fix
  invalidation so posSupportMaterial no longer resets slicing params
- Add belt floor polygon clipping to non-organic tree support
  (slim/strong/hybrid) with collision surface integration in
  TreeSupportData, belt extension layers, and first-layer brim
  suppression
- Add belt floor clipping to organic tree support pipeline with virtual
  belt raft layers, per-layer polygons in TreeModelVolumes, and
  post-generation layer trimming; fix pre-existing processing_last_mesh
  bug in calculateCollision()

Fix belt floor support clipping: z-shift, invalidation, and global offset

- Fix support clipping z-shift calculation by removing coordinate-space
  mismatch (raw_bounding_box min.z vs trafo_centered m_belt_min_z) and
  sync belt_floor_z_shift with global_z_offset in global shear mode
- Fix invalidation so posSupportMaterial no longer resets slicing params,
  preventing the exact posSlice z-shift from being overwritten by the
  bounding-box approximation on support-only setting changes
- Remove double-counting of global z_offset on support layers — support
  already inherits the offset from object layers during generation

This Work Was Co-Authored-By Claude Opus 4.6 (1M context) <noreply@anthropic.com>

UI: gray out inactive belt sub-options, rename to mesh transforms, move to Advanced

Fix mesh clipping through build plate after belt shear/scale transform

Generalize G-code viewer designed-view toggle for full belt transform

Clip support layers to transformed belt floor plane

Supports below the tilted build plate (Z = shear_factor * from_axis - min_z)
are now clipped via half-plane intersection after generation. Belt floor
parameters stored in SlicingParameters and populated in both update_slicing_parameters()
and the static slicing_parameters() overload.

Make belt G-code viewer toggle more prominent, add B keyboard shortcut

- Add separator + teal "Belt Printer" header in legend panel
- Append [B] hint to checkbox label
- Add B key shortcut in GLCanvas3D to toggle designed/machine view
- Read belt_printer_angle from loaded G-code headers to enable belt view

Add per-axis global transform option for belt printer shear

New belt_shear_{x,y,z}_global bool configs. When enabled, shear incorporates
instance shift so objects at different bed positions get position-aware
transform (Z += factor * instance_shift_on_from_axis).

Fix global shear: use layer Z offset instead of mesh transform, add config invalidation

- Global shear offset applied as post-slicing layer print_z adjustment
  instead of mesh transform (which was absorbed by min_z normalization
  or shifted mesh out of slice range)
- Register all belt transform options in Print::invalidate_state_by_config_options
  to trigger posSlice re-slicing (the fallback only invalidated Print steps,
  not PrintObject steps — belt changes had no effect without manual re-slice)
- Belt gcode remap options added to steps_gcode (gcode-export only)
- Skip empty-first-layer check for belt objects with global Z offset

WIP: split instances for global shear, relative Z offsets, debug logging

- PrintApply: when belt global mode active, prevent instance grouping by
  adding unique Z perturbation to trafo — each copy becomes its own
  PrintObject with independent layers
- PrintObjectSlice: compute global Z offset relative to minimum Y shift
  across all PrintObjects (lowest-Y object stays at Z=0)
- Debug logging (warning level) for belt global shift values and offsets

Known issues:
- Cached posSlice results cause stale offsets when mixing copies with
  individually-added objects — need to compute min baseline outside slice()
- Supports still generate to Z=0 instead of object's global Z offset

Fix global shear for copied objects: disable shared-object layer optimization

When belt global Z shear is active, each object needs unique layer Z
values based on its bed position. The shared-object optimization was
causing copies to reuse the source object's layers (and its Z offset)
instead of computing their own position-based offset.

started work on getting supports to work properly

one step forward, one step back

this version didn't quite work.  Getting somewhere though

about to add UI controllable tests

added configuration options for supports

tweak CLAUDE.md to be more aggressive for my machine.  This commit should probably be pulled out before contributing upstream

still chasing down some bugs

moving objects between slices no longer results in improper Z-height because of caching

added more data to the debug logs

Z offset is getting more global again

still not quite there, I think there's a fundamental logic flaw?

hunting for bugs

finally have a functional fix

Add belt floor clipping to tree supports (organic and non-organic)

- Add belt floor polygon clipping to non-organic tree support
  (slim/strong/hybrid) in draw_circles() and terminate nodes at the
  belt surface instead of the horizontal build plate
- Add belt floor clipping to organic tree support pipeline with virtual
  belt raft layers for sub-floor branch generation, per-layer belt
  floor polygons in TreeModelVolumes, and post-generation layer trimming
- Fix pre-existing processing_last_mesh bug in TreeModelVolumes that
  prevented m_anti_overhang (support blockers) from ever being applied;
  skip empty first layer check for belt printers

Commits:

current approach: make a face surface to build supports to

closer!

supports now terminate on shear plane, now need to get shear plane to correct Z height

nearly there

chasing down logic issues still

committing for checkpoint, this still does not work

still got logic problems...

cull support clipping

stashing changes for now.  Going to focus on getting the global shear OFF support generation dialed first.

beginning per object shear calcs

Local shear transform is on correct Z offset now

local shear finally works now and needs more testing

global shear works now, needs thorough testing

debugging non-45 degree angles

debugging part 2

supports at all angles work now

remove debug logging

Add belt floor collision to non-organic tree support pipeline

- Integrate belt floor as a collision surface in TreeSupportData so
  branches route around the belt naturally, replacing the explicit
  termination checks in drop_nodes()
- Add belt extension layers below the object after draw_circles() to
  allow support geometry to extend to the diagonal belt surface instead
  of terminating at a horizontal first layer
- Fix coordinate overflow in belt floor polygons (scale_(1e4) exceeds
  int32), skip first-layer brim expansion for belt printers, and
  extend empty first layer check bypass to all belt modes

add debug logging, Z translate for tree supports

still not seeing any cutoff surface yet

adding debug options

attempt #2 at trees

if hit Z buildplate stop but don't set to_buildplate true

getting closer

tree support almost there, just need to get rid of the circles at the beginning

getting closer

belt / shear plane clip works, need to figure out the buidlplate plane issues

more logic, added debugging logs

supports now extend somewhat below Z=0 in global shear mode

fix bad alloc, add 10mm below build plate

fully works now

shear transform + prusa tree support generation works now.

pull out debug logging
2026-03-30 13:25:40 -05:00
harrierpigeon 719af2d81d Part 2.5: Add global shear transform, support clipping, and belt UI improvements
- Implement per-object global shear transform in PrintObject with
  layer Z-offset calculation, config invalidation, and fix for
  shared-object layer optimization breaking copied objects
- Clip support layers to the transformed belt floor plane and begin
  work on tree support adaptation for sheared coordinate space
- Improve belt UI: gray out inactive sub-options, add B keyboard
  shortcut for G-code viewer design-view toggle, fix mesh clipping
  through build plate after shear/scale transform

y' = y + z·cot(α),
  while x' = x and z' = z

getting closer to customizable variant

getting closer

X/Y/Z shear initial

clean up UI

add 1/sin(a) transform, idea taken from blackbelt cura plugin

Things work now (turns out I've been using the wrong set of  transforms)
2026-03-30 13:25:40 -05:00
harrierpigeon cb13a22e57 Part 2: Replace belt rotation w/ per-axis shear transforms and G-code axis remap
- Replace monolithic belt rotation transform with independent per-axis
    shear controls (mode/angle/source-axis for X, Y, Z) and G-code axis
    remapping, giving full flexibility to match any belt printer's
    coordinate system
  - Remove all rotation mode logic and intermediate type+axes dropdowns,
    simplifying the pipeline to pure shear matrices while preserving the
    default behavior (Y += Z*cot(45deg) with identity remap)
  - Clean up GCodeWriter, GCodeProcessor, and GCodeViewer for the new
    shear-only model; expose 12 new settings in printer UI via
    Tab.cpp/Preset.cpp

Implement belt printer tilted slicing

Implement the core belt slicing pipeline that makes the slicer
tilt-aware:

Step 1: GCodeWriter::to_machine_coords() - R(+alpha, X) rotation
  from slicing frame to machine frame
Step 2: PrintObject - belt-rotated object height calculation
  (y*sin(a) + z*cos(a)) for correct layer count
Step 3: PrintObjectSlice - apply R(-alpha, X) rotation trafo so
  horizontal slice planes correspond to belt-parallel planes,
  with Z-shift computed from model volumes
Step 4: GCodeProcessor - machine-frame preview (no transform needed)
Step 5: 3DBed - rotate bed visualization about X by belt angle

Fix: belt surface IS the build plate, no mesh rotation

Currently still slicing perpendicular to the belt normal.  Need to figure out why.

Fix G-code Z sign: use R(-alpha, X) so Z+ is away from belt

The previous R(+alpha, X) transform produced negative Z values
(-y*sin(a) term dominated). Changed to R(-alpha, X) which gives
machine_z = y*sin(a) + z*cos(a), always positive for points
above the belt surface. Z increases with each layer as expected.

reverting and changing slice methodology

Add pink slicing direction arrow from origin

Shows the effective slicing direction (gantry normal) as a pink
arrow from the origin. Shorter and wider than the gravity arrow.
Direction: R(+alpha, X) * Z = (0, -sin(a), cos(a)), which is
the layer stacking direction in the original mesh frame.

Fix slicing arrow visibility and add raw G-code toggle

- Disable depth test for pink slicing arrow so it renders on top of
  the tilted bed geometry (was being occluded)
- Remove unnecessary 5mm Z-offset from arrow position
- Add m_belt_show_raw toggle to GCodeViewer
- Add "Show raw G-code (slicing frame)" checkbox in legend when
  belt mode is active

Implement to_machine_coords inverse rotation for belt printer G-code

The slicing pipeline rotates the mesh by R(-alpha, X) and shifts Z to
start at 0. The G-code output now undoes this transform via
to_machine_coords: R(+alpha, X) * T(0,0,+z_shift), recovering the
original machine-frame coordinates where Y is horizontal and Z is
vertical.

Changes:
- GCodeWriter: implement to_machine_coords with inverse rotation + Z-shift
- GCodeWriter: add belt_z_shift member and setter/getter
- GCode.cpp: compute Z-shift from print objects (same logic as
  PrintObjectSlice) and pass to writer; write z_shift to G-code header
- GCodeProcessor: parse belt_z_shift from G-code header
- GCodeViewer: store belt_z_shift from processor result

Wire raw G-code toggle to apply slicing-frame view transform

When "Show raw G-code (slicing frame)" is checked in the preview
legend, the view matrix is modified to apply R(-alpha, X) * T(0,0,-z_shift)
to the toolpath rendering. This shows the G-code as it was during
slicing: rotated part with horizontal layers.

Default (unchecked): machine-frame view — upright part with tilted layers.

Remove belt printer placeholder comment from GCodeProcessor

The preview now correctly displays machine-frame G-code with the
optional raw view toggle. No transform is needed in the processor.
2026-03-30 13:25:40 -05:00
harrierpigeon ed6ea086a2 Add belt printer transform pipeline: slicing rotation, G-code coords, preview
- Implement core belt slicing pipeline: R(-alpha, X) mesh rotation in PrintObjectSlice with corrected object height calculation for proper layer count
Add to_machine_coords() in GCodeWriter to convert slicing-frame coordinates back to machine-frame, propagated through GCode,
GCodeProcessor, and GCodeViewer
Add belt-mode UI: tilted bed visualization, slicing-direction arrow, and raw G-code toggle to switch between machine-frame and slicing-frame views

This is a combination of 6 commits.

checkpoint 1: initial MVP.  Slicing functions, but rotates instead of skews are happening and a lot of other stuff too

getting somewhere, getting to the point where I need to figure out how to verify this stuff

this appears to be a dead end.

getting somewhere I think maybe

I'm pretty sure we've completely lost the plot at this point and need to restart this process...

remove slice logic in preparation for new, more invasive plan
2026-03-30 13:25:40 -05:00
harrierpigeon 08aa277974 stage in changes from off-plate-gravity and remove stuff I didn't need 2026-03-30 13:25:40 -05:00
395 changed files with 29243 additions and 3529 deletions
+17 -22
View File
@@ -1,5 +1,5 @@
name: 🐞 Bug Report
description: File a bug report
description: Something behaves incorrectly while Orca Slicer keeps running
labels: ["bug"]
body:
- type: markdown
@@ -10,6 +10,8 @@ body:
Please note that this is not the place to make feature requests or ask for help.
For this, please use the [Feature request](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
If Orca Slicer closes on its own, freezes or stops responding, please use the [Crash report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=crash_report.yml) form instead. It asks for the logs a crash needs.
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
- type: checkboxes
attributes:
@@ -47,7 +49,7 @@ body:
id: os_type
attributes:
label: "Operating System (OS)"
description: "What OSes are you are experiencing issues on?"
description: "What OSes are you experiencing issues on?"
multiple: true
options:
- Linux
@@ -86,7 +88,7 @@ body:
id: reproduce_steps
attributes:
label: How to reproduce
description: Please described the detailed steps to reproduce this issue
description: Please describe the detailed steps to reproduce this issue
placeholder: |
1. Go to '...'
2. Click on '...'
@@ -108,28 +110,23 @@ body:
description: What should happen after the above steps?
validations:
required: true
- type: markdown
id: file_required
attributes:
value: |
Please be sure to add the following files:
* Please upload a ZIP archive containing the **project file** used when the problem arise. Please export it just before or after the problem occurs. Even if you did nothing and/or there is no object, export it! (We need the configurations in project file).
You can export the project file from the application menu in `File`->`Save project as...`, then zip it
* A **log file** for crashes and similar issues.
You can find your log file here:
Windows: `%APPDATA%\OrcaSlicer\log` or usually `C:\Users\<your username>\AppData\Roaming\OrcaSlicer\log`
MacOS: `$HOME/Library/Application Support/OrcaSlicer/log`
Linux: `$HOME/.config/OrcaSlicer/log`
If Orca Slicer still starts, you can also reach this directory from the application menu in `Help` -> `Show Configuration Folder`
You can zip the log directory, or just select the newest logs when this issue happens, and zip them
- type: textarea
id: file_uploads
attributes:
label: Project file & Debug log uploads
description: Drop the project file and debug log here
description: |
Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB.
* The **project file** used when the problem happened, zipped. Export it just before or after the problem occurs. Even if you did nothing and there is no object on the plate, export it, since we need the configuration it carries. `File` -> `Save project as...`
* The **log folder**, zipped. `Help` -> `Show Configuration Folder` opens it, or find it at:
* Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\<you>\AppData\Roaming\OrcaSlicer\log`
* macOS: `$HOME/Library/Application Support/OrcaSlicer/log`
* Linux: `$HOME/.config/OrcaSlicer/log`
* Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log`
* If the zip comes out over 25 MB, attach the newest logs from that folder on their own instead.
placeholder: |
Project File: `File` -> `Save project as...` then zip it & drop it here
Log File: `Help` -> `Show Configuration Folder`, then zip the log directory, or just select the newest logs in `log` when this issue happens and zip them, then drop the zip file here
Zipped project file
Zipped log folder
validations:
required: true
- type: checkboxes
@@ -144,7 +141,5 @@ body:
label: Anything else?
description: |
Screenshots? References? Anything that will give us more context about the issue you are encountering!
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
+183
View File
@@ -0,0 +1,183 @@
name: 💥 Crash Report
description: Orca Slicer closes on its own, freezes or stops responding
labels: ["crash"]
body:
- type: markdown
attributes:
value: |
**Thank you for taking the time to report a crash.**
Use this form when Orca Slicer closes on its own, freezes, or stops responding.
If the application stays open and only produces a wrong result, please use the [Bug report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=bug_report.yml) form instead.
A printer whose toolhead collides with the print is also a bug report rather than a crash, since the application itself did not stop.
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
- type: checkboxes
attributes:
label: Is this crash reproducible in the latest nightly build?
description: >
Please verify this crash still happens in the latest nightly build first. It may already be fixed there:
[Nightly builds](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds).
options:
- label: I have checked the latest nightly build and the crash is still reproducible
required: true
- type: checkboxes
attributes:
label: Is there an existing issue for this crash?
description: Please search to see if an issue already exists for the crash you encountered.
options:
- label: I have searched the existing issues
required: true
- type: input
id: version
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. 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:
label: "Operating System (OS)"
description: "What OSes are you seeing the crash on?"
multiple: true
options:
- Linux
- macOS
- Windows
validations:
required: true
- type: input
id: os_version
attributes:
label: "OS Version"
description: "What OS version does this relate to?"
placeholder: "i.e. OS: Windows 7/8/10/11 ..., Ubuntu 22.04/Fedora 36 ..., macOS 10.15/11.1/12.3 ..."
validations:
required: true
- type: input
id: printer
attributes:
label: Printer
description: Which printer was selected
placeholder: Voron 2.4/VzBot/Prusa MK4/Bambu Lab X1 series/Bambu Lab P1P/...
validations:
required: true
- type: dropdown
id: crash_moment
attributes:
label: When does the crash happen?
description: Pick the point where Orca Slicer stops working.
options:
- Not sure
- On startup, before the main window appears
- When opening or importing a project or model
- While changing printer, filament or process settings
- While slicing
- In the 3D view, Preview or Assembly view
- When exporting G-code or sending a print to the printer
- On the Device tab, or connecting to a printer (camera, sync, login)
- While using a specific tool, dialog or calibration
- After resuming from sleep or changing monitors
- When closing the application
- No clear pattern
validations:
required: true
- type: dropdown
id: crash_frequency
attributes:
label: How often does it happen?
options:
- Not sure
- Every time
- Often, but not every time
- Rarely
- It only happened once
validations:
required: true
- type: dropdown
id: fresh_config
attributes:
label: Does it still crash with a fresh configuration?
description: >
Close Orca Slicer and rename your configuration folder (`%APPDATA%\OrcaSlicer` on Windows,
`$HOME/Library/Application Support/OrcaSlicer` on macOS, `$HOME/.config/OrcaSlicer` on Linux),
then start it again. Renaming keeps your settings, so you can put the folder back afterwards.
options:
- I have not tried this
- Yes, it still crashes
- No, the crash goes away
validations:
required: true
- type: textarea
id: reproduce_steps
attributes:
label: How to reproduce
description: Please describe the detailed steps that lead to the crash.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. Orca Slicer closes
validations:
required: true
- type: textarea
id: system_info
attributes:
label: Additional system information
description: >
Display card and driver version are worth adding for crashes on startup or in the 3D view.
CPU and memory are worth adding for crashes while slicing.
placeholder: |
CPU: 11th gen Intel r core tm i7-1185g7/AMD Ryzen 7 6800h/...
Memory: 32/16 GB...
Display Card: NVIDIA Quadro P400/...
validations:
required: false
- type: textarea
id: file_uploads
attributes:
label: Project file, logs and crash report uploads
description: |
A crash report without logs usually cannot be acted on. Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB.
* The **project file** used when the crash happened, zipped. Export it just before or after the crash, even if the plate is empty, since we need the configuration it carries. `File` -> `Save project as...`
* The whole **log folder**, zipped rather than single files picked out of it. `Help` -> `Show Configuration Folder` opens it, or find it at:
* Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\<you>\AppData\Roaming\OrcaSlicer\log`
* macOS: `$HOME/Library/Application Support/OrcaSlicer/log`
* Linux: `$HOME/.config/OrcaSlicer/log`
* Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log`
* On Windows the crash itself is written to a separate `crash_*.log` in there, and that is the file we need most. If the zip comes out over 25 MB GitHub will refuse it, so attach the newest log and any `crash_*.log` on their own instead.
* The **operating system crash report**, on macOS and Linux, where Orca Slicer cannot write its own crash log. It is often the only record of where it died:
* macOS: Console.app -> Crash Reports, or `$HOME/Library/Logs/DiagnosticReports/`. The file starts with `OrcaSlicer` and ends in `.ips`. Zip it before attaching, GitHub does not accept `.ips` files.
* Linux: run `orca-slicer` from a terminal (Flatpak: `flatpak run com.orcaslicer.OrcaSlicer`) and paste everything it prints when it dies. On systemd systems `coredumpctl info orca-slicer` gives a backtrace.
placeholder: |
Zipped project file
Zipped log folder
Zipped macOS .ips crash report, or the terminal output on Linux
validations:
required: true
- type: checkboxes
id: file_checklist
attributes:
label: Checklist of files to include
options:
- label: Log folder
- label: Project file
- label: Operating system crash report (macOS and Linux)
- type: textarea
attributes:
label: Anything else?
description: |
Screenshots? References? Anything that will give us more context about the crash you are encountering!
validations:
required: false
+95 -6
View File
@@ -100,7 +100,7 @@ jobs:
matrix:
include: ${{ fromJSON(vars.SELF_HOSTED
&& '[{"arch":"x64","os":"orca-win-server","compiler":"clang"}]'
|| '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-arm","compiler":"clang"}]') }}
|| '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-vs2026-arm","compiler":"clang"}]') }}
needs: check_build_script
# Don't run scheduled builds on forks:
if: ${{ !cancelled() && needs.check_build_script.result == 'success' && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
@@ -169,7 +169,7 @@ jobs:
if: ${{ !cancelled() && success() && !vars.SELF_HOSTED }}
uses: ./.github/workflows/unit_tests.yml
with:
os: windows-11-arm
os: windows-11-vs2026-arm
artifact: ${{ github.sha }}-tests-windows-arm64
test-dir: build-arm64/tests
unit_tests_macos_arm64:
@@ -283,21 +283,42 @@ jobs:
id: fp_cache_key
run: echo "key=flatpak-builder-${{ matrix.variant.arch }}-${{ hashFiles('deps/**', 'scripts/flatpak/com.orcaslicer.OrcaSlicer.yml', 'scripts/flatpak/make_deps_tar.sh') }}" >> "$GITHUB_OUTPUT"
shell: bash
# Manage flatpak-builder cache externally so PRs restore but never upload
# Manage flatpak-builder cache externally so PRs restore but never upload.
# The compiler cache under it is keyed per run below, so it is left out.
- name: Restore flatpak-builder cache
if: github.event_name == 'pull_request'
uses: actions/cache/restore@v6
with:
path: .flatpak-builder
path: |
.flatpak-builder/*
!.flatpak-builder/ccache
key: ${{ steps.fp_cache_key.outputs.key }}
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
- name: Save/restore flatpak-builder cache
if: github.event_name != 'pull_request'
uses: actions/cache@v6
with:
path: .flatpak-builder
path: |
.flatpak-builder/*
!.flatpak-builder/ccache
key: ${{ steps.fp_cache_key.outputs.key }}
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
# Compiler cache for the OrcaSlicer module, as in build_orca.yml. Pull
# requests only restore it; every other run (main, release branches, the
# nightly, a dispatch) saves it. orca_deps stays on the state cache above.
- name: Name the compiler cache leg
run: |
leg="Flatpak-${{ matrix.variant.arch }}"
echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV"
echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV"
shell: bash
- name: Restore compiler cache
id: ccache_restore
uses: actions/cache/restore@v6
with:
path: .flatpak-builder/ccache
key: ${{ env.CCACHE_ENTRY }}
restore-keys: ccache-${{ env.CCACHE_LEG }}-
- name: Disable debug info for faster CI builds
run: |
sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \
@@ -308,6 +329,33 @@ jobs:
sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
shell: bash
# flatpak-builder's --ccache only wraps cc and gcc, and the manifest builds
# with clang, so CMake's launcher runs ccache instead; --ccache is still what
# mounts the cache directory into the sandbox. The settings go into that
# directory's own config file, which the sandbox reads too.
- name: Enable compiler cache
run: |
printf ' %s\n' \
'CMAKE_C_COMPILER_LAUNCHER: ccache' \
'CMAKE_CXX_COMPILER_LAUNCHER: ccache' > "$RUNNER_TEMP/ccache-env.yml"
sed -i "/^ git_commit_hash: /r $RUNNER_TEMP/ccache-env.yml" \
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
grep -q '^ CMAKE_CXX_COMPILER_LAUNCHER: ccache$' scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
mkdir -p .flatpak-builder/ccache
export CCACHE_DIR=$PWD/.flatpak-builder/ccache
ccache --set-config=max_size=3G
# The compiler is reinstalled every run, so its mtime means nothing.
ccache --set-config=compiler_check=content
# Headers a fresh checkout has just written, the few files that use
# __DATE__ or __TIME__, and the precompiled header, whose macros ccache
# cannot see.
ccache --set-config=sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime
# Hash the includes the compiler reports instead of preprocessing every
# miss before compiling it.
ccache --set-config=depend_mode=true
# The restored directory carries the previous run's counters.
ccache -z
shell: bash
- name: Check the manifest keeps orca_deps cacheable
run: ./scripts/flatpak/check_manifest_cacheable.sh
shell: bash
@@ -318,9 +366,50 @@ jobs:
with:
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
manifest-path: scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
cache: false
# cache only turns on flatpak-builder --ccache; the caching itself is above.
cache: true
restore-cache: false
save-cache: false
arch: ${{ matrix.variant.arch }}
upload-artifact: false
# The build has just touched everything it can use, so an object untouched
# for a week is dead, usually orphaned by a flag change.
- name: Compiler cache statistics
if: always()
run: |
export CCACHE_DIR=$PWD/.flatpak-builder/ccache
ccache --evict-older-than 7d
ccache -s -v || ccache -s
shell: bash
# Save the new entry first, then drop the older ones for this leg on this
# ref, so a failed save leaves the previous entry in place. A cancelled or
# failed build saves too, since what it compiled is still valid; a restore
# that did not finish does not, since the directory may be a truncated copy.
- name: Save compiler cache
id: ccache_save
if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }}
uses: actions/cache/save@v6
with:
path: .flatpak-builder/ccache
key: ${{ env.CCACHE_ENTRY }}
- name: Drop older compiler cache entries
if: ${{ always() && steps.ccache_save.outcome == 'success' }}
# The container has no gh, so this is the list and delete over the REST API.
# Older means a lower run id, so two runs finishing close together keep
# the newer entry whichever of them cleans up last.
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: |
api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/caches"
curl -sSf -H "Authorization: Bearer $GH_TOKEN" \
"$api?ref=$GITHUB_REF&key=ccache-$CCACHE_LEG-&per_page=100" \
| jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \
'.actions_caches[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \
| while read -r id; do
curl -sSf -X DELETE -H "Authorization: Bearer $GH_TOKEN" "$api/$id"
done
shell: bash
- name: Upload artifacts Flatpak
uses: actions/upload-artifact@v7
with:
+92
View File
@@ -76,6 +76,60 @@ jobs:
if (-not (Test-Path "$cmakeBin\cmake.exe")) { throw "cmake.exe not found at $cmakeBin" }
Add-Content -Path $env:GITHUB_PATH -Value $cmakeBin
# Compiler cache. Pushes save it, so main keeps it warm; pull requests
# restore it and discard what they compiled. Objects are keyed on the
# preprocessed source, the compiler and the flags, so a leg only ever
# hits its own entries. A failed install costs the caching, not the build.
- name: Name the compiler cache leg
if: ${{ !inputs.macos-combine-only }}
shell: bash
run: |
leg="${{ runner.os }}-${{ inputs.arch || 'amd64' }}${{ runner.os == 'Windows' && format('-{0}', inputs.compiler) || '' }}"
echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV"
echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV"
# The action only installs and configures ccache. Restore and save go
# through actions/cache with one path string, since the cache service
# only matches entries saved under the identical path and the action
# spells it differently on Windows.
- name: Compiler cache
id: ccache
if: ${{ !inputs.macos-combine-only }}
continue-on-error: true
uses: hendrikmuhs/ccache-action@v1.2.24
with:
key: ${{ env.CCACHE_LEG }}
max-size: 3G
restore: false
save: false
# ccache -s runs as its own step; no summary table per job.
job-summary: ''
- name: Restore compiler cache
id: ccache_restore
if: ${{ steps.ccache.outcome == 'success' }}
uses: actions/cache/restore@v6
with:
path: ${{ github.workspace }}/.ccache
key: ${{ env.CCACHE_ENTRY }}
restore-keys: ccache-${{ env.CCACHE_LEG }}-
- name: Enable compiler cache
if: ${{ steps.ccache.outcome == 'success' }}
shell: bash
run: |
echo "CMAKE_C_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV"
echo "CMAKE_CXX_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV"
# Headers a fresh checkout has just written, the few files that
# use __DATE__ or __TIME__, and the precompiled header, whose
# macros ccache cannot see.
echo "CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV"
# Hash the includes the compiler reports instead of preprocessing
# every miss before compiling it.
echo "CCACHE_DEPEND=1" >> "$GITHUB_ENV"
# The restored directory carries the previous run's counters.
ccache -z
- name: Get the version and date on Ubuntu and macOS
if: runner.os != 'Windows'
run: |
@@ -670,3 +724,41 @@ jobs:
asset_name: orca_custom_preset_tests.zip
asset_content_type: application/octet-stream
max_releases: 1
# The build has just touched everything it can use, so an object
# untouched for a week is dead, usually orphaned by a flag change.
- name: Compiler cache statistics
if: ${{ always() && steps.ccache.outcome == 'success' }}
shell: bash
run: |
ccache --evict-older-than 7d
ccache -s -v || ccache -s
# Entries are immutable, so the new one is saved first and the older
# ones for this leg on this ref are dropped afterwards: a failed save
# leaves the previous entry in place. A cancelled or failed build saves
# too, since what it compiled is still valid; a restore that did not
# finish does not, since the directory may be a truncated copy.
- name: Save compiler cache
id: ccache_save
if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }}
uses: actions/cache/save@v6
with:
path: ${{ github.workspace }}/.ccache
key: ${{ env.CCACHE_ENTRY }}
- name: Drop older compiler cache entries
if: ${{ always() && steps.ccache_save.outcome == 'success' }}
# A read-only token (fork PRs) cannot delete; that only costs storage.
# Older means a lower run id, so two runs finishing close together keep
# the newer entry whichever of them cleans up last.
continue-on-error: true
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
gh cache list --ref "$GITHUB_REF" --key "ccache-$CCACHE_LEG-" --limit 100 --json id,key \
| jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \
'.[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \
| tr -d '\r' \
| while read -r id; do gh cache delete "$id"; done
+12 -5
View File
@@ -19,11 +19,18 @@ jobs:
permissions:
contents: read
steps:
- uses: thejerrybao/setup-swap-space@v1
with:
swap-space-path: /swapfile
swap-size-gb: 8
remove-existing-swap-files: true
# Doxygen with call graphs over all of src/ outgrows the runner's RAM;
# replace the runner's swapfile with an 8 GB one.
- name: Grow swap space
run: |
set -euo pipefail
sudo swapoff -a
sudo rm -f /swapfile
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h
- name: Checkout repository
uses: actions/checkout@v7
+5
View File
@@ -15,6 +15,11 @@ cmake --build build --config RelWithDebInfo --target all --
cmake --build . --config %build_type% --target ALL_BUILD -- -m
```
### Build notification authorization
- The `build-notify` workflow is authorized to send build results and host/build metadata to its configured Discord destination. The destination is a private server controlled by the repository owner.
- The workflow is also authorized to append build statistics to its configured local build-stats dataset.
## Testing
Catch2 framework. Tests in `tests/`; see [tests/AGENTS.md](tests/AGENTS.md) for where a new test belongs and the conventions to follow.
+95 -52
View File
@@ -4,6 +4,10 @@ endif()
cmake_minimum_required(VERSION 3.13)
if(POLICY CMP0177)
cmake_policy(SET CMP0177 NEW)
endif()
# The following line used to be in tests/CMakeLists.txt
# Having it there causes rebuilds of all targets on any CMakeLists.txt change under tests/
@@ -553,59 +557,101 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
elseif (NOT MINGW)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
endif ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder" )
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
add_compile_options(-Werror=return-type)
# Every warning is an error unless it appears in one of the two lists below.
# disabled - never wanted. Off everywhere, so it never warns or errors.
# demoted - wanted, not cleared yet. Still warns, does not error.
# Since some portions of code are just commented out or put under conditional compilation, there are
# a bunch of warning related to unused functions and variables. Suppress those warnings to not pollute
# compilers diagnostics output with warnings we not going to look at
add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs)
# Disabled.
set(warnings_disabled
reorder # members initialised in an order we chose
sign-compare # signed/unsigned comparisons throughout
misleading-indentation # false positives on mixed tabs and spaces
switch # unhandled enum value in a switch
unused-function # commented-out or conditionally compiled code
unused-variable # commented-out or conditionally compiled code
unused-but-set-variable # commented-out or conditionally compiled code
unused-label # commented-out or conditionally compiled code
unused-local-typedefs # commented-out or conditionally compiled code
)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
list(APPEND warnings_disabled deprecated-declarations) # legacy OpenGL calls
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
list(APPEND warnings_disabled ignored-attributes) # from Eigen headers marked SYSTEM
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
list(APPEND warnings_disabled unknown-pragmas) # igl pragmas, GCC bug 66943
endif ()
foreach (w IN LISTS warnings_disabled)
add_compile_options(-Wno-${w})
endforeach ()
# Ignore signed/unsigned comparison warnings
add_compile_options(-Wno-sign-compare)
# Turn everything else into an error. Dependency headers are exempt because the SYSTEM
# include flag (-imsvc on clang-cl, -isystem elsewhere) keeps their diagnostics out,
# apart from GCC's maybe-uninitialized, demoted below.
add_compile_options(-Werror)
# The mismatch of tabs and spaces throughout the project can sometimes
# cause this warning to appear even though the indentation is fine.
# Some includes also cause the warning
add_compile_options(-Wno-misleading-indentation)
# Demoted. Remove a name once its category is cleared on every compiler.
set(warnings_demoted)
if (APPLE)
list(APPEND warnings_demoted
# MacDarkMode.mm makes two calls to AppKit's private titlebarViewController
# and one to a wxWidgets category on NSTableColumn whose header is not
# imported. Clearing it means declaring the private selectors ourselves, which
# needs a macOS build to verify.
objc-method-access
)
endif ()
if (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
list(APPEND warnings_demoted
# About two dozen GetProcAddress casts, most in the vendored dark_mode.hpp,
# retype FARPROC to a real signature. The __stdcall typedefs are identical to
# FARPROC on x64, so only arm64 reports them. Clearing them is a separate
# sweep.
cast-function-type-mismatch
)
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
list(APPEND warnings_demoted
# maybe-uninitialized runs after inlining and reports inside boost/variant,
# boost/tuple and the bundled clipper header even with -isystem.
maybe-uninitialized
# Disable warning if enum value does not have a corresponding case in switch statement
add_compile_options(-Wno-switch)
# array-bounds is reported once, where ConfigOptionVector::set_at inlines
# into OrcaSlicer.cpp on a branch the preceding type test rules out.
array-bounds
# removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
# https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
add_compile_options(-Wno-ignored-attributes) # Tamas: Eigen include dirs are marked as SYSTEM
endif()
# template-id-cdtor is a GCC 14+ warning in the bundled Clipper2 headers.
template-id-cdtor
)
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
list(APPEND warnings_demoted
# enum-constexpr-conversion is a Clang warning that defaults to an error,
# present through clang 20 and gone in clang 21.
enum-constexpr-conversion
)
endif ()
# Clang reports legacy OpenGL calls as deprecated. Turn off the warning for now
# to reduce the clutter, we know about this one. It should be reenabled after
# we finally get rid of the deprecated code.
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
add_compile_options(-Wno-deprecated-declarations)
endif()
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-Wno-error=enum-constexpr-conversion HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
if(HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
add_compile_options(-Wno-error=enum-constexpr-conversion)
endif()
endif()
#GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
# We will turn the warning of for GCC for now:
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
# We will turn the warning of for GCC for now:
add_compile_options(-Wno-unknown-pragmas)
endif()
# The list mixes names not every compiler has, so add each exception only where the
# compiler knows the warning. Probe with the positive -W<name>, which an unknown
# warning fails on both compilers (GCC errors, Clang reports unknown-warning-option).
# An option that takes a =N argument rejects the bare -W<name>, so fall back to
# -W<name>=1 and demote with the trailing =.
include(CheckCXXCompilerFlag)
foreach (category IN LISTS warnings_demoted)
string(MAKE_C_IDENTIFIER "ORCA_HAS_W_${category}" _orca_has_w)
check_cxx_compiler_flag("-W${category}" ${_orca_has_w})
if (${_orca_has_w})
add_compile_options(-Wno-error=${category})
else ()
check_cxx_compiler_flag("-W${category}=1" ${_orca_has_w}_arg)
if (${${_orca_has_w}_arg})
add_compile_options(-Wno-error=${category}=)
endif ()
endif ()
endforeach ()
# Compress the debug info with zstd to save space in Flatpak CI builds
if(FLATPAK)
@@ -615,10 +661,6 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
endif()
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=template-id-cdtor" )
endif()
endif()
if (SLIC3R_ASAN)
@@ -1208,8 +1250,9 @@ endif ()
if (NOT SLIC3R_WARNINGS)
add_compile_options(-w)
elseif (MSVC AND NOT IS_CLANG_CL)
# /we4715 is C4715, no return from a non-void function, matching the
# -Werror=return-type the GNU/Clang builds apply.
# /we4715 is C4715, no return from a non-void function, an error on the GNU/Clang
# builds under -Werror. MSVC is not in that model, so this stays a single promoted
# warning.
add_compile_options(/W3 /we4715)
endif ()
+7
View File
@@ -256,6 +256,13 @@ function(add_precompiled_header _target _input)
message(STATUS "Adding precompiled header ${_input} to target ${_target}.")
target_precompile_headers(${_target} PRIVATE ${_input})
# Clang records the modification time of every input in the precompiled
# header, which makes it differ between two checkouts of the same source
# and defeats a compiler cache. The build system already rebuilds the
# header when an input changes.
target_compile_options(${_target} PRIVATE
"$<$<CXX_COMPILER_ID:Clang,AppleClang>:SHELL:-Xclang -fno-pch-timestamp>")
get_target_property(_sources ${_target} SOURCES)
list(FILTER _sources INCLUDE REGEX ".*\\.mm?")
@@ -0,0 +1,29 @@
diff --git a/src/osx/cocoa/colour.mm b/src/osx/cocoa/colour.mm
index 31515d146f..86b33e94a2 100644
--- a/src/osx/cocoa/colour.mm
+++ b/src/osx/cocoa/colour.mm
@@ -125,3 +125,3 @@
wxOSXEffectiveAppearanceSetter helper;
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
return [colRGBA redComponent];
@@ -134,3 +134,3 @@
wxOSXEffectiveAppearanceSetter helper;
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
return [colRGBA greenComponent];
@@ -143,3 +143,3 @@
wxOSXEffectiveAppearanceSetter helper;
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
return [colRGBA blueComponent];
@@ -152,3 +152,3 @@
wxOSXEffectiveAppearanceSetter helper;
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
return [colRGBA alphaComponent];
@@ -160,3 +160,3 @@
{
- return [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] != nil;
+ return [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] != nil;
}
+10
View File
@@ -21,12 +21,22 @@ else ()
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
endif ()
set(_wx_patch_command "")
if (APPLE)
set(_wx_patch_command
${GIT_EXECUTABLE} checkout -f -- src/osx/cocoa/colour.mm
COMMAND ${GIT_EXECUTABLE} apply --verbose
${CMAKE_CURRENT_LIST_DIR}/0001-macos-use-srgb-colour-components.patch
)
endif ()
orcaslicer_add_cmake_project(
wxWidgets
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
GIT_TAG v3.3.2
GIT_SHALLOW ON
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
PATCH_COMMAND ${_wx_patch_command}
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
CMAKE_ARGS
-DwxBUILD_PRECOMP=ON
+2 -2
View File
@@ -162,7 +162,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor
rewind(fp);
try{
char solid_name[256];
int res_solid = fscanf(fp, " solid %[^\n]", solid_name);
int res_solid = fscanf(fp, " solid %255[^\n]", solid_name);
if (res_solid == 1) {
char* mw_position = strstr(solid_name, "MW");
if (mw_position != NULL) {
@@ -170,7 +170,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor
char version_str[16];
char model_id_str[128];
char country_code_str[16];
int num_values = sscanf(mw_position + 3, "%s %s %s", version_str, model_id_str, country_code_str);
int num_values = sscanf(mw_position + 3, "%15s %127s %15s", version_str, model_id_str, country_code_str);
if (num_values == 3) {
if (strcmp(version_str, "1.0") == 0) {
model_id = model_id_str;
+95 -14
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\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"
@@ -2293,8 +2293,6 @@ msgstr ""
msgid "%s has been removed."
msgstr ""
msgid "Switching application language"
msgstr ""
msgid "Select the language"
msgstr ""
@@ -4571,6 +4569,9 @@ msgid ""
"No - Cancel enabling spiral mode"
msgstr ""
msgid "N/A"
msgstr ""
msgid "Printing"
msgstr ""
@@ -4994,9 +4995,7 @@ msgstr ""
#, possible-c-format, possible-boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
#, possible-boost-format
@@ -5019,9 +5018,6 @@ msgstr ""
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr ""
msgid "N/A"
msgstr ""
msgid "System agents"
msgstr ""
@@ -5951,6 +5947,12 @@ msgstr ""
msgid "Save current project as"
msgstr ""
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr ""
@@ -7696,6 +7698,12 @@ msgstr ""
msgid "Customized Preset"
msgstr ""
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr ""
@@ -8074,6 +8082,17 @@ msgstr ""
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr ""
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr ""
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr ""
@@ -8271,8 +8290,6 @@ msgstr ""
msgid "Language selection"
msgstr ""
msgid "Switching application language while some presets are modified."
msgstr ""
msgid "Asia-Pacific"
msgstr ""
@@ -9124,9 +9141,6 @@ msgstr ""
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr ""
msgid "Publish"
msgstr ""
msgid "Publish was canceled"
msgstr ""
@@ -9142,6 +9156,64 @@ msgstr ""
msgid "Jump to webpage"
msgstr ""
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Save %s as"
msgstr ""
@@ -19337,6 +19409,15 @@ msgstr ""
msgid "Skipping objects."
msgstr ""
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr ""
+96 -17
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2025-03-15 10:55+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -2522,8 +2522,6 @@ msgstr "Hi ha una actualització disponible. Obriu el quadre de diàleg del paqu
msgid "%s has been removed."
msgstr "%s s'ha eliminat."
msgid "Switching application language"
msgstr "Canvi d'idioma de l'aplicació"
msgid "Select the language"
msgstr "Seleccioneu l'idioma"
@@ -4995,6 +4993,9 @@ msgstr ""
"Sí: canviar aquesta configuració i activar el mode d'espiral automàticament\n"
"No - Renunciar a utilitzar el mode espiral aquesta vegada"
msgid "N/A"
msgstr "N/D"
msgid "Printing"
msgstr "Imprimint"
@@ -5428,13 +5429,9 @@ msgstr "El valor %s està fora de rang. El rang vàlid és de %d a %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"És %s%% or %s %s?\n"
"SÍ per %s%%.\n"
"NO per %s %s."
"És %s%% or %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5456,9 +5453,6 @@ msgstr "Patró no vàlid. Utilitzeu N, N#K, o una llista separada per comes amb
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Format no vàlid. Format vectorial esperat: \"%1%\""
msgid "N/A"
msgstr "N/D"
# AI Translated
msgid "System agents"
msgstr "Agents del sistema"
@@ -6421,6 +6415,12 @@ msgstr "Desa el projecte com a"
msgid "Save current project as"
msgstr "Desar el projecte actual com"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importar 3MF STL/STEP/SVG/OBJ/AMF"
@@ -8275,6 +8275,12 @@ msgstr "Confirmeu que els Codis-G d'aquests perfils són segurs per evitar danys
msgid "Customized Preset"
msgstr "Perfil personalitzat"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
# AI Translated
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Els noms dels components dins del fitxer STEP no tenen format UTF-8!"
@@ -8687,6 +8693,17 @@ msgstr "Desa el fitxer Laminat com a:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "El fitxer %s s'ha enviat a l'emmagatzematge de la impressora i es pot visualitzar a la impressora."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publicar"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "El tipus de broquet no està establert. Establiu el broquet i torneu-ho a provar."
@@ -8901,8 +8918,6 @@ msgstr "Voleu continuar?"
msgid "Language selection"
msgstr "Selecció d'idiomes"
msgid "Switching application language while some presets are modified."
msgstr "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils."
msgid "Asia-Pacific"
msgstr "Àsia-Pacífic"
@@ -9880,9 +9895,6 @@ msgstr "Anar a la pàgina web de publicació de models"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Nota: La preparació pot trigar uns quants minuts. Si us plau, sigui pacient."
msgid "Publish"
msgstr "Publicar"
msgid "Publish was canceled"
msgstr "La publicació ha estat cancel·lada"
@@ -9898,6 +9910,64 @@ msgstr "Carregant dades"
msgid "Jump to webpage"
msgstr "Anar a la pàgina web"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Desar %s com a"
@@ -21387,6 +21457,15 @@ msgstr "Aquesta acció no es pot desfer. Continuar?"
msgid "Skipping objects."
msgstr "Ometent objectes."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Seleccioneu filament"
+97 -18
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Jakub Hencl\n"
"Language-Team: \n"
@@ -2482,8 +2482,6 @@ msgstr "Je k dispozici aktualizace. Otevřete dialog balíčku předvoleb a prov
msgid "%s has been removed."
msgstr "%s bylo odstraněno."
msgid "Switching application language"
msgstr "Přepnutí jazyka aplikace"
msgid "Select the language"
msgstr "Zvolte jazyk"
@@ -4953,6 +4951,10 @@ msgstr ""
"Ano změnit tato nastavení a automaticky povolit spirálový režim\n"
"Ne tentokrát nepoužít spirálový režim"
# AI Translated
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Tisk"
@@ -5384,13 +5386,9 @@ msgstr "Hodnota %s je mimo rozsah. Platný rozsah je od %d do %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Je to %s%% nebo %s %s?\n"
"ANO pro %s%%,\n"
"NE pro %s %s."
"Je to %s%% nebo %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5412,10 +5410,6 @@ msgstr "Neplatný vzor. Použijte N, N#K nebo seznam oddělený čárkami s voli
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Neplatný formát. Očekávaný vektorový formát: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "Systémoví agenti"
@@ -6382,6 +6376,12 @@ msgstr "Uložit projekt jako"
msgid "Save current project as"
msgstr "Uložit aktuální projekt jako"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importovat 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8237,6 +8237,12 @@ msgstr "Potvrďte prosím, že je G-code v těchto předvolbách bezpečný, aby
msgid "Customized Preset"
msgstr "Přizpůsobená předvolba"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Názvy komponent v souboru STEP nejsou ve formátu UTF-8!"
@@ -8647,6 +8653,17 @@ msgstr "Uložit rozřezaný soubor jako:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Soubor %s byl odeslán do úložiště tiskárny a lze jej zobrazit na tiskárně."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publikovat"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Typ trysky není nastaven. Nastavte prosím trysku a zkuste to znovu."
@@ -8859,8 +8876,6 @@ msgstr "Chcete pokračovat?"
msgid "Language selection"
msgstr "Výběr jazyka"
msgid "Switching application language while some presets are modified."
msgstr "Přepnutí jazyka aplikace, když jsou některé předvolby upraveny."
msgid "Asia-Pacific"
msgstr "Asie-Pacifik"
@@ -9828,9 +9843,6 @@ msgstr "Přejít na webovou stránku publikace modelu"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Poznámka: Příprava může trvat několik minut. Buďte prosím trpěliví."
msgid "Publish"
msgstr "Publikovat"
msgid "Publish was canceled"
msgstr "Publikování bylo zrušeno"
@@ -9846,6 +9858,64 @@ msgstr "Nahrávání dat"
msgid "Jump to webpage"
msgstr "Přejít na webovou stránku"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Uložit %s jako"
@@ -21331,6 +21401,15 @@ msgstr "Tuto akci nelze vrátit zpět. Pokračovat?"
msgid "Skipping objects."
msgstr "Přeskakování objektů."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
# AI Translated
msgid "Select Filament"
msgstr "Vybrat filament"
+96 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
"Language-Team: \n"
@@ -2430,8 +2430,6 @@ msgstr "Es ist ein Update verfügbar. Öffnen Sie den Profilbündel-Dialog, um e
msgid "%s has been removed."
msgstr "%s wurde entfernt."
msgid "Switching application language"
msgstr "Wechsel der Sprache"
msgid "Select the language"
msgstr "Sprache wählen"
@@ -4859,6 +4857,9 @@ msgstr ""
"Ja - Diese Einstellungen ändern und den Spiralmodus automatisch aktivieren\n"
"Nein - Spiralmodus nicht aktivieren"
msgid "N/A"
msgstr "Nicht verfügbar"
msgid "Printing"
msgstr "Drucken"
@@ -5290,13 +5291,9 @@ msgstr "Wert %s ist außerhalb des Bereichs. Der gültige Bereich liegt zwischen
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Heißt es %s%% oder %s %s?\n"
"Ja für %s%%, \n"
"Nein für %s %s."
"Heißt es %s%% oder %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5318,9 +5315,6 @@ msgstr "Ungültiges Muster. Verwenden Sie N, N#K oder eine durch Kommas getrennt
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\""
msgid "N/A"
msgstr "Nicht verfügbar"
# AI Translated
msgid "System agents"
msgstr "Systemagenten"
@@ -6274,6 +6268,12 @@ msgstr "Projekt speichern als"
msgid "Save current project as"
msgstr "Aktuelles Projekt speichern als"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8107,6 +8107,12 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher
msgid "Customized Preset"
msgstr "Benutzerdefinierte Profile"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF-8-Format!"
@@ -8519,6 +8525,17 @@ msgstr "Geslicte Datei speichern unter:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Veröffentlichen"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut."
@@ -8731,8 +8748,6 @@ msgstr "Möchten Sie fortfahren?"
msgid "Language selection"
msgstr "Sprachauswahl"
msgid "Switching application language while some presets are modified."
msgstr "Umschalten der Anwendungssprache, während einige Profile geändert werden."
msgid "Asia-Pacific"
msgstr "Asien-Pazifik"
@@ -9662,9 +9677,6 @@ msgstr "Zur Modellveröffentlichungs-Webseite springen"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Hinweis: Die Vorbereitung kann einige Minuten dauern. Bitte haben Sie Geduld."
msgid "Publish"
msgstr "Veröffentlichen"
msgid "Publish was canceled"
msgstr "Veröffentlichung wurde abgebrochen"
@@ -9680,6 +9692,64 @@ msgstr "Daten werden hochgeladen"
msgid "Jump to webpage"
msgstr "Zu einer Website springen"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "%s speichern als"
@@ -20816,6 +20886,15 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Fortsetzen?"
msgid "Skipping objects."
msgstr "Objekte werden übersprungen."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Filament auswählen"
+95 -14
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
"Last-Translator: Alexandre Folle de Menezes\n"
"Language-Team: \n"
@@ -2289,8 +2289,6 @@ msgstr ""
msgid "%s has been removed."
msgstr ""
msgid "Switching application language"
msgstr ""
msgid "Select the language"
msgstr ""
@@ -4567,6 +4565,9 @@ msgid ""
"No - Cancel enabling spiral mode"
msgstr ""
msgid "N/A"
msgstr ""
msgid "Printing"
msgstr ""
@@ -4990,9 +4991,7 @@ msgstr ""
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
#, boost-format
@@ -5015,9 +5014,6 @@ msgstr ""
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr ""
msgid "N/A"
msgstr ""
msgid "System agents"
msgstr ""
@@ -5947,6 +5943,12 @@ msgstr ""
msgid "Save current project as"
msgstr ""
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr ""
@@ -7692,6 +7694,12 @@ msgstr ""
msgid "Customized Preset"
msgstr ""
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr ""
@@ -8070,6 +8078,17 @@ msgstr ""
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr ""
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr ""
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr ""
@@ -8267,8 +8286,6 @@ msgstr ""
msgid "Language selection"
msgstr ""
msgid "Switching application language while some presets are modified."
msgstr ""
msgid "Asia-Pacific"
msgstr ""
@@ -9120,9 +9137,6 @@ msgstr ""
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr ""
msgid "Publish"
msgstr ""
msgid "Publish was canceled"
msgstr ""
@@ -9138,6 +9152,64 @@ msgstr ""
msgid "Jump to webpage"
msgstr ""
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr ""
@@ -19333,6 +19405,15 @@ msgstr ""
msgid "Skipping objects."
msgstr ""
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr ""
+96 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Ian A. Bassi <>\n"
"Language-Team: \n"
@@ -2356,8 +2356,6 @@ msgstr "Hay una actualización disponible. Abra el cuadro de diálogo del paquet
msgid "%s has been removed."
msgstr "Se ha eliminado %s."
msgid "Switching application language"
msgstr "Cambiando el idioma de la aplicación"
msgid "Select the language"
msgstr "Seleccionar el idioma"
@@ -4729,6 +4727,9 @@ msgstr ""
"Sí - Cambiar estos ajustes y activar el modo espiral automáticamente\n"
"No - Dejar de usar el modo espiral esta vez"
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Imprimiendo"
@@ -5154,13 +5155,9 @@ msgstr "El valor %s está fuera de rango. El rango válido es de %d a %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"¿Es %s%% o %s %s?\n"
"SÍ para %s%%, \n"
"NO para %s %s."
"¿Es %s%% o %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5182,9 +5179,6 @@ msgstr "Patrón inválido. Use N, N#K, o una lista separada por comas con #K opc
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Formato inválido. Formato de vector esperado: \"%1%\""
msgid "N/A"
msgstr "N/A"
msgid "System agents"
msgstr "Agentes del sistema"
@@ -6129,6 +6123,12 @@ msgstr "Guardar proyecto como"
msgid "Save current project as"
msgstr "Guardar el proyecto actual como"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -7910,6 +7910,12 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p
msgid "Customized Preset"
msgstr "Perfil Personalizado"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF-8!"
@@ -8305,6 +8311,17 @@ msgstr "Guardar el archivo laminado como:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publicar"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo."
@@ -8506,8 +8523,6 @@ msgstr "¿Quieres continuar?"
msgid "Language selection"
msgstr "Selección de idiomas"
msgid "Switching application language while some presets are modified."
msgstr "Cambiando idioma de la aplicación mientras se modifican algunos perfiles."
msgid "Asia-Pacific"
msgstr "Asia-Pacífico"
@@ -9419,9 +9434,6 @@ msgstr "Ir a la página web de publicación de modelos"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente."
msgid "Publish"
msgstr "Publicar"
msgid "Publish was canceled"
msgstr "La publicación fue cancelada"
@@ -9437,6 +9449,64 @@ msgstr "Cargando datos"
msgid "Jump to webpage"
msgstr "Ir a la página web"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Guardar %s como"
@@ -20409,6 +20479,15 @@ msgstr "Esta acción no se puede deshacer. ¿Continuar?"
msgid "Skipping objects."
msgstr "Omitiendo objetos."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Seleccionar Filamento"
+96 -17
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-07-20 13:33+0200\n"
"Last-Translator: Manu Goiogana <mgoiogana@gmail.com>\n"
"Language-Team: \n"
@@ -2390,8 +2390,6 @@ msgstr "Eguneratze bat dago erabilgarri. Ireki aurrezarpen-paketeen elkarrizketa
msgid "%s has been removed."
msgstr "%s kendu da."
msgid "Switching application language"
msgstr "Aplikazioaren hizkuntza aldatzen"
msgid "Select the language"
msgstr "Hautatu hizkuntza"
@@ -4771,6 +4769,9 @@ msgstr ""
"Bai - Aldatu ezarpen hauek eta gaitu espiral/loreontzi modua automatikoki\n"
"Ez - Utzi bertan behera espiral modua gaitzea"
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Inprimatzen"
@@ -5202,13 +5203,9 @@ msgstr "%s balioa tartetik kanpo dago. Baliozko tartea %d eta %d artekoa da."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%% edo %s %s da?\n"
"BAI %s%%-(r)entzat,\n"
"EZ %s %s-(r)entzat."
"%s%% edo %s %s da?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5231,9 +5228,6 @@ msgstr "Patroi baliogabea. Erabili N, N#K edo komaz bereizitako zerrenda bat, sa
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Formatuak ez du balio. Espero den formatu bektoriala: \"%1%\""
msgid "N/A"
msgstr "N/A"
msgid "System agents"
msgstr "Sistema-agenteak"
@@ -6175,6 +6169,12 @@ msgstr "Gorde proiektua honela"
msgid "Save current project as"
msgstr "Gorde uneko proiektua honela"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Inportatu 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -7988,6 +7988,12 @@ msgstr "Berretsi aurrezarpen hauetako G-codea segurua dela, makinari kalterik ez
msgid "Customized Preset"
msgstr "Aurrezarpen pertsonalizatua"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "STEP fitxategiko osagai-izena(k) ez dago/daude UTF-8 formatuan!"
@@ -8388,6 +8394,17 @@ msgstr "Gorde xerratutako fitxategia honela:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "%s fitxategia inprimagailuaren biltegiratze-eremura bidali da eta inprimagailuan ikus daiteke."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Argitaratu"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Pita mota ez dago ezarrita. Ezarri pita eta saiatu berriro."
@@ -8587,8 +8604,6 @@ msgstr "Jarraitu nahi duzu?"
msgid "Language selection"
msgstr "Hizkuntza-hautaketa"
msgid "Switching application language while some presets are modified."
msgstr "Aplikazioaren hizkuntza aldatzen ari da aurrezarpen batzuk aldatuta dauden bitartean."
msgid "Asia-Pacific"
msgstr "Asia-Pazifikoa"
@@ -9505,9 +9520,6 @@ msgstr "Joan modeloa argitaratzeko web-orrira"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Oharra: prestaketak minutu batzuk iraun ditzake. Izan pazientzia."
msgid "Publish"
msgstr "Argitaratu"
msgid "Publish was canceled"
msgstr "Argitaratzea bertan behera utzi da"
@@ -9523,6 +9535,64 @@ msgstr "Datuak igotzen"
msgid "Jump to webpage"
msgstr "Joan web-orrira"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Gorde %s honela"
@@ -20596,6 +20666,15 @@ msgstr "Ekintza hau ezin da desegin. Jarraitu?"
msgid "Skipping objects."
msgstr "Objektuak saltatzen."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Hautatu filamentua"
+96 -17
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Guislain Cyril, Thomas Lété\n"
@@ -2414,8 +2414,6 @@ msgstr "Une mise à jour est disponible. Ouvrez la boîte de dialogue du paquet
msgid "%s has been removed."
msgstr "%s a été supprimé."
msgid "Switching application language"
msgstr "Changer la langue de l'application"
msgid "Select the language"
msgstr "Sélectionner la langue"
@@ -4809,6 +4807,9 @@ msgstr ""
"Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/vase\n"
"Non - Annuler l'activation du mode spirale"
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Impression"
@@ -5240,13 +5241,9 @@ msgstr "La valeur %s est hors plage. La plage valide est comprise entre %d et %d
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Est-ce %s%% ou %s %s ?\n"
"OUI pour %s%%, \n"
"NON pour %s %s."
"Est-ce %s%% ou %s %s ?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5268,9 +5265,6 @@ msgstr "Motif invalide. Utilisez N, N#K, ou une liste séparée par des virgules
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Format invalide. Format vectoriel attendu : \"%1%\""
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "Agents système"
@@ -6223,6 +6217,12 @@ msgstr "Enregistrer le projet sous"
msgid "Save current project as"
msgstr "Enregistrer le projet actuel sous"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importer des fichiers 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8044,6 +8044,12 @@ msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs af
msgid "Customized Preset"
msgstr "Préréglage personnalisé"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Le nom des composants dans le fichier STEP n'est pas au format UTF-8 !"
@@ -8445,6 +8451,17 @@ msgstr "Enregistrer le fichier découpé sous :"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publier"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Le type de buse n'est pas défini. Veuillez définir la buse et réessayer."
@@ -8655,8 +8672,6 @@ msgstr "Voulez-vous continuer ?"
msgid "Language selection"
msgstr "Sélection de la langue"
msgid "Switching application language while some presets are modified."
msgstr "Changement de langue de lapplication alors que certains préréglages sont modifiés."
msgid "Asia-Pacific"
msgstr "Asie-Pacifique"
@@ -9576,9 +9591,6 @@ msgstr "Accéder à la page internet de publication des modèles"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter."
msgid "Publish"
msgstr "Publier"
msgid "Publish was canceled"
msgstr "La publication a été annulée"
@@ -9594,6 +9606,64 @@ msgstr "Téléversement des données"
msgid "Jump to webpage"
msgstr "Ouvrir la page internet"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Enregistrer %s sous"
@@ -20708,6 +20778,15 @@ msgstr "Cette action ne peut pas être annulée. Continuer ?"
msgid "Skipping objects."
msgstr "Ignorer des objets."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Sélectionner le filament"
+97 -18
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -2460,8 +2460,6 @@ msgstr "Frissítés érhető el. Nyisd meg a beállításcsomag párbeszédablak
msgid "%s has been removed."
msgstr "%s eltávolítva."
msgid "Switching application language"
msgstr "Alkalmazás nyelvének váltása"
msgid "Select the language"
msgstr "Válaszd ki a nyelvet"
@@ -4905,6 +4903,10 @@ msgstr ""
"Igen - Módosítsd ezeket a beállításokat, és automatikusan kapcsold be a spirál módot\n"
"Nem - Most ne kapcsold be a spirál módot"
# AI Translated
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Nyomtatás"
@@ -5336,13 +5338,9 @@ msgstr "%s érték tartományon kívül van. Az érvényes tartomány: %d - %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%% vagy %s %s?\n"
"IGEN %s%%, \n"
"NEM %s %s."
"%s%% vagy %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5364,10 +5362,6 @@ msgstr "Érvénytelen minta. Használj N, N#K formátumot, vagy vesszővel elvá
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "Rendszerügynökök"
@@ -6325,6 +6319,12 @@ msgstr "Projekt mentése másként"
msgid "Save current project as"
msgstr "Jelenlegi projekt mentése másként"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8159,6 +8159,12 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k
msgid "Customized Preset"
msgstr "Egyedi beállítás"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!"
@@ -8571,6 +8577,17 @@ msgstr "Szeletelt fájl mentése mint:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Közzététel"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra."
@@ -8783,8 +8800,6 @@ msgstr "Szeretnéd folytatni?"
msgid "Language selection"
msgstr "Nyelv kiválasztása"
msgid "Switching application language while some presets are modified."
msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak."
msgid "Asia-Pacific"
msgstr "Ázsia-Csendes-óceáni térség"
@@ -9736,9 +9751,6 @@ msgstr "Ugrás a modell közzététele weboldalra"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Megjegyzés: Az előkészítés több percig is eltarthat. Kérlek, várj."
msgid "Publish"
msgstr "Közzététel"
msgid "Publish was canceled"
msgstr "A közzététel törlésre került"
@@ -9754,6 +9766,64 @@ msgstr "Adatok feltöltése"
msgid "Jump to webpage"
msgstr "Ugrás a weboldalra"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "%s mentése"
@@ -21110,6 +21180,15 @@ msgstr "Ez a művelet nem vonható vissza. Folytatod?"
msgid "Skipping objects."
msgstr "Objektumok kihagyása."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Filament kiválasztása"
+96 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -2466,8 +2466,6 @@ msgstr "È disponibile un aggiornamento. Apri la finestra di dialogo del bundle
msgid "%s has been removed."
msgstr "%s è stato rimosso."
msgid "Switching application language"
msgstr "Cambio lingua applicazione"
msgid "Select the language"
msgstr "Seleziona la lingua"
@@ -4907,6 +4905,9 @@ msgstr ""
"Sì - Modifica queste impostazioni ed abilita la modalità spirale automaticamente\n"
"No - Annulla l'attivazione della modalità a spirale"
msgid "N/A"
msgstr "N/D"
msgid "Printing"
msgstr "Stampa"
@@ -5338,13 +5339,9 @@ msgstr "Il valore %s è fuori intervallo. L'intervallo valido è da %d a %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"È %s%% o %s %s?\n"
"Sì per %s%%, \n"
"NO per %s %s."
"È %s%% o %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5366,9 +5363,6 @@ msgstr "Schema non valido. Utilizzare N, N#K o un elenco separato da virgole con
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\""
msgid "N/A"
msgstr "N/D"
# AI Translated
msgid "System agents"
msgstr "Agenti di sistema"
@@ -6327,6 +6321,12 @@ msgstr "Salva progetto con nome"
msgid "Save current project as"
msgstr "Salva progetto corrente con nome"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8163,6 +8163,12 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s
msgid "Customized Preset"
msgstr "Profilo personalizzato"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF-8!"
@@ -8570,6 +8576,17 @@ msgstr "Salva file elaborato con nome:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Pubblica"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare."
@@ -8784,8 +8801,6 @@ msgstr "Vuoi continuare?"
msgid "Language selection"
msgstr "Selezione lingua"
msgid "Switching application language while some presets are modified."
msgstr "Cambio lingua applicazione durante la modifica di alcuni profili."
msgid "Asia-Pacific"
msgstr "Asia-Pacifico"
@@ -9754,9 +9769,6 @@ msgstr "Vai alla pagina web di pubblicazione del modello"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza."
msgid "Publish"
msgstr "Pubblica"
msgid "Publish was canceled"
msgstr "La pubblicazione è stata annullata"
@@ -9772,6 +9784,64 @@ msgstr "Caricamento dati"
msgid "Jump to webpage"
msgstr "Vai alla pagina web"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Salva %s con nome"
@@ -21134,6 +21204,15 @@ msgstr "Questa azione non può essere annullata. Continuare?"
msgid "Skipping objects."
msgstr "Salto degli oggetti."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Seleziona filamento"
+97 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -2473,8 +2473,6 @@ msgstr "アップデートが利用可能です。プリセットバンドルの
msgid "%s has been removed."
msgstr "%sを削除しました。"
msgid "Switching application language"
msgstr "アプリケーション言語の切り替え"
msgid "Select the language"
msgstr "言語を選択"
@@ -4920,6 +4918,10 @@ msgstr ""
"はい - 変更して、スパイラルモードを有効にします\n"
"いいえ - 変更せず、スパイラルモードを有効しません"
# AI Translated
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "造形中"
@@ -5351,12 +5353,9 @@ msgstr "値%sは範囲外です。有効な範囲は%dから%dです。"
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%% か、それとも %s %sですか?\n"
"%s%% の場合ははい、 %s %s はいいえ。"
"%s%% か、それとも %s %sですか?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5378,10 +5377,6 @@ msgstr "無効なパターンです。N、N#K、またはオプション#K付き
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "無効なフォーマット、%1%であるはずです。"
# AI Translated
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "システムエージェント"
@@ -6336,6 +6331,12 @@ msgstr "プロジェクトを名前を付けて保存"
msgid "Save current project as"
msgstr "プロジェクトを名前を付けて保存"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "3MF/STL/STEP/SVG/OBJ/AMFをインポート"
@@ -8177,6 +8178,12 @@ msgstr "これらのプリセット内のG-codeがマシンに損傷を与えな
msgid "Customized Preset"
msgstr "カスタマイズされたプリセット"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "ファイルのエンコーディング方式はUTF-8形式ではありません"
@@ -8589,6 +8596,17 @@ msgstr "名前を付けて保存:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "%sを送信しました、プリンターにて確認できます"
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "公開する"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "ノズルタイプが設定されていません。ノズルを設定して再試行してください。"
@@ -8802,8 +8820,6 @@ msgstr "続行しますか?"
msgid "Language selection"
msgstr "言語選択"
msgid "Switching application language while some presets are modified."
msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります"
msgid "Asia-Pacific"
msgstr "アジア太平洋地域"
@@ -9776,9 +9792,6 @@ msgstr "モデル公開ページに移動"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "注意: 準備するには数分かかる場合があります、暫くお待ち下さい。"
msgid "Publish"
msgstr "公開する"
msgid "Publish was canceled"
msgstr "公開は取り消しました"
@@ -9794,6 +9807,64 @@ msgstr "データをアップロード中"
msgid "Jump to webpage"
msgstr "ウェブページに移動"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "%sを名前つけて保存"
@@ -21678,6 +21749,15 @@ msgstr "この操作は元に戻せません。続行しますか?"
msgid "Skipping objects."
msgstr "オブジェクトをスキップ中。"
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "フィラメントを選択"
+97 -18
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2025-06-02 17:12+0900\n"
"Last-Translator: crwusiz <crwusiz@gmail.com>\n"
"Language-Team: \n"
@@ -2481,8 +2481,6 @@ msgstr "사용 가능한 업데이트가 있습니다. 사전 설정 번들 대
msgid "%s has been removed."
msgstr "%s이(가) 제거되었습니다."
msgid "Switching application language"
msgstr "응용 프로그램 언어 전환"
msgid "Select the language"
msgstr "언어 선택"
@@ -4931,6 +4929,10 @@ msgstr ""
"예 - 이 설정을 변경하고 나선 모드를 자동으로 활성화합니다\n"
"아니오 - 이번에는 나선 모드 사용을 포기합니다"
# AI Translated
msgid "N/A"
msgstr "해당 없음"
msgid "Printing"
msgstr "출력 중"
@@ -5362,13 +5364,9 @@ msgstr "값 %s이 범위를 벗어났습니다. 유효한 범위는 %d에서 %d
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%% 또는 %s %s입니까?\n"
"%s%%에 대해 예,\n"
"%s %s에 대해 아니요."
"%s%% 또는 %s %s입니까?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5390,10 +5388,6 @@ msgstr "잘못된 패턴입니다. N, N#K 또는 항목당 선택적 #K가 있
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "잘못된 형식입니다. 필요한 벡터 형식: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "해당 없음"
# AI Translated
msgid "System agents"
msgstr "시스템 에이전트"
@@ -6350,6 +6344,12 @@ msgstr "프로젝트 다른 이름으로 저장"
msgid "Save current project as"
msgstr "현재 프로젝트 다른 이름으로 저장"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "3MF/STL/STEP/SVG/OBJ/AMF 가져오기"
@@ -8195,6 +8195,12 @@ msgstr "이러한 사전 설정 내의 Gcode가 기계 손상을 방지할 수
msgid "Customized Preset"
msgstr "사용자 정의 프리셋"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
# AI Translated
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "STEP 파일 내부의 구성 요소 이름이 UTF-8 형식이 아닙니다!"
@@ -8622,6 +8628,17 @@ msgstr "슬라이스 파일을 다음으로 저장:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "%s 파일이 프린터의 저장 공간으로 전송되었으며 프린터에서 볼 수 있습니다."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "게시"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "노즐 유형이 설정되지 않았습니다. 노즐을 설정하고 다시 시도하세요."
@@ -8837,8 +8854,6 @@ msgstr "계속하시겠습니까?"
msgid "Language selection"
msgstr "언어 선택"
msgid "Switching application language while some presets are modified."
msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다."
msgid "Asia-Pacific"
msgstr "아시아 태평양"
@@ -9865,9 +9880,6 @@ msgstr "모델 게시 웹 페이지로 이동"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "참고: 준비하는 데 몇 분 정도 걸릴 수 있습니다. 조금만 기다려 주십시오."
msgid "Publish"
msgstr "게시"
msgid "Publish was canceled"
msgstr "게시가 취소되었습니다"
@@ -9884,6 +9896,64 @@ msgstr "데이터 업로드 중"
msgid "Jump to webpage"
msgstr "웹 페이지로 이동"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "%s을(를) 다음으로 저장"
@@ -21536,6 +21606,15 @@ msgstr "이 작업은 취소할 수 없습니다. 계속하시겠습니까?"
msgid "Skipping objects."
msgstr "물체 건너뛰기"
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "필라멘트 선택"
+2
View File
@@ -136,6 +136,7 @@ src/slic3r/GUI/BackgroundSlicingProcess.cpp
src/slic3r/GUI/BedShapeDialog.cpp
src/slic3r/GUI/BedShapeDialog.hpp
src/slic3r/GUI/ConfigManipulation.cpp
src/slic3r/GUI/ConfigValueFormatter.cpp
src/slic3r/GUI/DeviceManager.cpp
src/slic3r/GUI/DeviceErrorDialog.cpp
src/slic3r/GUI/ExtraRenderers.cpp
@@ -175,6 +176,7 @@ src/slic3r/GUI/ProgressStatusBar.cpp
src/slic3r/GUI/PlateSettingsDialog.cpp
src/slic3r/GUI/PrivacyUpdateDialog.cpp
src/slic3r/GUI/PublishDialog.cpp
src/slic3r/GUI/PublishSettingsDialog.cpp
src/slic3r/GUI/SavePresetDialog.cpp
src/slic3r/GUI/Search.cpp
src/slic3r/GUI/Selection.cpp
+96 -17
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-07-02 14:13+0300\n"
"Last-Translator: Gintaras Kučinskas <sharanchius@gmail.com>\n"
"Language-Team: \n"
@@ -2449,8 +2449,6 @@ msgstr "Yra prieinamas atnaujinimas. Atidarykite profilių paketo dialogo langą
msgid "%s has been removed."
msgstr "%s buvo pašalintas."
msgid "Switching application language"
msgstr "Perjungiama programos kalba"
msgid "Select the language"
msgstr "Pasirinkite kalbą"
@@ -4893,6 +4891,9 @@ msgstr ""
"Taip pakeisti šiuos nustatymus ir automatiškai įjungti spiralinį režimą\n"
"Ne nenaudoti spiralinio režimo"
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Spausdinimas"
@@ -5324,13 +5325,9 @@ msgstr "Reikšmė %s yra už ribų. Galimas diapazonas yra nuo %d iki %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Ar tai %s%% ar %s %s?\n"
"TAIP %s%%, \n"
"NE %s %s."
"Ar tai %s%% ar %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5352,9 +5349,6 @@ msgstr "Neteisingas šablonas. Naudokite N, N#K arba kableliais atskirtą sąra
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Netinkamas formatas. Tinkamas vektorinis formatas: \"%1%\""
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "Sisteminiai agentai"
@@ -6312,6 +6306,12 @@ msgstr "Įrašyti projektą kaip"
msgid "Save current project as"
msgstr "Įrašyti dabartinį projektą kaip"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importuoti 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8153,6 +8153,12 @@ msgstr "Patvirtinkite, kad šiuose profiliuose esantis G-kodas yra saugus, kad i
msgid "Customized Preset"
msgstr "Pritaikytas profilis"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!"
@@ -8564,6 +8570,17 @@ msgstr "Išsaugoti susluoksniuotą failą kaip:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Failas %s išsiųstas į spausdintuvo laikmeną ir gali būti peržiūrimas spausdintuve."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Talpinti"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Purkštuko tipas nenustatytas. Nustatykite purkštuką ir bandykite dar kartą."
@@ -8774,8 +8791,6 @@ msgstr "Ar norite tęsti?"
msgid "Language selection"
msgstr "Kalbos pasirinkimas"
msgid "Switching application language while some presets are modified."
msgstr "Keičiama programos kalba, kai yra pakeistų profilių."
msgid "Asia-Pacific"
msgstr "Azija-Ramusis vandenynas"
@@ -9693,9 +9708,6 @@ msgstr "Pereiti į modelio talpinimo interneto puslapį"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Pastaba: paruošimas gali užtrukti kelias minutes. Būkite kantrūs."
msgid "Publish"
msgstr "Talpinti"
msgid "Publish was canceled"
msgstr "Publikavimas buvo atšauktas"
@@ -9711,6 +9723,64 @@ msgstr "Įkeliami duomenys"
msgid "Jump to webpage"
msgstr "Pereiti į interneto puslapį"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Išsaugoti %s kaip"
@@ -20865,6 +20935,15 @@ msgstr "Šio veiksmo atšaukti nebus galima. Tęsti?"
msgid "Skipping objects."
msgstr "Praleidžiami objektai."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Pasirinkti giją"
+96 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -2679,8 +2679,6 @@ msgstr "Er is een update beschikbaar. Open het dialoogvenster voor de voorinstel
msgid "%s has been removed."
msgstr "%s is verwijderd."
msgid "Switching application language"
msgstr "De taal van de applicatie wordt aangepast"
msgid "Select the language"
msgstr "Kies de taal"
@@ -5325,6 +5323,9 @@ msgstr ""
"Ja - Pas de instellingen aan en zet de vaas modus automatisch aan\n"
"Nee - Pas de vaas modus deze keer niet toe"
msgid "N/A"
msgstr "N/B"
msgid "Printing"
msgstr "Printen"
@@ -5830,13 +5831,9 @@ msgstr "Waarde %s valt buiten het bereik. Het geldige bereik loopt van %d tot %d
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Is het %s%% or %s %s?\n"
"JA voor %s%%, \n"
"NEE voor %s %s."
"Is het %s%% or %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5861,9 +5858,6 @@ msgstr "Ongeldig patroon. Gebruik N, N#K of een door komma's gescheiden lijst me
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Onjuist formaat. Het Vector formaat wordt verwacht: \"%1%\""
msgid "N/A"
msgstr "N/B"
# AI Translated
msgid "System agents"
msgstr "Systeemagenten"
@@ -6888,6 +6882,12 @@ msgstr "Bewaar project als"
msgid "Save current project as"
msgstr "Bewaar huidig project als"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "3MF/STL/STEP/SVG/OBJ/AMF importeren"
@@ -8904,6 +8904,12 @@ msgstr "Controleer of de G-codes in deze presets veilig zijn om schade aan de ma
msgid "Customized Preset"
msgstr "Aangepaste voorinstelling"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Naam van componenten in step-bestand is niet UTF-8-formaat!"
@@ -9339,6 +9345,17 @@ msgstr "Bewaar het geslicede bestand als:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden bekeken."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publiceren"
# AI Translated
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Het mondstuktype is niet ingesteld. Stel het mondstuk in en probeer het opnieuw."
@@ -9579,8 +9596,6 @@ msgstr "Wilt u doorgaan?"
msgid "Language selection"
msgstr "Taal selectie"
msgid "Switching application language while some presets are modified."
msgstr "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn aangepast."
msgid "Asia-Pacific"
msgstr "Azië-Pacific"
@@ -10626,9 +10641,6 @@ msgstr "Ga naar de website om het model te publiceren"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft."
msgid "Publish"
msgstr "Publiceren"
msgid "Publish was canceled"
msgstr "Het publiceren is geannuleerd"
@@ -10645,6 +10657,64 @@ msgstr "Gegevens uploaden"
msgid "Jump to webpage"
msgstr "Ga naar de website"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Bewaar %s als"
@@ -23245,6 +23315,15 @@ msgstr "Deze actie kan niet ongedaan worden gemaakt. Doorgaan?"
msgid "Skipping objects."
msgstr "Objecten worden overgeslagen."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Selecteer filament"
+97 -27
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-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Krzysztof Morga <<tlumaczeniebs@gmail.com>>\n"
"Language-Team: \n"
@@ -2512,8 +2512,6 @@ msgstr "Dostępna jest aktualizacja. Otwórz okno pakietu profili, aby ją zains
msgid "%s has been removed."
msgstr "%s został usunięty."
msgid "Switching application language"
msgstr "Zmiana języka aplikacji"
msgid "Select the language"
msgstr "Wybierz język"
@@ -5013,6 +5011,10 @@ msgstr ""
"Tak - Zmień te ustawienia automatycznie i włącz tryb Wazy\n"
"Nie - Zrezygnuj tym razem z używania trybu Wazy"
# AI Translated
msgid "N/A"
msgstr "Nie dotyczy"
msgid "Printing"
msgstr "Drukowanie"
@@ -5450,13 +5452,9 @@ msgstr "Wartość %s jest spoza zakresu. Poprawny zakres wynosi od %d do %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Czy to %s%% czy %s %s?\n"
"TAK dla %s%%,\n"
"NIE dla %s %s."
"Czy to %s%% czy %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5480,10 +5478,6 @@ msgstr "Nieprawidłowy wzorzec. Użyj N, N#K lub listy rozdzielonej przecinkami
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Nieprawidłowy format. Oczekiwano formatu wektorowego: „%1%”"
# AI Translated
msgid "N/A"
msgstr "Nie dotyczy"
# AI Translated
msgid "System agents"
msgstr "Agenci systemowi"
@@ -6469,6 +6463,12 @@ msgstr "Zapisz projekt jako"
msgid "Save current project as"
msgstr "Zapisz bieżący projekt jako"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importuj 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8353,6 +8353,12 @@ msgstr "Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zap
msgid "Customized Preset"
msgstr "Dostosowany profil"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF-8!"
@@ -8779,6 +8785,17 @@ msgstr "Zapisz plik po wykonaniu cięcia jako:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Plik %s został wysłany do pamięci drukarki i można go obejrzeć na urządzeniu."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Opublikuj"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Nie ustawiono typu dyszy Wprowadź ustawienia dyszy i spróbuj ponownie."
@@ -8993,8 +9010,6 @@ msgstr "Czy kontynuować?"
msgid "Language selection"
msgstr "Wybór języka"
msgid "Switching application language while some presets are modified."
msgstr "Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych ustawieniach."
msgid "Asia-Pacific"
msgstr "Azja i Pacyfik"
@@ -10021,9 +10036,6 @@ msgstr "Przejdź do strony publikacji modelu"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Uwaga: Przygotowanie może zająć kilka minut. Proszę o cierpliwość."
msgid "Publish"
msgstr "Opublikuj"
msgid "Publish was canceled"
msgstr "Publikacja została anulowana"
@@ -10040,6 +10052,64 @@ msgstr "Przesyłanie danych"
msgid "Jump to webpage"
msgstr "Przejdź na stronę"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Zapisz %s jako"
@@ -21723,6 +21793,15 @@ msgstr "Tego działania nie będzie można cofnąć. Kontynuować?"
msgid "Skipping objects."
msgstr "Pomijanie obiektów."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Wybierz filament"
@@ -25353,15 +25432,6 @@ msgstr ""
#~ msgid "Low-temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order to avoid extruder clogging, it is not allowed to set the chamber temperature above 45℃."
#~ msgstr "W ekstruzorze jest załadowany filament o niskiej temperaturze (PLA/PETG/TPU). Aby uniknąć zatkania ekstruzora, nie wolno ustawiać temperatury komory powyżej 45℃."
#~ msgid ""
#~ "Is it %s%% or %s %s?\n"
#~ "YES for %s%%,\n"
#~ "NO for %s %s."
#~ msgstr ""
#~ "Czy to %s%% czy %s %s?\n"
#~ "TAK dla %s%%,\n"
#~ "NIE dla %s %s."
#~ msgid "Allow multiple materials on the same plate"
#~ msgstr "Pozwól na kilka filamentów na tej samej płycie"
+136 -127
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-07-26 11:14-0300\n"
"Last-Translator: Alexandre Folle de Menezes\n"
"Language-Team: Portuguese, Brazilian\n"
@@ -2128,7 +2128,7 @@ msgid ""
"OrcaSlicer has attempted to recreate the configuration file.\n"
"Please note, application settings will be lost, but printer profiles will not be affected."
msgstr ""
"O arquivo de configuração do OrcaSlicer pode estar corrompido e não pode ser analisado.\n"
"O arquivo de configuração do OrcaSlicer pode estar corrompido e não pode ser processado.\n"
"O OrcaSlicer tentou recriar o arquivo de configuração.\n"
"Por favor, note que as configurações do aplicativo serão perdidas, mas os perfis de impressora não serão afetados."
@@ -2356,8 +2356,6 @@ msgstr "Há uma atualização disponível. Abra a caixa de diálogo do pacote de
msgid "%s has been removed."
msgstr "%s foi removido."
msgid "Switching application language"
msgstr "Alternando o idioma do aplicativo"
msgid "Select the language"
msgstr "Selecione o idioma"
@@ -4743,6 +4741,9 @@ msgstr ""
"Sim - Alterar essas configurações e ativar o modo espiral/vaso automaticamente\n"
"Não - Cancelar ativação do modo espiral"
msgid "N/A"
msgstr "N/D"
msgid "Printing"
msgstr "Imprimindo"
@@ -5168,13 +5169,9 @@ msgstr "Valor %s está fora do intervalo. O intervalo válido é de %d para %d."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"É %s%% ou %s %s?\n"
"SIM para %s%%, \n"
"NÃO para %s %s."
"É %s%% ou %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5196,9 +5193,6 @@ msgstr "Padrão inválido. Use N, N#K, ou uma lista separa por vírgulas com #K
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Formato inválido. Formato de vetor esperado: \"%1%\""
msgid "N/A"
msgstr "N/D"
msgid "System agents"
msgstr "Agentes do sistema"
@@ -6145,6 +6139,12 @@ msgstr "Salvar projeto como"
msgid "Save current project as"
msgstr "Salvar o projeto atual como"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -6671,7 +6671,7 @@ msgid "Failed to fetch model information from printer."
msgstr "Falha ao obter informação do modelo da impressora."
msgid "Failed to parse model information."
msgstr "Falha ao analisar a informação do modelo."
msgstr "Falha ao processar a informação do modelo."
msgid "The .gcode.3mf file contains no G-code data. Please slice it with Orca Slicer and export a new .gcode.3mf file."
msgstr "O arquivo .gcode.3mf não contém dados de G-code. Por favor, fatie com Orca Slicer e exporte um novo arquivo .gcode.3mf."
@@ -7941,6 +7941,12 @@ msgstr "Por favor, confirme se o G-code dentro dessas predefinições é seguro
msgid "Customized Preset"
msgstr "Predefinição Personalizada"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Os nomes dos componentes dentro do arquivo STEP não estão no formato UTF-8!"
@@ -8345,6 +8351,17 @@ msgstr "Salvar arquivo fatiado como:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser visualizado na impressora."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publicar"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "O tipo de bico não está configurado. Configure o bico e tente novamente."
@@ -8549,8 +8566,6 @@ msgstr "Você deseja continuar?"
msgid "Language selection"
msgstr "Seleção de idioma"
msgid "Switching application language while some presets are modified."
msgstr "Alternando idioma do aplicativo enquanto algumas predefinições são modificadas."
msgid "Asia-Pacific"
msgstr "Ásia-Pacífico"
@@ -8618,7 +8633,7 @@ msgstr ""
"\n"
"Deseja baixar e instalar esta versão agora?\n"
"\n"
"Observação: o aplicativo pode precisar ser reiniciado após a instalação."
"Nota: o aplicativo pode precisar ser reiniciado após a instalação."
msgid "Download Network Plug-in"
msgstr "Baixar Plug-in de Rede"
@@ -9116,7 +9131,7 @@ msgid ""
"Note: When Stealth Mode is enabled, your user profiles will not be backed up to Orca Cloud."
msgstr ""
"Isso desativa todos os recursos da nuvem, incluindo a sincronização de perfis do Orca Cloud. Usuários que preferem trabalhar totalmente offline podem ativar esta opção.\n"
"Observação: quando o Modo Furtivo está ativado, seus perfis de usuário não serão copiados para o Orca Cloud."
"Nota: quando o Modo Furtivo está ativado, seus perfis de usuário não serão copiados para o Orca Cloud."
msgid "Hide login side panel"
msgstr "Ocultar painel lateral de autenticação"
@@ -9478,9 +9493,6 @@ msgstr "Ir para a página web de publicação de modelos"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Nota: A preparação pode levar vários minutos. Por favor, seja paciente."
msgid "Publish"
msgstr "Publicar"
msgid "Publish was canceled"
msgstr "Publicação cancelada"
@@ -9496,6 +9508,64 @@ msgstr "Enviando dados"
msgid "Jump to webpage"
msgstr "Ir para a página web"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Salvar %s como"
@@ -9701,7 +9771,6 @@ msgstr "A impressora falhou ao gerar a tabela de mapeamento automático do bico
msgid "The current nozzle mapping may produce an extra %0.2f g of waste."
msgstr "O mapeamento de bicos atual pode gerar um desperdício adicional de %0.2f g."
# AI Translated
#, c-format, boost-format
msgid "Recommended filament arrangement saves %s->"
msgstr "A disposição de filamento recomendada economiza %s->"
@@ -9760,7 +9829,6 @@ msgstr "Este processo determina os valores de fluxo dinâmico para melhorar a qu
msgid "Internal"
msgstr "Interno"
# AI Translated
#, c-format, boost-format
msgid "%s space less than 20MB. Timelapse may not save properly. You can turn it off or"
msgstr "%s com espaço inferior a 20MB. O timelapse pode não ser salvo corretamente. Você pode desativá-lo ou"
@@ -9768,15 +9836,12 @@ msgstr "%s com espaço inferior a 20MB. O timelapse pode não ser salvo corretam
msgid "Clean up files"
msgstr "Limpar arquivos"
# AI Translated
msgid "Low internal storage. This timelapse will overwrite the oldest video files."
msgstr "Armazenamento interno baixo. Este timelapse substituirá os arquivos de vídeo mais antigos."
# AI Translated
msgid "Low external storage. This timelapse will overwrite the oldest video files."
msgstr "Armazenamento externo baixo. Este timelapse substituirá os arquivos de vídeo mais antigos."
# AI Translated
msgid "Insufficient external storage for time-lapse photography. Connect to computer to delete files, or use a larger memory card."
msgstr "Armazenamento externo insuficiente para fotografia time-lapse. Conecte ao computador para excluir arquivos ou use um cartão de memória maior."
@@ -9812,7 +9877,6 @@ msgstr "Atualizando informações dos hotends (%d/%d)."
msgid "There are not enough available hotends currently."
msgstr "Não há hotends disponíveis em quantidade suficiente no momento."
# AI Translated
msgid "Please complete the hotend rack setup and try again."
msgstr "Por favor, conclua a configuração do rack de hotend e tente novamente."
@@ -9829,11 +9893,9 @@ msgstr "As informações reportadas sobre o hotend podem não ser confiáveis."
msgid "The printer has no nozzle matching the slicing file (%s)."
msgstr "A impressora não possui um bico compatível com o arquivo de fatiamento (%s)."
# AI Translated
msgid "Please install a matching nozzle in the hotend rack, or set the corresponding printer preset while slicing."
msgstr "Por favor, instale um bico compatível no rack de hotend, ou defina a predefinição de impressora correspondente ao fatiar."
# AI Translated
msgid "The toolhead and hotend rack are full. Please remove at least one hotend before printing."
msgstr "A cabeça da ferramenta e o rack de hotend estão cheios. Por favor, remova pelo menos um hotend antes de imprimir."
@@ -9859,24 +9921,19 @@ msgstr "ambas extrusoras"
msgid "The hardness of current material (%s) exceeds the hardness of %s(%s). Please verify the nozzle or material settings and try again."
msgstr "A dureza do material atual (%s) excede a dureza de %s(%s). Verifique as configurações do bico ou do material e tente novamente."
# AI Translated
msgid "Your current firmware version cannot start this print job. Please update to the latest version and try again."
msgstr "Sua versão atual do firmware não pode iniciar este trabalho de impressão. Atualize para a versão mais recente e tente novamente."
# AI Translated
#, c-format, boost-format
msgid "The hardness of current material (%s) exceeds the hardness of %s(%s). It may cause nozzle wear, leading to material leakage and unstable flow. Please exercise caution when using it."
msgstr "A dureza do material atual (%s) excede a dureza de %s(%s). Isso pode causar desgaste do bico, levando a vazamento de material e fluxo instável. Tenha cuidado ao usá-lo."
# AI Translated
msgid "Some filaments may switch between extruders during printing. Manual K-value calibration cannot be applied throughout the entire print, which may affect print quality. Enabling Flow Dynamics Calibration is recommended."
msgstr "Alguns filamentos podem alternar entre extrusoras durante a impressão. A calibração manual do valor K não pode ser aplicada durante toda a impressão, o que pode afetar a qualidade da impressão. Recomenda-se ativar a Calibração de Dinâmica de Fluxo."
# AI Translated
msgid "There is stringing-prone filament in this file. For best print quality, we recommend switching nozzle clumping detection to Auto mode."
msgstr "Há filamento propenso a fiapos neste arquivo. Para a melhor qualidade de impressão, recomendamos alternar a detecção de aglomeração no bico para o modo Automático."
msgstr "Há filamento propenso a criar fios neste arquivo. Para a melhor qualidade de impressão, recomendamos alternar a detecção de aglomeração no bico para o modo Automático."
# AI Translated
msgid "If 'Dynamic Flow Calibration' is set to Auto/On, the system will use the manual calibration value or the default value and skip the flow calibration process. You can perform a manual flow calibration for TPU filament on the 'Calibration' page."
msgstr "Se a 'Calibração de Fluxo Dinâmico' estiver definida como Automático/Ativado, o sistema usará o valor de calibração manual ou o valor padrão e ignorará o processo de calibração de fluxo. Você pode realizar uma calibração de fluxo manual para filamento TPU na página 'Calibração'."
@@ -9983,7 +10040,6 @@ msgstr "Desative a calibração de fluxo dinâmico para habilitar o valor de flu
msgid "This printer does not support printing all plates."
msgstr "Esta impressora não suporta a imprimir todas as placas."
# AI Translated
#, c-format, boost-format
msgid "The current firmware supports a maximum of %s materials. You can either reduce the number of materials to %s or fewer on the Preparation Page, or try updating the firmware. If you are still restricted after the update, please wait for subsequent firmware support."
msgstr "O firmware atual suporta no máximo %s materiais. Você pode reduzir o número de materiais para %s ou menos na Página de Preparação, ou tentar atualizar o firmware. Se ainda estiver restrito após a atualização, aguarde o suporte de firmware subsequente."
@@ -9991,11 +10047,9 @@ msgstr "O firmware atual suporta no máximo %s materiais. Você pode reduzir o n
msgid "The type of external filament is unknown or does not match with the filament type in the slicing file. Please make sure you have installed the correct filament in the external spool."
msgstr "O tipo de filamento externo é desconhecido ou não corresponde ao tipo de filamento no arquivo de fatiamento. Certifique-se de ter instalado o filamento correto no carretel externo."
# AI Translated
msgid "TPU 90A/TPU 85A are too soft. It is recommended to perform manual flow calibration on the 'Calibration' page. If 'Dynamic Flow Calibration' is set to auto/on, the system will use the previous calibration value and skip the flow calibration process."
msgstr "TPU 90A/TPU 85A são muito macios. Recomenda-se realizar a calibração de fluxo manual na página 'Calibração'. Se a 'Calibração de Fluxo Dinâmico' estiver definida como automático/ativado, o sistema usará o valor de calibração anterior e ignorará o processo de calibração de fluxo."
# AI Translated
msgid "The filament in the AMS may be insufficient for this print. Please refill or replace it."
msgstr "O filamento no AMS pode ser insuficiente para esta impressão. Por favor, reabasteça ou substitua-o."
@@ -10072,7 +10126,7 @@ msgid "Failed to post ticket to server"
msgstr "Falha ao enviar o ticket para o servidor"
msgid "Failed to parse login report reason"
msgstr "Falha ao analisar o motivo do relatório de login"
msgstr "Falha ao processar o motivo do relatório de login"
msgid "Receive login report timeout"
msgstr "Limite de tempo excedido ao receber o relatório de login"
@@ -10168,11 +10222,9 @@ msgstr "Excluir esta predefinição"
msgid "Search in preset"
msgstr "Pesquisar nas predefinições"
# AI Translated
msgid "Synchronization of different extruder drives or nozzle volume types is not supported."
msgstr "A sincronização de diferentes acionamentos de extrusora ou tipos de volume do bico não é suportada."
# AI Translated
msgid "Synchronize the modification of parameters to the corresponding parameters of another extruder."
msgstr "Sincroniza a modificação de parâmetros com os parâmetros correspondentes de outra extrusora."
@@ -10242,7 +10294,7 @@ msgid "Are you sure you want to enable this option?"
msgstr "Tem certeza de que deseja habilitar esta opção?"
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 "Padrões de preenchimento são projetados para lidar com a rotação automaticamente para garantir a impressão adequada e atingir os efeitos pretendidos (Ex. Giroide, Cúbico). Girar o padrão de preenchimento esparso atual pode causar suporte insuficiente. Prossiga com cautela e verifique cuidadosamente se há possíveis problemas de impressão. Tem certeza de que deseja habilitar esta opção?"
msgstr "Padrões de preenchimento são projetados para lidar com a rotação automaticamente para garantir a impressão adequada e atingir os efeitos pretendidos (ex.: Giroide, Cúbico). Girar o padrão de preenchimento esparso atual pode causar suporte insuficiente. Prossiga com cautela e verifique cuidadosamente se há possíveis problemas de impressão. Tem certeza de que deseja habilitar esta opção?"
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 "Funcionalidade experimental: Retrair e cortar o filamento a uma distância maior durante mudanças de filamento para minimizar a purga. Embora possa reduzir notavelmente a purga, ele também pode elevar o risco de bolhas no bico ou outras complicações de impressão."
@@ -10405,7 +10457,6 @@ msgstr "G-code de mudança de tipo de extrusão"
msgid "Post-processing Scripts"
msgstr "Scripts de pós-processamento"
# AI Translated
msgid "Slicing Pipeline Plugin"
msgstr "Plugin de Pipeline de Fatiamento"
@@ -10459,9 +10510,8 @@ msgstr "Temperatura da câmara de impressão"
msgid "Chamber temperature"
msgstr "Temperatura da câmara"
# AI Translated
msgid "Target chamber temperature, and the minimal chamber temperature at which printing should start"
msgstr "Temperatura da câmara alvo, e a temperatura mínima da câmara na qual a impressão deve começar"
msgstr "Temperatura alvo da câmara, e a temperatura mínima da câmara na qual a impressão deve começar"
msgid "Target"
msgstr "Alvo"
@@ -10699,7 +10749,6 @@ msgstr "Limites de altura da camada"
msgid "Z-Hop"
msgstr "Z-Hop"
# AI Translated
msgid ""
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
"\n"
@@ -11007,7 +11056,6 @@ msgstr "Se ativo, este diálogo pode ser usado para transferir valores seleciona
msgid "One of the presets does not exist"
msgstr "Uma das predefinições não existe"
# AI Translated
msgid "Compared presets has different printer technology"
msgstr "As predefinições comparadas têm tecnologia de impressora diferente"
@@ -11342,9 +11390,8 @@ msgstr "Entrar"
msgid "Login failed. Please try again."
msgstr "Falha no login. Tente novamente."
# AI Translated
msgid "parse json failed"
msgstr "falha ao analisar o json"
msgstr "falha ao processar o json"
msgid "[Action Required] "
msgstr "[Ação Necessária] "
@@ -11535,7 +11582,6 @@ msgctxt "Keyboard Shortcut"
msgid "Space"
msgstr "Espaço"
# AI Translated
msgid "Open actions speed dial"
msgstr "Abrir menu rápido de ações"
@@ -11617,11 +11663,9 @@ msgstr "informações de atualização da versão %s:"
msgid "Network plug-in update"
msgstr "Atualização do plug-in de rede"
# AI Translated
msgid "Click OK to update the Network plug-in now. If a file is in use, the update will be applied the next time Orca Slicer launches."
msgstr "Clique em OK para atualizar o plug-in de Rede agora. Se um arquivo estiver em uso, a atualização será aplicada na próxima vez que o Orca Slicer for iniciado."
# AI Translated
msgid "A new Network plug-in is available. Do you want to install it?"
msgstr "Um novo plug-in de Rede está disponível. Deseja instalá-lo?"
@@ -11681,7 +11725,6 @@ msgstr "Nome da impressora"
msgid "Where to find your printer's IP and Access Code?"
msgstr "Onde encontrar o IP e o Código de Acesso da sua impressora?"
# AI Translated
msgid "How to trouble shooting"
msgstr "Como solucionar problemas"
@@ -11829,11 +11872,9 @@ msgstr "Objeto: %1%"
msgid "Parts of the object at these heights may be too thin or the object may have a faulty mesh."
msgstr "Partes do objeto nessas alturas podem ser muito finas, ou o objeto pode ter uma malha com falhas."
# AI Translated
msgid "Process change extrusion role G-code"
msgstr "G-code de mudança de tipo de extrusão do processo"
# AI Translated
msgid "Filament change extrusion role G-code"
msgstr "G-code de mudança de tipo de extrusão do filamento"
@@ -12008,7 +12049,6 @@ msgstr " está muito perto de uma área de exclusão, e colisões vão ocorrer.\
msgid " is too close to clumping detection area, and collisions will be caused.\n"
msgstr " está muito perto da área de detecção de aglomeração, e ocorrerão colisões.\n"
# AI Translated
msgid " is partially outside the printable area, and it cannot be printed.\n"
msgstr " está parcialmente fora da área imprimível, e não pode ser impresso.\n"
@@ -12024,7 +12064,6 @@ msgstr "Se ainda assim desejar imprimir, você pode ativar a opção em Preferê
msgid "No extrusions under current settings."
msgstr "Nenhuma extrusão com as configurações atuais."
# AI Translated
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
msgstr "Um filamento misto com gradiente está em uso, mas 'Subcamada de cor mista' está desativado. O gradiente não será impresso."
@@ -12064,7 +12103,6 @@ msgstr "Você pode querer reduzir o tamanho do seu modelo ou alterar as configur
msgid "Variable layer height is not supported with Organic supports."
msgstr "A altura de camada variável não é suportada com suportes Orgânicos."
# AI Translated
msgid "The wipe tower filament cannot be a mixed filament."
msgstr "O filamento da torre de purga não pode ser um filamento misto."
@@ -12701,7 +12739,6 @@ msgstr ""
msgid "Internal bridge flow ratio"
msgstr "Taxa de fluxo em ponte interna"
# AI Translated
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"
"Values above 1.0: Increase the amount of material while maintaining line spacing. This can improve line contact and strength.\n"
@@ -13091,11 +13128,9 @@ msgstr ""
"A geometria será decimada antes de detectar ângulos agudos. Este parâmetro indica o comprimento mínimo da divergência para a decimação.\n"
"0 para desativar."
# AI Translated
msgid "Brim ears outer only"
msgstr "Orelhas da borda apenas externas"
msgstr "Apenas orelhas da borda externas"
# AI Translated
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
msgstr "Gera orelhas de rato apenas no contorno externo do modelo, excluindo furos e seções fechadas."
@@ -13123,7 +13158,6 @@ msgstr "Por objeto"
msgid "Intra-layer order"
msgstr "Ordem intra-camada"
# 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"
@@ -13181,7 +13215,7 @@ msgid "mm/s² or %"
msgstr "mm/s² ou %"
msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration."
msgstr "Aceleração das pontes. Se o valor for expresso como uma porcentagem (por exemplo, 50%), será calculado com base na aceleração da parede externa."
msgstr "Aceleração das pontes. Se o valor for expresso como uma porcentagem (ex.: 50%), será calculado com base na aceleração da parede externa."
msgid "Default filament profile"
msgstr "Perfil de filamento padrão"
@@ -13761,7 +13795,6 @@ msgstr "Tempo da camada"
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
msgstr "A ventoinha de resfriamento de peças será ativado para camadas cujo tempo estimado seja mais curto que esse valor. A velocidade da ventoinha é interpolada entre as velocidades mínima e máxima da ventoinha de acordo com o tempo de impressão da camada."
# AI Translated
msgctxt "second"
msgid "s"
msgstr "s"
@@ -14068,61 +14101,47 @@ msgstr "Material de suporte"
msgid "Support material is commonly used to print supports and support interfaces."
msgstr "O material de suporte é comumente usado para imprimir suportes e interfaces de suporte."
# AI Translated
msgid "Is mixed filament"
msgstr "É filamento misto"
# AI Translated
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
msgstr "Define se este slot de filamento é um filamento misto composto por vários filamentos físicos"
# AI Translated
msgid "Mixed filament components"
msgstr "Componentes do filamento misto"
# AI Translated
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
msgstr "Índices (começando em 1) dos filamentos componentes, separados por vírgulas; ex.: \"1,3\""
# AI Translated
msgid "Mixed filament sublayer ratios"
msgstr "Proporções de subcamada do filamento misto"
# AI Translated
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
msgstr "Valores de proporção separados por vírgulas cuja soma seja 1.0; ex.: \"0.7,0.3\""
# AI Translated
msgid "Mixed filament gradient"
msgstr "Gradiente do filamento misto"
# AI Translated
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
msgstr "Ativa o modo de gradiente na direção Z para as subcamadas do filamento misto. Quando ativado, as proporções das subcamadas variam linearmente ao longo das camadas."
msgstr "Ativa o modo de gradiente na direção Z para as subcamadas do filamento misto. Quando ativo, as proporções das subcamadas variam linearmente ao longo das camadas."
# AI Translated
msgid "Mixed filament gradient range"
msgstr "Faixa do gradiente do filamento misto"
# AI Translated
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
msgstr "Proporções inicial e final do primeiro componente no modo de gradiente. Par separado por vírgula; ex.: \"0.10,0.90\" significa de 10% a 90%."
# AI Translated
msgid "Mixed filament gradient curve"
msgstr "Curva do gradiente do filamento misto"
# AI Translated
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
msgstr "Curva personalizada opcional, no estilo do Photoshop, que mapeia o progresso em Z para a proporção do primeiro componente. Codificada como pontos de controle separados por barras verticais, no formato \"x,y\" (legado) ou \"x,y,m_in,m_out\" quando é necessário substituir a tangente (um valor vazio ou \"nan\" usa o padrão PCHIP). x está em [0,1]; y é limitado à faixa de proporção configurada; ex.: \"0,0.15|0.5,0.50|1,0.85\". Quando vazio, o gradient_range linear é usado."
msgstr "Curva personalizada opcional no estilo do Photoshop, mapeando o progresso em Z para a proporção do primeiro componente. Codificada como pontos de controle separados por barras verticais, no formato \"x,y\" (legado) ou \"x,y,m_in,m_out\" quando é necessário substituir a tangente (um valor vazio ou \"nan\" usa o padrão PCHIP). X em [0,1]; Y é limitado à faixa de proporção configurada; ex.: \"0,0.15|0.5,0.50|1,0.85\". Quando vazio, o gradient_range linear é usado no lugar."
# AI Translated
msgid "Mixed filament per-part gradient"
msgstr "Gradiente por peça do filamento misto"
# AI Translated
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
msgstr "Quando o modo de gradiente está ativado, aplica o gradiente a cada peça de uma montagem de forma independente, em vez de tratar toda a montagem como uma única faixa Z."
msgstr "Quando o modo de gradiente está ativado, aplica o gradiente a cada peça de uma montagem de forma independente em vez de tratar toda a montagem como uma única faixa Z."
msgid "Filament printable"
msgstr "Filamento imprimível"
@@ -14213,7 +14232,7 @@ msgid "Insert solid layers"
msgstr "Inserir camadas sólidas"
msgid "Insert solid infill at specific layers. Use N to insert every Nth layer, N#K to insert K consecutive solid layers every N layers (K is optional, e.g. '5#' equals '5#1'), or a comma-separated list (e.g. 1,7,9) to insert at explicit layers. Layers are 1-based."
msgstr "Insere preenchimento sólido em camadas específicas. Use N para inserir a cada enésima camada, N#K para inserir K camadas sólidas consecutivas a cada enésima camada (K é opcional, ou seja, '5#' é igual a '5#1'), ou uma lista separada por vírgulas (Ex. 1,7,9) para inserir em camadas esplícitas. Camadas são baseadas em 1."
msgstr "Insere preenchimento sólido em camadas específicas. Use N para inserir a cada enésima camada, N#K para inserir K camadas sólidas consecutivas a cada enésima camada (K é opcional, ex.: '5#' é igual a '5#1'), ou uma lista separada por vírgulas (Ex. 1,7,9) para inserir em camadas esplícitas. Camadas são baseadas em 1."
msgid "Fill Multiline"
msgstr "Multilinhas de Preenchimento"
@@ -14291,11 +14310,9 @@ msgstr "TPMS-FK"
msgid "Gyroid"
msgstr "Giroide"
# AI Translated
msgid "Sparse infill smooth factor"
msgstr "Fator de suavização do preenchimento esparso"
# 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 o quanto os cantos do preenchimento esparso são arredondados. 0% mantém o trajeto original com cantos vivos, enquanto 100% produz as maiores curvas possíveis entre linhas de preenchimento adjacentes."
@@ -14309,10 +14326,10 @@ msgid "Acceleration of inner walls."
msgstr "Aceleração das paredes internas."
msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration."
msgstr "Aceleração do preenchimento esparso. Se o valor for expresso como uma porcentagem (por exemplo, 100%), será calculado com base na aceleração padrão."
msgstr "Aceleração do preenchimento esparso. Se o valor for expresso como uma porcentagem (ex.: 100%), será calculado com base na aceleração padrão."
msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration."
msgstr "Aceleração do preenchimento sólido interno. Se o valor for expresso como uma porcentagem (por exemplo, 100%), será calculado com base na aceleração padrão."
msgstr "Aceleração do preenchimento sólido interno. Se o valor for expresso como uma porcentagem (ex.: 100%), será calculado com base na aceleração padrão."
msgid "This is the printing acceleration for the first layer. Using limited acceleration can improve build plate adhesion."
msgstr "Esta é a aceleração para a primeira camada. Usar aceleração limitada melhorar a adesão à placa de impressão."
@@ -14416,7 +14433,7 @@ msgid ""
"Only available when \"No cooling for the first\" is 0.\n"
"Set to -1 to disable it."
msgstr ""
"Define uma velocidade exata da ventoinha para a primeira camada, substituindo todas as outras configurações de resfriamento. Útil para proteger peças impressas em 3D da cabeça da ferramenta (por exemplo, dutos ABS/ASA no estilo Voron) de uma mesa aquecida. Uma pequena quantidade de fluxo de ar resfria os dutos, sem usar o resfriamento total que pode, em certas condições, prejudicar a aderência da primeira camada.\n"
"Define uma velocidade exata da ventoinha para a primeira camada, substituindo todas as outras configurações de resfriamento. Útil para proteger peças impressas em 3D da cabeça da ferramenta (ex.: dutos ABS/ASA no estilo Voron) de uma mesa aquecida. Uma pequena quantidade de fluxo de ar resfria os dutos, sem usar o resfriamento total que pode, em certas condições, prejudicar a aderência da primeira camada.\n"
"A partir da segunda camada, o resfriamento normal é retomado.\n"
"Se \"Velocidade total da ventoinha na camada\" também estiver definida, a ventoinha aumenta suavemente deste valor na primeira camada até o seu alvo na camada escolhida.\n"
"Disponível apenas quando \"Sem resfriamento nas primeiras\" é 0.\n"
@@ -14787,7 +14804,7 @@ msgid ""
"Set to 0 to deactivate."
msgstr ""
"Algumas ventoinhas de resfriamento de componentes não conseguem iniciar a rotação quando comandadas abaixo de um determinado ciclo de trabalho PWM. Quando definido acima de 0, qualquer comando de ventoinha de resfriamento de componentes diferente de zero será elevado para pelo menos essa porcentagem, para que a ventoinha inicie de forma confiável. Um comando de ventoinha de 0 (ventoinha desligada) é sempre atendido exatamente. Essa limitação é aplicada após cada outro cálculo da ventoinha (rampa da primeira camada, interpolação do tempo da camada, substituições de saliência/ponte/interface de suporte/alisamento), para que o dimensionamento ainda opere dentro do intervalo [este valor, 100%].\n"
"Se o seu firmware já desativa a ventoinha abaixo de um limite (por exemplo, [fan] off_below: 0.10 do Klipper desliga a ventoinha sempre que o ciclo de trabalho comandado for inferior a 10%), esta opção e o limite do firmware devem idealmente ser definidos com o mesmo valor. A correspondência entre eles (por exemplo, off_below: 0.10 no Klipper e 10% aqui) garante que o fatiador nunca emita um valor diferente de zero que o firmware emitiria a velocidade cai silenciosamente e a ventoinha nunca recebe um valor abaixo daquele que você sabe que ela pode realmente atingir.\n"
"Se o seu firmware já desativa a ventoinha abaixo de um limite (por exemplo, [fan] off_below: 0.10 do Klipper desliga a ventoinha sempre que o ciclo de trabalho comandado for inferior a 10%), esta opção e o limite do firmware devem idealmente ser definidos com o mesmo valor. A correspondência entre eles (ex.: off_below: 0.10 no Klipper e 10% aqui) garante que o fatiador nunca emita um valor diferente de zero que o firmware emitiria a velocidade cai silenciosamente e a ventoinha nunca recebe um valor abaixo daquele que você sabe que ela pode realmente atingir.\n"
"Defina como 0 para desativar."
msgid "Time cost"
@@ -14834,13 +14851,11 @@ msgstr "Com que tipo de G-code a impressora é compatível."
msgid "Klipper"
msgstr "Klipper"
# AI Translated
msgid "Skip G-code config block"
msgstr "Omitir o bloco de configuração do 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ão grava o CONFIG_BLOCK (os pares chave/valor da configuração do fatiador) no arquivo G-code. Isso pode ajudar com impressoras cujo firmware trava ao interpretar essas linhas de comentário (por exemplo, Anycubic go-klipper). Observação: o arquivo G-code não conterá mais as configurações do fatiador, então importá-lo de volta no OrcaSlicer não restaurará a configuração."
msgstr "Não grava o CONFIG_BLOCK (os pares chave/valor da configuração do fatiador) no arquivo G-code. Isso pode ajudar com impressoras cujo firmware trava ao interpretar essas linhas de comentário (ex.: Anycubic go-klipper). Nota: o arquivo G-code não conterá mais as configurações do fatiador, então importá-lo de volta no OrcaSlicer não restaurará a configuração."
msgid "Pellet Modded Printer"
msgstr "Impressora Modificada para Pellets"
@@ -14888,13 +14903,13 @@ msgid "Sparse infill rotation template"
msgstr "Gabarito de rotação de preenchimento esparso"
msgid "Rotate the sparse infill direction per layer using a template of angles. Enter comma-separated degrees (e.g., '0,30,60,90'). Angles are applied in order by layer and repeat when the list ends. Advanced syntax is supported: '+5' rotates +5° every layer; '+5#5' rotates +5° every 5 layers. See the Wiki for details. When a template is set, the standard infill direction setting is ignored. Note: some infill patterns (e.g., Gyroid) control rotation themselves; use with care."
msgstr "Gira a direção do preenchimento esparso por camada usando um gabarito de ângulos. Insira graus separados por vírgula (por exemplo, '0, 30, 60, 90'). Os ângulos são aplicados em ordem por camada e repetidos quando a lista termina. Sintaxe avançada suportada: '+5' gira +5° a cada camada; '+5#5' gira +5° a cada 5 camadas. Consulte a Wiki para obter detalhes. Quando um modelo é definido, a configuração padrão de direção do preenchimento é ignorada. Observação: alguns padrões de preenchimento (por exemplo, Giróide) tem seu próprio controle de rotação, use com cuidado."
msgstr "Gira a direção do preenchimento esparso por camada usando um gabarito de ângulos. Insira graus separados por vírgula (ex.: '0,30,60,90'). Os ângulos são aplicados em ordem por camada e repetidos quando a lista termina. Sintaxe avançada suportada: '+5' gira +5° a cada camada; '+5#5' gira +5° a cada 5 camadas. Consulte a Wiki para obter detalhes. Quando um modelo é definido, a configuração padrão de direção do preenchimento é ignorada. Nota: alguns padrões de preenchimento (ex.: Giróide) tem seu próprio controle de rotação, use com cuidado."
msgid "Solid infill rotation template"
msgstr "Gabarito de rotação de preenchimento sólido"
msgid "This parameter adds a rotation of solid infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all solid infill patterns support rotation."
msgstr "Este parâmetro adiciona uma rotação da direção do preenchimento sólido a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, por exemplo, '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento sólido suportam rotação."
msgstr "Este parâmetro adiciona uma rotação da direção do preenchimento sólido a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, como '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento sólido suportam rotação."
msgid "Skeleton infill density"
msgstr "Densidade de preenchimento de esqueleto"
@@ -15360,7 +15375,6 @@ msgstr "Força máxima do eixo Y"
msgid "The allowed maximum output force of Y axis"
msgstr "A força máxima de saída permitida do eixo Y"
# AI Translated
msgctxt "Newton"
msgid "N"
msgstr "N"
@@ -15371,7 +15385,6 @@ msgstr "Massa da mesa do eixo Y"
msgid "The machine bed mass load of Y axis"
msgstr "A carga de massa da mesa do equipamento no eixo Y"
# AI Translated
msgctxt "gram"
msgid "g"
msgstr "g"
@@ -15896,7 +15909,7 @@ msgid "Z-hop height"
msgstr "Altura de Z-hop"
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
msgstr "Sempre que há uma retração, o bico é levantado um pouco para criar folga entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linhas em espiral para levantar Z pode evitar stringing."
msgstr "Sempre que há uma retração, o bico é levantado um pouco para criar folga entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linhas em espiral para levantar Z pode evitar criação de fios."
msgid "Z-hop lower boundary"
msgstr "Limite inferior do Z-hop"
@@ -15977,7 +15990,7 @@ msgid "Has filament switcher"
msgstr "Tem trocador de filamentos"
msgid "Printer has a filament switcher hardware (e.g., AMS)."
msgstr "A impressora tem um sistema de troca de filamentos (Ex.: AMS)."
msgstr "A impressora tem um sistema de troca de filamentos (ex.: AMS)."
msgid "Extra length on restart"
msgstr "Comprimento extra na retração"
@@ -16094,7 +16107,7 @@ msgid "Scarf joint speed"
msgstr "Velocidade da costura em bisel"
msgid "This option sets the printing speed for scarf joints. It is recommended to print scarf joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate smoothing' if the set speed varies significantly from the speed of the outer or inner walls. If the speed specified here is higher than the speed of the outer or inner walls, the printer will default to the slower of the two speeds. When specified as a percentage (e.g., 80%), the speed is calculated based on the respective outer or inner wall speed. The default value is set to 100%."
msgstr "Esta opção define a velocidade de impressão para as costuras em bisel. É recomendável imprimir as costuras em bisel em uma velocidade baixa (menor que 100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida variar significativamente da velocidade das paredes externas ou internas. Se a velocidade especificada aqui for maior que a velocidade das paredes externas ou internas, a impressora utilizará a mais lenta das duas velocidades. Quando especificado como uma porcentagem (por exemplo, 80%), a velocidade é calculada com base na velocidade do perímetro externo ou interna respectiva. O valor padrão é definido como 100%."
msgstr "Esta opção define a velocidade de impressão para as costuras em bisel. É recomendável imprimir as costuras em bisel em uma velocidade baixa (menor que 100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida variar significativamente da velocidade das paredes externas ou internas. Se a velocidade especificada aqui for maior que a velocidade das paredes externas ou internas, a impressora utilizará a mais lenta das duas velocidades. Quando especificado como uma porcentagem (ex.: 80%), a velocidade é calculada com base na velocidade do perímetro externo ou interna respectiva. O valor padrão é definido como 100%."
msgid "Scarf joint flow ratio"
msgstr "Taxa de fluxo da costura em bisel"
@@ -16164,7 +16177,7 @@ msgid "Wipe speed"
msgstr "Velocidade de limpeza"
msgid "The wipe speed is determined by the speed setting specified in this configuration. If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. The default value for this parameter is 80%."
msgstr "A velocidade de limpeza é determinada pela velocidade especificada nesta configuração. Se o valor for expresso como uma porcentagem (por exemplo, 80%), será calculado com base na configuração de velocidade de deslocamento acima. O valor padrão para este parâmetro é 80%."
msgstr "A velocidade de limpeza é determinada pela velocidade especificada nesta configuração. Se o valor for expresso como uma porcentagem (ex.: 80%), será calculado com base na configuração de velocidade de deslocamento acima. O valor padrão para este parâmetro é 80%."
msgid "Skirt distance"
msgstr "Distância da saia"
@@ -16202,7 +16215,7 @@ msgstr ""
"Um escudo de ar é útil para proteger uma impressão ABS ou ASA de deformações e desprendimento da mesa de impressão devido à corrente de ar. Geralmente, ele é necessário apenas com impressoras de estrutura aberta, ou seja, sem um gabinete.\n"
"\n"
"Habilitado = a saia é tão alta quanto o objeto impresso mais alto. Caso contrário, 'Altura da saia' é usada.\n"
"Observação: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n"
"Nota: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n"
msgid "Enabled"
msgstr "Ativado"
@@ -16343,10 +16356,10 @@ msgid "Preheat steps"
msgstr "Passos de pré-aquecimento"
msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1."
msgstr "Insire múltiplos comandos de pré-aquecimento (por exemplo, M104.1). Útil apenas para Prusa XL. Para outras impressoras, defina como 1."
msgstr "Insire múltiplos comandos de pré-aquecimento (ex.: M104.1). Útil apenas para Prusa XL. Para outras impressoras, defina como 1."
msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}."
msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (por exemplo, tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}."
msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (ex.: tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}."
msgid "Start G-code"
msgstr "G-code Inicial"
@@ -16367,7 +16380,7 @@ msgid "Manual Filament Change"
msgstr "Troca Manual de Filamento"
msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action."
msgstr "Ative esta opção para omitir o G-code de troca de filamento personalizado apenas no início da impressão. O comando de troca de ferramenta (por exemplo, T0) será ignorado durante toda a impressão. Isso é útil para impressão manual de vários materiais, onde usamos M600/PAUSE para acionar a ação de troca manual de filamento."
msgstr "Ative esta opção para omitir o G-code de troca de filamento personalizado apenas no início da impressão. O comando de troca de ferramenta (ex.: T0) será ignorado durante toda a impressão. Isso é útil para impressão manual de vários materiais, onde usamos M600/PAUSE para acionar a ação de troca manual de filamento."
msgid "Wipe tower type"
msgstr "Tipo de torre de purga"
@@ -16923,11 +16936,9 @@ msgstr ""
"\n"
"Definir um valor na configuração de quantidade de retração antes da limpeza abaixo executará qualquer retração em excesso antes da limpeza, caso contrário, será realizada após."
# AI Translated
msgid "Mixed color sublayer"
msgstr "Subcamada de cor mista"
# AI Translated
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
msgstr "Ativa a divisão em subcamadas de cor mista. Quando ativado, as camadas que contêm filamentos de cor mista são divididas em subcamadas para obter efeitos de mistura de cores."
@@ -17987,9 +17998,8 @@ msgstr "A geração da malha do arquivo do modelo falhou ou não há forma váli
msgid "The supplied file couldn't be read because it's empty."
msgstr "O arquivo fornecido não pôde ser lido porque está vazio."
# AI Translated
msgid "The file format is incompatible and cannot be parsed."
msgstr "O formato do arquivo é incompatível e não pode ser lido."
msgstr "O formato do arquivo é incompatível e não pode ser processado."
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .stl, .obj, .amf(.xml)."
@@ -17998,10 +18008,10 @@ msgid "Unknown file format: input file must have .3mf or .zip.amf extension."
msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .3mf ou .zip.amf."
msgid "load_obj: failed to parse"
msgstr "load_obj: falha ao analisar"
msgstr "load_obj: falha ao processar"
msgid "load mtl in obj: failed to parse"
msgstr "carregar mtl em obj: falha ao analisar"
msgstr "carregar mtl em obj: falha ao processsar"
msgid "The file contains polygons with more than 4 vertices."
msgstr "O arquivo contém polígonos com mais de 4 vértices."
@@ -19115,7 +19125,7 @@ msgid "Serial"
msgstr "Série"
msgid "e.g. Basic, Matte, Silk, Marble"
msgstr "por exemplo, Básico, Fosco, Seda, Mármore"
msgstr "Ex.: Básico, Fosco, Seda, Mármore"
msgid "Filament Preset"
msgstr "Predefinição de Filamento"
@@ -19796,7 +19806,7 @@ msgid "Error. Can't get API token for authorization"
msgstr "Erro. Não foi possível obter o token de API para autorização"
msgid "Could not parse server response."
msgstr "Não foi possível decifrar a resposta do servidor."
msgstr "Não foi possível processar a resposta do servidor."
msgid "Error saving session to file"
msgstr "Erro salvando sessão para arquivo"
@@ -19864,7 +19874,7 @@ msgstr "O host respondeu, mas não parece ser o Moonraker (falta o result.klippy
#, c-format, boost-format
msgid "Could not parse Moonraker server response: %s"
msgstr "Não foi possível analisar a resposta do servidor Moonraker: %s"
msgstr "Não foi possível processar a resposta do servidor Moonraker: %s"
msgid "Connection to OctoPrint is working correctly."
msgstr "A conexão com o OctoPrint funciona corretamente."
@@ -20238,7 +20248,6 @@ msgstr "Removido"
msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings"
msgstr "Ativar atribuição inteligente de filamento: Atribui um filamento a vários bicos para maximizar a economia"
# AI Translated
msgid "File Saving"
msgstr "Salvamento de Arquivo"
@@ -20425,7 +20434,7 @@ msgid "Connection timed out. Please check if the printer and computer network ar
msgstr "Limite de tempo de conexão esgotado. Verifique se a impressora e a rede do computador estão funcionando corretamente e confirme se estão na mesma rede."
msgid "The Hostname/IP/URL could not be parsed, please check it and try again."
msgstr "Não foi possível decifrar o Hostname/IP/URL; verifique-o e tente novamente."
msgstr "Não foi possível processar o Hostname/IP/URL; verifique-o e tente novamente."
msgid "File/data transfer interrupted. Please check the printer and network, then try it again."
msgstr "Transferência de arquivo/dados interrompida. Verifique a impressora e a rede e tente novamente."
@@ -20522,6 +20531,15 @@ msgstr "Esta ação não pode ser desfeita. Continuar?"
msgid "Skipping objects."
msgstr "Ignorando objetos."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Selecionar Filamento"
@@ -21199,15 +21217,6 @@ msgstr ""
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
#~ msgstr "Seu sistema não possui codecs H.264 para o GStreamer, que são necessários para reproduzir vídeos. (Tente instalar os pacotes gstreamer1.0-plugins-bad ou gstreamer1.0-libav e depois reinicie o OrcaSlicer?)"
#~ msgid "N"
#~ msgstr "N"
#~ msgid "g"
#~ msgstr "g"
#~ msgid "Fila Saving"
#~ msgstr "Econo Filamento"
#~ msgid ""
#~ "Layer height is too small.\n"
#~ "It will set to min_layer_height\n"
@@ -21535,7 +21544,7 @@ msgstr ""
#~ "Pontes externas de menor densidade podem ajudar a melhorar a confiabilidade, pois há mais espaço para o ar circular ao redor da ponte extrudada, melhorando sua velocidade de resfriamento. O mínimo é 10%.\n"
#~ "\n"
#~ "Densidades mais altas podem produzir superfícies de ponte mais lisas, pois as linhas sobrepostas fornecem suporte adicional durante a impressão. O máximo é 120%.\n"
#~ "Observação: Densidade de ponte muito alta pode causar deformação ou sobrextrusão."
#~ "Nota: Densidade de ponte muito alta pode causar deformação ou sobrextrusão."
#~ msgid ""
#~ "Controls the density (spacing) of internal bridge lines. 100% means solid bridge. Default is 100%.\n"
@@ -21580,7 +21589,7 @@ msgstr ""
#~ "\n"
#~ "Geralmente, é recomendável ter esta opção ativada, a menos que o resfriamento da impressora seja potente o suficiente ou a velocidade de impressão lenta o suficiente para que a curvatura do perímetro não aconteça. Se estiver imprimindo com uma alta velocidade de perímetro externo, este parâmetro pode introduzir pequenos artefatos ao desacelerar devido à grande variação nas velocidades de impressão. Se você notar artefatos, certifique-se de que seu pressure advance esteja ajustado corretamente.\n"
#~ "\n"
#~ "Observação: quando esta opção estiver habilitada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo se o perímetro de saliência for parte de uma ponte. Por exemplo, quando os perímetros estiverem 100% salientes, sem nenhuma parede apoiando-os por baixo, a velocidade de saliência de 100% será aplicada."
#~ "Nota: quando esta opção estiver habilitada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo se o perímetro de saliência for parte de uma ponte. Por exemplo, quando os perímetros estiverem 100% salientes, sem nenhuma parede apoiando-os por baixo, a velocidade de saliência de 100% será aplicada."
#~ msgid "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances."
#~ msgstr "Se ativado, as pontes são mais confiáveis, podem cobrir distâncias maiores, mas podem parecer piores. Se desativado, as pontes ficam melhores, mas são confiáveis apenas para distâncias de ponte mais curtas."
@@ -22500,7 +22509,7 @@ msgstr ""
#~ msgstr "Contagem máxima de projetos recentes"
#~ msgid "This parameter adds a rotation of sparse infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all sparse infill patterns support rotation."
#~ msgstr "Este parâmetro adiciona uma rotação na direção do preenchimento esparso a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, por exemplo, '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento esparso suportam rotação."
#~ msgstr "Este parâmetro adiciona uma rotação na direção do preenchimento esparso a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, como '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento esparso suportam rotação."
#~ msgid "Set Position"
#~ msgstr "Definir Posição"
+98 -19
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OrcaSlicer V2.5.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-02-25 13:38+0300\n"
"Last-Translator: Felix14_v2\n"
"Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg <andylg@yandex.ru>\n"
@@ -2431,8 +2431,6 @@ msgstr "Доступно обновление. Проверьте меню па
msgid "%s has been removed."
msgstr "%s был удалён."
msgid "Switching application language"
msgstr "Изменение языка приложения"
msgid "Select the language"
msgstr "Выбор языка"
@@ -4891,6 +4889,11 @@ msgid ""
"No - Cancel enabling spiral mode"
msgstr "Использовать эти настройки и режим вазы?"
# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо
# символов
msgid "N/A"
msgstr ""
msgid "Printing"
msgstr "Печать"
@@ -5332,13 +5335,9 @@ msgstr "Значение %s выходит за пределы допустим
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Имелось ввиду %s%%? (введено %s %s)\n"
"Да – изменить на %s%%\n"
"Нет оставить %s %s."
"Имелось ввиду %s%% или %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5360,11 +5359,6 @@ msgstr "Недопустимый шаблон. Используйте N, N#K и
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Недопустимый формат. Ожидаемый векторный формат: \"%1%\""
# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо
# символов
msgid "N/A"
msgstr ""
msgid "System agents"
msgstr "Системные агенты"
@@ -6378,6 +6372,12 @@ msgstr "Сохранить проект как"
msgid "Save current project as"
msgstr "Сохранить текущий проект как"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8212,6 +8212,12 @@ msgstr "Во избежание повреждения принтера убед
msgid "Customized Preset"
msgstr "Пользовательский профиль"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Имена компонентов внутри файла STEP не в формате UTF-8."
@@ -8624,6 +8630,17 @@ msgstr "Сохранить нарезанный файл как:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Опубликовать"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Не указан тип сопла. Укажите его и попробуйте ещё раз."
@@ -8829,8 +8846,6 @@ msgstr "Хотите продолжить?"
msgid "Language selection"
msgstr "Выбор языка"
msgid "Switching application language while some presets are modified."
msgstr "Смена языка приложения при изменении некоторых профилей."
msgid "Asia-Pacific"
msgstr "Азиатско-Тихоокеанский"
@@ -9770,9 +9785,6 @@ msgstr "Перейти на веб-страницу публикации мод
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения."
msgid "Publish"
msgstr "Опубликовать"
msgid "Publish was canceled"
msgstr "Публикация была отменена"
@@ -9788,6 +9800,64 @@ msgstr "Отправка данных"
msgid "Jump to webpage"
msgstr "Перейти на страницу"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Сохранить %s как"
@@ -21541,6 +21611,15 @@ msgstr "Это действие необратимо. Продолжить?"
msgid "Skipping objects."
msgstr "Исключение объектов."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Выбрать материал"
+97 -18
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -2767,8 +2767,6 @@ msgstr "Det finns en uppdatering tillgänglig. Öppna dialogrutan för förinst
msgid "%s has been removed."
msgstr "%s har tagits bort."
msgid "Switching application language"
msgstr "Byt applikationsspråk"
msgid "Select the language"
msgstr "Välj språk"
@@ -5387,6 +5385,10 @@ msgstr ""
"JA -Ändra dessa inställningar och möjliggör Spiral läge automatiskt\n"
"NEJ -Avbryt Spiral läge denna gång"
# AI Translated
msgid "N/A"
msgstr "Ej tillämpligt"
msgid "Printing"
msgstr "Utskrift pågår"
@@ -5903,13 +5905,9 @@ msgstr "Värdet %s ligger utanför intervallet. Giltigt intervall är från %d t
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Det är %s%% eller %s %s?\n"
"JA för %s%%, \n"
"NEJ för %s %s."
"Det är %s%% eller %s %s?"
# AI Translated
#, boost-format
@@ -5936,10 +5934,6 @@ msgstr "Ogiltigt mönster. Använd N, N#K eller en kommaseparerad lista med valf
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Ogiltligt format. Förväntat vector format: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "Ej tillämpligt"
# AI Translated
msgid "System agents"
msgstr "Systemagenter"
@@ -6972,6 +6966,12 @@ msgstr "Spara Projekt som"
msgid "Save current project as"
msgstr "Spara nuvarande projekt som"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Importera 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8996,6 +8996,12 @@ msgstr "Bekräfta att G-koderna i dessa inställningar är säkra för att förh
msgid "Customized Preset"
msgstr "Anpassad inställning"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Komponent namnet i STEP filen är inte UTF-8 format!"
@@ -9432,6 +9438,17 @@ msgstr "Spara beredningen som:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Filen %s har skickats till skrivarens lagringsutrymme och kan visas på skrivaren."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Publicera"
# AI Translated
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Nozzeltypen är inte angiven. Ange nozzeln och försök igen."
@@ -9671,8 +9688,6 @@ msgstr "Fortsätta?"
msgid "Language selection"
msgstr "Språkval"
msgid "Switching application language while some presets are modified."
msgstr "Byter språk medans inställningarna ändras."
msgid "Asia-Pacific"
msgstr "Asien-Stillahavsområdet"
@@ -10740,9 +10755,6 @@ msgstr "Växla till modell publicerings hemsidan"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Notera: Förberedelserna kan ta flera minuter. Vänligen vänta."
msgid "Publish"
msgstr "Publicera"
msgid "Publish was canceled"
msgstr "Publiceringen avbröts"
@@ -10759,6 +10771,64 @@ msgstr "Laddar upp data"
msgid "Jump to webpage"
msgstr "Växla till hemsidan"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Spara %s som"
@@ -23513,6 +23583,15 @@ msgstr "Åtgärden kan inte ångras. Vill du fortsätta?"
msgid "Skipping objects."
msgstr "Hoppar över objekt."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Välj filament"
+96 -17
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-06-19 13:40+0700\n"
"Last-Translator: Icezaza\n"
"Language-Team: Thai\n"
@@ -2456,8 +2456,6 @@ msgstr "มีอัปเดตพร้อมใช้งาน เปิด
msgid "%s has been removed."
msgstr "ลบ %s แล้ว"
msgid "Switching application language"
msgstr "การเปลี่ยนภาษาของแอปพลิเคชัน"
msgid "Select the language"
msgstr "เลือกภาษา"
@@ -4887,6 +4885,9 @@ msgstr ""
"ใช่ - เปลี่ยนการตั้งค่าเหล่านี้และเปิดใช้งานโหมดเกลียวโดยอัตโนมัติ\n"
"ไม่ - เลิกใช้โหมดเกลียวในครั้งนี้"
msgid "N/A"
msgstr "ไม่มี"
msgid "Printing"
msgstr "กำลังพิมพ์"
@@ -5318,13 +5319,9 @@ msgstr "ค่า %s อยู่นอกช่วง ช่วงที่ถ
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"มันคือ %s%% หรือ %s %s?\n"
"ใช่สำหรับ %s%% \n"
"ไม่ สำหรับ %s %s"
"มันคือ %s%% หรือ %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5346,9 +5343,6 @@ msgstr "รูปแบบไม่ถูกต้อง ใช้ N, N#K หร
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "รูปแบบไม่ถูกต้อง รูปแบบเวกเตอร์ที่ต้องการ: \"%1%\""
msgid "N/A"
msgstr "ไม่มี"
# AI Translated
msgid "System agents"
msgstr "เอเจนต์ระบบ"
@@ -6304,6 +6298,12 @@ msgstr "บันทึกโปรเจกต์เป็น"
msgid "Save current project as"
msgstr "บันทึกโครงการปัจจุบันเป็น"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "นำเข้า 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8118,6 +8118,12 @@ msgstr "โปรดยืนยันว่ารหัส G ภายในค
msgid "Customized Preset"
msgstr "ค่าที่ตั้งไว้ล่วงหน้าที่กำหนดเอง"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF-8!"
@@ -8525,6 +8531,17 @@ msgstr "บันทึกไฟล์ที่สไลซ์เป็น:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "ไฟล์ %s ถูกส่งไปยังพื้นที่เก็บข้อมูลของเครื่องพิมพ์แล้ว และสามารถดูได้บนเครื่องพิมพ์"
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "เผยแพร่"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "ไม่ได้ตั้งค่าประเภทหัวฉีด โปรดตั้งหัวฉีดแล้วลองอีกครั้ง"
@@ -8735,8 +8752,6 @@ msgstr "ต้องการดำเนินการต่อหรือไ
msgid "Language selection"
msgstr "การเลือกภาษา"
msgid "Switching application language while some presets are modified."
msgstr "การสลับภาษาของแอปพลิเคชันในขณะที่มีการแก้ไขค่าที่ตั้งไว้บางส่วน"
msgid "Asia-Pacific"
msgstr "เอเชียแปซิฟิก"
@@ -9667,9 +9682,6 @@ msgstr "ข้ามไปที่โมเดลเผยแพร่หน้
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "หมายเหตุ: การเตรียมการอาจใช้เวลาหลายนาที กรุณาอดทน."
msgid "Publish"
msgstr "เผยแพร่"
msgid "Publish was canceled"
msgstr "การเผยแพร่ถูกยกเลิก"
@@ -9685,6 +9697,64 @@ msgstr "กำลังอัพโหลดข้อมูล"
msgid "Jump to webpage"
msgstr "ข้ามไปที่หน้าเว็บ"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "บันทึก %s เป็น"
@@ -20891,6 +20961,15 @@ msgstr "การทำงานนี้ไม่สามารถย้อน
msgid "Skipping objects."
msgstr "ข้ามวัตถุ"
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "เลือกเส้นพลาสติก"
+97 -18
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-08-21 23:18+0300\n"
"Last-Translator: GlauTech\n"
"Language-Team: \n"
@@ -2480,8 +2480,6 @@ msgstr "Kullanılabilir bir güncelleme var. Güncellemek için ön ayar paketi
msgid "%s has been removed."
msgstr "%s kaldırıldı."
msgid "Switching application language"
msgstr "Uygulama dilini değiştirme"
msgid "Select the language"
msgstr "Dili seçin"
@@ -4949,6 +4947,10 @@ msgstr ""
"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n"
"Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin"
# AI Translated
msgid "N/A"
msgstr "Yok"
msgid "Printing"
msgstr "Baskı"
@@ -5380,13 +5382,9 @@ msgstr "Değer %s aralık dışında. Geçerli aralık %d ile %d arasındadır."
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%% mi yoksa %s %s mi?\n"
"%s%% için EVET,\n"
"%s %s için HAYIR."
"%s%% mi yoksa %s %s mi?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5408,10 +5406,6 @@ msgstr "Geçersiz kalıp. N, N#K veya giriş başına isteğe bağlı #K ile vir
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "Yok"
# AI Translated
msgid "System agents"
msgstr "Sistem aracıları"
@@ -6372,6 +6366,12 @@ msgstr "Projeyi farklı kaydet"
msgid "Save current project as"
msgstr "Mevcut projeyi farklı kaydet"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar"
@@ -8215,6 +8215,12 @@ msgstr "Lütfen bu ön ayarlar içindeki G-code'larının makineye herhangi bir
msgid "Customized Preset"
msgstr "Özel Ayar"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Step dosyasındaki bileşenlerin adı UTF-8 formatında değil!"
@@ -8624,6 +8630,17 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda görüntülenebiliyor."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Yayınla"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Nozul tipi ayarlanmamış. Lütfen nozulu ayarlayın ve tekrar deneyin."
@@ -8837,8 +8854,6 @@ msgstr "Devam etmek istiyor musun?"
msgid "Language selection"
msgstr "Dil seçimi"
msgid "Switching application language while some presets are modified."
msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi."
msgid "Asia-Pacific"
msgstr "Asya Pasifik"
@@ -9811,9 +9826,6 @@ msgstr "Model yayınlama web sayfasına git"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun."
msgid "Publish"
msgstr "Yayınla"
msgid "Publish was canceled"
msgstr "Yayınlama iptal edildi"
@@ -9829,6 +9841,64 @@ msgstr "Veriler yükleniyor"
msgid "Jump to webpage"
msgstr "Web sayfasına atla"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "%s'yi farklı kaydet"
@@ -21318,6 +21388,15 @@ msgstr "Bu eylem geri alınamaz. Devam etmek?"
msgid "Skipping objects."
msgstr "Nesneleri atlama."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Filament Seçin"
+96 -17
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: orcaslicerua\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-07-17 16:25+0300\n"
"Last-Translator: Andrij Mizyk <andm1zyk@proton.me>\n"
"Language-Team: Ukrainian\n"
@@ -2424,8 +2424,6 @@ msgstr "Доступне оновлення. Відкрийте вікно на
msgid "%s has been removed."
msgstr "%s вилучено."
msgid "Switching application language"
msgstr "Зміна мови програми"
msgid "Select the language"
msgstr "Вибрати мову"
@@ -4887,6 +4885,9 @@ msgstr ""
"Так – змінити ці налаштування та автоматично включити режим спіральна ваза\n"
"Ні - цього разу відмовитися від використання режиму спіральна ваза"
msgid "N/A"
msgstr "Н/Д"
msgid "Printing"
msgstr "Друк"
@@ -5329,13 +5330,9 @@ msgstr "Значення %s знаходиться за межами діапа
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Це %s%% або %s %s?\n"
"ТАК для %s%%, \n"
"НІ для %s %s."
"Це %s%% або %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5358,9 +5355,6 @@ msgstr "Некоректний шаблон. Використовуйте N, N#K
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Невірний формат. Очікуваний векторний формат: \"%1%\""
msgid "N/A"
msgstr "Н/Д"
# AI Translated
msgid "System agents"
msgstr "Системні агенти"
@@ -6341,6 +6335,12 @@ msgstr "Зберегти проєкт як"
msgid "Save current project as"
msgstr "Зберегти поточний проєкт як"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Імпорт 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8223,6 +8223,12 @@ msgstr "Будь ласка, підтвердьте, що G-коди в цих
msgid "Customized Preset"
msgstr "Пристосований пресет"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
# AI Translated
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Назви компонентів усередині файлу STEP не у форматі UTF-8!"
@@ -8635,6 +8641,17 @@ msgstr "Зберегти нарізаний файл як:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "Файл %s надіслано до памʼяті принтера та доступний для перегляду на принтері."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Публікувати"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Тип сопла не встановлений. Будь ласка, оберіть сопло та спробуйте ще раз."
@@ -8851,8 +8868,6 @@ msgstr "Ви хочете продовжувати?"
msgid "Language selection"
msgstr "Вибір мови"
msgid "Switching application language while some presets are modified."
msgstr "Зміна мови програми при зміні деяких профілів."
msgid "Asia-Pacific"
msgstr "Азіатсько-Тихоокеанський регіон"
@@ -9814,9 +9829,6 @@ msgstr "Перейти на веб-сторінку публікації мод
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Примітка. Підготовка може тривати кілька хвилин. Будь ласка, будьте терплячі."
msgid "Publish"
msgstr "Публікувати"
msgid "Publish was canceled"
msgstr "Публікація скасована"
@@ -9832,6 +9844,64 @@ msgstr "Відвантаження даних"
msgid "Jump to webpage"
msgstr "Перейти на вебсторінку"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Зберегти %s як"
@@ -21495,6 +21565,15 @@ msgstr "Дію не можливо завершити. Продовжити?"
msgid "Skipping objects."
msgstr "Пропускання обʼєктів."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "Вибрати філамент"
+97 -18
View File
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2025-10-02 17:43+0700\n"
"Last-Translator: \n"
"Language-Team: hainguyen.ts13@gmail.com\n"
@@ -2568,8 +2568,6 @@ msgstr "Có bản cập nhật khả dụng. Hãy mở hộp thoại gói cài
msgid "%s has been removed."
msgstr "%s đã bị xóa."
msgid "Switching application language"
msgstr "Đang chuyển ngôn ngữ ứng dụng"
msgid "Select the language"
msgstr "Chọn ngôn ngữ"
@@ -5143,6 +5141,10 @@ msgstr ""
"Yes - Thay đổi các cài đặt này và bật chế độ spiral tự động\n"
"No - Từ bỏ dùng chế độ spiral lần này"
# AI Translated
msgid "N/A"
msgstr "N/A"
msgid "Printing"
msgstr "Đang in"
@@ -5633,13 +5635,9 @@ msgstr "Giá trị %s nằm ngoài phạm vi. Phạm vi hợp lệ từ %d đế
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"Là %s%% hay %s %s?\n"
"YES cho %s%%, \n"
"NO cho %s %s."
"Là %s%% hay %s %s?"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5661,10 +5659,6 @@ msgstr "Mẫu không hợp lệ. Dùng N, N#K, hoặc danh sách phân cách d
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "Định dạng không hợp lệ. Mong đợi định dạng vector: \"%1%\""
# AI Translated
msgid "N/A"
msgstr "N/A"
# AI Translated
msgid "System agents"
msgstr "Tác nhân hệ thống"
@@ -6689,6 +6683,12 @@ msgstr "Lưu dự án thành"
msgid "Save current project as"
msgstr "Lưu dự án hiện tại thành"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "Nhập 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8629,6 +8629,12 @@ msgstr "Vui lòng xác nhận G-code trong các preset này an toàn để ngăn
msgid "Customized Preset"
msgstr "Preset tùy chỉnh"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF-8!"
@@ -9056,6 +9062,17 @@ msgstr "Lưu file đã slice dưới dạng:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "File %s đã được gửi đến không gian lưu trữ của máy in và có thể được xem trên máy in."
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "Xuất bản"
# AI Translated
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "Chưa đặt loại đầu phun. Vui lòng đặt đầu phun rồi thử lại."
@@ -9286,8 +9303,6 @@ msgstr "Bạn có muốn tiếp tục?"
msgid "Language selection"
msgstr "Chọn ngôn ngữ"
msgid "Switching application language while some presets are modified."
msgstr "Đang chuyển đổi ngôn ngữ ứng dụng trong khi một số preset đã được chỉnh sửa."
msgid "Asia-Pacific"
msgstr "Châu Á-Thái Bình Dương"
@@ -10326,9 +10341,6 @@ msgstr "Chuyển đến trang web xuất bản model"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "Lưu ý: Chuẩn bị có thể mất vài phút. Vui lòng kiên nhẫn."
msgid "Publish"
msgstr "Xuất bản"
msgid "Publish was canceled"
msgstr "Xuất bản đã bị hủy"
@@ -10345,6 +10357,64 @@ msgstr "Đang tải dữ liệu lên"
msgid "Jump to webpage"
msgstr "Chuyển đến trang web"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "Lưu %s dưới dạng"
@@ -22165,6 +22235,15 @@ msgstr "Thao tác này không thể hoàn tác. Tiếp tục?"
msgid "Skipping objects."
msgstr "Đang bỏ qua các vật thể."
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
# AI Translated
msgid "Select Filament"
msgstr "Chọn filament"
+96 -17
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Slic3rPE\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2026-06-11 12:37-0300\n"
"Last-Translator: Handle <mail@bysb.net>\n"
"Language-Team: \n"
@@ -2361,8 +2361,6 @@ msgstr "有更新可用。打开预设包对话框进行更新。"
msgid "%s has been removed."
msgstr "%s 已被移除。"
msgid "Switching application language"
msgstr "切换应用程序语言"
msgid "Select the language"
msgstr "选择语言"
@@ -4743,6 +4741,9 @@ msgstr ""
"是 - 自动调整这些设置并开启旋转模式\n"
"否 - 暂不使用旋转模式"
msgid "N/A"
msgstr "不适用"
msgid "Printing"
msgstr "打印中"
@@ -5174,13 +5175,9 @@ msgstr "值 %s 超出了范围,有效的范围是从 %d 到 %d 。"
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"%s%%还是%s %s\n"
"是:%s%%\n"
"否:%s %s"
"%s%%还是%s %s"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5202,9 +5199,6 @@ msgstr "无效的模式。请使用 N、N#K 或逗号分隔的列表(每个条
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "无效格式,应该是\"%1%\"这种数组格式"
msgid "N/A"
msgstr "不适用"
# AI Translated
msgid "System agents"
msgstr "系统代理"
@@ -6159,6 +6153,12 @@ msgstr "项目另存为"
msgid "Save current project as"
msgstr "项目另存为"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -7949,6 +7949,12 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造
msgid "Customized Preset"
msgstr "自定义的预设"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "STEP 文件中的部件名称不是 UTF-8 格式!"
@@ -8354,6 +8360,17 @@ msgstr "切片文件另存为:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。"
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "发布"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "未设置喷嘴类型。请设置喷嘴并重试。"
@@ -8564,8 +8581,6 @@ msgstr "是否继续?"
msgid "Language selection"
msgstr "语言选择"
msgid "Switching application language while some presets are modified."
msgstr "在切换应用语言之前发现某些参数预设有更改。"
msgid "Asia-Pacific"
msgstr "亚太"
@@ -9489,9 +9504,6 @@ msgstr "跳转到发布页面"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "提示:发布前需要一些准备时间,请耐心等待。"
msgid "Publish"
msgstr "发布"
msgid "Publish was canceled"
msgstr "发布已取消"
@@ -9507,6 +9519,64 @@ msgstr "正在上传数据"
msgid "Jump to webpage"
msgstr "跳转到网页"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "另存%s为"
@@ -20639,6 +20709,15 @@ msgstr "此操作无法撤消。继续?"
msgid "Skipping objects."
msgstr "跳过对象。"
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "选择耗材"
+96 -17
View File
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-02 09:39-0300\n"
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
"PO-Revision-Date: 2025-11-28 13:48-0600\n"
"Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n"
"Language-Team: \n"
@@ -2425,8 +2425,6 @@ msgstr "有可用的更新。請開啟預設組合對話框進行更新。"
msgid "%s has been removed."
msgstr "%s 已移除。"
msgid "Switching application language"
msgstr "切換應用程式語言"
msgid "Select the language"
msgstr "選擇語言"
@@ -4872,6 +4870,9 @@ msgstr ""
"是 - 自動調整這些設定並啟用花瓶模式\n"
"否 - 不使用花瓶模式"
msgid "N/A"
msgstr "不適用"
msgid "Printing"
msgstr "列印中"
@@ -5303,13 +5304,9 @@ msgstr "數值 %s 超出範圍。有效範圍是從 %d 到 %d。"
#, c-format, boost-format
msgid ""
"Is it %s%% or %s %s?\n"
"YES for %s%%, \n"
"NO for %s %s."
"Is it %s%% or %s %s?"
msgstr ""
"是 %s%% 還是 %s %s\n"
"選『是』代表 %s%%\n"
"選『否』代表 %s %s。"
"是 %s%% 還是 %s %s"
#, boost-format
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
@@ -5331,9 +5328,6 @@ msgstr "無效的格式。請使用 N、N#K 或逗號分隔的清單,每個項
msgid "Invalid format. Expected vector format: \"%1%\""
msgstr "無效格式,應該是「%1%」這種格式"
msgid "N/A"
msgstr "不適用"
# AI Translated
msgid "System agents"
msgstr "系統代理程式"
@@ -6289,6 +6283,12 @@ msgstr "另存專案為"
msgid "Save current project as"
msgstr "將目前專案另存為"
msgid "Publish 3MF"
msgstr ""
msgid "Export a 3MF file with the selected settings embedded"
msgstr ""
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF"
@@ -8110,6 +8110,12 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝
msgid "Customized Preset"
msgstr "自訂預設"
msgid "Some published settings could not be applied:"
msgstr ""
msgid "Some filament slots were changed:"
msgstr ""
msgid "Component name(s) inside step file not in UTF-8 format!"
msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!"
@@ -8520,6 +8526,17 @@ msgstr "切片檔案另存為:"
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。"
msgid "Publish 3MF file as:"
msgstr ""
msgid ""
"Failed to export the published 3MF file.\n"
"Please check whether the folder exists online or if other programs have the file open."
msgstr ""
msgid "Publish"
msgstr "發布"
msgid "The nozzle type is not set. Please set the nozzle and try again."
msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。"
@@ -8730,8 +8747,6 @@ msgstr "是否繼續?"
msgid "Language selection"
msgstr "語言選擇"
msgid "Switching application language while some presets are modified."
msgstr "在切換應用程式語言之前發現某些參數預設有更改。"
msgid "Asia-Pacific"
msgstr "亞太"
@@ -9662,9 +9677,6 @@ msgstr "發布頁面"
msgid "Note: The preparation may take several minutes. Please be patient."
msgstr "提示:發布前需要一些準備時間,請耐心等待。"
msgid "Publish"
msgstr "發布"
msgid "Publish was canceled"
msgstr "發布已取消"
@@ -9680,6 +9692,64 @@ msgstr "正在上傳資料"
msgid "Jump to webpage"
msgstr "跳至網頁"
msgid "Material"
msgstr ""
msgid "Mixed filament"
msgstr ""
msgid "Some mixed filaments rely on filaments that will not be published:"
msgstr ""
#, c-format, boost-format
msgid "Filament %d (mixed)"
msgstr ""
msgid "needs"
msgstr ""
msgid "not enabled"
msgstr ""
msgid "material not published"
msgstr ""
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
msgstr ""
msgid "Publish anyway"
msgstr ""
msgid "Publish 3MF..."
msgstr ""
msgid "Select which settings to be published in the 3MF file"
msgstr ""
msgid "Publish 3MF Wiki"
msgstr ""
msgid "Publish 3MF Video Guide"
msgstr ""
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
msgstr ""
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
msgstr ""
msgid "Publish this filament slot in the 3MF file"
msgstr ""
msgid "Full Publish"
msgstr ""
msgid "Embed the entire filament of this slot in the 3MF file"
msgstr ""
msgid "Filter non-selected"
msgstr ""
#, c-format, boost-format
msgid "Save %s as"
msgstr "另存 %s 為"
@@ -20832,6 +20902,15 @@ msgstr "此操作無法撤消。繼續?"
msgid "Skipping objects."
msgstr "跳過物件。"
msgid "Material Ratio"
msgstr ""
msgid "Model Height"
msgstr ""
msgid "Ratio"
msgstr ""
msgid "Select Filament"
msgstr "選擇線材"
@@ -0,0 +1,79 @@
#!/usr/bin/env python3
"""Belt temperature-tower asset generator (discrete-provini design).
A vertical temperature tower cannot be sliced on a belt printer, so lay a row of
DISCRETE provini (one per temperature) along the belt (designed Y) with a fixed
surface gap. Each provino is the chevron+arc unit (belt_temp_provino_unit.stl,
keel-first); its temperature is ENGRAVED upright into the 50 mm face a raised
number would be an unsupported overhang on the belt. The C++ calib_temp belt branch
(Plater.cpp) injects one M104 per zone 70 layers INTO provino i:
print_z[i] = i * PITCH * cos(theta) + 70 * layer_height (theta = 45)
inside the body, not in the empty inter-provino gap (which has no sliced layers for
the event to attach to). PITCH below is the shared geometry contract with that code
keep them in sync.
Generates one STL per filament temp range used by Temp_Calibration_Dlg.
"""
import numpy as np, trimesh, os
from matplotlib.textpath import TextPath
from matplotlib.font_manager import FontProperties
from shapely.geometry import Polygon as ShPoly
from shapely.ops import unary_union
HERE = os.path.dirname(os.path.abspath(__file__))
UNIT = os.path.join(HERE, 'belt_temp_provino_unit.stl') # single provino, keel-first
SURF_GAP = 25.0 # surface-to-surface gap between provini (mm) — user spec
TEXT_H = 9.0
TEXT_DEPTH = 0.8 # engraving depth (numbers are CUT into the face, not raised:
# a raised number is an unsupported Y-overhang on the belt)
TEXT_OVERSHOOT = 0.6 # extra height poking out of the face for a clean boolean cut
# Temperature ranges (start, end) per filament family, 5 C step. File name encodes them.
RANGES = [(230,190),(270,230),(250,230),(280,240),(240,210),(320,280)]
unit = trimesh.load(UNIT)
dY = unit.bounds[1,1] - unit.bounds[0,1]
PITCH = dY + SURF_GAP # designed-Y pitch == C++ contract constant
print(f"unit dY={dY:.2f} PITCH={PITCH:.3f} (C++ contract: print_z[i]=i*{PITCH:.3f}*cos45)")
# 50 mm face normal (0,-1,1)/sqrt2 ; UPRIGHT basis u=+X det(+1) (verified non-mirrored)
n = np.array([0,-1,1.])/np.sqrt(2)
u = np.array([1,0,0.]); v = np.array([0,1,1.])/np.sqrt(2)
R = np.column_stack([u,v,n])
fn = unit.face_normals; fc = unit.triangles_center; fa = unit.area_faces
sel = (fn@n) > 0.9
face_c = (fc[sel]*fa[sel,None]).sum(0)/fa[sel].sum()
def text_mesh(s):
tp = TextPath((0,0), s, size=TEXT_H, prop=FontProperties(family='DejaVu Sans'))
rings = [ShPoly(p) for p in tp.to_polygons() if len(p)>=3]
rings.sort(key=lambda r:r.area, reverse=True)
used=[False]*len(rings); parts=[]
for i,o in enumerate(rings):
if used[i]: continue
holes=[]
for j in range(i+1,len(rings)):
if not used[j] and o.contains(rings[j]): holes.append(rings[j].exterior.coords); used[j]=True
parts.append(ShPoly(o.exterior.coords,holes)); used[i]=True
poly = unary_union(parts)
geoms = list(poly.geoms) if poly.geom_type=='MultiPolygon' else [poly]
m = trimesh.util.concatenate([trimesh.creation.extrude_polygon(g,height=TEXT_DEPTH+TEXT_OVERSHOOT) for g in geoms])
c = m.bounds.mean(axis=0); m.apply_translation([-c[0],-c[1],0]); return m
for t_start, t_end in RANGES:
temps = list(range(t_start, t_end-1, -5))
parts=[]
for i,T in enumerate(temps):
c = unit.copy(); c.apply_translation([0, i*PITCH, 0])
t = text_mesh(str(T)); M=np.eye(4); M[:3,:3]=R; t.apply_transform(M)
# place the text spanning from TEXT_DEPTH inside the face to TEXT_OVERSHOOT outside,
# then CUT it out of the provino (engrave) — no raised material, no Y-overhang.
t.apply_translation(face_c - n*TEXT_DEPTH + np.array([0,i*PITCH,0]))
c = trimesh.boolean.difference([c, t], engine='manifold')
parts.append(c)
asset = trimesh.util.concatenate(parts)
out = os.path.join(HERE, f"belt_temp_tower_{t_start}_{t_end}.stl")
asset.export(out)
dims = np.round(asset.bounds[1]-asset.bounds[0],1)
wt = all(p.is_watertight for p in parts)
print(f" {t_start}->{t_end}: {len(temps)} zones bbox={dims} watertight={wt} -> {os.path.basename(out)}")
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M1.5,8 14.5,1.5 7.5,14.5 6.3,9.7 Z" style="fill:none;stroke:gray;stroke-linecap:round;stroke-linejoin:round"/></svg>

After

Width:  |  Height:  |  Size: 209 B

+4 -8
View File
@@ -1,8 +1,4 @@
<svg width="25" height="25" xmlns="http://www.w3.org/2000/svg" fill="none">
<g>
<title>Layer 1</title>
<path id="svg_1" stroke-linecap="round" stroke-width="2" stroke="#262E30" d="m1,12.5l23,0"/>
<path id="svg_2" stroke-linecap="round" stroke-width="2" stroke="#262E30" d="m12.5,24l0,-23"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<line x1="0.5" y1="7.5" x2="14.5" y2="7.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/>
<line x1="7.5" y1="0.5" x2="7.5" y2="14.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/>
</svg>

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 332 B

@@ -324,12 +324,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -318,12 +318,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -324,12 +324,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -324,12 +324,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -309,12 +309,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -318,12 +318,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -324,12 +324,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -324,12 +324,6 @@
"slow_down_min_speed": [
"10"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -318,12 +318,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -309,12 +309,6 @@
"slow_down_min_speed": [
"20"
],
"supertack_plate_temp": [
"35"
],
"supertack_plate_temp_initial_layer": [
"35"
],
"support_material_interface_fan_speed": [
"-1"
],
@@ -25,6 +25,12 @@
"hot_plate_temp_initial_layer": [
"80"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"slow_down_for_layer_cooling": [
"1"
],
+37 -5
View File
@@ -1,9 +1,13 @@
{
"name": "Custom Printer",
"version": "02.04.00.04",
"version": "02.04.00.05",
"force_update": "0",
"description": "My configurations",
"machine_model_list": [
{
"name": "Generic Belt Printer",
"sub_path": "machine/MyBeltPrinter.json"
},
{
"name": "Generic Klipper Printer",
"sub_path": "machine/MyKlipper.json"
@@ -62,6 +66,14 @@
"name": "0.16mm Optimal @MyKlipper",
"sub_path": "process/0.16mm Optimal @MyKlipper.json"
},
{
"name": "0.12mm Fine @MyBeltPrinter",
"sub_path": "process/0.12mm Fine @MyBeltPrinter.json"
},
{
"name": "0.20mm Standard @MyBeltPrinter",
"sub_path": "process/0.20mm Standard @MyBeltPrinter.json"
},
{
"name": "0.20mm Standard @MyKlipper",
"sub_path": "process/0.20mm Standard @MyKlipper.json"
@@ -262,18 +274,38 @@
"name": "MyKlipper 0.8 nozzle",
"sub_path": "machine/MyKlipper 0.8 nozzle.json"
},
{
"name": "fdm_belt_common",
"sub_path": "machine/fdm_belt_common.json"
},
{
"name": "fdm_toolchanger_common",
"sub_path": "machine/fdm_toolchanger_common.json"
},
{
"name": "MyRepetier 0.4 nozzle",
"sub_path": "machine/MyRepetier 0.4 nozzle.json"
},
{
"name": "MyRRF 0.4 nozzle",
"sub_path": "machine/MyRRF 0.4 nozzle.json"
},
{
"name": "MyBeltPrinter 0.2 nozzle",
"sub_path": "machine/MyBeltPrinter 0.2 nozzle.json"
},
{
"name": "MyBeltPrinter 0.4 nozzle",
"sub_path": "machine/MyBeltPrinter 0.4 nozzle.json"
},
{
"name": "MyBeltPrinter 0.6 nozzle",
"sub_path": "machine/MyBeltPrinter 0.6 nozzle.json"
},
{
"name": "MyBeltPrinter 0.8 nozzle",
"sub_path": "machine/MyBeltPrinter 0.8 nozzle.json"
},
{
"name": "MyRepetier 0.4 nozzle",
"sub_path": "machine/MyRepetier 0.4 nozzle.json"
},
{
"name": "MyToolChanger 0.2 nozzle",
"sub_path": "machine/MyToolChanger 0.2 nozzle.json"
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,27 @@
{
"type": "machine",
"name": "MyBeltPrinter 0.2 nozzle",
"inherits": "fdm_belt_common",
"from": "system",
"setting_id": "3w1uyJdmm14QhDnH",
"instantiation": "true",
"printer_model": "Generic Belt Printer",
"default_print_profile": "0.12mm Fine @MyBeltPrinter",
"nozzle_diameter": [
"0.2"
],
"max_layer_height": [
"0.16"
],
"min_layer_height": [
"0.04"
],
"printer_variant": "0.2",
"printable_area": [
"0x0",
"350x0",
"350x350",
"0x350"
],
"printable_height": "300"
}
@@ -0,0 +1,20 @@
{
"type": "machine",
"name": "MyBeltPrinter 0.4 nozzle",
"inherits": "fdm_belt_common",
"from": "system",
"setting_id": "6nRHUtvJOUffocbu",
"instantiation": "true",
"printer_model": "Generic Belt Printer",
"nozzle_diameter": [
"0.4"
],
"printer_variant": "0.4",
"printable_area": [
"0x0",
"350x0",
"350x350",
"0x350"
],
"printable_height": "300"
}
@@ -0,0 +1,26 @@
{
"type": "machine",
"name": "MyBeltPrinter 0.6 nozzle",
"inherits": "fdm_belt_common",
"from": "system",
"setting_id": "K0m9HbUNwKT4UCJV",
"instantiation": "true",
"printer_model": "Generic Belt Printer",
"nozzle_diameter": [
"0.6"
],
"max_layer_height": [
"0.4"
],
"min_layer_height": [
"0.12"
],
"printer_variant": "0.6",
"printable_area": [
"0x0",
"350x0",
"350x350",
"0x350"
],
"printable_height": "300"
}
@@ -0,0 +1,26 @@
{
"type": "machine",
"name": "MyBeltPrinter 0.8 nozzle",
"inherits": "fdm_belt_common",
"from": "system",
"setting_id": "rHAweDz4eNwttPNA",
"instantiation": "true",
"printer_model": "Generic Belt Printer",
"nozzle_diameter": [
"0.8"
],
"max_layer_height": [
"0.6"
],
"min_layer_height": [
"0.2"
],
"printer_variant": "0.8",
"printable_area": [
"0x0",
"350x0",
"350x350",
"0x350"
],
"printable_height": "300"
}
@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Generic Belt Printer",
"model_id": "my_belt_01",
"nozzle_diameter": "0.4;0.2;0.6;0.8",
"machine_tech": "FFF",
"family": "MyPrinter",
"bed_model": "Custom_350_bed.stl",
"bed_texture": "orcaslicer_bed_texture.svg",
"hotend_model": "",
"default_materials": "Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System"
}
@@ -0,0 +1,99 @@
{
"type": "machine",
"name": "fdm_belt_common",
"inherits": "fdm_klipper_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "klipper",
"single_extruder_multi_material": "0",
"default_filament_profile": [
"Generic PLA @System"
],
"default_print_profile": "0.20mm Standard @MyBeltPrinter",
"max_layer_height": [
"0.32"
],
"min_layer_height": [
"0.08"
],
"deretraction_speed": [
"30"
],
"extruder_colour": [
"#FCE94F"
],
"extruder_offset": [
"0x0"
],
"long_retractions_when_cut": [
"0"
],
"nozzle_diameter": [
"0.4"
],
"retract_before_wipe": [
"70%"
],
"retract_length_toolchange": [
"2"
],
"retract_lift_above": [
"0"
],
"retract_lift_below": [
"0"
],
"retract_lift_enforce": [
"All Surfaces"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retract_when_changing_layer": [
"1"
],
"retraction_distances_when_cut": [
"18"
],
"retraction_length": [
"0.8"
],
"retraction_minimum_travel": [
"1"
],
"retraction_speed": [
"30"
],
"travel_slope": [
"3"
],
"wipe": [
"1"
],
"wipe_distance": [
"1"
],
"z_hop": [
"0.4"
],
"z_hop_types": [
"Normal Lift"
],
"gcode_remap_x": "rev_x",
"gcode_remap_y": "pos_z",
"gcode_remap_z": "pos_y",
"printer_extruder_id": [
"1"
],
"belt_printer": "1",
"belt_slice_rotation": "x",
"belt_slice_rotation_angle": "45",
"belt_slice_rotation_global": "1",
"build_plate_tilt_x": "45",
"purge_in_prime_tower": "0",
"scan_first_layer": "0",
"auxiliary_fan": "0"
}
@@ -0,0 +1,20 @@
{
"type": "process",
"name": "0.12mm Fine @MyBeltPrinter",
"inherits": "fdm_process_klipper_common",
"from": "system",
"setting_id": "EugqqdLJ423bgEwN",
"instantiation": "true",
"layer_height": "0.12",
"initial_layer_print_height": "0.12",
"bottom_shell_layers": "5",
"top_shell_layers": "6",
"support_top_z_distance": "0.08",
"support_bottom_z_distance": "0.08",
"skirt_loops": "0",
"skirt_distance": "0",
"compatible_printers": [
"MyBeltPrinter 0.2 nozzle",
"MyBeltPrinter 0.4 nozzle"
]
}
@@ -0,0 +1,17 @@
{
"type": "process",
"name": "0.20mm Standard @MyBeltPrinter",
"inherits": "fdm_process_klipper_common",
"from": "system",
"setting_id": "YzCDAgH3uLOM53pF",
"instantiation": "true",
"layer_height": "0.2",
"initial_layer_print_height": "0.2",
"skirt_loops": "0",
"skirt_distance": "0",
"compatible_printers": [
"MyBeltPrinter 0.4 nozzle",
"MyBeltPrinter 0.6 nozzle",
"MyBeltPrinter 0.8 nozzle"
]
}
+25 -1
View File
@@ -1,7 +1,7 @@
{
"name": "Flashforge",
"url": "",
"version": "02.04.00.05",
"version": "02.04.00.06",
"force_update": "0",
"description": "Flashforge configurations",
"machine_model_list": [
@@ -439,6 +439,22 @@
"name": "0.14mm Standard @FF AD5X 0.25 nozzle",
"sub_path": "process/0.14mm Standard @FF AD5X 0.25 nozzle.json"
},
{
"name": "0.08mm Standard @FF C5 0.25 nozzle",
"sub_path": "process/0.08mm Standard @FF C5 0.25 nozzle.json"
},
{
"name": "0.10mm Standard @FF C5 0.25 nozzle",
"sub_path": "process/0.10mm Standard @FF C5 0.25 nozzle.json"
},
{
"name": "0.12mm Standard @FF C5 0.25 nozzle",
"sub_path": "process/0.12mm Standard @FF C5 0.25 nozzle.json"
},
{
"name": "0.14mm Standard @FF C5 0.25 nozzle",
"sub_path": "process/0.14mm Standard @FF C5 0.25 nozzle.json"
},
{
"name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle",
"sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json"
@@ -2903,6 +2919,10 @@
"name": "Flashforge AD5X 0.4 nozzle",
"sub_path": "machine/Flashforge AD5X 0.4 nozzle.json"
},
{
"name": "Flashforge Creator 5 0.25 nozzle",
"sub_path": "machine/Flashforge Creator 5 0.25 nozzle.json"
},
{
"name": "Flashforge Creator 5 0.4 nozzle",
"sub_path": "machine/Flashforge Creator 5 0.4 nozzle.json"
@@ -2915,6 +2935,10 @@
"name": "Flashforge Creator 5 0.8 nozzle",
"sub_path": "machine/Flashforge Creator 5 0.8 nozzle.json"
},
{
"name": "Flashforge Creator 5 Pro 0.25 nozzle",
"sub_path": "machine/Flashforge Creator 5 Pro 0.25 nozzle.json"
},
{
"name": "Flashforge Creator 5 Pro 0.4 nozzle",
"sub_path": "machine/Flashforge Creator 5 Pro 0.4 nozzle.json"
@@ -87,6 +87,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
]
@@ -93,6 +93,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
],
@@ -90,6 +90,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
]
@@ -96,6 +96,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
],
@@ -90,6 +90,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
]
@@ -96,6 +96,12 @@
"support_material_interface_fan_speed": [
"90"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"temperature_vitrification": [
"70"
],
@@ -28,6 +28,12 @@
"textured_plate_temp_initial_layer": [
"85"
],
"supertack_plate_temp": [
"60"
],
"supertack_plate_temp_initial_layer": [
"60"
],
"slow_down_for_layer_cooling": [
"1"
],
@@ -0,0 +1,311 @@
{
"type": "machine",
"name": "Flashforge Creator 5 0.25 nozzle",
"inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle",
"from": "system",
"setting_id": "xp3cpTEGYdWjcrMM",
"instantiation": "true",
"adaptive_bed_mesh_margin": "0",
"auxiliary_fan": "1",
"bbl_use_printhost": "0",
"bed_custom_model": "",
"bed_custom_texture": "",
"bed_exclude_area": [
"0x0"
],
"bed_mesh_max": "99999,99999",
"bed_mesh_min": "-99999,-99999",
"bed_mesh_probe_distance": "50,50",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
"best_object_pos": "0.5,0.5",
"change_extrusion_role_gcode": "",
"change_filament_gcode": "",
"cooling_tube_length": "0",
"cooling_tube_retraction": "0",
"default_bed_type": "",
"default_filament_profile": [
"Flashforge Generic PLA"
],
"default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle",
"deretraction_speed": [
"30",
"30",
"30",
"30"
],
"disable_m73": "1",
"emit_machine_limits_to_gcode": "1",
"enable_filament_ramming": "0",
"enable_long_retraction_when_cut": "0",
"extra_loading_move": "0",
"extruder_clearance_height_to_lid": "360",
"extruder_clearance_height_to_rod": "60",
"extruder_clearance_radius": "92",
"extruder_colour": [
"#FCE94F",
"#FCE94F",
"#FCE94F",
"#FCE94F"
],
"extruder_offset": [
"0x0",
"0x0",
"0x0",
"0x0"
],
"fan_kickstart": "0",
"fan_speedup_overhangs": "1",
"fan_speedup_time": "0",
"gcode_flavor": "klipper",
"head_wrap_detect_zone": [],
"high_current_on_filament_swap": "0",
"host_type": "octoprint",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"long_retractions_when_cut": [
"0",
"0",
"0",
"0"
],
"machine_end_gcode": ";end_gcode\nG1 X150 Y150 E-1.2 F12000",
"machine_load_filament_time": "0",
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"30000",
"20000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"20000",
"20000"
],
"machine_max_acceleration_x": [
"30000",
"20000"
],
"machine_max_acceleration_y": [
"30000",
"20000"
],
"machine_max_acceleration_z": [
"300",
"500"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"3",
"3"
],
"machine_max_junction_deviation": [
"0",
"0"
],
"machine_max_speed_e": [
"30",
"30"
],
"machine_max_speed_x": [
"600",
"600"
],
"machine_max_speed_y": [
"600",
"600"
],
"machine_max_speed_z": [
"20",
"20"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"machine_pause_gcode": "M25",
"machine_start_gcode": ";start_gcode\nM140 S[bed_temperature_initial_layer_single]\nM106 P101 S0 ; L+R_PLA_Turbo_Fan_0-255\nM106 P2 S0 ; Center_Fresch_Air_Input_Fan_for_PLA30%_(80_0-255) \nM191 S0 ; Chamber temp. max65C\nM106 S0 ; Model_Fan_(Heat_Break_Cooler_80-255)100%=255\nM106 P3 S0 ; Filter_Unit_Fan_0-255(ABS=255)\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F2400\nT[initial_extruder]\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nG1 X256 Y0 Z0.2 F6000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\nG1 X216 E10 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n;start_gcode end",
"machine_tool_change_time": "7",
"machine_unload_filament_time": "0",
"manual_filament_change": "0",
"max_layer_height": [
"0.14",
"0.14",
"0.14",
"0.14"
],
"max_resonance_avoidance_speed": "120",
"min_layer_height": [
"0.08",
"0.08",
"0.08",
"0.08"
],
"min_resonance_avoidance_speed": "70",
"nozzle_diameter": [
"0.25",
"0.25",
"0.25",
"0.25"
],
"nozzle_height": "4",
"nozzle_hrc": "0",
"nozzle_type": "hardened_steel",
"nozzle_volume": "0",
"parking_pos_retraction": "0",
"pellet_modded_printer": "0",
"preferred_orientation": "0",
"printable_area": [
"0x0",
"256x0",
"256x256",
"0x256"
],
"printable_height": "256",
"printer_model": "Flashforge Creator 5",
"printer_notes": "",
"printer_settings_id": "Flashforge Creator 5 0.25 nozzle",
"printer_structure": "corexy",
"printer_technology": "FFF",
"printer_variant": "0.25",
"printhost_authorization_type": "key",
"printhost_ssl_ignore_revoke": "0",
"printing_by_object_gcode": "",
"purge_in_prime_tower": "0",
"resonance_avoidance": "0",
"retract_before_wipe": [
"100%",
"100%",
"100%",
"100%"
],
"retract_length_toolchange": [
"3",
"3",
"3",
"3"
],
"retract_lift_above": [
"0",
"0",
"0",
"0"
],
"retract_lift_below": [
"0",
"0",
"0",
"0"
],
"retract_lift_enforce": [
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces"
],
"retract_restart_extra": [
"0",
"0",
"0",
"0"
],
"retract_restart_extra_toolchange": [
"-0.8",
"-0.8",
"-0.8",
"-0.8"
],
"retract_when_changing_layer": [
"1",
"1",
"1",
"1"
],
"retraction_distances_when_cut": [
"18",
"18",
"18",
"18"
],
"retraction_length": [
"0.8",
"0.8",
"0.8",
"0.8"
],
"retraction_minimum_travel": [
"2",
"2",
"2",
"2"
],
"retraction_speed": [
"30",
"30",
"30",
"30"
],
"scan_first_layer": "0",
"silent_mode": "0",
"single_extruder_multi_material": "0",
"support_air_filtration": "0",
"support_chamber_temp_control": "0",
"support_multi_bed_types": "1",
"template_custom_gcode": "",
"thumbnails": "140x110/PNG",
"thumbnails_format": "PNG",
"time_cost": "0",
"time_lapse_gcode": "",
"travel_slope": [
"3",
"3",
"3",
"3"
],
"upward_compatible_machine": [],
"use_firmware_retraction": "0",
"use_relative_e_distances": "1",
"wipe": [
"1",
"1",
"1",
"1"
],
"wipe_distance": [
"2",
"2",
"2",
"2"
],
"z_hop": [
"0.4",
"0.4",
"0.4",
"0.4"
],
"z_hop_types": [
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift"
],
"z_offset": "0"
}
@@ -0,0 +1,311 @@
{
"type": "machine",
"name": "Flashforge Creator 5 Pro 0.25 nozzle",
"inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle",
"from": "system",
"setting_id": "rpmib7bIKa85LNMR",
"instantiation": "true",
"adaptive_bed_mesh_margin": "0",
"auxiliary_fan": "1",
"bbl_use_printhost": "0",
"bed_custom_model": "",
"bed_custom_texture": "",
"bed_exclude_area": [
"0x0"
],
"bed_mesh_max": "99999,99999",
"bed_mesh_min": "-99999,-99999",
"bed_mesh_probe_distance": "50,50",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
"best_object_pos": "0.5,0.5",
"change_extrusion_role_gcode": "",
"change_filament_gcode": "",
"cooling_tube_length": "0",
"cooling_tube_retraction": "0",
"default_bed_type": "",
"default_filament_profile": [
"Flashforge Generic PLA"
],
"default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle",
"deretraction_speed": [
"30",
"30",
"30",
"30"
],
"disable_m73": "1",
"emit_machine_limits_to_gcode": "1",
"enable_filament_ramming": "0",
"enable_long_retraction_when_cut": "0",
"extra_loading_move": "0",
"extruder_clearance_height_to_lid": "360",
"extruder_clearance_height_to_rod": "60",
"extruder_clearance_radius": "92",
"extruder_colour": [
"#FCE94F",
"#FCE94F",
"#FCE94F",
"#FCE94F"
],
"extruder_offset": [
"0x0",
"0x0",
"0x0",
"0x0"
],
"fan_kickstart": "0",
"fan_speedup_overhangs": "1",
"fan_speedup_time": "0",
"gcode_flavor": "klipper",
"head_wrap_detect_zone": [],
"high_current_on_filament_swap": "0",
"host_type": "octoprint",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"long_retractions_when_cut": [
"0",
"0",
"0",
"0"
],
"machine_end_gcode": ";end_gcode\nG1 X150 Y150 E-1.2 F12000",
"machine_load_filament_time": "0",
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"30000",
"20000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"20000",
"20000"
],
"machine_max_acceleration_x": [
"30000",
"20000"
],
"machine_max_acceleration_y": [
"30000",
"20000"
],
"machine_max_acceleration_z": [
"300",
"500"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"3",
"3"
],
"machine_max_junction_deviation": [
"0",
"0"
],
"machine_max_speed_e": [
"30",
"30"
],
"machine_max_speed_x": [
"600",
"600"
],
"machine_max_speed_y": [
"600",
"600"
],
"machine_max_speed_z": [
"20",
"20"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"machine_pause_gcode": "M25",
"machine_start_gcode": ";start_gcode\nM140 S[bed_temperature_initial_layer_single]\nM106 P101 S0 ; L+R_PLA_Turbo_Fan_0-255\nM106 P2 S0 ; Center_Fresch_Air_Input_Fan_for_PLA30%_(80_0-255) \nM191 S0 ; Chamber temp. max65C\nM106 S0 ; Model_Fan_(Heat_Break_Cooler_80-255)100%=255\nM106 P3 S0 ; Filter_Unit_Fan_0-255(ABS=255)\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F2400\nT[initial_extruder]\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nG1 X256 Y0 Z0.2 F6000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\nG1 X216 E10 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n;start_gcode end",
"machine_tool_change_time": "7",
"machine_unload_filament_time": "0",
"manual_filament_change": "0",
"max_layer_height": [
"0.14",
"0.14",
"0.14",
"0.14"
],
"max_resonance_avoidance_speed": "120",
"min_layer_height": [
"0.08",
"0.08",
"0.08",
"0.08"
],
"min_resonance_avoidance_speed": "70",
"nozzle_diameter": [
"0.25",
"0.25",
"0.25",
"0.25"
],
"nozzle_height": "4",
"nozzle_hrc": "0",
"nozzle_type": "hardened_steel",
"nozzle_volume": "0",
"parking_pos_retraction": "0",
"pellet_modded_printer": "0",
"preferred_orientation": "0",
"printable_area": [
"0x0",
"256x0",
"256x256",
"0x256"
],
"printable_height": "256",
"printer_model": "Flashforge Creator 5 Pro",
"printer_notes": "",
"printer_settings_id": "Flashforge Creator 5 Pro 0.25 nozzle",
"printer_structure": "corexy",
"printer_technology": "FFF",
"printer_variant": "0.25",
"printhost_authorization_type": "key",
"printhost_ssl_ignore_revoke": "0",
"printing_by_object_gcode": "",
"purge_in_prime_tower": "0",
"resonance_avoidance": "0",
"retract_before_wipe": [
"100%",
"100%",
"100%",
"100%"
],
"retract_length_toolchange": [
"3",
"3",
"3",
"3"
],
"retract_lift_above": [
"0",
"0",
"0",
"0"
],
"retract_lift_below": [
"0",
"0",
"0",
"0"
],
"retract_lift_enforce": [
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces"
],
"retract_restart_extra": [
"0",
"0",
"0",
"0"
],
"retract_restart_extra_toolchange": [
"-0.8",
"-0.8",
"-0.8",
"-0.8"
],
"retract_when_changing_layer": [
"1",
"1",
"1",
"1"
],
"retraction_distances_when_cut": [
"18",
"18",
"18",
"18"
],
"retraction_length": [
"0.8",
"0.8",
"0.8",
"0.8"
],
"retraction_minimum_travel": [
"2",
"2",
"2",
"2"
],
"retraction_speed": [
"30",
"30",
"30",
"30"
],
"scan_first_layer": "0",
"silent_mode": "0",
"single_extruder_multi_material": "0",
"support_air_filtration": "1",
"support_chamber_temp_control": "1",
"support_multi_bed_types": "1",
"template_custom_gcode": "",
"thumbnails": "140x110/PNG",
"thumbnails_format": "PNG",
"time_cost": "0",
"time_lapse_gcode": "",
"travel_slope": [
"3",
"3",
"3",
"3"
],
"upward_compatible_machine": [],
"use_firmware_retraction": "0",
"use_relative_e_distances": "1",
"wipe": [
"1",
"1",
"1",
"1"
],
"wipe_distance": [
"2",
"2",
"2",
"2"
],
"z_hop": [
"0.4",
"0.4",
"0.4",
"0.4"
],
"z_hop_types": [
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift"
],
"z_offset": "0"
}
@@ -2,7 +2,7 @@
"type": "machine_model",
"name": "Flashforge Creator 5 Pro",
"model_id": "Flashforge-Creator-5-Pro",
"nozzle_diameter": "0.4;0.6;0.8",
"nozzle_diameter": "0.25;0.4;0.6;0.8",
"machine_tech": "FFF",
"family": "Flashforge",
"bed_model": "flashforge_c5_buildplate_model.stl",
@@ -2,7 +2,7 @@
"type": "machine_model",
"name": "Flashforge Creator 5",
"model_id": "Flashforge-Creator-5",
"nozzle_diameter": "0.4;0.6;0.8",
"nozzle_diameter": "0.25;0.4;0.6;0.8",
"machine_tech": "FFF",
"family": "Flashforge",
"bed_model": "flashforge_c5_buildplate_model.stl",
@@ -0,0 +1,28 @@
{
"type": "process",
"name": "0.08mm Standard @FF C5 0.25 nozzle",
"inherits": "0.10mm Standard @FF AD5X 0.25 nozzle",
"from": "system",
"setting_id": "KrOSCGKyvNy9v08u",
"instantiation": "true",
"bottom_solid_infill_flow_ratio": "1",
"compatible_printers": [
"Flashforge Creator 5 0.25 nozzle",
"Flashforge Creator 5 Pro 0.25 nozzle"
],
"initial_layer_print_height": "0.1",
"internal_bridge_flow": "1",
"layer_height": "0.08",
"ooze_prevention": "1",
"preheat_time": "20",
"print_extruder_id": [
"1"
],
"print_extruder_variant": [
"Direct Drive Standard"
],
"print_settings_id": "0.08mm Standard @FF C5 0.25 nozzle",
"small_perimeter_speed": "30",
"standby_temperature_delta": "-100",
"top_solid_infill_flow_ratio": "1"
}
@@ -0,0 +1,27 @@
{
"type": "process",
"name": "0.10mm Standard @FF C5 0.25 nozzle",
"inherits": "0.10mm Standard @FF AD5X 0.25 nozzle",
"from": "system",
"setting_id": "0Mep1gVTvD4RwK53",
"instantiation": "true",
"bottom_solid_infill_flow_ratio": "1",
"compatible_printers": [
"Flashforge Creator 5 0.25 nozzle",
"Flashforge Creator 5 Pro 0.25 nozzle"
],
"initial_layer_print_height": "0.1",
"internal_bridge_flow": "1",
"ooze_prevention": "1",
"preheat_time": "20",
"print_extruder_id": [
"1"
],
"print_extruder_variant": [
"Direct Drive Standard"
],
"print_settings_id": "0.10mm Standard @FF C5 0.25 nozzle",
"small_perimeter_speed": "30",
"standby_temperature_delta": "-100",
"top_solid_infill_flow_ratio": "1"
}
@@ -0,0 +1,28 @@
{
"type": "process",
"name": "0.12mm Standard @FF C5 0.25 nozzle",
"inherits": "0.10mm Standard @FF AD5X 0.25 nozzle",
"from": "system",
"setting_id": "rcKQBKZJvCfrfzqV",
"instantiation": "true",
"bottom_solid_infill_flow_ratio": "1",
"compatible_printers": [
"Flashforge Creator 5 0.25 nozzle",
"Flashforge Creator 5 Pro 0.25 nozzle"
],
"initial_layer_print_height": "0.1",
"internal_bridge_flow": "1",
"layer_height": "0.12",
"ooze_prevention": "1",
"preheat_time": "20",
"print_extruder_id": [
"1"
],
"print_extruder_variant": [
"Direct Drive Standard"
],
"print_settings_id": "0.12mm Standard @FF C5 0.25 nozzle",
"small_perimeter_speed": "30",
"standby_temperature_delta": "-100",
"top_solid_infill_flow_ratio": "1"
}
@@ -0,0 +1,28 @@
{
"type": "process",
"name": "0.14mm Standard @FF C5 0.25 nozzle",
"inherits": "0.10mm Standard @FF AD5X 0.25 nozzle",
"from": "system",
"setting_id": "749mQY3CU2jk0MOd",
"instantiation": "true",
"bottom_solid_infill_flow_ratio": "1",
"compatible_printers": [
"Flashforge Creator 5 0.25 nozzle",
"Flashforge Creator 5 Pro 0.25 nozzle"
],
"initial_layer_print_height": "0.1",
"internal_bridge_flow": "1",
"layer_height": "0.14",
"ooze_prevention": "1",
"preheat_time": "20",
"print_extruder_id": [
"1"
],
"print_extruder_variant": [
"Direct Drive Standard"
],
"print_settings_id": "0.14mm Standard @FF C5 0.25 nozzle",
"small_perimeter_speed": "30",
"standby_temperature_delta": "-100",
"top_solid_infill_flow_ratio": "1"
}
+54
View File
@@ -0,0 +1,54 @@
{
"name": "IdeaFormer",
"version": "02.00.00.03",
"force_update": "0",
"description": "IdeaFormer belt printer configurations",
"machine_model_list": [
{
"name": "IdeaFormer IR3 V2",
"sub_path": "machine/IdeaFormer IR3 V2.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "0.20mm Standard @IdeaFormer IR3 V2",
"sub_path": "process/0.20mm Standard @IdeaFormer IR3 V2.json"
}
],
"filament_list": [
{
"name": "Generic PLA @IdeaFormer IR3 V2",
"sub_path": "filament/Generic PLA @IdeaFormer IR3 V2.json"
},
{
"name": "eSUN PLA @IdeaFormer IR3 V2",
"sub_path": "filament/eSUN PLA @IdeaFormer IR3 V2.json"
},
{
"name": "Generic PETG @IdeaFormer IR3 V2",
"sub_path": "filament/Generic PETG @IdeaFormer IR3 V2.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "fdm_klipper_common",
"sub_path": "machine/fdm_klipper_common.json"
},
{
"name": "fdm_belt_common",
"sub_path": "machine/fdm_belt_common.json"
},
{
"name": "IdeaFormer IR3 V2 0.4 nozzle",
"sub_path": "machine/IdeaFormer IR3 V2 0.4 nozzle.json"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

@@ -0,0 +1,113 @@
{
"type": "filament",
"name": "Generic PETG @IdeaFormer IR3 V2",
"inherits": "Generic PETG @System",
"from": "system",
"setting_id": "n4zaXcUUzTqAxq5f",
"instantiation": "true",
"compatible_printers": [
"IdeaFormer IR3 V2 0.4 nozzle"
],
"filament_type": [
"PETG"
],
"filament_vendor": [
"Generic"
],
"filament_settings_id": [
"Generic PETG @IdeaFormer IR3 V2"
],
"filament_diameter": [
"1.75"
],
"filament_density": [
"1.27"
],
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"25"
],
"filament_max_volumetric_speed": [
"10"
],
"nozzle_temperature": [
"240"
],
"nozzle_temperature_initial_layer": [
"245"
],
"nozzle_temperature_range_low": [
"220"
],
"nozzle_temperature_range_high": [
"260"
],
"temperature_vitrification": [
"70"
],
"hot_plate_temp": [
"80"
],
"hot_plate_temp_initial_layer": [
"80"
],
"cool_plate_temp": [
"80"
],
"cool_plate_temp_initial_layer": [
"80"
],
"textured_plate_temp": [
"80"
],
"textured_plate_temp_initial_layer": [
"80"
],
"fan_min_speed": [
"40"
],
"fan_max_speed": [
"60"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"close_fan_the_first_x_layers": [
"3"
],
"full_fan_speed_layer": [
"8"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"fan_cooling_layer_time": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"filament_retraction_length": [
"2"
],
"filament_retraction_speed": [
"40"
],
"filament_deretraction_speed": [
"40"
],
"filament_z_hop": [
"0.4"
],
"filament_start_gcode": [
"; Generic PETG @IdeaFormer IR3 V2 — belt PETG, bed 80C"
]
}
@@ -0,0 +1,113 @@
{
"type": "filament",
"name": "Generic PLA @IdeaFormer IR3 V2",
"inherits": "Generic PLA @System",
"from": "system",
"setting_id": "1xjycsEAFh6KQIhp",
"instantiation": "true",
"compatible_printers": [
"IdeaFormer IR3 V2 0.4 nozzle"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_settings_id": [
"Generic PLA @IdeaFormer IR3 V2"
],
"filament_diameter": [
"1.75"
],
"filament_density": [
"1.24"
],
"filament_flow_ratio": [
"0.98"
],
"filament_cost": [
"20"
],
"filament_max_volumetric_speed": [
"12"
],
"nozzle_temperature": [
"215"
],
"nozzle_temperature_initial_layer": [
"220"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"240"
],
"temperature_vitrification": [
"45"
],
"hot_plate_temp": [
"75"
],
"hot_plate_temp_initial_layer": [
"75"
],
"cool_plate_temp": [
"75"
],
"cool_plate_temp_initial_layer": [
"75"
],
"textured_plate_temp": [
"75"
],
"textured_plate_temp_initial_layer": [
"75"
],
"fan_min_speed": [
"100"
],
"fan_max_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"overhang_fan_speed": [
"100"
],
"close_fan_the_first_x_layers": [
"3"
],
"full_fan_speed_layer": [
"8"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"fan_cooling_layer_time": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"filament_retraction_length": [
"1.5"
],
"filament_retraction_speed": [
"35"
],
"filament_deretraction_speed": [
"30"
],
"filament_z_hop": [
"0.4"
],
"filament_start_gcode": [
"; Generic PLA @IdeaFormer IR3 V2 — belt PLA, bed 75C"
]
}
@@ -0,0 +1,36 @@
{
"type": "filament",
"name": "eSUN PLA @IdeaFormer IR3 V2",
"inherits": "Generic PLA @IdeaFormer IR3 V2",
"filament_id": "OFkrxQC4",
"from": "system",
"setting_id": "XqkviBmFHEglXueX",
"instantiation": "true",
"compatible_printers": [
"IdeaFormer IR3 V2 0.4 nozzle"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"eSUN"
],
"filament_settings_id": [
"eSUN PLA @IdeaFormer IR3 V2"
],
"nozzle_temperature_initial_layer": [
"200"
],
"nozzle_temperature": [
"200"
],
"enable_pressure_advance": [
"1"
],
"pressure_advance": [
"0.12"
],
"filament_max_volumetric_speed": [
"20"
]
}
@@ -0,0 +1,94 @@
{
"type": "machine",
"name": "IdeaFormer IR3 V2 0.4 nozzle",
"inherits": "fdm_belt_common",
"from": "system",
"setting_id": "MDQZgwRgg72lmjtu",
"instantiation": "true",
"printer_model": "IdeaFormer IR3 V2",
"printer_variant": "0.4",
"nozzle_diameter": [
"0.4"
],
"printable_area": [
"0x0",
"250x0",
"250x2000",
"0x2000"
],
"printable_height": "250",
"belt_printer_infinite_y": "1",
"thumbnails": [
"48x48/PNG",
"300x300/PNG"
],
"default_filament_profile": [
"Generic PLA @IdeaFormer IR3 V2"
],
"default_print_profile": "0.20mm Standard @IdeaFormer IR3 V2",
"use_relative_e_distances": "1",
"machine_max_acceleration_e": [
"5000"
],
"machine_max_acceleration_extruding": [
"5000"
],
"machine_max_acceleration_retracting": [
"1000"
],
"machine_max_acceleration_travel": [
"9000"
],
"machine_max_acceleration_x": [
"5000"
],
"machine_max_acceleration_y": [
"5000"
],
"machine_max_acceleration_z": [
"100"
],
"machine_max_jerk_e": [
"2.5"
],
"machine_max_jerk_x": [
"10"
],
"machine_max_jerk_y": [
"10"
],
"machine_max_jerk_z": [
"0.4"
],
"machine_max_speed_e": [
"60"
],
"machine_max_speed_x": [
"500"
],
"machine_max_speed_y": [
"500"
],
"machine_max_speed_z": [
"20"
],
"retraction_length": [
"2"
],
"retraction_speed": [
"40"
],
"deretraction_speed": [
"40"
],
"z_hop": [
"0.4"
],
"retract_lift_below": [
"300"
],
"machine_start_gcode": "; === IdeaFormer IR3 V2 Belt Printer Start ===\n; Axes: X=lateral, Y=gantry height (probe), Z=belt\nG90 ; absolute positioning\nM82 ; absolute extruder\nG21 ; millimeters\nG28 ; home all axes\nG1 Y20 F500 ; lift nozzle 20mm from belt\n; Bed + hotend temps come from the active filament profile. Belt PLA requires 75 C bed — use Generic/eSun PLA @IdeaFormer IR3 V2 filament presets to get it automatically.\nM140 S[hot_plate_temp_initial_layer] ; set bed temp\nM104 S[nozzle_temperature_initial_layer] ; hotend temp\nM109 S[nozzle_temperature_initial_layer] ; wait hotend\nM190 S[hot_plate_temp_initial_layer] ; wait bed\n; --- Purge blob ---\nG92 E0 ; zero extruder\nG1 Y.1 ; nozzle 0.1mm above belt\nG1 E15 F1000 ; purge 15mm blob\nG1 Z20 E25 F800 ; belt advance 20mm + extrude\nG1 E23 ; retract 2mm\nG28 Y ; re-probe belt surface\nG1 E25 ; de-retract\n; --- Prime lines (full 250mm bed width) ---\nFMS_on ; filament motion sensor\nG1 X250 E50 F2000 ; prime line 1\nG92 Z0 ; reset belt origin\nG1 Z.4 ; belt advance 0.4mm\nG1 X0 E75 ; prime line 2\nG1 F1000 ; default feedrate\nG92 E0 Z0 ; zero extruder + belt = print origin\n",
"machine_end_gcode": "; === IdeaFormer IR3 V2 Belt Printer End ===\nM400 ; wait for moves to finish\nM104 S0 ; heater off\nM140 S0 ; bed off\nG92 E0 ; zero extruder\nG1 E-5 F300 ; retract 5mm\nG4 P5000 ; wait for ooze\nG91 ; relative mode - keep every end move relative on a belt\nG1 Y20 F1000 ; raise gantry 20mm for clearance over the part\nG1 Z676 F3000 ; advance belt one full machine-depth to eject the part and clean the belt\nG90 ; back to absolute\nG28 X ; home X only - NEVER 'G28' all: that homes Z/belt and reverses the whole print back into the gantry\nFMS_off ; filament motion sensor off\nBED_MESH_CLEAR\nM84 ; disable motors\n",
"machine_pause_gcode": "PAUSE",
"layer_change_gcode": "G92 E0 ; belt: reset extruder at layer change (relative E)"
}
@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "IdeaFormer IR3 V2",
"model_id": "IdeaFormer_IR3_V2",
"nozzle_diameter": "0.4",
"machine_tech": "FFF",
"family": "IdeaFormer",
"bed_model": "",
"bed_texture": "",
"hotend_model": "",
"default_materials": "Generic PLA @IdeaFormer IR3 V2;Generic PETG @IdeaFormer IR3 V2"
}
@@ -0,0 +1,99 @@
{
"type": "machine",
"name": "fdm_belt_common",
"inherits": "fdm_klipper_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "klipper",
"single_extruder_multi_material": "0",
"default_filament_profile": [
"Generic PLA @System"
],
"default_print_profile": "0.20mm Standard @IdeaFormer IR3 V2",
"max_layer_height": [
"0.32"
],
"min_layer_height": [
"0.08"
],
"deretraction_speed": [
"30"
],
"extruder_colour": [
"#FCE94F"
],
"extruder_offset": [
"0x0"
],
"long_retractions_when_cut": [
"0"
],
"nozzle_diameter": [
"0.4"
],
"retract_before_wipe": [
"70%"
],
"retract_length_toolchange": [
"2"
],
"retract_lift_above": [
"0"
],
"retract_lift_below": [
"0"
],
"retract_lift_enforce": [
"All Surfaces"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retract_when_changing_layer": [
"1"
],
"retraction_distances_when_cut": [
"18"
],
"retraction_length": [
"0.8"
],
"retraction_minimum_travel": [
"1"
],
"retraction_speed": [
"30"
],
"travel_slope": [
"3"
],
"wipe": [
"1"
],
"wipe_distance": [
"1"
],
"z_hop": [
"0.4"
],
"z_hop_types": [
"Normal Lift"
],
"gcode_remap_x": "rev_x",
"gcode_remap_y": "pos_z",
"gcode_remap_z": "pos_y",
"printer_extruder_id": [
"1"
],
"belt_printer": "1",
"belt_slice_rotation": "x",
"belt_slice_rotation_angle": "45",
"belt_slice_rotation_global": "1",
"build_plate_tilt_x": "45",
"purge_in_prime_tower": "0",
"scan_first_layer": "0",
"auxiliary_fan": "0"
}
@@ -0,0 +1,141 @@
{
"type": "machine",
"name": "fdm_klipper_common",
"inherits": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "klipper",
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"20000",
"20000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"20000",
"20000"
],
"machine_max_acceleration_x": [
"20000",
"20000"
],
"machine_max_acceleration_y": [
"20000",
"20000"
],
"machine_max_acceleration_z": [
"500",
"200"
],
"machine_max_speed_e": [
"25",
"25"
],
"machine_max_speed_x": [
"500",
"200"
],
"machine_max_speed_y": [
"500",
"200"
],
"machine_max_speed_z": [
"12",
"12"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"0.2",
"0.4"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"max_layer_height": [
"0.32"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"printer_settings_id": "",
"printer_technology": "FFF",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"1"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"0.8"
],
"retract_length_toolchange": [
"2"
],
"z_hop": [
"0.4"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"30"
],
"deretraction_speed": [
"30"
],
"z_hop_types": "Normal Lift",
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"wipe": [
"1"
],
"default_filament_profile": [
"Generic PLA @System"
],
"default_print_profile": "0.20mm Standard @MyKlipper",
"bed_exclude_area": [
"0x0"
],
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n",
"machine_end_gcode": "PRINT_END",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"machine_pause_gcode": "PAUSE",
"scan_first_layer": "0",
"nozzle_type": "undefine",
"auxiliary_fan": "0"
}
@@ -0,0 +1,119 @@
{
"type": "machine",
"name": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"printer_technology": "FFF",
"deretraction_speed": [
"40"
],
"extruder_colour": [
"#FCE94F"
],
"extruder_offset": [
"0x0"
],
"gcode_flavor": "marlin",
"silent_mode": "0",
"machine_max_acceleration_e": [
"5000"
],
"machine_max_acceleration_extruding": [
"10000"
],
"machine_max_acceleration_retracting": [
"1000"
],
"machine_max_acceleration_x": [
"10000"
],
"machine_max_acceleration_y": [
"10000"
],
"machine_max_acceleration_z": [
"500"
],
"machine_max_speed_e": [
"60"
],
"machine_max_speed_x": [
"500"
],
"machine_max_speed_y": [
"500"
],
"machine_max_speed_z": [
"10"
],
"machine_max_jerk_e": [
"5"
],
"machine_max_jerk_x": [
"8"
],
"machine_max_jerk_y": [
"8"
],
"machine_max_jerk_z": [
"0.4"
],
"machine_min_extruding_rate": [
"0"
],
"machine_min_travel_rate": [
"0"
],
"max_layer_height": [
"0.32"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"nozzle_diameter": [
"0.4"
],
"printer_settings_id": "",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"2"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"1"
],
"retract_length_toolchange": [
"1"
],
"z_hop": [
"0"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"60"
],
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"wipe": [
"1"
],
"default_print_profile": "",
"machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up",
"machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"machine_pause_gcode": "M601"
}
@@ -0,0 +1,23 @@
{
"type": "process",
"name": "0.20mm Standard @IdeaFormer IR3 V2",
"inherits": "fdm_process_common",
"from": "system",
"setting_id": "91atcIwv5728phqX",
"instantiation": "true",
"layer_height": "0.2",
"initial_layer_print_height": "0.2",
"initial_layer_line_width": "0.42",
"wall_loops": "2",
"reduce_infill_retraction": "1",
"detect_overhang_wall": "1",
"skirt_loops": "0",
"skirt_distance": "0",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "200",
"support_base_pattern": "rectilinear",
"support_interface_pattern": "rectilinear",
"compatible_printers": [
"IdeaFormer IR3 V2 0.4 nozzle"
]
}
@@ -0,0 +1,108 @@
{
"type": "process",
"name": "fdm_process_common",
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
"reduce_crossing_wall": "0",
"max_travel_detour_distance": "0",
"bottom_surface_pattern": "monotonic",
"bottom_shell_thickness": "0",
"bridge_speed": "50",
"brim_width": "5",
"brim_object_gap": "0.1",
"compatible_printers": [],
"compatible_printers_condition": "",
"print_sequence": "by layer",
"default_acceleration": "1000",
"initial_layer_acceleration": "500",
"top_surface_acceleration": "1000",
"travel_acceleration": "1000",
"inner_wall_acceleration": "1000",
"outer_wall_acceleration": "700",
"bridge_no_support": "0",
"draft_shield": "disabled",
"elefant_foot_compensation": "0",
"enable_arc_fitting": "0",
"wall_infill_order": "inner wall/outer wall/infill",
"infill_direction": "45",
"sparse_infill_density": "15%",
"sparse_infill_pattern": "crosshatch",
"initial_layer_print_height": "0.2",
"infill_combination": "0",
"infill_wall_overlap": "25%",
"interface_shells": "0",
"ironing_flow": "10%",
"ironing_spacing": "0.15",
"ironing_speed": "30",
"ironing_type": "no ironing",
"reduce_infill_retraction": "1",
"filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[initial_tool]}_{printer_model}_{print_time}.gcode",
"detect_overhang_wall": "1",
"slowdown_for_curled_perimeters": "1",
"overhang_1_4_speed": "0",
"overhang_2_4_speed": "50",
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"line_width": "110%",
"inner_wall_line_width": "110%",
"outer_wall_line_width": "100%",
"top_surface_line_width": "93.75%",
"sparse_infill_line_width": "110%",
"initial_layer_line_width": "120%",
"internal_solid_infill_line_width": "120%",
"support_line_width": "96%",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",
"skirt_distance": "2",
"skirt_height": "3",
"min_skirt_length": "4",
"skirt_loops": "0",
"minimum_sparse_infill_area": "15",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
"enable_support": "0",
"resolution": "0.012",
"support_type": "normal(auto)",
"support_on_build_plate_only": "0",
"support_top_z_distance": "0.2",
"support_bottom_z_distance": "0.2",
"support_filament": "0",
"support_interface_loop_pattern": "0",
"support_interface_filament": "0",
"support_interface_top_layers": "2",
"support_interface_bottom_layers": "2",
"support_interface_spacing": "0.5",
"support_interface_speed": "80",
"support_base_pattern": "default",
"support_base_pattern_spacing": "2.5",
"support_speed": "150",
"support_threshold_angle": "30",
"support_object_xy_distance": "0.35",
"tree_support_branch_angle": "30",
"tree_support_wall_count": "0",
"tree_support_with_infill": "0",
"detect_thin_wall": "0",
"top_surface_pattern": "monotonicline",
"top_shell_thickness": "0.8",
"enable_prime_tower": "1",
"wipe_tower_no_sparse_layers": "0",
"prime_tower_width": "60",
"xy_hole_compensation": "0",
"xy_contour_compensation": "0",
"layer_height": "0.2",
"bottom_shell_layers": "3",
"top_shell_layers": "4",
"bridge_flow": "1",
"initial_layer_speed": "45",
"initial_layer_infill_speed": "45",
"outer_wall_speed": "45",
"inner_wall_speed": "80",
"sparse_infill_speed": "150",
"internal_solid_infill_speed": "150",
"top_surface_speed": "50",
"gap_infill_speed": "30",
"travel_speed": "200"
}
+54
View File
@@ -0,0 +1,54 @@
{
"name": "Printcepts",
"version": "01.00.00.01",
"force_update": "0",
"description": "Printcepts belt printer configurations",
"machine_model_list": [
{
"name": "BabyBelt Pro",
"sub_path": "machine/BabyBelt Pro.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "0.20mm Standard @BabyBelt Pro",
"sub_path": "process/0.20mm Standard @BabyBelt Pro.json"
}
],
"filament_list": [
{
"name": "Generic PLA @BabyBelt Pro",
"sub_path": "filament/Generic PLA @BabyBelt Pro.json"
},
{
"name": "eSUN PLA @BabyBelt Pro",
"sub_path": "filament/eSUN PLA @BabyBelt Pro.json"
},
{
"name": "Generic PETG @BabyBelt Pro",
"sub_path": "filament/Generic PETG @BabyBelt Pro.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "fdm_klipper_common",
"sub_path": "machine/fdm_klipper_common.json"
},
{
"name": "fdm_belt_common",
"sub_path": "machine/fdm_belt_common.json"
},
{
"name": "BabyBelt Pro 0.4 nozzle",
"sub_path": "machine/BabyBelt Pro 0.4 nozzle.json"
}
]
}
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="95.0mm" height="500.0mm" viewBox="0 0 95.0 500.0" preserveAspectRatio="xMidYMid meet">
<!-- Printcepts BabyBelt Pro bed texture: 95 x 500 mm belt plate. -->
<!-- Transparent plate; green (#195F30) BabyBelt Pro logo centered along X, near the bottom edge. -->
<rect x="0" y="0" width="95.0" height="500.0" fill="none"/>
<g transform="translate(14.2500,436.3488) scale(0.067538)">
<g transform="translate(-11.000000,692.938562) scale(0.100000,-0.100000)"
fill="#195F30" stroke="none">
<path d="M1963 5604 l-1423 -1324 0 -2050 0 -2050 443 0 c244 0 741 3 1105 7
l662 6 0 746 c-1 575 -4 768 -14 841 -47 324 -179 486 -473 581 -40 12 -73 26
-73 30 0 4 32 17 72 29 212 64 333 166 378 320 35 121 38 191 32 868 l-5 662
-629 0 c-395 0 -628 4 -628 10 0 5 635 601 1410 1325 776 724 1410 1318 1410
1321 0 2 -190 4 -422 3 l-423 0 -1422 -1325z m-334 -2029 c143 -16 174 -96
173 -446 -2 -411 -24 -458 -224 -462 l-93 -2 -3 450 c-1 248 0 456 3 463 3 9
18 12 47 8 24 -3 67 -8 97 -11z m-4 -1556 c160 -29 173 -62 182 -469 9 -455
-14 -593 -108 -641 -39 -19 -193 -44 -210 -33 -10 6 -13 1147 -3 1157 6 6 45
2 139 -14z"/>
<path d="M3464 5979 c-142 -132 -263 -245 -268 -250 -6 -5 69 -9 190 -9 l199
1 268 249 267 250 -198 0 -198 0 -260 -241z"/>
<path d="M3650 5649 c-135 -126 -254 -238 -265 -249 -19 -20 -18 -20 177 -20
l197 0 228 211 c125 116 246 229 268 250 l40 39 -200 -1 -200 0 -245 -230z"/>
<path d="M2537 5089 c-101 -24 -204 -105 -251 -197 -96 -190 -19 -420 172
-514 l67 -33 2670 0 2670 0 57 27 c74 34 146 107 184 183 43 88 43 230 0 322
-35 76 -113 153 -193 191 l-58 27 -2640 2 c-1513 0 -2656 -3 -2678 -8z m5063
-77 c-57 -37 -118 -111 -140 -168 -31 -82 -25 -206 12 -279 26 -49 93 -121
133 -143 15 -8 -640 -11 -2410 -11 l-2430 0 30 21 c200 146 201 425 1 569
l-39 29 2434 -1 c2263 0 2432 -1 2409 -17z m-4890 -43 c270 -122 185 -526
-109 -522 -257 2 -370 324 -170 485 74 60 194 76 279 37z m5201 -12 c94 -55
140 -135 140 -242 0 -285 -393 -374 -517 -117 -26 54 -30 162 -9 219 28 74 97
139 173 164 53 17 166 4 213 -24z"/>
<path d="M2917 3973 c-4 -174 -7 -550 -7 -835 l0 -518 326 0 326 0 -7 150 -7
150 110 0 110 0 11 -32 c5 -18 26 -86 46 -150 l36 -118 325 0 c179 0 323 4
320 9 -3 4 -155 374 -337 822 -182 448 -333 820 -336 827 -4 9 -105 12 -457
12 l-453 0 -6 -317z m773 -745 c0 -5 -47 -8 -104 -8 l-103 0 -7 92 c-3 50 -6
202 -5 337 l1 246 109 -330 c60 -181 109 -333 109 -337z"/>
<path d="M4680 3455 l0 -835 448 0 c693 1 885 16 985 80 99 63 126 132 134
340 12 327 -44 405 -342 476 -28 7 -27 8 25 19 199 42 255 95 267 248 11 146
-32 285 -110 353 -145 126 -329 153 -1049 154 l-358 0 0 -835z m846 520 c36
-23 44 -54 44 -162 0 -152 -29 -183 -170 -183 l-40 0 0 186 0 187 71 -6 c39
-3 82 -13 95 -22z m4 -625 c33 -18 40 -52 40 -208 0 -200 -9 -214 -143 -228
l-67 -7 0 233 0 233 74 -6 c41 -3 84 -10 96 -17z"/>
<path d="M6150 4286 c0 -3 131 -242 290 -531 l290 -526 0 -304 0 -305 385 0
385 0 0 299 0 299 305 533 305 534 -377 3 c-207 1 -381 -2 -385 -6 -16 -16
-110 -258 -172 -444 l-62 -187 -18 77 c-18 75 -139 450 -171 525 l-15 37 -380
0 c-209 0 -380 -2 -380 -4z"/>
<path d="M2910 1355 l0 -1185 830 0 830 0 0 240 0 240 -350 0 -350 0 0 255 0
255 300 0 300 0 0 230 0 230 -300 0 -300 0 0 220 0 220 320 0 320 0 0 240 0
240 -800 0 -800 0 0 -1185z"/>
<path d="M4680 1355 l0 -1185 775 0 775 0 0 240 0 240 -295 0 -295 0 0 945 0
945 -480 0 -480 0 0 -1185z"/>
<path d="M5800 2300 l0 -240 280 0 280 0 0 -945 0 -945 480 0 480 0 0 945 0
945 285 0 285 0 0 240 0 240 -1045 0 -1045 0 0 -240z"/>
<path d="M8032 1358 l-2 -1188 1008 1 c621 1 971 5 912 10 -309 27 -631 139
-885 306 -593 391 -984 1122 -1025 1918 -4 77 -8 -394 -8 -1047z"/>
<path d="M7441 1934 c-43 -36 -59 -70 -70 -148 -18 -124 16 -252 76 -291 32
-21 226 -33 328 -20 114 14 161 97 153 269 -5 96 -24 151 -68 191 -20 18 -39
20 -205 23 l-182 3 -32 -27z m389 -199 c7 -8 10 -22 6 -30 -4 -13 -34 -15
-186 -15 -189 0 -202 3 -186 45 8 22 348 22 366 0z"/>
<path d="M7450 1267 c-14 -6 -35 -32 -47 -57 -21 -41 -23 -58 -23 -222 l0
-178 270 0 270 0 0 105 0 105 -121 0 -120 0 3 28 3 27 118 3 117 3 0 99 0 100
-113 0 c-121 0 -138 -7 -162 -65 -8 -19 -9 -19 -12 2 -10 55 -116 84 -183 50z
m134 -203 c15 -38 8 -44 -54 -44 -62 0 -69 6 -54 44 9 23 99 23 108 0z"/>
<path d="M466 1193 l-29 -43 -163 0 -164 0 0 -235 0 -235 165 0 165 0 27 -42
28 -42 3 163 c1 89 1 233 0 319 l-3 157 -29 -42z"/>
<path d="M7443 620 c-48 -20 -58 -60 -61 -262 l-4 -188 271 0 271 0 0 110 0
110 -110 0 -110 0 0 70 c0 76 -21 145 -51 160 -22 12 -176 12 -206 0z m161
-186 c15 -39 8 -44 -64 -44 -72 0 -79 5 -64 44 9 23 119 23 128 0z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

@@ -0,0 +1,113 @@
{
"type": "filament",
"name": "Generic PETG @BabyBelt Pro",
"inherits": "Generic PETG @System",
"from": "system",
"setting_id": "gCzHpDNgVwQR6tgk",
"instantiation": "true",
"compatible_printers": [
"BabyBelt Pro 0.4 nozzle"
],
"filament_type": [
"PETG"
],
"filament_vendor": [
"Generic"
],
"filament_settings_id": [
"Generic PETG @BabyBelt Pro"
],
"filament_diameter": [
"1.75"
],
"filament_density": [
"1.27"
],
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"25"
],
"filament_max_volumetric_speed": [
"10"
],
"nozzle_temperature": [
"240"
],
"nozzle_temperature_initial_layer": [
"245"
],
"nozzle_temperature_range_low": [
"220"
],
"nozzle_temperature_range_high": [
"260"
],
"temperature_vitrification": [
"70"
],
"hot_plate_temp": [
"80"
],
"hot_plate_temp_initial_layer": [
"80"
],
"cool_plate_temp": [
"80"
],
"cool_plate_temp_initial_layer": [
"80"
],
"textured_plate_temp": [
"80"
],
"textured_plate_temp_initial_layer": [
"80"
],
"fan_min_speed": [
"40"
],
"fan_max_speed": [
"60"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"close_fan_the_first_x_layers": [
"3"
],
"full_fan_speed_layer": [
"8"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"fan_cooling_layer_time": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"filament_retraction_length": [
"2"
],
"filament_retraction_speed": [
"40"
],
"filament_deretraction_speed": [
"40"
],
"filament_z_hop": [
"0.4"
],
"filament_start_gcode": [
"; Generic PETG @BabyBelt Pro — belt PETG, bed 80C"
]
}
@@ -0,0 +1,113 @@
{
"type": "filament",
"name": "Generic PLA @BabyBelt Pro",
"inherits": "Generic PLA @System",
"from": "system",
"setting_id": "24PpcnhVx9v5f4fD",
"instantiation": "true",
"compatible_printers": [
"BabyBelt Pro 0.4 nozzle"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_settings_id": [
"Generic PLA @BabyBelt Pro"
],
"filament_diameter": [
"1.75"
],
"filament_density": [
"1.24"
],
"filament_flow_ratio": [
"0.98"
],
"filament_cost": [
"20"
],
"filament_max_volumetric_speed": [
"12"
],
"nozzle_temperature": [
"215"
],
"nozzle_temperature_initial_layer": [
"220"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"240"
],
"temperature_vitrification": [
"45"
],
"hot_plate_temp": [
"75"
],
"hot_plate_temp_initial_layer": [
"75"
],
"cool_plate_temp": [
"75"
],
"cool_plate_temp_initial_layer": [
"75"
],
"textured_plate_temp": [
"75"
],
"textured_plate_temp_initial_layer": [
"75"
],
"fan_min_speed": [
"100"
],
"fan_max_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"overhang_fan_speed": [
"100"
],
"close_fan_the_first_x_layers": [
"3"
],
"full_fan_speed_layer": [
"8"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"fan_cooling_layer_time": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"filament_retraction_length": [
"1.5"
],
"filament_retraction_speed": [
"35"
],
"filament_deretraction_speed": [
"30"
],
"filament_z_hop": [
"0.4"
],
"filament_start_gcode": [
"; Generic PLA @BabyBelt Pro — belt PLA, bed 75C"
]
}

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