Compare commits

..

79 Commits

Author SHA1 Message Date
ExPikaPaka
0458925f85 Install proto before flatpack when there is internet. Add missing include that caused fail only on Unix 2026-06-04 17:41:40 +02:00
ExPikaPaka
7c34e089e4 Try to fix mac build again
Ahh, I never compiled any program on Mac, i thought it will behave the same was as Linux,
but there are some diferences of course..
2026-06-04 14:37:03 +02:00
ExPikaPaka
d314e9c09a Fix build for Mac 2026-06-04 14:22:04 +02:00
ExPikaPaka
7fa650e410 Fix build script as it was not working on some platforms 2026-06-04 12:28:25 +02:00
ExPikaPaka
1c1cee7784 Add missing fix for BOM file encoding 2026-06-04 12:27:43 +02:00
ExPikaPaka
1d7da51991 Fix encoding and build script 2026-06-04 12:13:10 +02:00
ExPikaPaka
3be63d4369 Use venv for python on Linux and macOS 2026-06-04 11:52:05 +02:00
ExPikaPaka
99a0dd8556 Fix BOM mark 2026-06-04 11:41:24 +02:00
ExPikaPaka
fcd3a66af4 Merge branch 'feature/protobuf_config_and_dynamic_ui' of https://github.com/OrcaSlicer/OrcaSlicer into feature/protobuf_config_and_dynamic_ui 2026-06-04 09:09:32 +02:00
ExPikaPaka
972da86fbc Fix incorrect path at codegen config 2026-06-04 09:08:27 +02:00
ExPikaPaka
8cb357ec06 Merge branch 'main' into feature/protobuf_config_and_dynamic_ui 2026-06-04 09:00:36 +02:00
ExPikaPaka
a29fac5de8 Update printer section in automatic layout 2026-06-04 08:41:43 +02:00
ExPikaPaka
14097382d8 Adds custom hooks that are called cause they need special code and can't be implemented purely via protobuf definition 2026-06-04 08:40:54 +02:00
ExPikaPaka
3db76d7f89 Extend code generators to properly handle new data types 2026-06-04 08:40:20 +02:00
ExPikaPaka
c47fc4529e Wire in generated files 2026-06-04 08:40:00 +02:00
ExPikaPaka
b823994feb Add cmake config to properly do incremental build 2026-06-04 08:38:50 +02:00
ExPikaPaka
403766b1b6 Add .gitignore entry to ignore generated code 2026-06-04 08:38:24 +02:00
ExPikaPaka
6e84139d60 Configure CI/CD build to properly build OrcaSlicer with Protobuf and codegen 2026-06-04 08:37:32 +02:00
ExPikaPaka
a78ef9ce1c Fix proto files after merging them from ~15 files to 3 2026-06-04 08:36:51 +02:00
ExPikaPaka
064e10c069 Remove outdated files 2026-06-04 08:36:28 +02:00
TheLegendTubaGuy
e0a47c61a2 [FIX] Fix Elegoo process profiles (#14020)
* Bump Elegoo profile version to refresh installed bundle

Bumps the Elegoo vendor profile version so installed profile bundles are refreshed from bundled resources after the recent Elegoo profile sync.\n\nThe previous version stayed at 02.04.00.00 after the profile layout changed, so existing installs could keep loading stale system/Elegoo files. That stale bundle can abort during profile loading and cause user presets inheriting from Elegoo machines, such as OrangeStorm Giga and Neptune 3 Max, to report missing parents.\n\nValidation:\n- jq parsed resources/profiles/Elegoo.json\n- verified all Elegoo.json sub_path entries exist\n- git diff --check

* Fix Elegoo process profile manifest
2026-06-04 14:19:10 +08:00
gyarros
a3e479af4e Add FilAr filament vendor (PLA, PLA-mate, PETG) (#13977) 2026-06-04 14:15:28 +08:00
Tobias Gloth
dc5d6b45de add "logfile" option to log diagnostics to file using boost (#13931)
add some logging options

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-04 13:28:51 +08:00
Noisyfox
58a8722a69 Don't show unsupported presets in drop down list (#13959)
* Don't show unsupported presets in drop down list, since it's not useful

* Add option to show unsupported presets

* Explicitly set the default value to `false`

* update filament list without restart on preference change

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-06-04 09:02:09 +08:00
Terasit Juntarasombut
dfe4b52822 l10n: Update Thai translation (th) and fix font issues (#14006)
* i18n: complete Thai (th) localization

* feat: fix thi translation

* feat: fix Thai language localization file

* feat: implement ImGuiWrapper with icon/font support and add Thai localization files

* l10n: Update Thai translation and fix font rendering issues

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-04 02:35:47 +08:00
gedanke
9a053f15eb Fix: macOS Print/Export dropdown dismissed before the cursor reaches the menu (#12936) (#13995)
Since the wxWidgets 3.3 upgrade the Slice/Print split-button's transient
popup was dismissed the moment the cursor entered the gap between the
button and the menu, making "Print -> Export" impossible to select.

Anchor the menu flush against the button (with a 2 px overlap) instead of
6 px below it, removing the dead-zone the cursor had to cross.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 02:34:18 +08:00
3DPrinterOS SDK
c467990724 Support for 3DPrinterOS cloud integration (#10403) 2026-06-04 02:31:57 +08:00
Ian Bassi
757b6a5c46 Minor desc and wiki redirection fixe (#14011) 2026-06-03 10:58:25 -03:00
Ian Bassi
6f011c9f6a External bridge fix (#12568)
* Internal bridge fix

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Revert expansion increasing

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Recover assert

* Apply suggestions from code review

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

* Update RegionExpansion.cpp

* Update RegionExpansion.cpp

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-06-03 10:19:04 -03:00
Ian Bassi
ae16c76dd2 Bridge Line Width + Improve bridge density (#11255)
* Base

* Standarized

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Wiki

* Improved descriptions based in RF47 Tests

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Bridge Flow Wiki

* Removed CMATH

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Default to 100

* Revert "TESTING BRIDGE DENSITY"

This reverts commit 8634f802311cd3877b0dd5651029b30b2d4eab60.

Removed desc change

* Minor changes

Co-Authored-By: Noisyfox <timemanager.rick@gmail.com>

* Update LayerRegion.cpp

* Missing ;

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Restrict bridge line width to nozzle diameter

* Clarification

* Increased both Bridge Densitys to 125

Co-Authored-By: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>

* Valerii check

Co-Authored-By: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>

* Fix error handling

* Clarify thick bridges documentation and tooltips

Updated the documentation and tooltips for 'thick_bridges' and 'thick_internal_bridges' to clarify that bridge extrusion uses a line height equal to the nozzle diameter, and to better explain the trade-offs between strength, reliability, and appearance.

* Partially restore bridge_flow description

* Suggestions

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>
2026-06-03 10:16:59 -03:00
Ian Bassi
065540e48f ENH: Relative bridge direction + Align bridge/Ironing angles with model (#12055)
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-06-03 10:12:26 -03:00
Kiss Lorand
1b72dbf6fa Fix inconsistent ordering of support base outline and fill (#11761)
* Preserve support base outline/fill order

Honor no_sort when emitting support toolpaths to keep outline-first order.
Group tree support base paths (including lightning) into per-area no_sort collections to prevent interleaving across islands.
Keep lightning layer lookup side-effect free.

* Tag Orca specific changes

Tag Orca specific changes vs. Bambu using the comment //ORCA: . This helps when reviewing merge commits from upstream Bambu so we don't end up causing regressions when pulling in commits from upstream
2026-06-02 14:39:27 +08:00
Kiss Lorand
ac92125012 Fix counterbore hole bridge (#13956)
Fix counterbore hole partial bridge
2026-06-02 14:34:43 +08:00
Bingo2023
d6a49ace15 Update Bambu Lab X2D 0.4 nozzle.json (#13985)
* Update Bambu Lab X2D 0.4 nozzle.json

corrected mistake from 31.5.2026
" is correct in machine code.

* Update Bambu Lab X2D 0.4 nozzle.json

fixed error with " -> \"

* Merge branch 'main' into patch-2
2026-06-01 22:15:34 +08:00
yw4z
71eebc2332 Merge code base of Setup Guide and Standalone versions of Printer / Filament Selection Dialogs (#13579) 2026-06-01 21:00:42 +08:00
Ian Bassi
7a0c149701 lightning infill angles Wiki (#13984) 2026-06-01 09:24:00 -03:00
Alexandre Folle de Menezes
737c684a93 Improve and complement pt-BR translation (#13973) 2026-06-01 09:12:06 -03:00
Terasit Juntarasombut
91ce821959 i18n: Complete Thai (th) localization and enable Thai in GUI (#13916)
* i18n: complete Thai (th) localization

* feat: fix thi translation

* feat: fix Thai language localization file

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-01 18:11:14 +08:00
Kiss Lorand
752551292b Fix modifiers bridge speed not respected (#13971)
* Respect modifiers bridge speed
2026-06-01 16:00:00 +08:00
Calcousin55
86ad4d141a Preserve Z scale and apply correct offset when Ctrl‑dragging XY corner (#13840) 2026-06-01 00:16:06 +08:00
Vovodroid
30e83d790c Enable wipe with firmware retractions is set 100% before wipe. (#13812)
Enable wipe with firmware retractions
2026-06-01 00:14:42 +08:00
LH
7f7e7dff3a Update LH Stinger profile (#13865)
- Adding default speed for the new initial_layer_travel_acceleration
2026-06-01 00:13:35 +08:00
Rodrigo Faselli
8548e5ca96 Expose lightning infill angles (#13848)
* expose lightning infill angles

Update PrintObject.cpp

* Update src/libslic3r/PrintConfig.cpp

* Apply suggestions from code review

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

* Update GUI_Factories.cpp

* Fix lightning infill angles to 45 degrees for supports

Updated lightning infill angles to fixed values for consistency.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-01 00:12:49 +08:00
anjis
4d05ba0d02 Support GIGA multi-printhead configuration options (#13901)
* Support GIGA multi-printhead configuration options

* Removed unused G-code comments.

* Added parallel_printheads_count option to configure parallel printhead count.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-01 00:11:07 +08:00
Noisyfox
3cce9b09ed Cut: Make sure x offset is considered when checking multi dovetail (#13945)
Make sure x offset is considered when checking multi dovetail (OrcaSlicer/OrcaSlicer#13940)
2026-05-31 22:34:32 +08:00
Matias Fernandez
8362eba19d Remove redundant toolchange retraction/un-retraction during filament change in CC1 profile (#13456)
* Fix: Disable redundant toolchange retraction for Elegoo Centauri Carbon
Sets `retract_length_toolchange` to 0 in the Elegoo Centauri Carbon (ECC) machine profile.
This resolves an issue where a massive filament blob would form on the prime tower immediately after resuming a manual filament change (M600). The blob was caused by a conflict between OrcaSlicer's default toolchange logic and Elegoo's hardcoded firmware behavior:
- Elegoo's firmware (specifically the `cmd_PAUSE` and `cmd_RESUME` sequences) completely takes over pressure management during an M600. It performs its own initial 2mm retraction, a 120mm purge, and a silicone brush wipe, returning the print head to the prime tower perfectly primed.
- Previously, Slicer was unaware of the firmware's priming and would issue a redundant 2mm un-retract (`G1 E2`) upon resume. Forcing 2mm of filament out of an already-full nozzle created the blob.
By disabling the toolchange retraction (`0`), Slicer correctly hands off filament pressure management during an M600 entirely to the Elegoo firmware, preventing double-retractions and eliminating the blob.

* fix errors after merging main

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-31 20:35:35 +08:00
yw4z
1644d49ae1 Fix non functional OBJ import dialog on linux (#13914) 2026-05-31 20:16:29 +08:00
Kiss Lorand
3a8dfeaa08 Preview sliders overhaul (#13919)
* Make preview slider labels draggable

Add label hit testing and delta-based dragging for the vertical preview slider labels. Keep label drags tied to the selected handle, prevent slider hover/timeline/menu handling from stealing label interactions, and keep value setters from changing the active selection implicitly.

* Refresh preview slider visuals

Update preview slider rails, handles, and labels for the refreshed light and dark theme appearance. Apply the same visual language to the horizontal slider, align single-layer and multi-layer labels, and remove obsolete triangle label geometry.
2026-05-31 18:55:14 +08:00
Bingo2023
c714935596 Update Bambu Lab X2D 0.4 nozzle.json - updade Maschine Startcode (#13944)
* Update Bambu Lab X2D 0.4 nozzle.json - updade Maschine Startcode

bump in changes from BBL

update:
===== 2026/05/08 =====

old:
===== 2026/03/26 =====

* Update Bambu Lab X2D 0.4 nozzle.json

corrected:
- " " -> ' '
- {Tab} -> deleted

* Update Bambu Lab X2D 0.4 nozzle.json

replaced " -> '
2026-05-31 18:46:46 +08:00
SoftFever
372f7823ac Feature/tweak stealth mode (#13963)
* Update the stealth mode description to reflect the current code changes in 2.4.

* disable HMS if bambu network plugin is not installed or in stealth mode

* fix build err

* add hide_login_side_panel to control whether to show login panel in home page
2026-05-31 18:04:06 +08:00
Ian Chua
535911fcfe fix: 409 conflicts resolution in notifications (#13900)
* fix: 409 conflicts resolution in notifications

* fix: silently log other http errors

* fix: pass force push flag to start_sync_user_preset

* remove formatting churn

* fix: propagate force push down put_setting

* refactor render_hyperlink_action to PopNotification for reuse

* fix an issue that hold status should be cleared before force pushing.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-31 16:23:10 +08:00
Kiss Lorand
6a26284ba6 Fix air filtration gcode emitted even if not not supported by the printer (#13868)
* Fix air filtration gcode emitted even if not not supported

- do not emit air filtration gcode if not supported by the printer
- removed redundant  "add_eol" parameter from "set_exhaust_fan()" function
2026-05-31 12:11:40 +08:00
SoftFever
b78d5b94dc Add SeeMeCNC printer profiles (#13924)
* Add SeeMeCNC printer profiles

Adds machine, filament, and process profiles for SeeMeCNC printers:
Artemis, BOSSdelta 300, BOSSdelta 500 (0505/0510/0521), and
RostockMAX v3.2/v4 — covering 0.4mm, 0.5mm, 0.7mm, and 1.0mm nozzles.
Includes PLA, ABS, PETG, PETG-CF, PA-CF, and TPU filament profiles.

Co-authored-by: Sam <47287571+Sewbot@users.noreply.github.com>

* bump version

---------

Co-authored-by: Sam <47287571+Sewbot@users.noreply.github.com>
2026-05-30 22:06:54 +08:00
Wegerich
61e2abfb2b Enhance G92 E0 case sensitivity check (#13933) 2026-05-30 21:57:54 +08:00
Tobias Gloth
9d8c7cc495 use /bigobj when building Eigen with MSVC (#13922) 2026-05-30 16:51:31 +08:00
Ian Bassi
9a01df4a80 Filament for features for SEMM (#13937)
* Remove limit for SEMM

* Remove legacy check

* Revert "Remove legacy check"

This reverts commit c6e5074114.
2026-05-30 14:16:59 +08:00
Kiss Lorand
83946f3df8 Fix division by zero in organic tree support generation (#13936) 2026-05-29 18:09:47 -03:00
Ian Chua
6b55e324c9 fix: temporary wxstring going out of scope causing crash on linux (#13925) 2026-05-29 15:49:36 +08:00
Jingxi-Polymaker
ee8bb54ca8 Add more Polymaker filament presets (#13858)
* add new presets

* fix inhernce

* fix rename

* update

* apply fix

* update index
2026-05-29 15:46:41 +08:00
Ian Bassi
3db37d004a Fix + Support 'Default' filament option (index 0) (#13887)
* Support 'Default' filament option (index 0)

Treat filament index 0 as the new "Default" (use active object/part filament) instead of using 1. Update config defaults and tooltips for wall/sparse/solid infill filament options (min/default -> 0, tooltip explains "Default"). Adjust normalization and propagation logic to respect explicit feature overrides and only apply base extruder when feature values are zero; only copy sparse->solid infill when sparse > 0. Introduce FeatureFilamentOverrideMask and clamp_feature_filament_to_valid to resolve and clamp feature filaments. Update UI lists and selection behavior to expose a "Default" entry and handle zero-based indices in PartPlate and Plater.

* enable_filament_for_features option

Co-Authored-By: LixNix <105106115+lixnix@users.noreply.github.com>

* \n

* Allow wipe_tower_filament to equal nozzle count

Relax the assertion in Print::extruders to permit wipe_tower_filament == config().nozzle_diameter.size(). The configuration value is 1-based and the code subtracts 1 when pushing the extruder index, so equality should be valid and selecting the last nozzle should not trigger an assertion.

* Revert "Allow wipe_tower_filament to equal nozzle count"

This reverts commit 2c97657432.

* Revert "enable_filament_for_features option"

This reverts commit 01c13baedd.

* Migrate legacy feature filament defaults

Add migration logic to convert legacy feature filament selections from 1 to 0 for older 3mf files. Introduces a local migrate_legacy_feature_filament_defaults lambda in src/OrcaSlicer.cpp and src/slic3r/GUI/Plater.cpp that scans keys (wall_filament, sparse_infill_filament, solid_infill_filament, support_filament, support_interface_filament) on configs/objects/volumes, updates values, counts conversions and logs the result. Also adds a Semver check for "2.4.0-dev" in OrcaSlicer to trigger the migration for files older than that version. This preserves expected default filament selections when loading older project files.

* Update OrcaSlicer.cpp

* Extract migration helper to ConfigMigrations

Centralize legacy feature-filament default migration by moving the duplicated lambda into ConfigMigrations::migrate_legacy_feature_filament_defaults (src/libslic3r/Config.cpp) and declaring it in Config.hpp. Update OrcaSlicer.cpp and slic3r/GUI/Plater.cpp to call the new function instead of inline lambdas. The helper converts specific feature filament keys (wall_filament, sparse_infill_filament, solid_infill_filament, support_filament, support_interface_filament) from int 1 to 0 and returns the count of conversions to avoid duplicated migration logic.

* Remove DynamicFilamentList1Based and consolidate lists

Delete the specialized DynamicFilamentList1Based struct and its global instance. Update Choice registrations to use the single dynamic_filament_list for wall, sparse_infill and solid_infill filaments, and remove the extra update call for the removed instance. This consolidates filament choice handling and removes duplicated logic in Plater.cpp.

* move it

* fix objects

* Update Config.hpp

* Update profiles
2026-05-29 10:54:26 +08:00
TheLegendTubaGuy
d3b110ebf6 Remove hardcoded Qidi Max 4 input shaper (#13864) 2026-05-28 20:25:09 -03:00
Ian Bassi
e514b60ea6 Slow down for curled perimeters Desc fix (#13918) 2026-05-28 17:15:21 -03:00
TheLegendTubaGuy
d279e241f6 Fix Kobra 3 Max bed exclusion zones (#13879) 2026-05-29 00:26:34 +08:00
Mitchell Mashburn
7999bbd819 Fix naming of re:3D cover pictures to match printer model. (#13907)
* Fix naming of cover pictures to match printer model.

* Rename buildplate textures.
2026-05-29 00:25:47 +08:00
mrmees
67b9f07655 Fix built-in placeholders missing from custom G-code and output filenames (#13892)
* fix: restore version placeholder in custom G-code

PlaceholderParser sets "version" in its constructor, but Print::apply() calls clear_config() which wipes it. Unlike timestamp/user (restored during G-code export), version was never restored, so [version]/{version} threw "Variable does not exist" in custom G-code while working in output filenames.

Re-set version after both clear_config() calls so it resolves everywhere.

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

* fix: resolve timestamp and user placeholders in File header G-code

file_start_gcode is processed via print.placeholder_parser() directly, before the G-code parser integration copy that restores timestamp/user. As a result {timestamp}, {year}..{second} and {user} threw "Variable does not exist" in the File header G-code field while working in Machine start/end G-code.

Inject fresh timestamp and user into the file_start_gcode config so they resolve, matching the other custom G-code fields.

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

* fix: expose initial_extruder and extruded_*_total placeholders in output filenames

PrintStatistics exposed initial_tool (not its documented alias initial_extruder) and total_weight/extruded_volume (not the documented extruded_weight_total/extruded_volume_total). Filename formats using the missing names failed with "not a variable name".

Add the missing aliases to PrintStatistics::config() and placeholders().

Fixes #12436

Fixes #10708

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 22:29:16 +08:00
SoftFever
3275bb709b Revert "Add indentation check to profile workflow (#13417)" 2026-05-28 22:27:54 +08:00
mrmees
4000445345 Fix total_toolchanges placeholder being 0 without a wipe tower (#13895)
* fix: populate total_toolchanges without a wipe tower

total_toolchanges is documented as available while change_filament_gcode (and the wipe-tower toolchange flow) is evaluated, but it was sourced only from WipeTowerData::number_of_toolchanges, which stays -1 (clamped to 0) when no wipe tower is generated. Manual filament swaps and toolchanger/IDEX setups without a wipe tower therefore always saw total_toolchanges = 0 in custom G-code and output filenames, despite real tool changes occurring -- breaking the placeholder's documented contract.

Add a tool-ordering fallback: when number_of_toolchanges < 0, count tool changes from the print's tool ordering (the transitions in the per-layer extruder sequence). Wipe-tower prints are untouched -- number_of_toolchanges >= 0 still wins -- so their reported count does not change.

Limitation: sequential (by-object) prints without a wipe tower leave Print::tool_ordering() empty, so total_toolchanges stays 0 there (unchanged from before).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 22:09:15 +08:00
Ioannis Giannakas
f593d97f31 Disable slowdown for curled perimeters as a default setting. Expand tooltip with tuning recommendations. (#13870) 2026-05-28 20:50:44 +08:00
DeathKhan
417bea04df fix(ElegooLink): pass printer SN to CC2 device panel URL (#13878)
* fix(ElegooLink): pass printer SN to CC2 device panel URL

The CC2 panel subscribes to MQTT topics keyed by the printer serial number.
Without sn= in the URL it uses a wrong hardcoded fallback SN, subscribes to
the wrong topics, and shows Offline permanently even though the printer is
reachable.

- Cache the SN in elegoo_cc2_test() (already fetches it, was discarding it)
- Look up cache in get_print_host_webui(); fall back to a short LAN HTTP
  call on first use before the test has run
- Append sn= to the panel URL
- Clear the wrong hardcoded fallback SN/IP from the panel bundle
- Add a small synchronous boot script to the panel that fetches the SN
  from the printer before the bundle reads URLSearchParams, as a fallback
  for unpatched binaries

* fix(ElegooLink): persist CC2 serial number in AppConfig dev_sn section

Store the printer SN under [dev_sn] keyed by normalized print_host after
a successful connection test or system/info fetch. Reuse it on later
sessions before hitting the network, matching how access_code is keyed by
dev_id for other LAN printers.

* fix(ElegooLink): answer get_sn IPC instantly from dev_sn cache

The CC2 panel always calls get_sn with a 10s timeout. Remove the HTTP
fallback from get_sn() and resolve IPC from dev_sn/memory only so Device
tab load is not blocked after sn= is already in the URL.

* fix(ElegooLink): skip get_sn IPC when URL already has sn

The CC2 device panel calls get_sn with a 10s timeout on every MQTT
connect even when Orca passes sn= in the query string. Use the URL
serial immediately and only fall back to IPC when it is missing.

* refactor(ElegooLink): resolve CC2 SN via PrintHost::get_sn in GUI

Drop the ElegooLink.hpp include from PrinterWebViewHandler; the webview
IPC handler uses the existing PrintHost virtual instead. Keep CC2 serial
lookup helpers file-local in ElegooLink.cpp and share them between
get_sn() and get_print_host_webui().

* chore: drop redundant <memory> include in PrinterWebViewHandler

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-28 19:45:03 +08:00
SoftFever
8d6ba17aac ci: dedupe profile-validation PR comments, clean up on success 2026-05-28 19:05:51 +08:00
Noisyfox
ba4d2eeae4 Fix crash when you have custom profile set to multi-extruder but the base printer is semm (#13896) 2026-05-28 18:11:36 +08:00
SoftFever
b239d3ac6c fix: allow unchecking URL association in Preferences (#13884) (#13899)
Wire the existing disassociate_url path into the Associate-tab
checkbox so users can revert prusaslicer/bambustudio/cura
registrations they previously enabled.
2026-05-28 18:01:41 +08:00
SoftFever
460e248aed privacy: disable Bambu cloud telemetry before DLL start() (#13898)
* privacy: disable Bambu cloud telemetry before DLL start()
2026-05-28 17:57:11 +08:00
d4not
69e16cd7ef fix: prevent CPU-spin in Sidebar leave handler on inactive Wayland workspace (#13897)
When the OrcaSlicer window is on an inactive Hyprland (or any Wayland
compositor that keeps surfaces mapped while hidden) workspace, GTK
keeps delivering synthetic leave-notify events to the printer-preset
row. The wxEVT_LEAVE_WINDOW handler at Plater.cpp:1855 calls
wxFindWindowAtPoint(), which walks the entire wxWidgets window tree
calling IsShown() / gtk_widget_get_child_visible() on each widget,
then Hide()s the edit button and triggers a Layout() of the parent
panel. The Hide()+Layout() re-fires more leave events, creating a
feedback loop that pegs a CPU core at 100% indefinitely.

GDB attached to a frozen process confirmed the main thread stuck in:

  wxFindWindowAtPoint (recursing through widget tree)
    -> wxWindow::IsShown
      -> gtk_widget_get_child_visible
  ...
  Sidebar::Sidebar(Plater*)::$_14   <- the leave handler lambda
  wxEvtHandler::SafelyProcessEvent
  wxGTKImpl::WindowLeaveCallback
  gtk_main_do_event
  ...

IsShownOnScreen() can't be used as a guard here because GTK on Wayland
reports widgets as visible even when the toplevel surface is on an
inactive workspace (see existing comment at Plater.cpp:9304).

Fix: state-based short-circuit. If btn_edit_printer is already hidden,
the handler has no transition to perform - skip the expensive tree walk
and the Hide()+Layout() that would re-trigger the feedback loop. After
the first leave event, every subsequent leave event is O(1).

Refs:
- #12387 (open issue with matching setup: Arch + Hyprland + RTX 3060 + Bambu A1)
- #11196 (introduced the hover-edit-button feature in Nov 2025)
2026-05-28 14:20:41 +08:00
Mykola Nahirnyi
87ceeaa0aa Wires in generated files 2026-05-27 10:02:24 +03:00
Mykola Nahirnyi
35d4bae778 Add codegen pipeline 2026-05-27 09:57:24 +03:00
Mykola Nahirnyi
2eb1b8ddd6 Add CMake integration and design doc 2026-05-27 09:54:25 +03:00
Mykola Nahirnyi
5475e0aebe Add generated C++ files from proto schema 2026-05-27 09:53:55 +03:00
Mykola Nahirnyi
04b7ae9219 Add PrintConfig proto schema and UI layout 2026-05-27 09:50:53 +03:00
814 changed files with 67783 additions and 20600 deletions

View File

@@ -211,6 +211,12 @@ 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
- name: Generate config sources
run: |
python3 -m venv /tmp/codegen_venv
/tmp/codegen_venv/bin/pip install grpcio-tools pyyaml -q
/tmp/codegen_venv/bin/python tools/run_codegen.py
shell: bash
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
with:
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak

View File

@@ -50,6 +50,26 @@ jobs:
useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true
- name: Install codegen tools and generate config sources
run: |
pip install grpcio-tools
python tools/run_codegen.py
if: runner.os == 'Windows'
shell: pwsh
- name: Install codegen tools and generate config sources
run: |
if [ "$(uname)" = "Linux" ]; then
pip3 install grpcio-tools pyyaml
python3 tools/run_codegen.py
else
python3 -m venv /tmp/codegen_venv
/tmp/codegen_venv/bin/pip install grpcio-tools pyyaml -q
/tmp/codegen_venv/bin/python tools/run_codegen.py
fi
if: runner.os != 'Windows'
shell: bash
- name: Get the version and date on Ubuntu and macOS
if: runner.os != 'Windows'
run: |

View File

@@ -34,46 +34,6 @@ jobs:
python3 ./scripts/orca_extra_profile_check.py 2>&1 | tee ${{ runner.temp }}/extra_json_check.log
exit ${PIPESTATUS[0]}
- name: Check profile indentation
id: indentation_check
continue-on-error: true
run: |
set +e
python3 - <<'PY' 2>&1 | tee ${{ runner.temp }}/indentation_check.log
import re
from pathlib import Path
import sys
profiles_root = Path("resources/profiles")
invalid_files = []
for file_path in sorted(profiles_root.rglob("*.json")):
try:
for line_number, line in enumerate(file_path.read_text(encoding="utf-8").splitlines(), start=1):
if not line.strip():
continue
leading_ws = re.match(r"^[ \t]*", line).group(0)
if " " in leading_ws:
invalid_files.append((file_path, line_number))
break
except Exception as exc:
print(f"[ERROR] Unable to read {file_path}: {exc}")
invalid_files.append((file_path, 0))
if invalid_files:
for path, line in invalid_files:
if line > 0:
print(f"[ERROR] Space indentation found in {path}:{line}")
else:
print(f"[ERROR] Could not validate indentation in {path}")
print("Use tab indentation in profile JSON files (1 tab per indentation level).")
print("Tip: run python3 ./scripts/orca_filament_lib.py --fix --force to normalize formatting.")
sys.exit(1)
print("All profile JSON files use tab-only indentation.")
PY
exit ${PIPESTATUS[0]}
# download
- name: Download
working-directory: ${{ github.workspace }}
@@ -101,12 +61,18 @@ jobs:
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log
exit ${PIPESTATUS[0]}
- name: Prepare comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.indentation_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
- name: Prepare PR number for comment workflow
if: ${{ always() && github.event_name == 'pull_request' }}
run: |
mkdir -p ${{ runner.temp }}/profile-check-results
echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt
- name: Prepare comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: |
{
# Marker matched by check_profiles_comment.yml to delete prior comments.
echo "<!-- profile-validation-comment -->"
echo "## :x: Profile Validation Errors"
echo ""
@@ -119,15 +85,6 @@ jobs:
echo ""
fi
if [ "${{ steps.indentation_check.outcome }}" = "failure" ]; then
echo "### Indentation Check Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/indentation_check.log || echo "No output captured"
echo '```'
echo ""
fi
if [ "${{ steps.validate_system.outcome }}" = "failure" ]; then
echo "### System Profile Validation Failed"
echo ""
@@ -150,10 +107,8 @@ jobs:
echo "*Please fix the above errors and push a new commit.*"
} > ${{ runner.temp }}/profile-check-results/pr_comment.md
echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt
- name: Upload comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.indentation_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
if: ${{ always() && github.event_name == 'pull_request' }}
uses: actions/upload-artifact@v7
with:
name: profile-check-results
@@ -161,7 +116,7 @@ jobs:
retention-days: 1
- name: Fail if any check failed
if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.indentation_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: |
echo "One or more profile checks failed. See above for details."
exit 1

View File

@@ -10,12 +10,19 @@ on:
permissions:
pull-requests: write
# Needed to delete outdated bot comments via the issues/comments endpoint.
issues: write
# Serialize handlers per source branch so parallel runs don't race delete-and-post.
concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_repository.full_name }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: false
jobs:
post_comment:
name: Post PR comment
runs-on: ubuntu-24.04
if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' }}
if: ${{ github.event.workflow_run.event == 'pull_request' && (github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure') }}
steps:
- name: Download artifact
id: download
@@ -26,14 +33,14 @@ jobs:
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ github.token }}
- name: Post comment on PR
- name: Update PR comment
if: ${{ steps.download.outcome == 'success' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
if [ ! -f pr_number.txt ] || [ ! -f pr_comment.md ]; then
echo "No comment artifact found, skipping."
if [ ! -f pr_number.txt ]; then
echo "No pr_number.txt in artifact, skipping."
exit 0
fi
@@ -43,4 +50,17 @@ jobs:
exit 1
fi
gh pr comment "$PR_NUMBER" --body-file pr_comment.md
# Delete prior comments matching the marker (from check_profiles.yml) or the legacy heading.
OLD_IDS=$(gh api --paginate "repos/${GH_REPO}/issues/${PR_NUMBER}/comments" \
--jq '.[] | select(.user.login == "github-actions[bot]") | select((.body | startswith("<!-- profile-validation-comment -->")) or (.body | startswith("## :x: Profile Validation Errors"))) | .id')
for comment_id in $OLD_IDS; do
echo "Deleting outdated profile-validation comment ${comment_id}"
gh api -X DELETE "repos/${GH_REPO}/issues/comments/${comment_id}" || true
done
# Post a new comment only when validation failed (pr_comment.md present).
if [ -f pr_comment.md ]; then
gh pr comment "$PR_NUMBER" --body-file pr_comment.md
else
echo "Validation succeeded; cleaned up prior comments without posting."
fi

5
.gitignore vendored
View File

@@ -45,4 +45,7 @@ test.js
.clangd
internal_docs/
*.flatpak
/flatpak-repo/
/flatpak-repo/
config.desc
tools/__pycache__/
src/slic3r/GUI/generated/

View File

@@ -721,7 +721,6 @@ foreach(po_file ${BBL_L10N_PO_FILES})
add_custom_command(
TARGET gettext_merge_po_with_pot PRE_BUILD
COMMAND msgmerge -N -o ${po_file} ${po_file} "${BBL_L18N_DIR}/OrcaSlicer.pot"
DEPENDS ${po_file}
)
endforeach()
add_custom_target(gettext_po_to_mo
@@ -737,7 +736,6 @@ foreach(po_file ${BBL_L10N_PO_FILES})
TARGET gettext_po_to_mo PRE_BUILD
COMMAND msgfmt ARGS --check-format -o ${mo_file} ${po_file}
#COMMAND msgfmt ARGS --check-compatibility -o ${mo_file} ${po_file}
DEPENDS ${po_file}
)
endforeach()
@@ -872,6 +870,11 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
endfunction()
# Config codegen — generates src/slic3r/GUI/generated/*.cpp from src/PrintConfigs/*.proto.
# Must run before compiling libslic3r (PrintConfig.cpp #includes the generated files).
# Requires: pip install grpcio-tools OR standalone protoc in PATH.
include(cmake/modules/ConfigCodegen.cmake)
# libslic3r, OrcaSlicer GUI and the OrcaSlicer executable.
add_subdirectory(deps_src)
add_subdirectory(src)

View File

@@ -545,6 +545,10 @@ if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
BUILD_ARGS+=(-DORCA_UPDATER_SIG_KEY="${ORCA_UPDATER_SIG_KEY}")
fi
echo "Generating config sources from proto..."
pip install grpcio-tools -q
python3 tools/run_codegen.py || { echo "ERROR: config codegen failed"; exit 1; }
print_and_run cmake -S . -B $BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" "${CMAKE_CCACHE_ARGS[@]}" -G "Ninja Multi-Config" \
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
-DORCA_TOOLS=ON \

View File

@@ -180,6 +180,12 @@ function pack_deps() {
}
function build_slicer() {
echo "Generating config sources from proto..."
python3 -m venv /tmp/codegen_venv
/tmp/codegen_venv/bin/pip install grpcio-tools pyyaml -q
/tmp/codegen_venv/bin/python tools/run_codegen.py || { echo "ERROR: config codegen failed"; exit 1; }
CODEGEN_PYTHON="/tmp/codegen_venv/bin/python3"
# iterate over two architectures: x86_64 and arm64
for _ARCH in x86_64 arm64; do
# if ARCH is universal or equal to _ARCH
@@ -204,6 +210,7 @@ function build_slicer() {
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" \
-DCMAKE_IGNORE_PREFIX_PATH="${CMAKE_IGNORE_PREFIX_PATH}" \
-DPython3_EXECUTABLE="${CODEGEN_PYTHON}" \
${CMAKE_POLICY_COMPAT}
fi
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"

View File

@@ -126,6 +126,15 @@ if "%1"=="deps" goto :done
:slicer
echo "building Orca Slicer..."
cd %WP%
echo "generating config sources from proto..."
pip install grpcio-tools -q
python tools/run_codegen.py
if errorlevel 1 (
echo "ERROR: config codegen failed"
exit /b 1
)
mkdir %build_dir%
cd %build_dir%

View File

@@ -57,6 +57,15 @@ if "%1"=="deps" exit /b 0
:slicer
echo "building Orca Slicer..."
cd %WP%
echo "generating config sources from proto..."
pip install grpcio-tools -q
python tools/run_codegen.py
if errorlevel 1 (
echo "ERROR: config codegen failed"
exit /b 1
)
mkdir %build_dir%
cd %build_dir%

View File

@@ -0,0 +1,99 @@
# OrcaSlicer Config Codegen CMake Module
#
# Generates C++ source files from protobuf schema definitions.
# Generated files live in src/slic3r/GUI/generated/ and are gitignored.
# Run 'python tools/run_codegen.py' (requires grpcio-tools or protoc) to regenerate.
#
# Targets:
# codegen_config - Custom target to regenerate C++ from .proto files
# validate_config - Custom target to validate generated vs original
#
# Usage in parent CMakeLists.txt:
# include(cmake/modules/ConfigCodegen.cmake)
find_program(PROTOC_EXECUTABLE protoc)
find_package(Python3 COMPONENTS Interpreter QUIET)
# If generated files are missing (fresh clone), run codegen immediately at configure time.
# This allows cmake configure + build to work without a separate pre-build step.
set(_generated_marker "${CMAKE_SOURCE_DIR}/src/slic3r/GUI/generated/PrintConfigDef_generated.cpp")
if(Python3_EXECUTABLE AND NOT EXISTS "${_generated_marker}")
message(STATUS "Config codegen: generated files missing — running codegen now...")
execute_process(
COMMAND ${Python3_EXECUTABLE} "${CMAKE_SOURCE_DIR}/tools/run_codegen.py" --no-validate
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE _codegen_result
)
if(NOT _codegen_result EQUAL 0)
message(FATAL_ERROR "Config codegen failed. Install grpcio-tools: pip install grpcio-tools")
endif()
message(STATUS "Config codegen: generated files created successfully")
elseif(NOT Python3_EXECUTABLE AND NOT EXISTS "${_generated_marker}")
message(FATAL_ERROR "Config codegen: generated files missing and Python3 not found.\n"
"Install Python and grpcio-tools: pip install grpcio-tools\n"
"Then run: python tools/run_codegen.py")
endif()
set(CONFIG_PROTO_DIR "${CMAKE_SOURCE_DIR}/src/PrintConfigs")
set(CONFIG_CODEGEN_DIR "${CMAKE_SOURCE_DIR}/src/slic3r/GUI/generated")
set(CONFIG_LAYOUT_YAML "${CMAKE_SOURCE_DIR}/src/PrintConfigs/layout.yaml")
set(CONFIG_DESC_FILE "${CMAKE_BINARY_DIR}/config.desc")
set(CODEGEN_TOOL "${CMAKE_SOURCE_DIR}/tools/config_codegen.py")
set(VALIDATE_TOOL "${CMAKE_SOURCE_DIR}/tools/validate_codegen.py")
set(RUN_CODEGEN_TOOL "${CMAKE_SOURCE_DIR}/tools/run_codegen.py")
# Generated output files (TabLayout_generated.cpp is also generated from layout.yaml)
set(CONFIG_GENERATED_SOURCES
"${CONFIG_CODEGEN_DIR}/PrintConfigDef_generated.cpp"
"${CONFIG_CODEGEN_DIR}/Preset_options_generated.cpp"
"${CONFIG_CODEGEN_DIR}/Invalidation_generated.cpp"
"${CONFIG_CODEGEN_DIR}/OptionKeys_generated.cpp"
"${CONFIG_CODEGEN_DIR}/TabLayout_generated.cpp"
)
# Collect all .proto source files (flat in src/PrintConfigs/, excluding config_metadata.proto)
file(GLOB CONFIG_PROTO_FILES
"${CONFIG_PROTO_DIR}/filament.proto"
"${CONFIG_PROTO_DIR}/print.proto"
"${CONFIG_PROTO_DIR}/printer.proto"
)
set(CONFIG_PROTO_FILES
"${CONFIG_PROTO_DIR}/config_metadata.proto"
${CONFIG_PROTO_FILES}
)
if(Python3_EXECUTABLE)
# Single command: run_codegen.py handles protoc/grpcio-tools detection internally.
# Proto files → generated .cpp files. Runs automatically when any .proto changes.
add_custom_command(
OUTPUT ${CONFIG_GENERATED_SOURCES}
COMMAND ${Python3_EXECUTABLE} ${RUN_CODEGEN_TOOL} --no-validate
DEPENDS ${CONFIG_PROTO_FILES} ${CONFIG_LAYOUT_YAML} ${CODEGEN_TOOL}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
COMMENT "Re-generating config C++ from changed .proto files"
VERBATIM
)
# codegen_config is part of ALL — runs before every build, checks if protos changed.
add_custom_target(codegen_config ALL
DEPENDS ${CONFIG_GENERATED_SOURCES}
COMMENT "Config codegen up to date"
)
# Validation target: cmake --build . --target validate_config
add_custom_target(validate_config
COMMAND ${Python3_EXECUTABLE} ${VALIDATE_TOOL}
DEPENDS ${CONFIG_GENERATED_SOURCES}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Validating generated config code against PrintConfig.cpp"
VERBATIM
)
# Export for use by subdirectories (libslic3r, etc.)
set(CONFIG_GENERATED_SOURCES "${CONFIG_GENERATED_SOURCES}" CACHE INTERNAL "Generated config cpp files")
message(STATUS "Config codegen: enabled — proto changes auto-regenerate on next build")
else()
message(STATUS "Config codegen: Python3 not found — run: pip install grpcio-tools && python tools/run_codegen.py")
endif()

View File

@@ -1,5 +1,11 @@
set(_eigen_extra_flags "")
if (MSVC)
set(_eigen_extra_flags "-DCMAKE_CXX_FLAGS:STRING=/bigobj")
endif ()
orcaslicer_add_cmake_project(Eigen
URL https://gitlab.com/libeigen/eigen/-/archive/5.0.1/eigen-5.0.1.zip
URL_HASH SHA256=0dbb1f9e3aaad66f352c03227d8c983f6f0b49e0b07e71a7300f4abcc01aee12
CMAKE_ARGS "${_eigen_extra_flags}"
DEPENDS dep_Boost dep_GMP dep_MPFR
)

View File

@@ -0,0 +1,490 @@
# PrintConfig Codegen — Design Document
## 1. Problem Statement
Every config setting in OrcaSlicer (e.g. `travel_speed`, `wipe_distance`) is independently maintained as string literals across ~12 locations in the codebase with zero compile-time validation linking them.
A single setting like `wipe_distance` appears in:
| # | Location | What's duplicated |
|---|----------|-------------------|
| 1 | `PrintConfig.cpp` `init_fff_params()` | Key, type, label, tooltip, default, constraints |
| 2 | `PrintConfig.hpp` struct members | Type + member name (must match key string) |
| 3 | `Preset.cpp` option lists | Key string in serialization lists |
| 4 | `PrintConfig.cpp` extruder/filament lists | Key string in 4 sub-lists |
| 5 | `PrintConfig.cpp` variant option sets | Key string in variant sets |
| 6 | `Print.cpp` invalidation chains | `opt_key == "..."` checks |
| 7 | `Tab.cpp` GUI layout | `append_single_option_line("key")` |
| 8 | GUI files (`Field.cpp`, `OptionsGroup.cpp`) | `opt_key == "..."` special-case handling |
| 9 | `PrintConfig.cpp` `handle_legacy()` | Old-to-new key name mapping |
| 10 | `PrintConfig.cpp` `new_def` G-code placeholders | Re-declared type, label, tooltip |
| 11 | `resources/profiles/*.json` | Key strings as JSON keys |
### Consequences
- Adding a new setting requires editing ~12 files manually
- A typo in any one location causes a silent bug (no compile-time validation)
- Print providers cannot add/customize settings without forking the C++ codebase
- No cross-language tooling (Python scripts, web editors) can consume the schema
- No build-time validation of profile JSONs against the canonical option list
---
## 2. Goals
- **Single source of truth** for all setting definitions
- **Compile-time safety** against key mismatches across the codebase
- **Adding a new setting = editing 1 file** (instead of ~12)
- **Enable print providers** to customize settings (defaults, constraints, visibility) without C++ changes
- **Cross-language API generation** (Python, TypeScript, JSON Schema)
- **Build-time validation** of profile JSONs
- **Hidden mode** — setting exists in config/serialization but is not shown in UI
- **Disabled mode** — setting shown in UI but greyed out / non-editable
- **Automated UI layout** — new settings with GUI annotations appear in UI without manual `Tab.cpp` edits
### Non-goals
- Runtime performance changes (slicing engine untouched)
- Changing the `.3mf` wire format (cereal/JSON serialization preserved)
---
## 3. Current Architecture
### 3.1 Type System
`Config.hpp` defines ~15 `ConfigOptionType` variants:
```cpp
coFloat, coInt, coBool, coString, coPercent, coFloatOrPercent,
coPoint, coPoint3, coEnum,
coFloats, coInts, coBools, coStrings, coPercents, coFloatsOrPercents,
coPoints, coEnums
```
Each has a corresponding C++ class (`ConfigOptionFloat`, `ConfigOptionBools`, etc.) with virtual `serialize()`/`deserialize()` methods:
```cpp
class ConfigOption {
virtual ConfigOptionType type() const = 0;
virtual std::string serialize() const = 0;
virtual bool deserialize(const std::string &str, bool append = false) = 0;
virtual ConfigOption* clone() const = 0;
// ...
};
class ConfigOptionFloat : public ConfigOptionSingle<double> {
ConfigOptionType type() const override { return coFloat; }
std::string serialize() const override { /* double -> string */ }
bool deserialize(const std::string &str, bool append) override { /* string -> double */ }
};
```
### 3.2 Definition Layer
`ConfigOptionDef` holds all metadata for one setting:
```
opt_key, type, nullable, default_value,
label, full_label, category, tooltip, sidetext,
mode (Simple/Advanced/Develop),
min, max, max_literal, ratio_over,
gui_type, multiline, full_width, height,
enum_values, enum_labels, enum_keys_map,
aliases, shortcut
```
All ~500 settings are registered in `PrintConfigDef::init_fff_params()` (~6000 lines) into the global `print_config_def` singleton. Each registration block:
```cpp
def = this->add("bridge_flow", coFloat); // register key + type
def->label = L("Bridge flow ratio"); // UI label
def->category = L("Quality"); // tab category
def->tooltip = L("..."); // tooltip
def->min = 0; // constraint
def->max = 2.0; // constraint
def->mode = comAdvanced; // visibility mode
def->set_default_value(new ConfigOptionFloat(1)); // default
```
### 3.3 Storage Layer
Two parallel systems:
**StaticPrintConfig** — compiled-in struct fields via `PRINT_CONFIG_CLASS_DEFINE` macro. Name-to-byte-offset cache. Used in the slicing engine for direct member access (performance-critical).
**DynamicPrintConfig**`std::map<string, ConfigOptionUniquePtr>`. Used in GUI and for diff/apply operations.
Class hierarchy:
```
FullPrintConfig
├── PrintObjectConfig (~120 fields)
├── PrintRegionConfig (~80 fields)
└── PrintConfig
├── MachineEnvelopeConfig (~25 fields)
└── GCodeConfig (~80 fields)
```
### 3.4 Serialization
- **JSON presets**: `ConfigBase::save_to_json()` / `load_from_json()` — iterates option keys, calls `opt->serialize()` to string, writes JSON key-value pairs
- **Binary .3mf**: cereal archives via `load_option_from_archive()` / `save_option_to_archive()`
- Both formats use the same string keys as identifiers
### 3.5 Invalidation
`Print::invalidate_state_by_config_options()` contains large `opt_key == "..."` chains that classify each changed option key into pipeline steps to invalidate:
```
posSlice, posPerimeters, posInfill, posSupportMaterial,
psGCodeExport, psSkirtBrim, psWipeTower
```
### 3.6 GUI Binding
- `Tab.cpp` builds UI via `append_single_option_line("key_name")` — looks up `ConfigOptionDef` from `print_config_def`, auto-creates the appropriate widget
- `ConfigManipulation.cpp` contains `toggle_print_fff_options()` — imperative logic that reads config values and toggles field visibility
## 4. Proposed Solution
### 4.1 Architecture
Protobuf as schema + codegen, NOT a runtime replacement.
```
┌─────────────────────┐ ┌──────────────────────────────┐
│ src/PrintConfigs/ │ codegen │ PrintConfigDef_generated.cpp │ done
│ *.proto │ ──────────────> │ Preset_options_generated.cpp │ done
│ layout.yaml │ │ Invalidation_generated.cpp │ done
│ │ │ OptionKeys_generated.cpp │ done
└─────────────────────┘ │ PrintConfig_generated.hpp │ future
│ TabLayout_generated.cpp │ future
└──────────────────────────────┘
```
### 4.2 Proto Schema Design
#### 4.2.1 Custom Field Options
`src/PrintConfigs/config_metadata.proto` defines custom extensions covering all `ConfigOptionDef` metadata:
```protobuf
syntax = "proto3";
import "google/protobuf/descriptor.proto";
package orca;
enum ConfigMode {
MODE_SIMPLE = 0;
MODE_ADVANCED = 1;
MODE_DEVELOP = 2;
}
enum PresetType {
PRESET_PRINT = 0;
PRESET_FILAMENT = 1;
PRESET_PRINTER = 2;
}
enum InvalidationStep {
STEP_GCODE_EXPORT = 0;
STEP_SKIRT_BRIM = 1;
STEP_WIPE_TOWER = 2;
STEP_SLICE = 3;
STEP_PERIMETERS = 4;
STEP_INFILL = 5;
STEP_SUPPORT = 6;
STEP_NONE = 7;
}
enum OptionListMembership {
LIST_NONE = 0;
LIST_EXTRUDER_OPTION_KEYS = 1;
LIST_FILAMENT_OPTION_KEYS = 2;
LIST_VARIANT_OPTION_KEYS = 3;
}
extend google.protobuf.FieldOptions {
// Display metadata
string label = 50001;
string full_label = 50002;
string tooltip = 50003;
string category = 50004;
string sidetext = 50005;
// Numeric constraints
double min_value = 50006;
double max_value = 50007;
double max_literal = 50008;
// UI behavior
ConfigMode mode = 50009;
string ratio_over = 50010;
bool multiline = 50013;
bool full_width = 50014;
int32 height = 50015;
// Classification
PresetType preset = 50011;
repeated InvalidationStep invalidates = 50012;
repeated OptionListMembership list_membership = 50018;
// Migration
string legacy_name = 50016;
// Nullable support (for ConfigOptionFloatsNullable, etc.)
bool is_nullable = 50017;
// GUI type override (e.g. "i_enum_open", "color", "f_enum_open")
string gui_type = 50019;
string gui_flags = 50020;
// Enum metadata
string enum_keys_map_ref = 50021;
bool no_cli = 50022;
bool readonly = 50023;
// C++ codegen hints
string co_type_hint = 50024;
// Default value — constructor args only (e.g. "1.0", "5000.0, 5000.0")
// Codegen reconstructs full C++ from co_type + this value
string default_value = 50025;
bool has_default = 50028; // proto3 can't distinguish empty string from unset
// Enum values and labels
repeated string enum_value_entries = 50026;
repeated string enum_label_entries = 50027;
}
extend google.protobuf.MessageOptions {
// Virtual preset keys: keys that belong to this preset type in Preset.cpp
// option lists but have no ConfigOptionDef entry (printer identity fields,
// host/connectivity settings, filament retraction overrides, compatibility
// flags, cross-preset keys). The codegen emits these directly into the
// s_Preset_*_options array alongside the field-derived keys.
// To add a virtual key: add one option line here and re-run codegen.
repeated string virtual_preset_keys = 60001;
}
```
#### 4.2.2 Setting Files
Settings are split into three `.proto` files by preset type. Each setting becomes a proto field with annotations:
| File | Contents |
|------|----------|
| `src/PrintConfigs/generated/print.proto` | ~477 print/process settings |
| `src/PrintConfigs/generated/filament.proto` | ~103 filament settings |
| `src/PrintConfigs/generated/printer.proto` | ~42 printer settings |
Each file also carries message-level `virtual_preset_keys` declarations (see §5.2.3).
Example field:
```protobuf
float travel_speed = 42 [
(label) = "Travel",
(tooltip) = "Speed of travel which is faster and without extrusion.",
(sidetext) = "mm/s",
(min_value) = 1,
(mode) = MODE_ADVANCED,
(preset) = PRESET_PRINT,
(has_default) = true,
(default_value) = "200",
(invalidates) = STEP_GCODE_EXPORT
];
```
#### 4.2.3 Virtual Preset Keys
The `s_Preset_*_options` vectors in `Preset.cpp` need to include keys beyond those with `ConfigOptionDef` entries — for example, printer identity fields (`printer_technology`, `printable_area`), connectivity settings (`host_type`, `print_host`), filament retraction overrides (`filament_retraction_length`, `filament_z_hop`, …), and cross-preset keys that belong to multiple preset types.
These are declared directly in the `.proto` message body using the `virtual_preset_keys` message option:
```protobuf
message PrinterSettings {
// Virtual keys (not in PrintConfigDef)
option (virtual_preset_keys) = "printer_technology";
option (virtual_preset_keys) = "printable_area";
option (virtual_preset_keys) = "host_type";
option (virtual_preset_keys) = "print_host";
// ... etc
// Cross-preset keys (defined in print.proto, also saved in printer presets)
option (virtual_preset_keys) = "single_extruder_multi_material";
option (virtual_preset_keys) = "wipe_tower_type";
// ... etc
float extruder_clearance_height_to_rod = 1 [ ... ];
// ...
}
```
The codegen reads these and merges them (deduplicated, sorted) with the field-derived keys into the generated `s_Preset_printer_options` vector. No hand-written extender struct in `Preset.cpp` is needed.
#### 4.2.4 Type Mapping
| C++ Type | Proto Representation | Notes |
|---|---|---|
| `ConfigOptionFloat` | `float field = N` | |
| `ConfigOptionInt` | `int32 field = N` | |
| `ConfigOptionBool` | `bool field = N` | |
| `ConfigOptionString` | `string field = N` | |
| `ConfigOptionFloats` | `repeated float field = N` | Per-extruder vectors |
| `ConfigOptionInts` | `repeated int32 field = N` | |
| `ConfigOptionBools` | `repeated bool field = N` | |
| `ConfigOptionStrings` | `repeated string field = N` | |
| `ConfigOptionPercent` | `float field = N` | `(co_type_hint) = "coPercent"` |
| `ConfigOptionPercents` | `repeated float field = N` | `(co_type_hint) = "coPercents"` |
| `ConfigOptionFloatOrPercent` | `FloatOrPercent field = N` | Custom wrapper message |
| `ConfigOptionEnum<T>` | `int32 field = N` | `(co_type_hint) = "coEnum"` + `(enum_keys_map_ref)` |
| `ConfigOptionPoint` | `Point2D field = N` | Custom wrapper message |
| `ConfigOptionFloatsNullable` | `repeated float field = N` | `(is_nullable) = true` |
#### 4.2.5 UI Layout File
`src/PrintConfigs/layout.yaml` declares the UI tab/page/group structure used by `Tab.cpp`. It lists field names in display order under their respective groups. The codegen will eventually use this to generate `TabLayout_generated.cpp` (future phase).
### 4.3 Code Generator Outputs
| Output | Replaces | Status |
|---|---|---|
| `PrintConfigDef_generated.cpp` | `init_fff_params()` body (~6000 lines) | Done |
| `Preset_options_generated.cpp` | `s_Preset_*_options` string vectors | Done |
| `Invalidation_generated.cpp` | `opt_key ==` chains in `Print.cpp` | Done |
| `OptionKeys_generated.cpp` | Extruder/filament key lists | Done |
| `PrintConfig_generated.hpp` | `PRINT_CONFIG_CLASS_DEFINE` macro blocks | Future |
| `TabLayout_generated.cpp` | `append_single_option_line()` calls in `Tab.cpp` | Future |
### 4.4 CMake Integration
```cmake
add_custom_command(
OUTPUT ${GENERATED_SOURCES}
COMMAND protoc --descriptor_set_out=config.desc src/PrintConfigs/generated/*.proto
COMMAND python3 tools/config_codegen.py config.desc ${GENERATED_DIR}
DEPENDS src/PrintConfigs/generated/*.proto tools/config_codegen.py
)
```
Generated files are checked into the repo (not gitignored) so builds work without `protoc`. CI validates that committed generated files match what the generator produces.
### 4.5 Provider Customization
Providers ship an overlay file alongside their existing JSON profiles:
```yaml
# resources/profiles/Creality/settings_overlay.yaml
overrides:
travel_speed:
max_value: 600
default: 300
travel_speed_z:
mode: hidden # not relevant for this printer
firmware_retraction:
mode: disabled # shown but locked — firmware handles this
custom_options:
- key: creality_vibration_compensation
type: bool
label: "Vibration Compensation"
default: true
category: "Quality"
mode: advanced
gui_page: "Quality"
gui_group: "Other"
```
Custom options get field numbers > 1000 to avoid conflicts.
---
## 5. What Changes vs. What Stays
### Changes (generated from proto)
| Artifact | Current | After | Status |
|---|---|---|---|
| `init_fff_params()` body (~6000 lines) | Hand-written C++ | `#include` of generated file | Done |
| `s_Preset_*_options` lists | Hand-written string vectors | Generated from `(preset)` + `virtual_preset_keys` | Done |
| `invalidate_state_by_config_options()` | Hand-written `opt_key ==` chains | Generated map lookup | Done |
| Extruder/filament key lists | Hand-written string vectors | Generated from `(list_membership)` | Done |
| `PRINT_CONFIG_CLASS_DEFINE` blocks in `.hpp` | Hand-written macros | Generated from `.proto` | Future |
| `Tab.cpp` `append_single_option_line()` layout | Hand-written per-setting calls | Generated from `layout.yaml` + `(tab_*)` annotations | Future |
### Stays manual (NOT generated)
| Component | Reason |
|---|---|
| Conditional visibility (`toggle_print_fff_options`) | Complex runtime logic depending on config values; cannot be declaratively expressed |
| Custom GUI rendering (`Field.cpp`, `OptionsGroup.cpp`) | Case-specific widget behavior (color pickers, special enums) |
| `handle_legacy()` | Migration logic; partially automatable via `(legacy_name)` but complex transforms stay manual |
| Enum C++ maps (top of `PrintConfig.cpp`) | Could eventually generate from proto enums |
---
## 6. Developer Workflow
### Adding a new setting
1. Add a field to the appropriate `.proto` file (`print.proto`, `filament.proto`, or `printer.proto`) with all relevant annotations
2. Run `python tools/run_codegen.py`
3. Commit the `.proto` change and the updated generated files together
### Adding a virtual preset key
Virtual keys are preset option keys that have no `ConfigOptionDef` (printer identity fields, connectivity settings, etc.) or that exist in one preset type's proto but also need to appear in another preset's options list.
1. Add `option (virtual_preset_keys) = "key_name";` in the appropriate `.proto` message body
2. Run `python tools/run_codegen.py`
### Running the codegen pipeline manually
```bash
# Full pipeline: compile protos → generate C++ → validate
python tools/run_codegen.py
# Validate only (check generated files are up to date)
python tools/run_codegen.py --validate-only
# Inject invalidation/list-membership annotations from Print.cpp / PrintConfig.cpp
python tools/annotate_protos.py [--dry-run]
```
---
## 7. File Layout
```
src/PrintConfigs/
├── config_metadata.proto # Custom field/message option extensions
├── layout.yaml # UI tab/page/group structure (Tab.cpp layout)
└── generated/
├── print.proto # ~477 print/process settings
├── filament.proto # ~103 filament settings
└── printer.proto # ~42 printer/machine settings
tools/
├── parse_printconfig.py # Bootstrap: PrintConfig.cpp → .proto
├── config_codegen.py # Proto descriptor → C++ codegen
├── validate_codegen.py # Generated vs original validation
├── run_codegen.py # Full pipeline script
├── annotate_protos.py # Inject (invalidates)/(list_membership) from C++
├── move_proto_fields.py # Utility: move fields between proto files
└── config_metadata_pb2.py # Generated Python bindings for extensions
codegen/
└── generated/
├── PrintConfigDef_generated.cpp # init_fff_params() body — #included by PrintConfig.cpp
├── Preset_options_generated.cpp # s_Preset_*_options — #included by Preset.cpp
├── Invalidation_generated.cpp # s_print_steps_map + s_object_steps_map — #included by Print.cpp
└── OptionKeys_generated.cpp # s_extruder_option_keys, s_filament_option_keys
cmake/modules/
└── ConfigCodegen.cmake # CMake integration (build-time regeneration)
docs/
└── PrintConfig_Codegen_Design.md # This design document
```

View File

@@ -628,10 +628,10 @@ msgid "Add connectors"
msgstr "Adicionar conectores"
msgid "Upper part"
msgstr "Parte superior"
msgstr "Peça superior"
msgid "Lower part"
msgstr "Parte inferior"
msgstr "Peça inferior"
msgid "Keep"
msgstr "Manter"
@@ -8027,7 +8027,7 @@ msgid "Disable Auto-Drop to preserve z positioning?\n"
msgstr ""
msgid "Object with floating parts was detected"
msgstr ""
msgstr "Foi detectado um objeto com partes flutuantes"
msgid "Another export job is running."
msgstr "Outro trabalho de exportação está em execução."
@@ -8446,7 +8446,7 @@ msgid "Triangles: %1%\n"
msgstr "Triângulos: %1%\n"
msgid "Use \"Fix Model\" to repair the mesh."
msgstr ""
msgstr "Use \"Corrigir Modelo\" para reparar a malha."
#, c-format, boost-format
msgid ""
@@ -8619,18 +8619,20 @@ msgid "Show splash screen"
msgstr "Mostrar tela de abertura"
msgid "Show the splash screen during startup."
msgstr "Mostra a tela de abertura durante a inicialização."
msgstr "Mostrar a tela de abertura durante a inicialização."
msgid "Show shared profiles notification"
msgstr ""
msgstr "Mostrar notificação de perfis compartilhados"
msgid ""
"Show a notification with a link to browse shared profiles when the selected "
"printer is changed."
msgstr ""
"Mostrar uma notificação com um link para navegar pelos perfis compartilhados "
"quando a impressora selecionada for alterada."
msgid "Use window buttons on left side"
msgstr ""
msgstr "Usar os botões de janela no lado esquerdo"
msgid "(Requires restart)"
msgstr "(Requer reinício)"
@@ -8963,12 +8965,15 @@ msgid ""
"Limits viewport frame rate to reduce GPU load and power usage.\n"
"Set to 0 for unlimited frame rate."
msgstr ""
"Limita a taxa de quadros da janela de visualização para reduzir a carga da "
"GPU e o consumo de energia.\n"
"Defina como 0 para taxa de quadros ilimitada."
msgid "Show FPS overlay"
msgstr ""
msgstr "Mostrar painel de FPS"
msgid "Displays current viewport FPS in the top-right corner."
msgstr ""
msgstr "Exibe o FPS atual da janela de visualização no canto superior direito."
msgid "Login region"
msgstr "Região de login"
@@ -8981,6 +8986,10 @@ msgid ""
"the transmission of data to Bambu's cloud services too. Users who don't use "
"BBL machines or use LAN mode only can safely turn on this function."
msgstr ""
"Esta opção desativa todos os serviços em nuvem, como o Orca Cloud e o Bambu "
"Cloud. Isso também interrompe a transmissão de dados para os serviços em "
"nuvem da Bambu. Usuários que não utilizam máquinas Bambu Labs ou que usam "
"apenas o modo LAN podem ativar esta função com segurança."
msgid "Network test"
msgstr "Teste de Rede"
@@ -9286,7 +9295,7 @@ msgid "Project-inside presets"
msgstr "Predefinições dentro do projeto"
msgid "Bundle presets"
msgstr ""
msgstr "Empacotar predefinições"
msgid "System"
msgstr "Sistema"
@@ -9889,6 +9898,9 @@ msgid ""
"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."
msgid "Please refer to Wiki before use->"
msgstr "Consulte o Wiki antes de usar->"
@@ -11506,11 +11518,15 @@ msgid ""
"Native Wayland liveview requires the GStreamer GTK video sink. Please "
"install the gtksink plugin for GStreamer, then restart OrcaSlicer."
msgstr ""
"A visualização ao vivo nativa do Wayland requer o receptor de vídeo GTK do "
"GStreamer. Instale o plugin gtksink para GStreamer e reinicie o OrcaSlicer."
msgid ""
"Failed to initialize the native Wayland GStreamer video sink. Please check "
"your GStreamer GTK plugin installation."
msgstr ""
"Falha ao inicializar o receptor de vídeo nativo do Wayland GStreamer. "
"Verifique a instalação do plugin GStreamer GTK."
msgid ""
"Windows Media Player is required for this task! Do you want to enable "
@@ -11551,6 +11567,8 @@ msgstr ""
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
msgstr ""
"O agente na nuvem não está disponível. Reinicie o OrcaSlicer e tente "
"novamente."
msgid "Bambu Network plug-in not detected."
msgstr "Plug-in de Rede Bambu não detectado."
@@ -11742,7 +11760,7 @@ msgid "Zoom out"
msgstr "Afastar zoom"
msgid "Toggle printable for object/part"
msgstr ""
msgstr "Alternar modo de impressão para objeto/peça"
msgid "Switch between Prepare/Preview"
msgstr "Alternar entre Preparar/Pré-visualizar"
@@ -11997,13 +12015,13 @@ msgstr "Mesa de Extensão"
#, boost-format
msgid "Split into %1% parts"
msgstr ""
msgstr "Dividir em %1% peças"
msgid "Repair finished"
msgstr "Reparo concluído"
msgid "Repair failed"
msgstr ""
msgstr "Reparo falhou"
msgid "Repair canceled"
msgstr "Reparo cancelado"
@@ -12083,15 +12101,19 @@ msgid "Flush volumes matrix do not match to the correct size!"
msgstr "A matriz de volumes de descarga não corresponde ao tamanho correto!"
msgid "set_accel_and_jerk() is only supported by Klipper"
msgstr ""
msgstr "set_accel_and_jerk() só é suportado pelo Klipper"
msgid ""
"Input shaping is not supported by Marlin < 2.1.2.\n"
"Check your firmware version and update your G-code flavor to ´Marlin 2´"
msgstr ""
"O controle de entrada não é suportado pelo Marlin < 2.1.2.\n"
"Verifique a versão do seu firmware e atualize o seu G-code para 'Marlin 2'"
msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2"
msgstr ""
"O controle de entrada é suportado apenas pelo Klipper, RepRapFirmware e "
"Marlin 2"
msgid "Grouping error: "
msgstr "Erro de agrupamento: "
@@ -12676,7 +12698,7 @@ msgstr ""
"por este valor."
msgid "Elephant foot layers density"
msgstr ""
msgstr "Densidade das camadas do pé de elefante"
msgid ""
"Density of internal solid infill for Elephant foot layers compensation.\n"
@@ -12684,6 +12706,11 @@ msgid ""
"Subsequent layers become linearly denser by the height specified in "
"elefant_foot_compensation_layers."
msgstr ""
"Densidade do preenchimento sólido interno para compensação das camadas de "
"pé de elefante.\n"
"O valor inicial para a segunda camada está definido.\n"
"As camadas subsequentes tornam-se linearmente mais densas pela altura "
"especificada em elefant_foot_compensation_layers."
msgid ""
"Slicing height for each layer. Smaller layer height means more accurate and "
@@ -13849,14 +13876,18 @@ msgstr ""
msgid ""
"Enable this to override the fan speed set in custom G-code during print."
msgstr ""
"Habilite para substituir a velocidade da ventoinha definida no G-code "
"personalizado durante a impressão."
msgid "On completion"
msgstr ""
msgstr "Na cinclusão"
msgid ""
"Enable this to override the fan speed set in custom G-code after print "
"completion."
msgstr ""
"Habilite para substituir a velocidade da ventoinha definida no G-code "
"personalizado após a conclusão da impressão."
msgid ""
"Speed of exhaust fan during printing. This speed will override the speed in "
@@ -14284,6 +14315,13 @@ msgid ""
"\n"
"This option will be disabled if spiral vase mode is enabled."
msgstr ""
"A direção em que as voltas da parede de contorno são extrudados quando "
"vistos de cima.\n"
"Os furos são impressos na direção oposta ao contorno para manter o "
"alinhamento com as camadas cujos polígonos de contorno estão incompletos e "
"mudam de direção, formando também parcialmente o contorno de um furo.\n"
"\n"
"Esta opção será desativada se o modo vaso espiral estiver ativado."
msgid "Counter clockwise"
msgstr "Anti-horário"
@@ -14684,16 +14722,16 @@ msgid "Auto For Match"
msgstr "Automático para correspondência"
msgid "Enable filament dynamic map"
msgstr ""
msgstr "Habilitar mapa dinâmico de filamento"
msgid "Enable dynamic filament mapping during print."
msgstr ""
msgstr "Habilitar mapeamento dinâmico de filamentos durante a impressão."
msgid "Has filament switcher"
msgstr ""
msgstr "Tem trocador de filamentos"
msgid "Printer has a filament switcher hardware (e.g., AMS)."
msgstr ""
msgstr "A impressora tem um sistema de troca de filamentos (Ex.: AMS)."
msgid "Flush temperature"
msgstr "Temperatura de purga"
@@ -14968,10 +15006,10 @@ msgstr ""
"confiável."
msgid "Wipe tower cooling"
msgstr ""
msgstr "Resriamento da torre de limpeza"
msgid "Temperature drop before entering filament tower"
msgstr ""
msgstr "Redução de temperatura antes de entrar na torre de filamentos"
msgid "Interface layer pre-extrusion distance"
msgstr "Distância de pré-extrusão da camada de interface"
@@ -15433,12 +15471,14 @@ msgstr ""
"placa de impressão."
msgid "First layer travel"
msgstr ""
msgstr "Deslocamento para primeira camada"
msgid ""
"Travel acceleration of first layer.\n"
"The percentage value is relative to Travel Acceleration."
msgstr ""
"Aceleração de deslocamento para a primeira camada.\n"
"O valor percentual é relativo à Aceleração de Deslocamento."
msgid "Enable accel_to_decel"
msgstr "Habilitar accel_to_decel"
@@ -15779,6 +15819,17 @@ msgid ""
"Ripple: Uniform ripple pattern that ripples left and right of the original "
"path. Repeating pattern, woven appearance."
msgstr ""
"Tipo de ruído a ser usado para geração de textura difusa:\n"
"Clássico: Ruído aleatório uniforme clássico;\n"
"Perlin: Ruído Perlin, que dá uma textura mais consistente;\n"
"Billow: Semelhante ao ruído Perlin, mas mais aglomerado;\n"
"Multifractal estriado: Ruído estriado com características pontiagudas e "
"irregulares. Cria texturas semelhantes a mármore;\n"
"Voronoi: Divide a superfície em células Voronoi e desloca cada uma delas "
"por uma quantidade aleatória. Cria uma textura de retalhos;\n"
"Ondulação: Padrão de ondulação uniforme que se propaga para a esquerda e "
"para a direita do caminho original. Padrão repetitivo, com aparência de "
"tecido."
msgid "Classic"
msgstr "Clássico"
@@ -15796,7 +15847,7 @@ msgid "Voronoi"
msgstr "Voronoi"
msgid "Ripple"
msgstr ""
msgstr "Ondulação"
msgid "Fuzzy skin feature size"
msgstr "Tamanho dos elementos da textura difusa"
@@ -15829,13 +15880,14 @@ msgstr ""
"baixos resultarão em ruído mais suave."
msgid "Number of ripples per layer"
msgstr ""
msgstr "Número de ondulações por camada"
msgid "Controls how many full cycles of ripples will be added per layer."
msgstr ""
"Controla quantos ciclos completos de ondulações serão adicionados por camada."
msgid "Ripple offset"
msgstr ""
msgstr "Deslocamento das ondulações"
msgid ""
"Shifts the ripple phase forward along the print path by the specified "
@@ -15849,9 +15901,21 @@ msgid ""
"The shift is applied once every number of layers set by Layers between "
"ripple offset, so layers within the same group are printed identically."
msgstr ""
"Desloca a fase da ondulação para a frente ao longo do percurso de impressão "
"pela porcentagem especificada de um comprimento de onda a cada período de "
"camada.\n"
"- 0% mantém todas as camadas idênticas.\n"
"- 50% desloca o padrão em meio comprimento de onda, invertendo efetivamente "
"a fase.\n"
"- 100% desloca o padrão em um comprimento de onda completo, retornando à "
"fase original.\n"
"\n"
"O deslocamento é aplicado uma vez a cada número de camadas definido em "
"Camadas entre deslocamento de ondulação, de modo que as camadas dentro do "
"mesmo grupo sejam impressas de forma idêntica."
msgid "Layers between ripple offset"
msgstr ""
msgstr "Camadas entre o deslocamento de onda"
msgid ""
"Specifies how many consecutive layers share the same ripple phase before the "
@@ -15864,6 +15928,15 @@ msgid ""
"to 6 are shifted by the configured offset, then layers 7 to 9 return to the "
"base pattern, etc."
msgstr ""
"Especifica quantas camadas consecutivas compartilham a mesma fase de "
"ondulação antes da aplicação do deslocamento.\n"
"Por exemplo:\n"
"- 1 = A camada 1 é impressa com o padrão de ondulação base, em seguida a "
"camada 2 é deslocada pelo valor configurado, depois a camada 3 retorna ao "
"padrão base e assim por diante.\n"
"- 3 = As camadas 1 a 3 são impressas com o padrão de ondulação base, em "
"seguida as camadas 4 a 6 são deslocadas pelo valor configurado, depois as "
"camadas 7 a 9 retornam ao padrão base, etc."
msgid "Filter out tiny gaps"
msgstr "Filtrar vazios pequenos"
@@ -16596,13 +16669,17 @@ msgstr ""
"Habilitar o contorno da camada Z (antisserrilhamento da camada Z)."
msgid "Minimize wall height angle"
msgstr ""
msgstr "Minimizar o ângulo de altura das paredes"
msgid ""
"Reduce the height of top-surface perimeters to match the model edge height.\n"
"Affects perimeters with a slope less than this angle (degrees).\n"
"A reasonable value is 35. Set to 0 to disable."
msgstr ""
"Reduz a altura dos perímetros da superfície superior para corresponder à "
"altura da aresta do modelo.\n"
"Afeta os perímetros com uma inclinação menor que este ângulo (em graus).\n"
"Um valor razoável é 35. Defina como 0 para desativar."
msgid "°"
msgstr "°"
@@ -16615,12 +16692,14 @@ msgstr ""
"Desative a alternância da direção de preenchimento ao usar o contorno em Z."
msgid "Minimum z height"
msgstr ""
msgstr "Altura Z mínima"
msgid ""
"Minimum Z-layer height.\n"
"Also controls the slicing plane."
msgstr ""
"Altura mínima da camada Z.\n"
"Também controla o plano de corte."
msgid "This G-code is inserted at every layer change after the Z lift."
msgstr "Este G-code é inserido a cada mudança de camada após a elevação Z."
@@ -16823,12 +16902,14 @@ msgid "Maximum speed of resonance avoidance."
msgstr "Velocidade máxima de prevenção de ressonância."
msgid "Emit input shaping"
msgstr ""
msgstr "Emitir modelagem de entrada"
msgid ""
"Override firmware input shaping settings.\n"
"If disabled, firmware settings are used."
msgstr ""
"Substituir as configurações de modelagem de entrada do firmware.\n"
"Se desativado, as configurações do firmware serão usadas."
msgid "Input shaper type"
msgstr "Tipo de modelador de entrada"
@@ -16838,6 +16919,9 @@ msgid ""
"Default uses the firmware default settings.\n"
"Disable turns off input shaping in the firmware."
msgstr ""
"Escolha o algoritmo de modelagem de entrada.\n"
"Padrão usa as configurações padrão do firmware.\n"
"Desativar desativa a modelagem de entrada no firmware."
msgid "MZV"
msgstr ""
@@ -23280,6 +23364,10 @@ msgid ""
"the surface quality of your overhangs? However, it can cause wall "
"inconsistencies so use carefully!"
msgstr ""
"Reversão em par\n"
"Você sabia que o recurso <b>Reversão em par</b> pode melhorar "
"significativamente a qualidade da superfície de suas saliências? No entanto, "
"ele pode causar inconsistências na parede, portanto, use com cuidado!"
#: resources/data/hints.ini: [hint:Cut Tool]
msgid ""

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -472,6 +472,10 @@
"name": "Anycubic Generic PA-CF",
"sub_path": "filament/Anycubic Generic PA-CF.json"
},
{
"name": "Fiberon PA6-CF20 @Anycubic Kobra S1",
"sub_path": "filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json"
},
{
"name": "Anycubic Generic PC",
"sub_path": "filament/Anycubic Generic PC.json"
@@ -588,6 +592,18 @@
"name": "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle",
"sub_path": "filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json"
},
{
"name": "Panchroma PLA @Anycubic Kobra S1",
"sub_path": "filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json"
},
{
"name": "Polymaker PLA Pro @Anycubic Kobra S1",
"sub_path": "filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json"
},
{
"name": "Polymaker PLA Pro Metallic @Anycubic Kobra S1",
"sub_path": "filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json"
},
{
"name": "Anycubic Generic PVA",
"sub_path": "filament/Anycubic Generic PVA.json"

View File

@@ -0,0 +1,81 @@
{
"type": "filament",
"name": "Fiberon PA6-CF20 @Anycubic Kobra S1",
"inherits": "fdm_filament_pa",
"from": "system",
"setting_id": "GFSL57_AC",
"filament_id": "GFL57",
"instantiation": "true",
"compatible_printers": [
"Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Polymaker"
],
"filament_type": [
"PA6-CF"
],
"eng_plate_temp": [
"40"
],
"hot_plate_temp": [
"40"
],
"textured_plate_temp": [
"40"
],
"eng_plate_temp_initial_layer": [
"40"
],
"hot_plate_temp_initial_layer": [
"40"
],
"textured_plate_temp_initial_layer": [
"40"
],
"overhang_fan_speed": [
"100"
],
"filament_flow_ratio": [
"1.03"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_cooling_layer_time": [
"30"
],
"filament_cost": [
"79.98"
],
"filament_density": [
"1.17"
],
"filament_max_volumetric_speed": [
"7.5"
],
"filament_retraction_length": [
"1.0"
],
"filament_z_hop": [
"0.0"
],
"nozzle_temperature_initial_layer": [
"300"
],
"fan_max_speed": [
"30"
],
"slow_down_layer_time": [
"6"
],
"nozzle_temperature": [
"300"
],
"temperature_vitrification": [
"74.2"
],
"nozzle_temperature_range_low": [
"280"
]
}

View File

@@ -0,0 +1,70 @@
{
"type": "filament",
"name": "Panchroma PLA @Anycubic Kobra S1",
"inherits": "fdm_filament_pla",
"from": "system",
"setting_id": "GFSPM001_AC",
"filament_id": "GFPM001",
"instantiation": "true",
"compatible_printers": [
"Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Polymaker"
],
"filament_type": [
"PLA"
],
"cool_plate_temp": [
"50"
],
"eng_plate_temp": [
"50"
],
"hot_plate_temp": [
"50"
],
"textured_plate_temp": [
"50"
],
"cool_plate_temp_initial_layer": [
"50"
],
"eng_plate_temp_initial_layer": [
"50"
],
"hot_plate_temp_initial_layer": [
"50"
],
"textured_plate_temp_initial_layer": [
"50"
],
"filament_flow_ratio": [
"0.88"
],
"filament_cost": [
"0"
],
"filament_density": [
"1.32"
],
"filament_max_volumetric_speed": [
"20"
],
"slow_down_min_speed": [
"5"
],
"slow_down_layer_time": [
"10"
],
"temperature_vitrification": [
"62.5"
],
"additional_cooling_fan_speed": [
"0"
],
"enable_pressure_advance": [
"1"
]
}

View File

@@ -0,0 +1,66 @@
{
"type": "filament",
"name": "Polymaker PLA Pro @Anycubic Kobra S1",
"inherits": "fdm_filament_pla",
"from": "system",
"setting_id": "GFSL79_AC",
"filament_id": "GFL79",
"instantiation": "true",
"compatible_printers": [
"Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Polymaker"
],
"filament_type": [
"PLA"
],
"cool_plate_temp": [
"50"
],
"eng_plate_temp": [
"50"
],
"hot_plate_temp": [
"50"
],
"textured_plate_temp": [
"50"
],
"cool_plate_temp_initial_layer": [
"50"
],
"eng_plate_temp_initial_layer": [
"50"
],
"hot_plate_temp_initial_layer": [
"50"
],
"textured_plate_temp_initial_layer": [
"50"
],
"filament_flow_ratio": [
"0.85"
],
"filament_cost": [
"0"
],
"filament_density": [
"1.23"
],
"filament_max_volumetric_speed": [
"16"
],
"slow_down_min_speed": [
"5"
],
"slow_down_layer_time": [
"10"
],
"temperature_vitrification": [
"55"
],
"additional_cooling_fan_speed": [
"0"
]
}

View File

@@ -0,0 +1,66 @@
{
"type": "filament",
"name": "Polymaker PLA Pro Metallic @Anycubic Kobra S1",
"inherits": "fdm_filament_pla",
"from": "system",
"setting_id": "GFSL80_AC",
"filament_id": "GFL80",
"instantiation": "true",
"compatible_printers": [
"Anycubic Kobra S1 0.4 nozzle"
],
"filament_vendor": [
"Polymaker"
],
"filament_type": [
"PLA"
],
"cool_plate_temp": [
"50"
],
"eng_plate_temp": [
"50"
],
"hot_plate_temp": [
"50"
],
"textured_plate_temp": [
"50"
],
"cool_plate_temp_initial_layer": [
"50"
],
"eng_plate_temp_initial_layer": [
"50"
],
"hot_plate_temp_initial_layer": [
"50"
],
"textured_plate_temp_initial_layer": [
"50"
],
"filament_flow_ratio": [
"0.85"
],
"filament_cost": [
"0"
],
"filament_density": [
"1.23"
],
"filament_max_volumetric_speed": [
"16"
],
"slow_down_min_speed": [
"5"
],
"slow_down_layer_time": [
"10"
],
"temperature_vitrification": [
"55"
],
"additional_cooling_fan_speed": [
"0"
]
}

View File

@@ -33,10 +33,10 @@
"disable_m73": "0",
"gcode_flavor": "klipper",
"printable_area": [
"3x0",
"423x0",
"423x420",
"3x420"
"0x0",
"426x0",
"426x420",
"0x420"
],
"printable_height": "501",
"thumbnails": "230x110/PNG",
@@ -48,7 +48,24 @@
"bbl_use_printhost": "0",
"bed_custom_model": "",
"bed_custom_texture": "",
"bed_exclude_area": [],
"bed_exclude_area": [
"0x0",
"3x0",
"3x420",
"0x420",
"0x0",
"423x0",
"423x0",
"423x0",
"423x0",
"426x0",
"426x420",
"423x420",
"423x0",
"0x0",
"0x0",
"0x0"
],
"bed_mesh_max": "0,0",
"bed_mesh_min": "0,0",
"bed_mesh_probe_distance": "0,0",

View File

@@ -23,10 +23,10 @@
"disable_m73": "0",
"gcode_flavor": "klipper",
"printable_area": [
"3x0",
"423x0",
"423x420",
"3x420"
"0x0",
"426x0",
"426x420",
"0x420"
],
"printable_height": "501",
"thumbnails": "230x110/PNG",
@@ -38,7 +38,24 @@
"bbl_use_printhost": "0",
"bed_custom_model": "",
"bed_custom_texture": "",
"bed_exclude_area": [],
"bed_exclude_area": [
"0x0",
"3x0",
"3x420",
"0x420",
"0x0",
"423x0",
"423x0",
"423x0",
"423x0",
"426x0",
"426x420",
"423x420",
"423x0",
"0x0",
"0x0",
"0x0"
],
"bed_mesh_max": "0,0",
"bed_mesh_min": "0,0",
"bed_mesh_probe_distance": "0,0",

View File

@@ -23,10 +23,10 @@
"disable_m73": "0",
"gcode_flavor": "klipper",
"printable_area": [
"3x0",
"423x0",
"423x420",
"3x420"
"0x0",
"426x0",
"426x420",
"0x420"
],
"printable_height": "501",
"thumbnails": "230x110/PNG",
@@ -38,7 +38,24 @@
"bbl_use_printhost": "0",
"bed_custom_model": "",
"bed_custom_texture": "",
"bed_exclude_area": [],
"bed_exclude_area": [
"0x0",
"3x0",
"3x420",
"0x420",
"0x0",
"423x0",
"423x0",
"423x0",
"423x0",
"426x0",
"426x420",
"423x420",
"423x0",
"0x0",
"0x0",
"0x0"
],
"bed_mesh_max": "0,0",
"bed_mesh_min": "0,0",
"bed_mesh_probe_distance": "0,0",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "10000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "450",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "150",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.22",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "4",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "30%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "10000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "430",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "3dhoneycomb",
"sparse_infill_speed": "180",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "150",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "180",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "200",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "300",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "30%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "300",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "300",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "350",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "200",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "30%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "300",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "300",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "270",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "outer wall/inner wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "300",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "30%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "150",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "230",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "120",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "120",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -201,10 +201,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "150",
@@ -271,7 +271,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "120",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "200",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "30%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "10000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "100",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "100",
@@ -256,7 +256,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_infill_order": "inner wall/outer wall/infill",
"wall_loops": "2",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "80",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -212,10 +212,10 @@
"smooth_coefficient": "40",
"smooth_speed_discontinuity_area": "1",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "5000",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -285,7 +285,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -190,10 +190,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "450",
@@ -251,7 +251,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",
"wall_transition_angle": "10",

View File

@@ -195,10 +195,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.22",
"sparse_infill_pattern": "gyroid",
"sparse_infill_speed": "100",
@@ -265,7 +265,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "4",
"wall_sequence": "inner wall/outer wall",

View File

@@ -186,10 +186,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"spiral_mode": "0",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -188,10 +188,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"spiral_mode": "0",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -187,10 +187,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "gyroid",
"spiral_mode": "0",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -188,10 +188,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"spiral_mode": "0",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -191,10 +191,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"spiral_mode": "0",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -192,10 +192,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "270",
@@ -251,7 +251,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",
"wall_transition_angle": "10",

View File

@@ -181,10 +181,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "3",
"wall_sequence": "inner wall/outer wall",

View File

@@ -181,10 +181,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "150",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "3",
"wall_sequence": "outer wall/inner wall",

View File

@@ -181,10 +181,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -181,10 +181,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "crosshatch",
"sparse_infill_speed": "200",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -189,10 +189,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "25%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "270",
@@ -251,7 +251,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_sequence": "inner wall/outer wall",
"wall_transition_angle": "10",

View File

@@ -186,10 +186,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "230",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -195,10 +195,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.62",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "100",
@@ -265,7 +265,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "classic",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -195,10 +195,10 @@
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_direction": "45",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.82",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "100",
@@ -265,7 +265,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

View File

@@ -188,10 +188,10 @@
],
"small_perimeter_speed": "50%",
"small_perimeter_threshold": "0",
"solid_infill_filament": "1",
"solid_infill_filament": "0",
"sparse_infill_acceleration": "100%",
"sparse_infill_density": "15%",
"sparse_infill_filament": "1",
"sparse_infill_filament": "0",
"sparse_infill_line_width": "0.45",
"sparse_infill_pattern": "grid",
"sparse_infill_speed": "200",
@@ -250,7 +250,7 @@
"tree_support_wall_count": "0",
"wall_direction": "auto",
"wall_distribution_count": "1",
"wall_filament": "1",
"wall_filament": "0",
"wall_generator": "arachne",
"wall_loops": "2",
"wall_sequence": "inner wall/outer wall",

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
{
"type": "filament",
"name": "Fiberon PA12-CF10 @BBL X1",
"inherits": "Fiberon PA12-CF10 @base",
"from": "system",
"setting_id": "GFSL56_00",
"instantiation": "true",
"compatible_printers": [
"Bambu Lab X1 0.4 nozzle",
"Bambu Lab X1 Carbon 0.4 nozzle",
"Bambu Lab P1S 0.4 nozzle",
"Bambu Lab X1E 0.4 nozzle"
],
"filament_extruder_variant": [
"Direct Drive Standard",
"Direct Drive High Flow"
]
}

View File

@@ -0,0 +1,77 @@
{
"type": "filament",
"name": "Fiberon PA12-CF10 @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFL56",
"instantiation": "false",
"bed_type": [
"Cool Plate"
],
"eng_plate_temp": [
"40"
],
"eng_plate_temp_initial_layer": [
"40"
],
"fan_cooling_layer_time": [
"15"
],
"fan_max_speed": [
"100"
],
"filament_cost": [
"99.99"
],
"filament_density": [
"1.06"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"14"
],
"filament_type": [
"PA-CF"
],
"filament_vendor": [
"Polymaker"
],
"full_fan_speed_layer": [
"2"
],
"hot_plate_temp": [
"40"
],
"hot_plate_temp_initial_layer": [
"40"
],
"nozzle_temperature": [
"300"
],
"nozzle_temperature_initial_layer": [
"300"
],
"nozzle_temperature_range_low": [
"280"
],
"overhang_fan_speed": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_min_speed": [
"10"
],
"temperature_vitrification": [
"55"
],
"textured_plate_temp": [
"40"
],
"textured_plate_temp_initial_layer": [
"40"
]
}

View File

@@ -0,0 +1,18 @@
{
"type": "filament",
"name": "Fiberon PA6-CF20 @BBL X1",
"inherits": "Fiberon PA6-CF20 @base",
"from": "system",
"setting_id": "GFSL57_00",
"instantiation": "true",
"compatible_printers": [
"Bambu Lab X1 0.4 nozzle",
"Bambu Lab X1 Carbon 0.4 nozzle",
"Bambu Lab P1S 0.4 nozzle",
"Bambu Lab X1E 0.4 nozzle"
],
"filament_extruder_variant": [
"Direct Drive Standard",
"Direct Drive High Flow"
]
}

View File

@@ -0,0 +1,74 @@
{
"type": "filament",
"name": "Fiberon PA6-CF20 @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFL57",
"instantiation": "false",
"bed_type": [
"Cool Plate"
],
"eng_plate_temp": [
"40"
],
"eng_plate_temp_initial_layer": [
"40"
],
"fan_cooling_layer_time": [
"15"
],
"fan_max_speed": [
"100"
],
"filament_cost": [
"83.99"
],
"filament_density": [
"1.17"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"14"
],
"filament_type": [
"PA6-CF"
],
"filament_vendor": [
"Polymaker"
],
"hot_plate_temp": [
"40"
],
"hot_plate_temp_initial_layer": [
"40"
],
"nozzle_temperature": [
"300"
],
"nozzle_temperature_initial_layer": [
"300"
],
"nozzle_temperature_range_low": [
"280"
],
"overhang_fan_speed": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_min_speed": [
"10"
],
"temperature_vitrification": [
"74.2"
],
"textured_plate_temp": [
"40"
],
"textured_plate_temp_initial_layer": [
"40"
]
}

View File

@@ -0,0 +1,18 @@
{
"type": "filament",
"name": "Fiberon PA6-GF25 @BBL X1",
"inherits": "Fiberon PA6-GF25 @base",
"from": "system",
"setting_id": "GFSL58_00",
"instantiation": "true",
"compatible_printers": [
"Bambu Lab X1 0.4 nozzle",
"Bambu Lab X1 Carbon 0.4 nozzle",
"Bambu Lab P1S 0.4 nozzle",
"Bambu Lab X1E 0.4 nozzle"
],
"filament_extruder_variant": [
"Direct Drive Standard",
"Direct Drive High Flow"
]
}

View File

@@ -0,0 +1,77 @@
{
"type": "filament",
"name": "Fiberon PA6-GF25 @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFL58",
"instantiation": "false",
"bed_type": [
"Cool Plate"
],
"eng_plate_temp": [
"40"
],
"eng_plate_temp_initial_layer": [
"40"
],
"fan_cooling_layer_time": [
"15"
],
"fan_max_speed": [
"100"
],
"filament_cost": [
"63.99"
],
"filament_density": [
"1.2"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"12"
],
"filament_type": [
"PA-GF"
],
"filament_vendor": [
"Polymaker"
],
"full_fan_speed_layer": [
"2"
],
"hot_plate_temp": [
"40"
],
"hot_plate_temp_initial_layer": [
"40"
],
"nozzle_temperature": [
"300"
],
"nozzle_temperature_initial_layer": [
"300"
],
"nozzle_temperature_range_low": [
"280"
],
"overhang_fan_speed": [
"100"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_min_speed": [
"10"
],
"temperature_vitrification": [
"70.4"
],
"textured_plate_temp": [
"40"
],
"textured_plate_temp_initial_layer": [
"40"
]
}

View File

@@ -0,0 +1,18 @@
{
"type": "filament",
"name": "Fiberon PA612-CF15 @BBL X1",
"inherits": "Fiberon PA612-CF15 @base",
"from": "system",
"setting_id": "GFSL59_00",
"instantiation": "true",
"compatible_printers": [
"Bambu Lab X1 0.4 nozzle",
"Bambu Lab X1 Carbon 0.4 nozzle",
"Bambu Lab P1S 0.4 nozzle",
"Bambu Lab X1E 0.4 nozzle"
],
"filament_extruder_variant": [
"Direct Drive Standard",
"Direct Drive High Flow"
]
}

View File

@@ -0,0 +1,53 @@
{
"type": "filament",
"name": "Fiberon PA612-CF15 @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFL59",
"instantiation": "false",
"bed_type": [
"Cool Plate"
],
"fan_cooling_layer_time": [
"5"
],
"fan_max_speed": [
"30"
],
"fan_min_speed": [
"10"
],
"filament_cost": [
"94.99"
],
"filament_density": [
"1.03"
],
"filament_flow_ratio": [
"0.96"
],
"filament_type": [
"PA-CF"
],
"filament_vendor": [
"Polymaker"
],
"full_fan_speed_layer": [
"2"
],
"nozzle_temperature_range_low": [
"250"
],
"overhang_fan_speed": [
"40"
],
"overhang_fan_threshold": [
"0%"
],
"slow_down_min_speed": [
"10"
],
"temperature_vitrification": [
"206.2"
]
}

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