Adjusted the default profile folder path in the OrcaSlicer profile validator for macOS to ensure correct resource access, as Multi configure is now set as the default.
* feat: expand Creality Ender-3 V3 KE profile with multiple nozzle diameters and new machine configurations
* Merge branch 'main' into main
* Merge branch 'main' into main
Fix clipped printer selection in Create Filament Preset dialog
Ensure the scrolled panel in the Create Filament Preset dialog expands vertically by changing `m_main_sizer->Add(..., proportion=0)` to `proportion=1`. This exposes the printer selection checkbox, which is required to create a custom filament.
Fixes#6719
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Update to latest bbs network plugin, which should allow debugging
* Remove debugger detection and warnings
* Downgrade to 2.1.1 as 2.2 seems to be unstable
* Improve initial layer speed documentation
Expanded explanations for initial layer speed settings, including benefits of slower first layers, detailed descriptions for each speed parameter, and added an illustrative image for the 'number of slow layers' setting.
* Update Volumetric speed calib + images
* Update speed_settings_other_layers_speed.md
* Improved MVFS descriptions
Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-Authored-By: MxBrnr <142743732+mxbrnr@users.noreply.github.com>
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Clarify bed temperature effects
* MVF images from 14 to 19
To match description
* Update temp-calib.md
* Expand and clarify temperature calibration guide
Added a standard temperature ranges table for common 3D printing materials, clarified and expanded sections on bed and chamber temperature, and improved formatting and tips for optimal print quality.
Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
* Update links for acceleration and jerk settings
* Small perimeters
* Update speed_settings_other_layers_speed.md
* Add reference to ironing speed settings
* Update overhang speed
* Add travel speed illustration
* Update avoid crossing
* Update speed_settings_acceleration.md
* Update speed_settings_overhang_speed.md
* Update speed_settings_acceleration.md
* Update speed_settings_jerk_xy.md
* Update speed_settings_jerk_xy.md
* Update ERS documentation and replace images with PNGs
* Seam Aligned Back
* Copilot FIX
Co-Authored-By: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: MxBrnr <142743732+mxbrnr@users.noreply.github.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add a new feature to allow users to remap filament for a pre-painted model.
* Fix the color issues to support the theme
* clean up code
* Fix broken freetype-2.12.1.tar.gz link
* Wiki Home
Fix process-others
VFA test
* Add wall GIFs and update documentation
* Quality Overhangs Wiki Basic
Update README.md
Update Home.md
* Better only one wall
* Add infill ghosting image and update wall order
* Updates process options
* Fix calibration step numbering in documentation
Corrected the step numbers in the calibration order list to maintain sequential order.
* Update Calibration.md
* Update wall and surface quality docs with images and details
* Revise Linux build instructions and restructure sections
Co-Authored-By: cefiar <cefiar@gmail.com>
* APA Clarify compatibility notes
Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
* Removed Tolerance test from calibration guide. Keeped as note
Co-Authored-By: Noisyfox <timemanager.rick@gmail.com>
* Copilot Review
---------
Co-authored-by: cefiar <cefiar@gmail.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Do not connect to default device during app startup
* Connect to last selected machine automatically even if it's lan machine
Simplify default machine connection logic
* Select last machine automatically when available
* Check for LAN connection state after updating combobox selection.
This matches the logic of `SendPrint.cpp`.
* Avoid showing same error message multiple times until next connection attempt.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add some new non-overlapping functions for rotation surfaces/infills
I can't post the entire package of changes yet, but this is just the beginning. These features do not affect the latest changes to the pattern rotation system. They are merely adding new functionality.
* Added relative rotation of the infill according to the template.
* Update PrintConfig.cpp
* Update PrintConfig.cpp
* Update PrintConfig.cpp
* Add height limitation
* Both sparse and solid. +one-time instructions
* implementation v3
need for clean code in future
* + Multiply Instructions
* Add solid layers into sparse infill
* Update Layer.hpp
* Update PrintObject.cpp
* Update Tab.cpp
* Remove some bugs and increase quality
* rename apply_model_direction to align_infill_direction_to_model
* Change the data type of top_surface_direction and bottom_surface_direction to float so that they are consistent with other infill direction parameters.
* remove top_surface_direction and bottom surface_direction options
* clean code
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Feature: Fuzzy Skin Extrusion Mode
This extension allows you to add new features to the fuzzy skin generator.
* Add auto switch to Arachne mode
* Move dialog to `update_print_fff_config` and update how `is_msg_dlg_already_exist` is used
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* SPE-2486: Refactor function apply_mm_segmentation() to prepare support for fuzzy skin painting.
(cherry picked from commit 2c06c81159f7aadd6ac20c7a7583c8f4959a5601)
* SPE-2585: Fix empty layers when multi-material painting and modifiers are used.
(cherry picked from commit 4b3da02ec26d43bfad91897cb34779fb21419e3e)
* Update project structure to match Prusa
* SPE-2486: Add a new gizmo for fuzzy skin painting.
(cherry picked from commit 886faac74ebe6978b828f51be62d26176e2900e5)
* Fix render
* Remove duplicated painting gizmo `render_triangles` code
* SPE-2486: Extend multi-material segmentation to allow segmentation of any painted faces.
(cherry picked from commit 519f5eea8e3be0d7c2cd5d030323ff264727e3d0)
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* SPE-2486: Implement segmentation of layers based on fuzzy skin painting.
(cherry picked from commit 800b742b950438c5ed8323693074b6171300131c)
* SPE-2486: Separate fuzzy skin implementation into the separate file.
(cherry picked from commit efd95c1c66dc09fca7695fb82405056c687c2291)
* Move more fuzzy code to separate file
* Don't hide fuzzy skin option, so it can be applied to paint on fuzzy
* Fix build
* Add option group for fuzzy skin
* Update icon color
* Fix reset painting
* Update UI style
* Store fuzzy painting in bbs_3mf
* Add missing fuzzy paint code
* SPE-2486: Limit the depth of the painted fuzzy skin regions to make regions cover just external perimeters.
This reduces the possibility of artifacts that could happen during regions merging.
(cherry picked from commit fa2663f02647f80b239da4f45d92ef66f5ce048a)
* Update icons
---------
Co-authored-by: yw4z <ywsyildiz@gmail.com>
* Make the region compatible check a separate function
* Only warn about multi-material if it's truly multi-perimeters
* Improve gizmo UI & tooltips
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
* make **`Reverse threshold`** inactive when **`Reverse only internal perimeters`** is activated
* Update ConfigManipulation.cpp
* 100%% => 100%
Also fixed a typo along the way.
Update Anycubic Kobra 2 0.4 nozzle.json
Fixed error:
Relative extruder addressing requires resetting the
extruder position at each layer to prevent loss of
floating point accuracy.
* Update all Mk4 pla filament to have proper ramming parameters
* Update all Mk4 PETG filament to have proper ramming parameters
* Update all Mk4 ABS filament to have proper ramming parameters
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Ported ramming configuration improvements from prusa slicer: Hold cmd to move all values, more granular time settings and higher maximum values.
* improve variable name, change space
* Move the label under the ramming chart
* Experimenting with values label for ramming chart
* Fix the label position and make the background 20% transparent
* update the way the multiline label is done
* reorder commands
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Large images optimizations
* Add image and update instructions for junction deviation
Added a new image illustrating the printer jerk limitation setting and updated the calibration documentation to clarify steps for setting Maximum Junction Deviation. Improved formatting and corrected a typo in the instructions.
* Update README links to Wiki
* Fix Wiki image paths + Typos
* Fixes, typos and Infill improvements
* Update VFA calibration guide and add resonance avoidance
Expanded the VFA calibration documentation with more detailed explanations of VFA causes, the VFA Speed Test, and how to use the Resonance Avoidance Speed Range. Added a new image illustrating the resonance avoidance configuration.
* Add surface density setting to top/bottom shells docs
* Ironing Wiki Wip
* Wall and surfaces wiki wip
* Fix top/bottom link
* Better topbottom reddirect
* bridging wiki wip
* Fix TOP bottom
* Wall wiki wip
* strength advanced wiki wip
* speed advance renaming
* inital speed wiki wip
* Other Layer Speed Wiki Wip...
* Speed overhang Wiki WIP
* Travel speed wiki wip
* Speed acceleration wiki wip
* Update speed_settings_initial_layer_speed.md
* Jerk Wiki Wip
* support wiki wip
* Raft wiki wip
* support filamnet wiki wip
* Support ironing wiki wip
* Support advanced Wiki Wip
* Tree wiki wip
* STL images optimizations
* Prime tower wiki wip
* Update PA line diagram images
Were bigger than original used to crop this ones.
* Ooze wiki wip
* Flush wiki wip
* Image optimizatios
* Clarify TPMS-D infill description
Updated the TPMS-D infill section to specify that it refers to the Schwarz Diamond surface, improving clarity for users. Also updated the infill calculator spreadsheet.
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* images+++
* Multimaterial advanced Wiki Wip
* Skirt Wiki Wip
* Brim wiki wip
* Add Junction Deviation formula to documentation
Included the mathematical formula for Junction Deviation in the cornering calibration documentation to clarify its calculation.
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Others special mode Wiki Wip
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Fix links
* Fill Multiline infill Wiki
Introduced a new section in the infill documentation describing the Fill Multiline setting, its differences from other slicers, and its use cases. Added a comparison table and illustrative GIF to clarify how OrcaSlicer maintains density and material usage when using multiple infill lines.
* Multiline infill wiki update
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Multiline Tab.cpp
* Gcode output Wiki Wip
* Others wiki wips
* Home quality
* Add process links in home
* Quality Basic Missing descriptions
* Update quality_settings_bridging.md
* basic desc
* basic advance strentgth
* Basic speed
* basic other speeds
* Fix link
* Update speed_settings_overhang_speed.md
* Update speed_settings_travel.md
* Update speed_settings_acceleration.md
* Fix
* Expand documentation for acceleration and jerk settings
* Support wiki
* Raft wiki
* Support wiki desc
* Prime tower wiki
* Multimaterial wiki desc
* Filament to features wiki
* Ooze improve
* Fix duplicate text
* Fix typo in volumetric speed calibration guide
Corrected 'promoted' to 'prompted' in the instructions for entering test settings in the volumetric speed calibration documentation.
* centeres image
* Overlapping gif
* Others wiki basic desc
* Clarify retraction calibration recommendation
Expanded the explanation for calibrating retraction settings, specifying that it should be done after Flow and Pressure Advance calibration for optimal extrusion setup.
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Links in Readme + minor change
Refined links and formatting in README for better navigation. Expanded wall printing order section in quality settings documentation to clarify Inner/Outer, Inner/Outer/Inner, and Outer/Inner modes. Updated calibration guide images and formatting for improved clarity.
* Add SVG icons to infill pattern comparison table
* Delete doc/images/gui directory
remplaced with GUI
* Create process-preset-full.png
---------
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
* GUI: Add filament notes to material selector tooltip
Enhances material selector tooltip to display filament notes from preset configuration.
Adds automatic truncation for notes longer than 200 characters with ellipsis.
Improves user experience by providing material context directly in tooltip.
Fixes#10037
* GUI: Add filament notes to material selector tooltip
Enhances material selector tooltip to display filament notes from preset configuration.
Adds automatic truncation for notes longer than 200 characters with ellipsis.
Improves user experience by providing material context directly in tooltip.
Fixes#10037
* GUI: Fix tooltip display for unsaved profile notes
* chore: Updated the documentation on how to build OrcaSlicer, adding instructions for macOS and Linux, and improving the structure and clarity of the sections.
* chore: Improve structure and clarity of the build instructions for macOS and Linux
* smooth tpmsd
Changed the number of initial segments in the make_waves function from 4 to 16 for finer wave discretization. This should improve the accuracy of the generated wave polylines.
* Update param_tpmsd.svg
* Infill Line Multiplier
* Modular Offset Function
* Lightning multiline
* Crosshatch Multiline
ipCrosshatch
* cleaning
Cleaning
clean2
* 3d Honeycomb
cut poliline ends
* Fill Tpmsd Multiline
Fill Tpmsd Multiline
* Update Multiline function
multiline funcion simplify
* Update FillTpmsD
* FillHoneycomb
* Update src/libslic3r/PrintConfig.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix Honeycomb Multiline
Simplify polylines in honeycomb infill generation
* Improve multiline infill support and pattern simplification
Moved multiline infill application after pattern translation and simplification in Fill3DHoneycomb, and added multiline support to FillAdaptive. Updated honeycomb and 3D honeycomb infill to simplify polylines to 5x line width. Extended GUI and config to support multiline for Adaptive Cubic infill pattern and clarified max value comment.
minimum changes
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* Increase multiline fill spacing in honeycomb infill
Adjusts the spacing parameter in the multiline_fill function to 1.1 times the original spacing, potentially improving infill distribution or print quality.
* Refine fill_multiline tooltip and pattern support logic
Updated the tooltip for the 'fill_multiline' parameter to improve clarity and punctuation. Refactored the logic in ConfigManipulation.cpp to clarify which infill patterns support multiline infill.
* better management of non supported infill patterns
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* Enable toggling of surface density and overlap options
Added toggling for 'top_surface_density', 'bottom_surface_density', and 'top_bottom_infill_wall_overlap' fields in based on shell presence.
* un toggle shell overlapping option
---------
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
* fix: added skin_infill_line_width and skeleton_infill_line_width to print profiles as nozzle_size is greater than 0.4
* fix: update version to 0.0.0.1 in multiple process profiles
* fix: Set the default value for the skeleton infill width to 0 fork skipping the min check
* fix: Update default value for skeleton infill line width to 100%
Update fdm_marlin_common.json
fix for time discrepancy, ;LAYER_COUNT was missing which made it impossible for the anker M5/M5C to have a correct predicted time.
* Create top surface density option
* Update tooltip
* Specify what 0% top infill means
* Add density for bottom layers
* Discourage users from using top/bottom density incorrectly
* Fix percent don't need translation
* Fix incorrect indentation
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* SPE-2405: Add Zig Zag infill that is rectilinear infill but with a consistent pattern between layers.
This Zig Zag infill is inspired by the Zig Zag infill in Cura.
Change-Id: I798affa99f4b5c3bd67f47643e67530fb7c3e0cb
(cherry picked from commit 2808d04d5deef6f99f9618648e46f11de03efc98)
* Add Cross zag and locked-zag for shoes
Ported from BambuStudio
* wip
* sparse infill roratation template
* solid_infill_rotate_template
* remove rotate_solid_infill_direction
* hide sparse infill rotation template for non applicable infill pattern
* hide solid_infill_rotate_template for non supported solid infill patterns
* update icon
* support empty string for ConfigOptionFloats deserialize
* fix build errors
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* feat: Add check for obsolete keys in filament profiles and improve error handling
* feat: Enhance error handling in machine profile checks and filament name consistency
* feat: Add option to check for obsolete keys in profile validation
* feat: Clarify help message for obsolete keys check in filament profiles
* BASE
* precise wall and z moved
* PolyHoles
* Arc-fitting
* X-Y Compensation
* Elephant foot + moved images
* Update quality_settings_precision.md
* Wall generator and more
* Full Reorder
* TPMS-D bases
* Update strength_settings_infill.md
* Image Fix + Infill desc calculator
* Descriptions + image fix
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* Update cornering-calib.md
* minor fixes
* Wip updated
* Missing fills
* Update infill_desc_calculator.xlsx
* Update infill_desc_calculator.xlsx
* Update infill documentation and images
Removed outdated 'iso' infill images and updated 'top' infill images with new versions. Added new images for adaptive cubic and 2D honeycomb infill patterns. Updated strength_settings_infill.md to revise infill strength values, descriptions, and remove references to deleted images. Introduced documentation for 2D honeycomb infill and made minor corrections and clarifications throughout.
* Revise infill pattern documentation and add comparison table
Updated strength_settings_infill.md to clarify infill density calculation, add a comprehensive comparison table of infill patterns, and standardize terminology for strength and print time. Expanded pattern descriptions to use qualitative strength ratings instead of numeric values. Updated infill_desc_calculator.xlsx to reflect these changes.
* Indentation in code examples
Adjusted the indentation of code blocks in the cornering calibration documentation for clarity and consistency with the rest of the document.
* Update 3D Honeycomb infill strength ratings
Adjusted the horizontal strength rating for 3D Honeycomb infill from 'Normal' to 'Normal-High' in the strength settings documentation and table. Updated the infill_desc_calculator.xlsx file to reflect these changes.
* Formatting and fix in ERS documentation
Updated headings to use consistent Markdown syntax, improved clarity in explanations, and reworded references for better readability.
* Fix wall generator doc link and filename
Updated the Home.md to reference the correct 'quality_settings_wall_generator' section and renamed the corresponding documentation file for consistency.
---------
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
* Generate support interface iron extrusion
* Always ironing last
* Add options
* Move ironing speed to speed tab
* Don't iron places that are covered by upper support layers
* Disable support interface spacing settings when support ironing is enabled
* Update text
* Clipper: Verify range of int32 coordinates on input.
Cherry-picked from prusa3d/PrusaSlicer@fa7debf49d
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* ClipperLib: Optimized PointInPolygon() to calculate cross products
with int64s instead of doubles.
Cherry-picked from prusa3d/PrusaSlicer@9dca8403fe
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Reworked the ClipperLib / Polygon types to use
the tbb::scallable_allocator to better scale on multiple threads.
Cherry-picked from prusa3d/PrusaSlicer@9cde96993e
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* use tbb::scallable_allocator for Polygons and ExPolygon::holes
to better scale on multiple threads
Cherry-picked from prusa3d/PrusaSlicer@b67ad6434d
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Fixed compilation on GCC and CLang
Cherry-picked from prusa3d/PrusaSlicer@b3b44681a9
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Remove clipper2 which is not used
* Removed shiny profiler from clipperlib
Cherry-picked from prusa3d/PrusaSlicer@7e77048593
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* ClipperLib: Further optimization of memory allocation using scalable_allocator.
ClipperLib: SimplifyPolygon() - changed default winding number to positive,
added strictly_simple parameter.
ClipperUtlis simplify_polygons() - removed "remove_collinear" parameter
Cherry-picked from prusa3d/PrusaSlicer@a7e17df25f
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* ClipperLib: emplace_back() instead of push_back().
Cherry-picked from prusa3d/PrusaSlicer@2e150795b1
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Fixed issue in a 32bit clipper, where IntersectPoint() checked for
the Y coordinate of the calculated intersection point for validity,
but the Y coordinate was already rounded to 32bits, thus an overflow
may have in rare cases masked invalidity of the result.
Cherry-picked from prusa3d/PrusaSlicer@b39c33414f
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Fixed Vojtech's out of boundary assert in Clipper library.
Cherry-picked from prusa3d/PrusaSlicer@0a202dcff3
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* Update clipper to 6.4.2.
Cherry-picked from prusa3d/PrusaSlicer@b8b3cccb40
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* Try fix cmake opencv
---------
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* bug fix volumetric speed, wrong value
* added high flow base process
* added highflow base process
* added first full draft of high flow profiles, further tests are necessary
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* minor changes to initial layer speeds
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* furcer changes on accelartion and speed
* added 0.35mm Standard @MK3.5 again for not breaking anythin for current users
* Update 0.35mm Standard @MK3.5.json
forgot to set the layer_height after creation of the 0.35mm profile
* minor fixes in filament overrides
* added profiles for high flow nozzles on the Prusa MINIIS
* added fan_speedup_time for MINIIS and MK3.5
* changes to support interface, pattern and distance
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Fix punctuation of enumerations
* Add missing '?' at the end of questions on hints
* Add periods after error messages
* Add punctuation to all tooltips
* Add missing periods on the pt-BR translation
* remove OSMesa
OSMesa is depricated for quite a while and got removed with Mesa 25.1.0
* remove OSMesa from all buildfiles, readmes, etc…
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Add new Bambu RIB wall feature, including only the rib wall generation algorithm.
* Fix Linux compilation errors.
* Attempt to fix flatpak build
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Revert 98be94a729
We carry a wxgtk patch [1] that detects dark theme automatically. If it
doesn't work, it means that either selected Gtk theme is not installed
in flatpak environment, or appropriate xdg-desktop-portal for the DE is not
installed.
Plasma users may need to install org.gtk.Gtk3theme.Adapta
Also see https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Settings.html
[1] 0001-Enable-using-a-dark-theme-when-Gnome-dark-style-is-s.patch
* flatpak: introduce ORCA_SLICER_DARK_THEME to force dark theme
If ORCA_SLICER_DARK_THEME is set, dark theme will be applied regardless
of system settings.
* FIX: occt build failure
Pick up build error fix from upstream:
7236e83dcc
/run/build/BambuStudio/deps/build/dep_OCCT-prefix/src/dep_OCCT/src/StdPrs/StdPrs_BRepFont.cxx: In member function ‘Standard_Boolean StdPrs_BRepFont::renderGlyph(Standard_Utf32Char, TopoDS_Shape&)’:
/run/build/BambuStudio/deps/build/dep_OCCT-prefix/src/dep_OCCT/src/StdPrs/StdPrs_BRepFont.cxx:465:30: error: invalid conversion from ‘unsigned char*’ to ‘const char*’ [-fpermissive]
465 | const char* aTags = &anOutline->tags[aStartIndex];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| unsigned char*
* Set policy CMP0167 to NEW
Newer cmake switched to using BoostConfig.cmake shipped with boost-1.70
or later for detecting boost, to preserve old behavior policy CMP0167
was introduced.
Set it to "NEW" to indicate that we want to use .cmake shipped with
boost
* Add OpenSSL tarball link to the manifest
* Add curl zip to the manifest
* flatpak: bump runtime version to 47
Gnome 47 has been released a while ago
---------
Co-authored-by: Bastien Nocera <hadess@hadess.net>
* fixes and refactors linux build scripts
- build_linux.sh: fixes wrong AppImage build folder; refactors script; enhances help text
- harmonizes names: BuildLinux.sh and BuildLinuxImage.sh
- fixes file permissions: cmake inherits .in-file permission; removes chmod 755 in scripts
- linux.d/debian: removes false positive error message
- updates documentation
* enables ANSI-colored output for GNU or Clang
* build_linux.sh: adds -p flag to disable PCH for boosting ccache hit rate
* Allow compilation on distributions based on Ubuntu/Debian (#8625)
* build_linux.sh: takes over changes from BuildLinux.sh
* CMakeLists.txt: removes leftovers, enables ANSI-colored output
* CMakeLists.txt: fixes issue where FORCE_COLORED_OUTPUT was not respected form environment (introduces -C cli arg)
* merges 5df4275: Make it easy to pass extra build args to deps and orca in BuildLinux.sh (#9648)
* feat: add Phrozen Arco machine profiles and bed plate assets
- Upload JSON profiles for the Phrozen Arco printer series
- Include 3D bed plate model and corresponding texture files
- Enables accurate slicing configuration and scene rendering for Arco
* fix: add missing "instantiation" attribute
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* init
* update dialog buttons
* Fix color on Linux & macOS
* Fix dark mode dialog title color on Windows
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Replace prusa printer images with standard sizes and aspect ratio
* Rename Prusa Mini IS to specify the IS in the name
* Add missing prusa CORE One in the preset dialog and reorder prusa printers
* updated pictures to 320px
* chore: update how to build doc
* chore: add how to validate profiles doc
* remove old build info from readme.md
* fix: typo
* fix: typo
* chore: minor fix
* fix: typo
* chore: minor fix
* chore: minor fix
* chore: remove lfs
* fix: note 2 procedure for repair build
* fix: update CMake installation instructions for macOS to specify version 3.31.x
* fix: clarify CMake installation instructions for macOS and remove outdated commands
* fix: enhance documentation for profile structure and templates in OrcaSlicer
* fix: update profile validation documentation and remove obsolete guide
* chore: update path for building on mac
* better version check in linux build script
Running `BuildLinux.sh` on Debian Trixie (and probably on other platforms)
results in this warning:
```
$ sudo ./BuildLinux.sh -u
./linux.d/debian: line 32: [: ==: unary operator expected
./linux.d/debian: line 32: [: ==: unary operator expected
...
```
The script is looking for the `VERSION_ID` variable
in `/etc/os-release`, but that variable is optional (see
https://www.linux.org/docs/man5/os-release.html) and is not present in
my install of Debian Trixie. The script handles the missing variable
incorrectly, resulting in the above warning.
This commit fixes the version check to be more tolerant and IMO clearer.
Tested on Ubuntu 22.04, 24.04, and Debian Trixie.
JIRA: STUDIO-none
Change-Id: I3bb7b209962c15e94ef24d24f752e8cdafc42975
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit d5f9b35b911aabc0bf3683744f980838934f5bf7)
(cherry picked from commit 499b0d8e4f2295dd07a5d84e4917e04a404efd53)
IS Calib - Use default Filament MVS
To fix#9439 added a comment in wiki and remove Max Volumetric Speed overload.
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
add extruder_id for start_cali and add protection for setting_id
jira:none
Change-Id: Idd8eeaa38c618c0ef8db10064d3e4d9793487aa6
(cherry picked from commit 9097efd8699b93d1d8a128eadf55a9252fa728ad)
use typedef instead of IsWow64Process2
jira: no-jira
Change-Id: I3d5c4becca1586094b6950431470b12bd71a0056
(cherry picked from commit c34e985f188c206d588ee8da7149ded2516981cf)
* Fix CMAKE version check to only apply to Windows
* Treat arch-based distros as arch when building
* Fix cmake policy version issue on Arch
* Remove duplicate cmake minimum version check
* Move cmake 4.x compatibility fix to BuildLinux.sh
* Patch GMP to build on GCC15
* Add cstdint include - GCC15 defaults to C23
* Update GMP PATCH_COMMAND to work without a valid git repo
* Set GMP_DIRECTORY_FLAG
* Remove extra spaces between words
* Remove extra spaces after punctuation
* Remove extra spaces before punctuation
* Always needs a space after punctuation
* Always needs a space before parens
* Remove trailing spaces before newline
* Make gcode editor window resizable
* Make param list expands with the window
* Make dialog shrinkable and give it a proper initial size
* Revert "Hardcode Location of Add Button"
This reverts commit aef74ab005.
* Make sure the dialog fits inside current screen
* Fix compile error
Don't show "remember my choice" on 3mf open dialog (SoftFever/OrcaSlicer#9108)
Lots of people accidentally checked it without realizing the consequences, now we make it more explicit by
only allowing change this in preference settings.
2. use transparent color when reset filament
jira: 7946
Change-Id: I129dc0e6b7244cad3b5e61e1bc423938f4b92d7e
(cherry picked from commit 7f473c2027e31458664e184645cf46f8e9b5d307)
and the pa profile not display in AMS setting dialog after switch nozzle diameter
jira: 8620
Change-Id: If40bfe41ae13f5199f09baae3af09757498f1edf
(cherry picked from commit f3064e223df468eb9901e65c8f0abab2dae91f15)
ENH: calib support multi_extruder
1. backend support multi_extrude data structure
2. Compatible with third-party calibration
(cherry picked from commit bambulab/BambuStudio@21e6271e59)
Co-authored-by: zhimin.zeng <zhimin.zeng@bambulab.com>
1.Get bed type from project config
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1f1b9185dd4592b5fd3b03f07e8cde7b7d26510e
(cherry picked from commit 1c90355199384903f166730c5bb43c6a6baaa1cf)
* FIX: brim should be extruded only on first layer
github: github.com/bambulab/BambuStudio/issues/4678
Change-Id: Ib00795dfba2e6d869c30ac906385f170088bbfd6
(cherry picked from commit b51ff1721ddc2080c4f7e487f67c4f1a722bf091)
* Fix compile
* Update GUI_ObjectList.cpp
* fix scaling issue on arrow
* Update GUI_ObjectList.cpp
* Update name column on Linux as well
* Always use column width from `m_columns_width`
* Always use column width from `m_columns_width`
* Remove object list extra horizontal spacing on macOS
* Remove object list header
* Avoid negative width
* Fix compile error
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Make sure printer vendor matches
* Handle cases where some vendor do not have printers (such as `OrcaFilamentLibrary`)
* Ignore vendor `custom printer` from create printer vendor list
* Fix missing end bracket
* Update printer vendor and model list on create printer dialog
* Remove unused search code
* Reimplement the object search bar (SoftFever/OrcaSlicer#7438)
* Fix result list when search text is empty
* Prevent infinite focus loop
* Update layout on Linux
* Fix focus on macOS
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Merge tiny cracks that is part of a large bottom surface into bottom surface (SoftFever/OrcaSlicer#9329)
* Revert bottom offset
* Top surfaces will have perimeters around, which need to be removed from bottom surfaces so bridges not extended to visible areas
* attach console for Windows when command line is used
* fix version check failer in command line mode
* attach console only when we need to print help info
* Ignore very tiny extrusions in flow rate scale (SoftFever/OrcaSlicer#9190)
* Don't show flow rate if it's not extrusion
* Merge branch 'main' into bugfox/gcode-viewer-flow-scale
* Fix infill anchor missing
* Correctly process cases without fill lines in FillRectilinear::fill_surface_with_multilines()
* Fix infill anchor missing for several other infill patterns
* Fix infill anchor missing for rectilinear and aligned rectilinear infill pattern
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* bugfix:All button doesnt get checked on tab-reopen when the selection is empty
* bugfix:when dep tab is open, and you check All, hitting reset all doesnt update the All button correctly; also partially fixed the bug that checking All doesnt flag the tab as dirty
* fixed a bug where checking All in dependency tab doesnt flag the field as dirty
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Revert "Fixed an bug that filament_minimal_purge_on_wipe_tower option doesn't work for soluable filament (#8397)"
This reverts commit fcc5489911.
* Fixed an bug that filament_minimal_purge_on_wipe_tower option doesn't work for soluable filament (#8397)
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Fix#6839 with final tool preheating on multitool machines causing in appropriate temp settings
Seems like Orca is trying to preheat the next tool in a multitool print, and ends up calling a heater off command in the last 30 seconds of any print.
This happens because there's no handling to check if the next active tool is an actual valid tool index, or its a T-1 command to end the print since we're using the last tool.
Simply moved the preheat commands into the conditional IF that automatically fixes this issue since the tool index is now properly evaluated.
Co-authored-by: SoftFever <softfeverever@gmail.com>
* chore: limit cmake version to 3.31 for win32
* chore: fix check for variable path order
* chore: fix check for pipeline
* chore: remove warn on CI enviroment
* chore: change cmake limit version from 3.32 to 4.0
# Description
Add social media links to the project so people can follow the **real** social media accounts. There's only a Twitter/X account added so far. I'd be happy to add more.
Additional context: There are many fake accounts, and this addition to the `README.md` helps users determine which accounts are real. Adding the links will protect users and the OrcaSlicer project.
# Screenshots/Recordings/Graphs
Screenshot of the `README.md` with a social media link.
<img width="1037" alt="image" src="https://github.com/user-attachments/assets/d019bbc0-4b4d-4abf-916c-d3bc41d7062a" />
## Tests
Made the change and previewed in Github.
Add social media links to the project so people can follow the **real** social media accounts.
Additional context: There are many fake accounts, and this addition to the `README.md` helps users determine which accounts are real. Adding the links will protect users and the OrcaSlicer project.
# Description
This PR adds CoLiDo series 3D printers, processes for them and filaments
to the slicer.
Includes:
Machine, Process, Filament and Model(as available from CoLiDo)
Machine:
CoLiDo DIY 4.0, X16, 160 V2, SR1, DIY 4.0 V2
<!--
> Please provide a summary of the changes made in this PR. Include
details such as:,
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
Had no issue Printing with CoLiDo profiles.
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
Add FusRock and keep the alphabetical order
# Description
<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
* Add `renamed_from` so existing user won't break
(cherry picked from commit f8f3b5c2c9b0b15c209d8307a6eaba24e393ddda)
* Add check for profile name consistency
(cherry picked from commit 7343aa5b55cab9a9f7cbdcdddd4e7650f1577598)
* Update filament name checking script
(cherry picked from commit 7c4c1bf191de1fd6b86a07bf62c1ab634faa9f55)
* Fix filament name inconsistency
(cherry picked from commit 36225fc3dbd88babbc5a227fcc6247528d0de6a4)
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* bug fix volumetric speed, wrong value
* added high flow base process
* added highflow base process
* added first full draft of high flow profiles, further tests are necessary
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* minor changes to initial layer speeds
* changed 0.35mm to 0.32mm for 0.6mm nozzle
* furcer changes on accelartion and speed
* added 0.35mm Standard @MK3.5 again for not breaking anythin for current users
* Update 0.35mm Standard @MK3.5.json
forgot to set the layer_height after creation of the 0.35mm profile
* Junction Deviation Machine Limit
jd 3
JD menu 2
JD operativo
limpieza
final
* default JD print menu without warnings
* to fix multiple instances
* Only at first layer
* Calibs upgrade
* Shown on Marlin2
Shown on Marlin2
CodeCleaning
* Update Calibration.md
* set on writer
---------
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
* Don't check intersection if points below bed is also inside the bed, when the bed is convex
* Skip intersection check if bbox not overlapping
* Remove duplicated out of bed check
* Faster (but less accurate) bbox test
* Merge branch 'main' into dev/faster-outside-check
# Conflicts:
# src/libslic3r/Model.cpp
* First set of fixes
* Add FLEX filament to PrintConfig.cpp
* Add new FLEX filament profiles to main Prusa json
* Comment out M104.1 code
* Revert "Comment out M104.1 code"
This reverts commit 831414adb7.
* fix: for custom filament creation, if no compatible printers are defined, it should be available for all printers
* same fix idea but for 'Copy Current Filament Preset' option
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Remove 'www' subdomain from official link.
With 'www.orcaslicer.com' creates certificate warnings, and ultimately redirects to 'orcaslicer.com' anyway.
* Fix#12469 - crash caused by bridge expansion.
Handle a very rare case in which the algorithm picks a wrong
polygon for expansion seed.
(cherry picked from commit 5f843cc93470c96483abcbd47cf8ee5fe38dffe2)
* SPE-2698: Fix crash during regions expansion.
(cherry picked from commit a3f75133c8baead6f8d7bb01722a6bfcdc2e9038)
---------
Co-authored-by: Martin Šach <martin.sachin@gmail.com>
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* Make sure the objects are refreshed after scaling
* Scale the calib pattern using `selection.scale` so they won't overlap (SoftFever/OrcaSlicer#9085)
Fix wrong travel before printing first skirt point (SoftFever/OrcaSlicer#9109)
don't modify `last_pos`, otherwise it could move out of plate/to wrong places and cause issue
* Fix issue that you cannot select multiple brim ears with shift+left click
* Fix brim ear size preview when dragging the slide
* Fix `render_hover_point` memory leaking by using `std::optional`
The selection screen shows a loading indicator instead of frozen during
the page loading process, during that time you will able to close the
window if you want, instead of been stuck at this screen until it
loaded:

Ported from BambuStudio, huge thanks to BambuLab!
* VFA-Calibs Wiki images
* Calib Code Fixes
Improve Settings
JD Set Precision to 3
Change damp default
Recommend 0
Fixes
* IS JD Wiki
* Updated with 9234
* IS Verbose
New important message due to flow ratio test changes. Afaik wasn't doced somewhere. I made the mistake if thinking the yolo tests followed the same formula as pass 1/2.
# Description
Finished Lithuanian translation
Still some work with *.js (C:\Program
Files\OrcaSlicer\resources\web\***) files:

****
Not found where can add Lithuanian language into preferences menu:

<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
Used internal Poedit tests and alredy loaded this language for my
working program interface.
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
Fixes https://github.com/SoftFever/OrcaSlicer/issues/8342
Some printers require extreme flushes to prevent color bleeding or weird
mixed material issues. This change simply bumps the UI constraint by an
order of magnitude.
Filament manufacturers rejoice at the waste!
## Tests
I have made no attempt to test this change or its impact on
purge/flushing calculations.
"Insanely high value that still plays nicely when converting between int and float (because it's internally stored in m_matrix as floats). 2147483520 (which is ~2 cubic meters) is the max value that can be saved properly in this case."
"Insanely high value that still plays nicely when converting between int and float (because it's internally stored in m_matrix as floats). 2147483520 (which is ~2 cubic meters) is the max value that can be saved properly in this case."
"Insanely high value that still plays nicely when converting between int and float (because it's internally stored in m_matrix as floats). 2147483520 (which is ~2 cubic meters) is the max value that can be saved properly in this case."
FIX:remove the auxiliary directory when sending for printing
jira:[for send gcode]
Change-Id: I0774ca97043e25ce1f731371739052921f721087
(cherry picked from commit 0dda96f91ee68c89b16f0f2622902817a1171798)
(cherry picked from commit 73b45f347bba8654fa5a415b673beb0d3ab1f5bf)
(cherry picked from commit 6eb533019eda9c810f3eaf80a81fd7698ebb4578)
Co-authored-by: tao wang <tao.wang@bambulab.com>
The existing support to use a specified number of cores for compilation was setting the variable
CMAKE_BUILD_PARALLEL_LEVEL but not exporting it, so CMake was not being affected, while the -1
option did work (as it was exporting the value).
* NEW:add move and rotate gizmo in assemble view
Cherry-picked from bambulab/BambuStudio@d9e47bd9a9
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* Deselect other parts if Alt is pressed when selecting
Cherry-picked from bambulab/BambuStudio@f5eb2899e7
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* FIX:z offset is error after copy and paste several objects
jira: STUDIO-6753 STUDIO-7135
Change-Id: I6d9c8eb0c957ff1e3194709704ceb6c3920baa4f
(cherry picked from commit 847a7141a6f47e409566b19e73c0ebdeb08f39e2)
(cherry picked from commit a5cc52beb7eef5848368e660ca4f14e95ad5f7d5)
* FIX:arrow direction in scaling tool is incorrect
Jira: STUDIO-5672
Change-Id: I82c0ab336805e34c8380f93e64d3b9dbbf283805
(cherry picked from commit f6f27b700f0305854fcdbcb1191af25a4b8bdbe4)
* FIX:world cs is displayed incorrectly
The value of world coordinate system for model_volume
is displayed incorrectly
Jira: STUDIO-6399
code is from PrusaSlicer
thanks for PrusaSlicer and enricoturri1966
commit 325709c5ae9b937867b36103a41d12a102c99292
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Thu Jan 26 15:49:00 2023 +0100
SPE-1419 - Fixed reset skew resetting mirror, reset scale resetting mirror, changed labels in Object Manipulator panel, scale of instances using the Object Manipulator panel always made as absolute
Change-Id: I30fdd39effd73b8dc027e4263fa7e64937b84326
Cherry-picked from bambulab/BambuStudio@0b46b9848b
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
* FIX:fix scale problem
add tool tip for move,rotate,scale gizmo
Jira: STUDIO-6425 STUDIO-6419
Change-Id: I0b89c9b70f83cde21c6a407bcecd78c925515cfa
Cherry-picked from bambulab/BambuStudio@6dad59102b
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* NEW:add Object coordinates in move gizmo
jira: none
Part of the code references PrusaSlicer,thanks for PrusaSlicer and enricoturri1966
commit c12eeee12f9e2c91a9dfe7905f1370143805f038
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Mon Oct 2 14:26:36 2023 +0200
SPE-1926: Tech ENABLE_CGAL_BOUNDING_SPHERE - Use selection's bounding sphere center as pivot for rotations
Change-Id: Iae7e4539c198af3ff1aa99e1c0ce015fbcf80256
(cherry picked from commit 2b73bc915ee27218c9803ba0a01b0d3e47adf1da)
Cherry-picked from bambulab/BambuStudio@98cce3b656
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* FIX:fix imgui style at Object coordinate
in move tool
jira:STUDIO-7141
Change-Id: Ib2900012c28878c4e7ad97eb0cf319f693cb9f6f
(cherry picked from commit b7b09c82897678c4f3615713bc5d1cc7a3b17b19)
(cherry picked from commit c89732a04619a6d910b723c126515bae802f7167)
* ENH:use local cs for non_model_part better
jira: STUDIO-7234
Change-Id: I0f0e99429e5e0b7cc4932a661eceffcff4a495f6
(cherry picked from commit b4305a3bfc9e5ae05c1785a710238a70f2dfb44a)
(cherry picked from commit b28ac4f812f0024ec619c5d1b3c96e4cef4debdb)
* ENH:add a cross mark for object cs
jira: STUDIO-6947
Change-Id: Iaaab4f072045756ac3ba12c3f65e1c7f04ba65b8
(cherry picked from commit a2a2f49b4d94f257d36c9d17b4ec952e5dc9f0eb)
Cherry-picked from bambulab/BambuStudio@8400e162a7
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* NEW:add tip button for move,rotate,scale
jira: STUDIO-7273
Change-Id: I44aeecd8aaa17ec49ac1d8ff2bee5c3729c52061
(cherry picked from commit 998f33b4ce588f59cef345e327a97f6f669f6089)
(cherry picked from commit f5eb2899e7252ea3ff0f8a79ef8d55c6009ebb28)
* FIX:scale and size sholud >0 in scale tool
jira: STUDIO-7433
Change-Id: Ibd4d00d9ca4762d002049e97a6d0819649f464db
(cherry picked from commit eaaf11031ee49009af14abbd05bb4a07c88aceda)
(cherry picked from commit 0d393d64b804ba7ae05454bf158de470cc74a6a6)
* Fix crossmark rendering
* Use combox as coord selection
Cherry-picked from bambulab/BambuStudio@56f628dac1
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* NEW:add "world coordinates" scale for scale gizmo
upgrade Transformation class
jira:none
about 75% code is from PrusaSlicer,thanks for PrusaSlicer and enricoturri1966
commit b32e9366606dce7d4f8de8db84fd902113bdbe28
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Tue Mar 7 14:32:18 2023 +0100
Rework of constrained scaling
Change-Id: I1248ea586e6b8f2fb6cdf3aa901ed7f525c3f111
(cherry picked from commit e10381aad1412b0c47afa340b634faa3af9d1a1f)
Cherry-picked from bambulab/BambuStudio@c0536c09b4
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* ENH:set "Rotate (relative)"
jira:none
code is from PrusaSlicer,thanks for PrusaSlicer and enricoturri1966
commit 243985173e70c189ad9a86eefaaea0757d9749cb
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Thu May 12 14:33:41 2022 +0200
Tech ENABLE_TRANSFORMATIONS_BY_MATRICES - Allow for relative rotations
Change-Id: I851939093ffb6881542fb21b434e17cc31a6dab2
(cherry picked from commit e412fa3492fa2ef59b84a84be1ede80935fb8a8d)
* FIX:limit scaling ratio by grabber in scale tool
jira: none
Change-Id: I20a4404d4e4025ae230ab46ba8d8d3e5ffed10e3
(cherry picked from commit 97f63f167e80e859fec49666c8986f5a01f61838)
* FIX:selection should be not empty when update_ui_from_settings
jira: none
Change-Id: I74b76733eba03d148dfd70279ec2ba65f19cc39a
(cherry picked from commit f402685aee747fe5c3740b2cb80fc2a60e129918)
* ENH:add "volume selection" checkbox
jira: none
Change-Id: I68b5f54e37ea2ab9e2b65ac84abc834060f400df
(cherry picked from commit eec7de441bd40408fe688587d2834b0c42c0d66f)
* FIX:add can_sequential_clearance_show_in_gizmo api
jira: STUDIO-7836
Change-Id: Ie0cded272596bafee4e491e379722dcc23035dc4
(cherry picked from commit 715d2b9b7840939663e99e0ecbfcefd8ecf2904f)
* FIX:select all should ban in paint,cut and so on gizmo
jira: STUDIO-7872
Change-Id: Ic6496dbdd892814e1fc41625ee34ffc46f171657
(cherry picked from commit 95e8ca728553081db4ecbb3d865c8b999a6ff2fa)
* FIX:add wipe tower'position in move gizmo
jira: STUDIO-7861
Change-Id: I8147717bc61ba06a7e1fba45532cdadc2ba1174e
(cherry picked from commit 065dddb890d3ec81643b9767397bdad72ae69ebd)
* ENH:fix text coordinate system calculation
jira: STUDIO-6449
Change-Id: I36214c14c348e8f52b96501cd027205819b0dabc
(cherry picked from commit 44287812a0cb212f1bf6fe70e32e1075f532886d)
Cherry-picked from bambulab/BambuStudio@4091f3e042
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* FIX:delete old selection.translate api
jira: STUDIO-8201
code is from PrusaSlicer,thanks for PrusaSlicer and enricoturri1966
commit 88ce6ccdef5f680709ea8b676688784a7af287dd
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Wed May 11 10:54:42 2022 +0200
Tech ENABLE_TRANSFORMATIONS_BY_MATRICES -
Change-Id: Iafe963f0f7bf9028f32a4fb4a4cc8cc609662283
Change-Id: Ibbc36c004734f35564f0028dd1e537ac926a2f1f
Cherry-picked from bambulab/BambuStudio@c6d9f2685e
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
* FIX:add protection for null pointer
jira: none
Change-Id: I9a9231bab893f5d2afa008f65165269ae176c962
(cherry picked from commit f27a713aaf77b1109fc57b8650efa6b23081f799)
* FIX:when two dir is perpendicular to each other,scale error
(plane_normal.dot(ray_dir))
jira:STUDIO-8274
Change-Id: Ib3145ab75e18c832d20065d204aa41b75f73b673
(cherry picked from commit fbdc9cd580f835d1a873d08ed64baed3b3db6f9a)
* ENH:add "reset real zeros" button in rotate gizmo
jira: STUDIO-8291
Change-Id: Ia10e4d8a2a3a073c22a1306aeab9ffa3e7b77c2b
(cherry picked from commit 738e3f004daa9082709800e4e3d0d9bbe1b7ed7e)
* FIX:add "absolute rotation" in rotate gizmo
jira: STUDIO-8726
Change-Id: I23deb4ab11cf24ca4f0f0c5a35a74268c34f60f6
(cherry picked from commit d26b8f9fcadf8f7709a302991e43be711560e84e)
(cherry picked from commit 496d69f9d1b91c6bd84804e57a276bccf79f0cbd)
* Fix tooltip button size
* Fix issue that reative rotation history not cleared after gizmo closed
* Show selection box in assemble view
* ENH:add an tip icon for assembly view
jira: STUDIO-7155
Change-Id: Ie9e4fa578c8aa5bda9ff771d82f396f8b51026bb
(cherry picked from commit 515f9473347fb912a9dc8c365f1c318506096083)
---------
Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
Co-authored-by: SoftFever <softfeverever@gmail.com>
It looks like start and end values are swapped. Start needs to be greater than end. If you try to hit "Ok" for the default values, it results in this error:
```
Please input valid values:
Start temp: <= 350
End temp: >= 170
Start temp > End temp + 5)
```
* FIX: enable circle fitting of tree support with larger threshold
jira: STUDIO-8588
Change-Id: Ia566fa14f7f786ff905fc3484885634811a6d686
(cherry picked from commit bambulab/BambuStudio@82c72b19bd)
Fixed a crash bug of OTA feature
Fixed a bug that OTA update didn't work for OrcaFilamentLibrary
Add a help script to pack OTA package
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* Use ipArchimedeanChords pattern for flow rate calibration
* Merge branch 'main' into feature/different_pattern_flowrate
* improve order
* Merge branch 'main' into feature/different_pattern_flowrate
* Build script improvements.
Add NDEBUG for non-debug MacOS builds. I don't understand why, but on my system Release and RelWithDebugInfo builds were not defining NDEBUG, resulting in failing asserts and other sanity checks.
Add -jN flag to BuildLinux.sh. On my 4-core 8GB RAM system, passing -j4 allows building without a swap storm.
Improve README.md description of building on macOS.
* Merge branch 'main' into bug/macos-ndebug
* Merge branch 'main' into bug/macos-ndebug
* Merge branch 'SoftFever:main' into bug/macos-ndebug
* Improve CMake syntax. Mention Mac path to app.
* Merge branch 'main' into bug/macos-ndebug
incorrect values, reset them to the default values
jira: nojira
Change-Id: Ia2c64a2a0ebe30641192fdb716234f34c356a6c6
(cherry picked from commit f9d9d40c4fd72ddf4c6aaa9b3d45851bf1fe7ffc)
1.Put commctrl.h into pch precompilation(OCCT conflicts)
2.Replace input wxWidgets to support loss focus verification(STUDIO-8101)
3.Optimize slider interaction and trigger mesh when push up slider(STUDIO-8099)
4.Optimize step loading method, separate import of step and mesh
5.Fix dialog cancel button logic;
6.mesh tasks into sub-threads to prevent blocking the UI;
JIRA: STUDIO-8101 STUDIO-8099
Change-Id: I50bbb43953a5128f358c6880032d20693531333b
(cherry picked from commit ed7ab6b505a2becf8f38edb3c43b96e51eac3317)
The printer model search can be hard to use, depending on how profiles
are named. This makes it a little easier by matching on both the vendor
and model name, and tokenizing the query and matching all of the tokens,
instead of trying to find the whole query substring in the model name.
* Added TCP Queue Delay + Updated Flashforge Serial comms
- Added TCP Queue Delay parameter to delay TCP messages in queue
- Updated Flashforge Serial comms - Upload/Print to older Flashforge devices (AD3/AD4 etc) now working alongside FF Klipper devices
* Set buffer to 4096 & add 3 sec delay for file save command
* include thread in TCPConsole
* Update Creality K2 Plus 0.8 nozzle.json
* Update Creality K2 Plus 0.6 nozzle.json
* Update Creality K2 Plus 0.4 nozzle.json
* Update Creality K2 Plus 0.2 nozzle.json
* Increase PEI bed temp to 100C from 60C for ASA
* Merge branch 'main' into creality-patch
* add creality ender-5 max
* add filament profiles for ender-5 max
* update creality manifest
* fix references
* put creality.json at 4 space indent
* remove invalid parameters
* fix thumb format
* Merge branch 'main' into feature/ender-5-max
* Update Lulzbot.json to include Taz 4, 5, Pro Dual, and Pro S
* Rename Lulzbot Taz 4, 5_cover.png to Lulzbot Taz 4 or 5_cover.png
* Add build plate model for Taz 4 or Taz 5
* Add compatible printers
* Add compatible printers
* Update Lulzbot 2.85mm PLA.json
* Add Taz 4, 5, Pro Dual, Pro S
* Add files for Taz 4, 5, Pro Dual, Pro S
* simplified build plate model
* bugfix for TPU filament overrides
* higher voluemetric flow
* bugfix for to high speed at internal solid infill
* Update Prusa.json
* updated firmware check and nozzle settings
* bugfix speed and standard for 0,15mm profiles of the 0.4mm nozzle
* variables not defined in orcaslicer
* Change Elegoo Centauri Start GCode to Wait for bed temp
This changes the M140 command to M190 so that the machine waits for the bed to get up to temp.
* Add qemu for arm builds on flatpak
* Increase timeout-minutes
Mainly meant to retrigger GitHub actions (free GitHub actions runners have a max runtime of 6 hours)
* Change arm64 flatpak to build barebones, rather than through emulation
This new addition is highlighted in GitHub's new blog post:
https://github.blog/changelog/2025-01-16-linux-arm64-hosted-runners-now-available-for-free-in-public-repositories-public-preview/
* Rename from arm64 to aarch64
* Potental fix for gst-plugins-good compilation
* Initial appimage arm64 builds
* Add inputs.arch variable
* Temporarily completely isolate arm64 and x86 dependencies
* Fix mesa download link and remove temp comments
* Disable libunwind in gst-plugins-good
* Revert changes in build_check_cache.yml
* Disable nls & static options in gst-plugins-good
* Rebase on main
* Re-add flatpak arm build
* Update gst-plugins-good to 1.24.10
This should be the version that received complete arm64 support
* Trying a solution
* Revert "Update gst-plugins-good to 1.24.10"
This reverts commit b416dcd0ae.
* Remove previous build-options
* Try installing the proper arch version of Meson
When building on a local arm64 device it runs properly.
* Remove sudo commands
* Use dnf rather than apt-get
* Try installing meson before the flatpak builder
* Change flatpak runner
This uses a more experimental version of the flatpak runner provided by Flathub
* Temporarily enable artifact upload
* Resolve merge conflicts
* Add arch variable into flatpak name
* Revert to using Gnome 46, rather than Gnome 47
* Add curl dependency
* Revert "Add curl dependency"
This reverts commit 888a0c4a75.
* Clean up
* Define ubuntu version
Seems to be needed due to the arm version still being in public beta
* Add SV06 high-speed settings which were incomplete earlier
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
* Remove SV06 PLA filament and use Generic filaments. Also enable other types of filaments.
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
* Merge branch 'main' into sv06_high_speed
* ImGuizmo: Comment out unused code
* 3DNav: Avoid gimbal lock by using polar coordinates
* 3DNav: Make sure top and bottom are oriented correctly
* Add auto perspective
* Add options
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Introduce option to control number of skirt walls after first layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* One wall draft shield options refactor
* Merge remote-tracking branch 'upstream/main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Renamed to single loop draft shield
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Update Artillery Genius & Sidewinder profiles
- Fixed bed-size of Genius (Pro) profile.
- Fixed default retraction values for the Artillery Genius (Pro) 0.4 profile,
which were set too high for this direct-drive machine.
- Slightly increased default retraction value for Sidewinder X1 & X2, to match
the Genius profiles. Tested values on all machines.
- Matching minimum layer height for Genius & Sidewinder profiles.
- Fixed line endings & indentation.
* Check for air filtration support on the printer level before emitting air filtration gcode command
* Merge branch 'main' into Check-air-filtration-support-at-the-printer-level-too
* Removed expand factor from IOI as it was incorrectly causing perimeter failing to observe IOI reordering.
* Merge branch 'main' into Bug-Fix-IOI-re-ordering-failing-to-reorder-in-certain-edge-cases
* Update Italian translation
* Fix Italian translation
* Fix Italian translation
* Fix Italian translation
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
The default build plate model for Creality K2 Plus is heavy (516kB) and has a lot of visible artefacts - like diagonal "stairs". I found this a bit annoying. So I redrew the file - to a simple flat stl - 16kb.
* fix alignments for tab and sidebar icons
* minimize code changes
* minimize code changes
* minimize code changes
* Align config label with group title
* minimize changes
* Update Plater.cpp
* Update spacing after titlebar text and comments
* Update Plater.cpp
* Update OG_CustomCtrl.cpp
* Use class to control values from one place
* fix error
* Update Plater.cpp
* update
underscore-arch:${{ inputs.os == 'macos-14' && '_' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }}# if is macos, make a string that does "_{arch}", else output nothing
dash-arch:${{ inputs.os == 'macos-14' && '-' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }}# if is macos, make a string that does "-{arch}", else output nothing
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Overview
OrcaSlicer is an open-source 3D slicer application forked from Bambu Studio, built using C++ with wxWidgets for the GUI and CMake as the build system. The project uses a modular architecture with separate libraries for core slicing functionality, GUI components, and platform-specific code.
## Build Commands
### Building on macOS
```bash
# Build everything (dependencies and slicer)
./build_release_macos.sh
# Build only dependencies
./build_release_macos.sh -d
# Build only slicer (after deps are built)
./build_release_macos.sh -s
# Use Ninja generator for faster builds
./build_release_macos.sh -x
# Build for specific architecture
./build_release_macos.sh -a arm64 # or x86_64
```
### Building on Linux
```bash
# Build everything
./build_linux.sh
# Check system resources first (build requires 10GB+ RAM and disk)
./build_linux.sh -r # skip resource checks
```
### Build System
- Uses CMake with minimum version 3.13
- Primary build directory: `build/`
- Dependencies are built in `deps/build/`
- The build process is split into dependency building and main application building
### Testing
Tests are located in the `tests/` directory and can be run via CMake/CTest after building.
## Architecture
### Core Libraries
- **libslic3r/**: Core slicing engine and algorithms
- Contains the main slicing logic, geometry processing, G-code generation
There are several clickbait and malicious websites pretending to be Official OrcaSlicer. These sites may redirect you to dangerous downloads or contain misleading information.
<br><br>
If you come across any of these in search results, please report them as unsafe or spam to help keep the community secure.
The only official platforms for OrcaSlicer are **our GitHub project page**, <a href="https://www.orcaslicer.com/">**orcaslicer.com**</a>, and the <a href="https://discord.gg/P4VE9UY9gJ">**official Discord channel**</a>.
Please be aware that "**orcaslicer.net**", "**orcaslicer.co**" or "**orca-slicer.com**" are NOT an official website for OrcaSlicer and may be potentially malicious. These sites appear to use AI-generated content, lacking genuine context and seems to exist solely to profit from advertisements. Worse, it may redirect download links to harmful sources. For your safety, avoid downloading OrcaSlicer from this site as the links may be compromised.
If you see the above sites in your searches, report them as spam or unsafe to the search engine. This small action will assist everyone.
We deeply value our OrcaSlicer community and appreciate all the social groups that support us. However, it is crucial to address the risk posed by any group that falsely claims to be official or misleads its members. If you encounter such a group or are part of one, please assist by encouraging the group owner to add a clear disclaimer or by alerting its members.
Thank you for your vigilance and support in keeping our community safe!
# Main features
- Auto-calibration for all printers
-Sandwich (inner-outer-inner) mode - An improved version of the `External Perimeters First` mode
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
-**[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_seam)**
Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
-**[Sandwich Mode](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support**
Use varied infill patterns and accurate hole shapes for improved clarity.
- **[Overhang](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/SoftFever/OrcaSlicer/wiki#support-settings)**
Modify geometry for printable overhangs with precise support placement.
- **[Granular Controls](https://github.com/SoftFever/OrcaSlicer/wiki#process-settings) and Customization**
Fine-tune print speed, layer height, pressure, and temperature with precision.
- **Network Printer Support**
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
- **[Mouse Ear Brims](https://github.com/SoftFever/OrcaSlicer/wiki/others_settings_brim) & Adaptive Bed Mesh**
Automatic brims and adaptive mesh calibration ensure consistent adhesion.
- **User-Friendly Interface**
Intuitive drag-and-drop design with pre-made profiles for popular printers.
Regular updates fueled by continuous community contributions.
- **Wide Printer Compatibility**
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/).
# Wiki
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
- **[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
- **[Contribute to the wiki](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-wiki)**
# Download
### Stable Release
## Stable Release
📥 **[Download the Latest Stable Release](https://github.com/SoftFever/OrcaSlicer/releases/latest)**
Visit our GitHub Releases page for the latest stable version of Orca Slicer, recommended for most users.
### Nightly Builds
## Nightly Builds
🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)**
Explore the latest developments in Orca Slicer with our nightly builds. Feedback on these versions is highly appreciated.
# How to install
**Windows**:
1.Download the installer for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
- *For convenience there is also a portable build available.*
- *If you have troubles to run the build, you might need to install following runtimes:*
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
## Windows
Download the **Windows Installer exe** for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
- *For convenience there is also a portable build available.*
<details>
<summary>Troubleshooting</summary>
-*If you have troubles to run the build, you might need to install following runtimes:*
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
</details>
Windows Package Manager:
```shell
winget install --id=SoftFever.OrcaSlicer --exact
```
## Mac:
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
2. Drag OrcaSlicer.app to Application folder.
3.*If you want to run a build from a PR, you also need to follow the instructions below:*
<details>
<summary>Quarantine</summary>
**Mac**:
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
2. Drag OrcaSlicer.app to Application folder.
3.*If you want to run a build from a PR, you also need to follow the instructions below:*
<details quarantine>
- Option 1 (You only need to do this once. After that the app can be opened normally.):
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
- Step 2: A warning window will pop up, click _Open_
- Option 2:
Execute this command in terminal:`xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
- You can install most of them by running `brew install cmake gettext libtool automake autoconf texinfo`
- run `build_release_macos.sh`
- To build and debug in Xcode:
- run `Xcode.app`
- open ``build_`arch`/OrcaSlicer.Xcodeproj``
- menu bar: Product => Scheme => OrcaSlicer
- menu bar: Product => Scheme => Edit Scheme...
- Run => Info tab => Build Configuration: `RelWithDebInfo`
- Run => Options tab => Document Versions: uncheck `Allow debugging when browsing versions`
- menu bar: Product => Run
# How to Compile
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-build) page.
OrcaSlicer is originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
Bambu Studio is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
Orca Slicer incorporates a lot of features from SuperSlicer by @supermerill
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr)
OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
[Bambu Studio](https://github.com/bambulab/BambuStudio) is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
Orca Slicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr).
# License
Orca Slicer is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
**Orca Slicer** is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
**Bambu Studio** is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
**PrusaSlicer** is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
**Slic3r** is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
Orca Slicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the Orca Slicer and provides extended functionalities for Bambulab printer users.
5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`.** Remember** to save the filament profile.
6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`.
7. Repeat steps 4. and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. **Remember** to save the filament profile.
Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test.
> [!WARNING]
> For Marlin: Linear advance must be enabled in firmware (M900). **Not all printers have it enabled by default.**
> [!WARNING]
> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.
The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
Steps:
1. Select the printer, filament, and process you would like to use for the test.
2. Print the project and check the result. You can select the value of the most even line and update your PA value in the filament settings.
3. In this test, a PA value of `0.016` appears to be optimal.
The pattern method is adapted from [Andrew Ellis' pattern method generator](https://ellis3dp.com/Pressure_Linear_Advance_Tool/), which was itself derived from the [Marlin pattern method](https://marlinfw.org/tools/lin_advance/k-factor.html) developed by [Sineos](https://github.com/Sineos/k-factorjs).
[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few Orca Slicer differences to note.
First and foremost, when you initiate the test, you'll only see a small rectangular prism on the plate. This object serves a few purposes:
1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane**
2. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
3. The filament selected for the prism is also used for the test pattern
Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in Orca Slicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings:
1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter
2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths
3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
### Tower method
The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
Steps:
1. Select the printer, filament, and process you would like to use for the test.
2. Examine each corner of the print and mark the height that yields the best overall result.
3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`.
Temp tower is a straightforward test. The temp tower is a vertical tower with multiple blocks, each printed at a different temperature. Once the print is complete, we can examine each block of the tower and determine the optimal temperature for the filament. The optimal temperature is the one that produces the highest quality print with the least amount of issues, such as stringing, layer adhesion, warping (overhang), and bridging.
This test generates a retraction tower automatically. The retraction tower is a vertical structure with multiple notches, each printed at a different retraction length. After the print is complete, we can examine each section of the tower to determine the optimal retraction length for the filament. The optimal retraction length is the shortest one that produces the cleanest tower.

In the dialog, you can select the start and end retraction length, as well as the retraction length increment step. The default values are 0mm for the start retraction length, 2mm for the end retraction length, and 0.1mm for the step. These values are suitable for most direct drive extruders. However, for Bowden extruders, you may want to increase the start and end retraction lengths to 1mm and 6mm, respectively, and set the step to 0.2mm.
**Note**: When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using Orca Slicer should suffice.
On the other hand, if there is still a lot of stringing at the top of the tower, it is recommended to dry your filament and ensure that your nozzle is properly installed without any leaks.

# Orca Tolerance Test
This tolerance test is specifically designed to assess the dimensional accuracy of your printer and filament. The model comprises a base and a hexagon tester. The base contains six hexagon hole, each with a different tolerance: 0.0mm, 0.05mm, 0.1mm, 0.2mm, 0.3mm, and 0.4mm. The dimensions of the hexagon tester are illustrated in the image.

You can assess the tolerance using either an M6 Allen key or the printed hexagon tester.


# Advanced Calibration
## Max Volumetric speed
This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.

Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.

You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.

> [!NOTE]
> You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.
***
*Credits:*
- *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)*
- *The PA Line method is inspired by [K-factor Calibration Pattern](https://marlinfw.org/tools/lin_advance/k-factor.html)*
- *The PA Tower method is inspired by [Klipper](https://www.klipper3d.org/Pressure_Advance.html)*
- *The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076)
- *The max flowrate test was inspired by Stefan(CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure).
OrcaSlicer use `M141/M191` command to control active chamber heater.
If `Activate temperature control` is checked, OrcaSlicer will insert `M191` command at the beginning of the gcode(before `Machine G-code`).

*Note: If the machine is equipped with an auxiliary fan, OrcaSlicer will automatically activate the fan during the heating period to help circulate air in the chamber.*
There are two chamber temperature variables available that we can use in `Machine G-code` to control the chamber temperature, if you prefer:
To access the chamber temperature set in the first filament, use:
`M191 S{chamber_temperature[0]}`
To use the overall chamber temperature, which is the highest chamber temperature set across all filaments, use:
Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer.
Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer.
The Wiki is work in progress so bear with us while we get it up and running!
The guide below takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances and maximum volumetric speed
-  [Walls and surfaces](quality_settings_wall_and_surfaces)
-  [Filament for Features](multimaterial_settings_filament_for_features)
This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless.
- [How to build Orca Slicer](How-to-build)
- [Localization and translation guide](Localization_guide)
3. Filament (type `filament`). Example: `Generic PLA @Orca 3D Fuse1@.json`
4. Process (type `process`). Example: `0.10mm Standard @Orca 3D Fuse1 0.2.json`
Additionally, there is an overall meta file for each vendor (`Orca 3D.json`).
For easier understanding, let's consider a scenario with a printer manufacturer called `Orca 3D`. The manufacturer offers one printer model called `Fuse 1`, which supports 0.2/0.4/0.6/0.8mm nozzles and common market filaments.
In this case:
- Vendor profile: `Orca 3D`
- Printer profile: `Orca 3D Fuse1`
- Printer variant profile: `Orca 3D Fuse1 0.4 nozzle`
- Filament profile: `Generic PLA @Orca 3D Fuse1@`
- Process profile: `0.20mm Standard @Orca 3D Fuse1 0.4`
The profile name should be same as the filename without the `.json` extension in principal.
5. Process profile: `layer_height` + `preset_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` (`preset_name` typically includes "standard," "fine," "fast," "draft," etc.)
A typical file structure for a vendor:
```
resources\profiles\
- Orca 3D.json
- Orca 3D\
- machine\
- Orca 3D Fuse1.json
- Orca 3D Fuse1 0.2 nozzle.json
- Orca 3D Fuse1 0.4 nozzle.json
- process\
- 0.10mm Standard @Orca 3D Fuse1 0.2.json
- 0.20mm Standard @Orca 3D Fuse1 0.4.json
- filament\
- Generic PLA @Orca 3D Fuse1@.json
```
**NOTE 1**: Use short vendor names in filenames to avoid excessive length.
**NOTE 2**: Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
## Filament Profiles
OrcaSlicer features a global filament library called `OrcaFilamentLibrary`, which is automatically available for all printers. It includes generic filaments like `Generic PLA @System` and `Generic ABS @System` etc.
Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
Relationship diagram:
```mermaid
graph TD;
OrcaFilamentLibrary-->Orca_3D_filament;
OrcaFilamentLibrary-->Vendor_A_filament;
OrcaFilamentLibrary-->Vendor_B_filament;
```
**NOTE**: Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
### Adding Filament Profiles to the Global Library
In this section, we will discuss how to add a new filament profile into the global library.
If you want to add a new generic profile into the global library, you need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
The following sample JSON file shows how to create a new generic filament profile `Generic PLA-GF @System` in the global library.
1. The first step is to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. The file name should be `Generic PLA-GF @System.json`. Please note that we leave the `compatible_printers` field empty so that it is available for all printers.
```json
{
"type":"filament",
"filament_id":"GFL99",
"setting_id":"GFSA05",
"name":"Generic PLA-GF @System",
"from":"system",
"instantiation":"true",
"inherits":"fdm_filament_pla",
"filament_type":["PLA-GF"],
"filament_flow_ratio":[
"0.96"
],
"compatible_printers":[]
}
```
2. Register the profile in `resources\profiles\OrcaFilamentLibrary.json`:
```json
{
"name":"OrcaFilamentLibrary",
"version":"02.02.00.04",
"force_update":"0",
"description":"Orca Filament Library",
"filament_list":[
// ...
{
"name":"Generic PLA-GF @System",
"sub_path":"filament/Generic PLA-GF @System.json"
}
]
}
```
3. The last step is to validate the newly added filament profiles. You can run OrcaSlicer to verify if the filament you just added is available and usable. You can also use the [Orca profile validator](https://github.com/SoftFever/Orca_tools/releases/tag/1) tool to help debug any errors. **NOTE**: You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your lastest changes.
The process is the same if you want to add a new brand filament profile into the global library. You need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament\brand_name` folder. The only difference is that you should put the file into the brand's own subfolder.`resources\profiles\OrcaFilamentLibrary\filament\brand_name`.
### Adding Filament Profiles to Printer Vendor Library
In this section, we will discuss how to add a new filament profile for a certain vendor.
If you want to add a new filament profile, whether it's a brand new profile or a specialized version of a global filament profile for a given printer, you need to create a new file in the `resources\profiles\vendor_name\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
Below is a sample JSON file showing how to create a specialized `Generic ABS` filament profile for the ToolChanger printer.
Please note that here we must leave the compatible_printers field non-empty, unlike in the global library.
The 'Precise Wall' is a distinctive feature introduced by OrcaSlicer, aimed at improving the dimensional accuracy of prints and minimizing layer inconsistencies by slightly increasing the spacing between the outer wall and the inner wall.
Below is a technical explanation of how this feature works.
First, it's important to understand some basic concepts like flow, extrusion width, and space. Slic3r has an excellent document that covers these topics in detail. You can refer to this article: [link to article](https://manual.slic3r.org/advanced/flow-math).
Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping.

This approach enhances the strength of 3D-printed parts. However, it does have some side effects. For instance, when the inner-outer wall order is used, the outer wall can be pushed outside, leading to potential size inaccuracy and more layer inconsistency.
It's important to keep in mind that this approach to handling flow is specific to Slic3r and it's forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura
OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved.
This guide offers a structured and comprehensive overview of the calibration process for Orca Slicer.
It covers key aspects such as flow rate, pressure advance, temperature towers, retraction tests, and advanced calibration techniques. Each section includes step-by-step instructions and visuals to help you better understand and carry out each calibration effectively.
To access the calibration features, you can find them in the **Calibration** section of the Orca Slicer interface.
> After completing the calibration process, remember to create a new project in order to exit the calibration mode.
The recommended order for calibration is as follows:
1.**[Temperature](temp-calib):** Start by calibrating the temperature of the nozzle and the bed. This is crucial as it affects the viscosity of the filament, which in turn influences how well it flows through the nozzle and adheres to the print bed.
2.**[Flow](flow-rate-calib):** Calibrate the flow rate to ensure that the correct amount of filament is being extruded. This is important for achieving accurate dimensions and good layer adhesion.
3.**[Pressure Advance](pressure-advance-calib):** Calibrate the pressure advance settings to improve print quality and reduce artifacts caused by pressure fluctuations in the nozzle.
- **[Adaptive Pressure Advance](adaptive-pressure-advance-calib):** This is an advanced calibration technique that can be used to further optimize the pressure advance settings for different print speeds and geometries.
4.**[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and Pressure Advance calibration is recommended, as it ensures that the printer is already set up for optimal extrusion.
5.**[Max Volumetric Speed](volumetric-speed-calib):** Calibrate the maximum volumetric speed of the filament. This is important for ensuring that the printer can handle the flow rate of the filament without causing issues such as under-extrusion or over-extrusion.
6.**[Cornering](cornering-calib):** Calibrate the Jerk/Junction Deviation settings to improve print quality and reduce artifacts caused by sharp corners and changes in direction.
7.**[Input Shaping](input-shaping-calib):** This is an advanced calibration technique that can be used to reduce ringing and improve print quality by compensating for mechanical vibrations in the printer.
**[Tolerance](tolerance-calib):** Calibrate the tolerances of your printer to ensure that it can accurately reproduce the dimensions of the model being printed. This is important for achieving a good fit between parts and for ensuring that the final print meets the desired specifications.
- _The Flow test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)._
- _The PA Line method is inspired by [K-factor Calibration Pattern](https://marlinfw.org/tools/lin_advance/k-factor.html)._
- _The PA Tower method is inspired by [Klipper](https://www.klipper3d.org/Pressure_Advance.html)._
- _The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076)._
- _The max flowrate test was inspired by Stefan (CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure)._
- _ZV Input Shaping is inspired by [Marlin Input Shaping](https://marlinfw.org/docs/features/input_shaping.html) and [Ringing Tower 3D STL](https://marlinfw.org/assets/stl/ringing_tower.stl)._
@@ -11,18 +11,20 @@ This feature introduces the below options under the filament settings:
2. **Enable adaptive pressure advance for overhangs:** Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option because if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs. It is recommended to start with this option switched off and enable it after the core adaptive pressure advance feature is calibrated correctly.
3. **Pressure advance for bridges:** Sets the desired pressure advance value for bridges. Set it to 0 to disable this feature. Experiments have shown that a lower PA value when printing bridges helps reduce the appearance of slight under extrusion immediately after a bridge, which is caused by the pressure drop in the nozzle when printing in the air. Therefore, a lower pressure advance value helps counteract this. A good starting point is approximately half your usual PA value.
4. **Adaptive pressure advance measurements:** This field contains the calibration values used to generate the pressure advance profile for the nozzle/printer. Input sets of pressure advance (PA) values and the corresponding volumetric flow speeds and accelerations they were measured at, separated by a comma. Add one set of values per line. More information on how to calibrate the model follows in the sections below.
5. **Pressure advance:** The old field is still needed and is required to be populated with a PA value. A “good enough” median PA value should be entered here, as this will act as a fallback value when performing tool changes, printing a purge/wipe tower for multi-color prints as well as a fallback in case the model fails to identify an appropriate value (unlikely but it’s the ultimate backstop).
<img width="452" alt="Adaptive PA settings" src="https://github.com/user-attachments/assets/68c46885-54c7-4123-afa0-762d3995185f">
5. **Pressure advance:** The old field is still needed and is required to be populated with a PA value. A “good enough” median PA value should be entered here, as this will act as a fallback value when performing tool changes, printing a purge/wipe tower for multi-color prints as well as a fallback in case the model fails to identify an appropriate value (unlikely but it’s the ultimate backstop).
This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn’t adversely affect the machine; however, the quality results from enabling it are not validated.
This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn't adversely affect the machine; however, the quality results from enabling it are not validated.
**Older versions of Klipper used to stutter when pressure advance was changed while the toolhead was in motion. This has been fixed with the latest Klipper firmware releases. Therefore, make sure your Klipper installation is updated to the latest version before enabling this feature, in order to avoid any adverse quality impacts.**
> [!IMPORTANT]
> Versions of Klipper older than July 11th, 2024 might in some cases produce artifacts when dynamic PA is used.
> This has been fixed in Klipper stable version 0.13.0 (20250411), or in developer versions starting [from July 11th, 2024](https://github.com/Klipper3d/klipper/commit/c84d78f3f169bc5163d11b74837f9880b0b7dba4).
> If you experience issues or print quality lower than expected you might want to ensure you have a Klipper firmware which contains the fix.
Klipper firmware released after July 11th, 2024 (version greater than approximately v0.12.0-267) contains the above fix and is compatible with adaptive pressure advance. If you are upgrading from an older version, make sure you update both your Klipper installation as well as reflash the printer MCU’s (main board and toolhead board if present).
> [!TIP]
> **Advanced users**: the fix to ensure optimal quality when dynamic PA is used does not require flashing the toolhead MCU or the printer MCU, but only an update of the host Python code. If you are using a commercial printer which does not offer straightforward MCU flashing (for example, Qidi printers), you might be able to manually patch the host code yourself.
## Use case (what to expect)
@@ -32,29 +34,31 @@ Following experimentation, it has been noticed that the optimal pressure advance
2. The larger the layer height (hence the higher the volumetric flow rate requested from the toolhead).
3. The higher the print acceleration is.
What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights.
What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights.
This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters.
This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters.
**However, what this also means is that if you are printing with a single layer height, single speed, and acceleration, there is no need to enable this feature.**
Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process.
Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process.
In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance.
In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance.
Finally, if during calibration you notice that there is little to no variance between the PA tests, this feature is redundant for you. **From experiments, high flow nozzles fitted on high-speed core XY printers appear to benefit the most from this feature as they print with a larger range of flow rates and at a larger range of accelerations.**
### Expected results:
### Expected results
With this feature enabled there should be absolutely no bulge in the corners, just the smooth rounding caused by the square corner velocity of your printer.
Compared to with this feature disabled, where the internal solid infill and external-internal perimeters show signs of separation and under extrusion, when PA is tuned for optimal external perimeter performance as shown below.
Compared to with this feature disabled, where the internal solid infill and external-internal perimeters show signs of separation and under extrusion, when PA is tuned for optimal external perimeter performance as shown below.
## How to calibrate the adaptive pressure advance model
@@ -65,9 +69,9 @@ Firstly, it is important to understand your printer speed and acceleration limit
1. **Upper acceleration range:** Do not attempt to calibrate adaptive PA for an acceleration that is larger than what the Klipper input shaper calibration tool recommends for your selected shaper. For example, if Klipper recommends an EI shaper with 4k maximum acceleration for your slowest axis (usually the Y axis), don’t calibrate adaptive PA beyond that value. This is because after 4k the input shaper smoothing is magnified and the perimeter separations that appear like PA issues are caused by the input shaper smoothing the shape of the corner. Basically, you’d be attempting to compensate for an input shaper artefact with PA.
2. **Upper print speed range:** The Ellis PA pattern test has been proven to be the most efficient and effective test to run to calibrate adaptive PA. It is fast and allows for a reasonably accurate and easy-to-read PA value. However, the size of the line segments is quite small, which means that for the faster print speeds and slower accelerations, the toolhead will not be able to reach the full flow rate that we are calibrating against. It is therefore generally not recommended to attempt calibration with a print speed of higher than ~200-250mm/sec and accelerations slower than 1k in the PA pattern test. If your lowest acceleration is higher than 1k, then proportionally higher maximum print speeds can be used.
**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow).
**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow).
With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
**The below starting points are recommended for the majority of Core XY printers:**
@@ -94,83 +98,124 @@ For this example, let’s assume that the baseline number of tests is adequate f
We, therefore, need to run 12 PA tests as below:
**Speed – Acceleration**
1. 50 – 1k
2. 100 – 1k
3. 150 – 1k
4. 200 – 1k
5. 50 – 2k
6. 100 – 2k
7. 150 – 2k
8. 200 – 2k
9. 50 – 4k
10. 100 – 4k
11. 150 – 4k
12. 200 – 4k
| Speed | Acceleration |
|-------|--------------|
| 50 | 1k |
| 100 | 1k |
| 150 | 1k |
| 200 | 1k |
| 50 | 2k |
| 100 | 2k |
| 150 | 2k |
| 200 | 2k |
| 50 | 4k |
| 100 | 4k |
| 150 | 4k |
| 200 | 4k |
### Identifying the flow rates from the print speed
As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds.
Test sample above was done with acceleration 12000 mm/s² and flow rate 27.13 mm³/s
#### OrcaSlicer 2.1.0 and older
As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds.
Setup your PA test as usual from the calibration menu in Orca slicer. It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. **
#### General tips
**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations.
It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests –**therefore a PA step value of 0.001 is recommended**.
**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations.
**If the test is too big to fit on the build plate, increase your starting PA value or the PA step value accordingly until the test can fit.** If the lowest value becomes too high and there is no ideal PA present in the test, focus on increasing the PA step value to reduce the number of herringbones printed (hence the size of the print).
Once setup, your PA test should look like the below:
#### OrcaSlicer 2.3.0 and newer
<img width="437" alt="PA calibration test 1" src="https://github.com/user-attachments/assets/1e6159fe-c3c5-4480-95a1-4383f1fae422">
<img width="437" alt="Pa calibration test 2" src="https://github.com/user-attachments/assets/c360bb18-a97a-4f37-b5a3-bb0c67cac2b6">
PA pattern calibration configuration window have been changed to simplify test setup. Now all is needed is to fill list of accelerations and speeds into relevant fields of the calibration window:
Now input your identified print speeds and accelerations in the fields above and run the PA tests.
Test patterns generated for each acceleration-speed pair and all parameters are set accordingly. No additional actions needed from user side. Just slice and print all plates generated.
Refer to [Calibration Guide](Calibration) for more details on batch mode calibration.
#### OrcaSlicer 2.2.0 and older
Setup your PA test as usual from the calibration menu in Orca slicer. Once setup, your PA test should look like the below:
Now input your identified print speeds and accelerations in the fields above and run the PA tests.
> [!IMPORTANT]
> Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles.
#### Test results processing
**IMPORTANT:** Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles.
Now run the tests and note the optimal PA value, the flow, and the acceleration. You should produce a table like this:
Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above.
Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above.
**You’re now done! The PA profile is created and calibrated!**
Remember to paste the values in the adaptive pressure advance measurements text box as shown below, and save your filament profile.
The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model.
The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model.
However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used.
Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used.
**However, make sure a triplet of values is always provided – PA value, Flow, Acceleration.**
#### Identifying the right PA:
#### Identifying the right PA
Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging.
Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging.
However, the lower the flow rate and accelerations are, the range of good values is much wider. Having examined the PA tests even under a microscope, what is evident, is that if you can’t distinguish a value as being evidently better than another (i.e. sharper corner with no gaps) with the naked eye, then both values are correct. In which case, if you can’t find any meaningful difference, simply use the optimal values from the higher flow rates.
Cornering is a critical aspect of 3D printing that affects the quality and accuracy of prints. It refers to how the printer handles changes in direction during movement, particularly at corners and curves. Proper cornering settings can help reduce artifacts like ringing, ghosting, and overshooting, leading to cleaner and more precise prints.
## Jerk
TODO: Jerk calibration not implemented yet.
## Junction Deviation
Junction Deviation is the default method for controlling cornering speed in MarlinFW (Marlin2) printers.
Higher values result in more aggressive cornering speeds, while lower values produce smoother, more controlled cornering.
The default value in Marlin is typically set to 0.08mm, which may be too high for some printers, potentially causing ringing. Consider lowering this value to reduce ringing, but avoid setting it too low, as this could lead to excessively slow cornering speeds.
1. Check if your printer has Junction Deviation enabled. You can do this by sending the command `M503` to your printer and looking for the line `Junction deviation: 0.25`.
2. In OrcaSlicer, set:
1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²).
2. Speed high enough to trigger ringing (e.g., 100 mm/s).
3. Use an opaque, high-gloss filament to make the ringing more visible.
2. It’s very likely that you’ll need to set values lower than 0.08 mm, as shown in the previous example. To determine a more accurate maximum JD value, you can print a new calibration tower with a maximum value set at the point where the corners start losing sharpness.
3. Print the second Junction Deviation test with the new maximum value.
The Flow Ratio determines how much filament is extruded and plays a key role in achieving high-quality prints. A properly calibrated flow ratio ensures consistent layer adhesion and accurate dimensions.
- Too **low** flow ratio will cause under-extrusion, leading to gaps, weak layers, and poor structural integrity.
- Too **high** flow ratio can cause over-extrusion, resulting in excess material, rough surfaces, and dimensional inaccuracies.
> After v2.3.0, the [Top Pattern](strength_settings_top_bottom_shells#surface-pattern) changed to [Archimedean chords](strength_settings_infill#archimedean-chords) from Monotonic Line.
## Calibration Types
- **2-Pass Calibration:** Old method using two passes to determine the optimal flow rate using the formula `FlowRatio_old*(100 + modifier)/100`.
- **YOLO:** Simplified method that adjusts the flow rate in a single pass using the formula `FlowRatio_old±modifier`.
- **Recommended:** Calibration range `[-0.05, +0.05]`, flow rate step is `0.01`.
- **Perfectionist Version:** Calibration range `[-0.04, +0.035]`, flow rate step is `0.005`.
This example demonstrates the use of [Archimedean chords](strength_settings_infill#archimedean-chords) for flow rate calibration using the YOLO (Recommended) method.
5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`. **Remember** to save the filament profile.
6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`.
7. Repeat steps 4. and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. **Remember** to save the filament profile.
> @ItsDeidara has made a html to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant).
During high-speed movements, vibrations can cause a phenomenon called "ringing," where periodic ripples appear on the print surface. Input Shaping provides an effective solution by counteracting these vibrations, improving print quality and reducing wear on components without needing to significantly lower print speeds.
The Klipper Resonance Compensation is a set of Input Shaping modes that can be used to reduce ringing and improve print quality.
Ussualy the recommended values modes are `MZV` or `EI` for Delta printers.
1. Pre-requisites:
1. In OrcaSlicer, set:
1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²).
2. Speed high enough to trigger ringing (e.g., 100 mm/s).
> [!NOTE]
> These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
3. Jerk [Klipper Square Corner Velocity](https://www.klipper3d.org/Kinematics.html?h=square+corner+velocity#look-ahead) to 5 or a high value (e.g., 20).
2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
> [!WARNING]
> There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
> Not all Resonance Compensation modes support damping.
4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
5. Save the settings
1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
## Marlin
### ZV Input Shaping
ZV Input Shaping introduces an anti-vibration signal into the stepper motion for the X and Y axes. It works by splitting the step count into two halves: the first at half the frequency and the second as an "echo," delayed by half the ringing interval. This simple approach effectively reduces vibrations, improving print quality and allowing for higher speeds.
1. Pre-requisites:
1. In OrcaSlicer, set:
1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²).
2. Speed high enough to trigger ringing (e.g., 100 mm/s).
> [!NOTE]
> These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
3. Jerk
1. If using [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-) use a high value (e.g., 20).
2. If using [Junction Deviation](https://marlinfw.org/docs/features/junction_deviation.html) (new Marlin default mode) this test will use 0.25 (high enough to most printers).
2. Use an opaque, high-gloss filament to make the ringing more visible.
2. Print the Input Shaping Frequency test with a range of frequencies.
2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
> [!WARNING]
> There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
1. Reboot your printer.
2. Use the following G-code to restore your printer settings:
```gcode
M501
```
5. Save the settings
1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
2. Use the following G-code to set the frequency:
```gcode
M593 X F#Xfrequency D#XDamping
M593 Y F#Yfrequency D#YDamping
M500
```
Example
```gcode
M593 X F37.25 D0.16
M593 Y F37.5 D0.06
M500
```
### Fixed-Time Motion
TODO: This calibration test is currently under development. See the [Marlin documentation](https://marlinfw.org/docs/gcode/M493.html) for more information.
## Credits
- **Input Shaping Calibration:** [@IanAlexis](https://github.com/IanAlexis) and [@RF47](https://github.com/RF47)
Pressure Advance is a feature that compensates for the lag in filament pressure within the nozzle during acceleration and deceleration. It helps improve print quality by reducing issues like blobs, oozing, and inconsistent extrusion, especially at corners or during fast movements.
Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test.
The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
Steps:
1. Select the printer, filament, and process you would like to use for the test.
2. Print the project and check the result. You can select the value of the most even line and update your PA value in the filament settings.
3. In this test, a PA value of `0.016` appears to be optimal.
The pattern method is adapted from [Andrew Ellis' pattern method generator](https://ellis3dp.com/Pressure_Linear_Advance_Tool/), which was itself derived from the [Marlin pattern method](https://marlinfw.org/tools/lin_advance/k-factor.html) developed by [Sineos](https://github.com/Sineos/k-factorjs).
[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few Orca Slicer differences to note.
Test configuration window allow user to generate one or more tests in a single projects. Multiple tests will be placed on each plate with extra plates added if needed.
Once test generated, one or more small rectangular prisms could be found on the plate, one for each test case. This object serves a few purposes:
1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane:**
1. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
2. Each test object is pre-configured with target parameters which are reflected in the objects name. However, test parameters may be adjusted for each prism individually by referring to the object list pane:
Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in Orca Slicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings:
1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter
2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths
3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
4. The infill pattern beneath the numbers cannot be changed because it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
## Tower method
The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
1. Select the printer, filament, and process you would like to use for the test.
2. Examine each corner of the print and mark the height that yields the best overall result.
3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`.
> @ItsDeidara has made a html to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant).
Retraction is the process of pulling the filament back into the nozzle to prevent oozing and stringing during non-print moves. If the retraction length is too short, it may not effectively prevent oozing, while if it's too long, it can lead to clogs or under-extrusion. Filaments like PETG and TPU are more prone to stringing, so they may require longer retraction lengths compared to PLA or ABS.
This test generates a retraction tower automatically. The retraction tower is a vertical structure with multiple notches, each printed at a different retraction length. After the print is complete, we can examine each section of the tower to determine the optimal retraction length for the filament. The optimal retraction length is the shortest one that produces the cleanest tower.
In the dialog, you can select the start and end retraction length, as well as the retraction length increment step. The default values are 0mm for the start retraction length, 2mm for the end retraction length, and 0.1mm for the step. These values are suitable for most direct drive extruders. However, for Bowden extruders, you may want to increase the start and end retraction lengths to 1mm and 6mm, respectively, and set the step to 0.2mm.
> When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using Orca Slicer should suffice.
> On the other hand, if there is still a lot of stringing at the top of the tower, it is recommended to dry your filament and ensure that your nozzle is properly installed without any leaks.
> [!TIP]
> @ItsDeidara has made a html to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant).
Nozzle temperature is one of the most important settings to calibrate for a successful print. The temperature of the nozzle affects the viscosity of the filament, which in turn affects how well it flows through the nozzle and adheres to the print bed. If the temperature is too low, the filament may not flow properly, leading to under-extrusion, poor layer adhesion and stringing. If the temperature is too high, the filament may degrade, over-extrude and produce stringing.
Temp tower is a straightforward test. The temp tower is a vertical tower with multiple blocks, each printed at a different temperature.
Once the print is complete, we can examine each block of the tower and determine the optimal temperature for the filament. The optimal temperature is the one that produces the highest quality print with the least amount of issues, such as stringing, layer adhesion, warping (overhang), and bridging.
> If a range of temperatures looks good, you may want to use the middle of that range as the optimal temperature.
> But if you are planning to print at higher [speeds](speed_settings_other_layers_speed)/[flow rates](volumetric-speed-calib), you may want to use the higher end of that range as the optimal temperature.
## Bed Temperature
Bed temperature plays a crucial role in ensuring proper filament adhesion to the build surface, which directly impacts both print success and quality.
Most materials have a relatively broad optimal range for bed temperature (typically +/-5°C).
In general, following the manufacturer’s recommendations, maintaining a clean bed (free from oils or fingerprints), ensuring a stable [chamber temperature](#chamber-temperature), and having a properly leveled bed will produce reliable results.
- If the bed temperature is too low, the filament may fail to adhere properly, leading to warping, weak layer bonding, or complete detachment. In severe cases, the printed part may dislodge entirely and stick to the nozzle or other printer components, potentially causing mechanical damage.
- If the bed temperature is too high, the lower layers can overheat and soften excessively, resulting in deformation such as [elephant foot](quality_settings_precision#elephant-foot-compensation).
> [!TIP]
> As a general guideline, you can use the [glass transition temperature](https://en.wikipedia.org/wiki/Glass_transition) (Tg) of the material and subtract 5–10°C to estimate a safe upper limit for bed temperature.
> See [this article](https://magigoo.com/blog/prevent-warping-temperature-and-first-layer-adhesion-magigoo/) for a detailed explanation.
> [!NOTE]
> For challenging prints involving materials with **high shrinkage** (e.g., nylons or polycarbonate) or geometries prone to warping, dialed-in settings are critical.
> In these cases, [chamber temperature](#chamber-temperature) becomes a **major factor** in preventing detachment and ensuring print success.
## Chamber Temperature
Chamber temperature can affect the print quality, especially for high-temperature filaments.
A heated chamber can help to maintain a consistent temperature throughout the print, reducing the risk of warping and improving layer adhesion. However, it is important to monitor the chamber temperature to ensure that it does not exceed the filament's deformation temperature.
See: [Chamber temperature printer settings](Chamber-temperature)
> [!IMPORTANT]
> Low temperature Filaments like PLA can clog the nozzle if the chamber temperature is too high.
Each filament and printer combination can result in different tolerances. This means that even using the same filament and print profile, tolerances may vary from one printer to another.
To correct for these variations, Orca Slicer provides:
This calibration test is designed to evaluate the dimensional accuracy of your printer and filament. The model consists of a base with six hexagonal holes, each with a different tolerance: 0.0 mm, 0.05 mm, 0.1 mm, 0.2 mm, 0.3 mm, and 0.4 mm, as well as a hexagon-shaped tester.
You can check the tolerance using either an M6 Allen key or the included printed hexagon tester.
Use calipers to measure both the holes and the inner tester. Based on your results, you can fine-tune the X-Y hole compensation and X-Y contour compensation settings. Repeat the process until you achieve the desired precision.
Vertical Fine Artifacts (VFA) are small surface imperfections that appear on vertical walls, especially near sharp corners or sudden directional changes. These artifacts are typically caused by mechanical vibrations, motor resonance, or rapid directional shifts that impact print quality.
- **Mechanical adjustments**, such as tuning or replacing motors, belts, or pulleys.
- **MMR (Motor Resonance Rippling)** is a common subtype of VFA caused by stepper motors vibrating at resonant frequencies, leading to periodic ripples on the surface.
- **[Jerk/Junction Deviation](cornering-calib)** settings can also contribute to VFA, as they control how the printer handles rapid changes in direction.
- **[Input Shaping](input-shaping-calib)** can help mitigate VFA by reducing vibrations during printing.
## VFA Test
The VFA Speed Test in OrcaSlicer helps identify which print speeds trigger MRR artifacts. It prints a vertical tower with walls at various angles while progressively increasing the print speed.
After printing, inspect the tower for MRR artifacts. Look for speeds where the surface becomes visibly smoother or rougher. This allows you to pinpoint problematic speed ranges.
You can then configure the **Resonance Avoidance Speed Range** in the printer profile to skip speeds that cause visible artifacts.
Each material profile includes a **maximum volumetric speed** setting, which limits your [print speed](speed_settings_other_layers_speed) to prevent issues like nozzle clogs, under-extrusion, or poor layer adhesion.
This value varies depending on your **material**, **machine**, **nozzle diameter**, and even your **extruder setup**, so it’s important to calibrate it for your specific printer and each filament you use.
> [!NOTE]
> Even for the same material type (e.g., PLA), the **brand** and **color** can significantly affect the maximum flow rate.
> [!TIP]
> If you're planning to increase speed or flow, it’s a good idea to **increase your nozzle temperature**, preferably toward the higher end of the recommended range for your filament. Use a [temperature tower calibration](temp-calib#nozzle-temp-tower) to find that range.
## Calibration Overview
You will be prompted to enter the settings for the test: start volumetric speed, end volumetric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
Once printed, take note of where the layers begin to fail and where the quality begins to suffer.
> [!TIP]
> A **change in surface sheen** (glossy vs. matte) is often a visual cue of material degradation or poor layer adhesion.
Filament Max Volumetric Speed = start + (HeightMeasured * step)
```
In this case (19mm), so the calculation would be: `5 + (19 * 0.5) = 14.5mm³/s`
- Use OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filament.
After you have determined the maximum volumetric speed, you can set it in the filament settings. This will ensure that the printer does not exceed the maximum flow rate for the filament.
> This test is a best case scenario and doesn't take into account Retraction or other settings that can increase clogs or under-extrusion.
> You may want to reduce the flow by 10%-20% (or even further) to ensure print quality/strength.
> **Printing at high volumetric speed can lead to poor layer adhesion or even clogs in the nozzle.**
> [!TIP]
> @ItsDeidara has made a html to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant).
This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless.
- [Preset, PresetBundle and PresetCollection](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Preset-and-bundle.md)
> GitHub Desktop (optional): A GUI for Git and Git LFS, which already includes both tools.
> ```shell
> winget install --id=GitHub.GitHubDesktop -e
> ```
### Windows Instructions
1. Clone the repository:
- If using GitHub Desktop clone the repository from the GUI.
- If using the command line:
1. Clone the repository:
```shell
git clone https://github.com/SoftFever/OrcaSlicer
```
2. Run lfs to download tools on Windows:
```shell
git lfs pull
```
2. Open the appropriate command prompt:
- For Visual Studio 2019:
Open **x64 Native Tools Command Prompt for VS 2019** and run:
```shell
build_release.bat
```
- For Visual Studio 2022:
Open **x64 Native Tools Command Prompt for VS 2022** and run:
```shell
build_release_vs2022.bat
```
> [!NOTE]
> If you encounter issues, you can try to uninstall ZLIB from your Vcpkg library.
3. If successful, you will find the VS 2022 solution file in:
```shell
build\OrcaSlicer.sln
```
> [!IMPORTANT]
> Make sure that CMake version 3.31.x is actually being used. Run `cmake --version` and verify it returns a **3.31.x** version.
> If you see an older version (e.g. 3.29), it's likely due to another copy in your system's PATH (e.g. from Strawberry Perl).
> You can run where cmake to check the active paths and rearrange your **System Environment Variables** > PATH, ensuring the correct CMake (e.g. C:\Program Files\CMake\bin) appears before others like C:\Strawberry\c\bin.
> [!NOTE]
> If the build fails, try deleting the `build/` and `deps/build/` directories to clear any cached build data. Rebuilding after a clean-up is usually sufficient to resolve most issues.
Homebrew currently only offers the latest version of CMake (e.g. **4.X**), which is not compatible. To install the required version **3.31.X**, follow these steps:
> If you've recently upgraded Xcode, be sure to open Xcode at least once and install the required macOS build support.
### MacOS Instructions
1. Clone the repository:
```shell
git clone https://github.com/SoftFever/OrcaSlicer
cd OrcaSlicer
```
2. Build the application:
```shell
./build_release_macos.sh
```
3. Open the application:
```shell
open build/arm64/OrcaSlicer/OrcaSlicer.app
```
### Debugging in Xcode
To build and debug directly in Xcode:
1. Open the Xcode project:
```shell
open build/arm64/OrcaSlicer.xcodeproj
```
2. In the menu bar:
- **Product > Scheme > OrcaSlicer**
- **Product > Scheme > Edit Scheme...**
- Under **Run > Info**, set **Build Configuration** to `RelWithDebInfo`
- Under **Run > Options**, uncheck **Allow debugging when browsing versions**
- **Product > Run**
## Linux
Linux distributions are available in two formats: [using Docker](#using-docker) (recommended) or [building directly](#linux-build) on your system.
### Using Docker
How to build and run OrcaSlicer using Docker.
#### Docker Dependencies
- Docker
- Git
#### Docker Instructions
```shell
git clone https://github.com/SoftFever/OrcaSlicer && cd OrcaSlicer && ./DockerBuild.sh && ./DockerRun.sh
```
### Troubleshooting
The `DockerRun.sh` script includes several commented-out options that can help resolve common issues. Here's a breakdown of what they do:
- `xhost +local:docker`: If you encounter an "Authorization required, but no authorization protocol specified" error, run this command in your terminal before executing `DockerRun.sh`. This grants Docker containers permission to interact with your X display server.
- `-h $HOSTNAME`: Forces the container's hostname to match your workstation's hostname. This can be useful in certain network configurations.
- `-v /tmp/.X11-unix:/tmp/.X11-unix`: Helps resolve problems with the X display by mounting the X11 Unix socket into the container.
- `--net=host`: Uses the host's network stack, which is beneficial for printer Wi-Fi connectivity and D-Bus communication.
- `--ipc host`: Addresses potential permission issues with X installations that prevent communication with shared memory sockets.
- `-u $USER`: Runs the container as your workstation's username, helping to maintain consistent file permissions.
- `-v $HOME:/home/$USER`: Mounts your home directory into the container, allowing you to easily load and save files.
- `-e DISPLAY=$DISPLAY`: Passes your X display number to the container, enabling the graphical interface.
- `--privileged=true`: Grants the container elevated privileges, which may be necessary for libGL and D-Bus functionalities.
- `-ti`: Attaches a TTY to the container, enabling command-line interaction with OrcaSlicer.
- `--rm`: Automatically removes the container once it exits, keeping your system clean.
- `orcaslicer $*`: Passes any additional parameters from the `DockerRun.sh` script directly to the OrcaSlicer executable within the container.
By uncommenting and using these options as needed, you can often resolve issues related to display authorization, networking, and file permissions.
### Linux Build
How to build OrcaSlicer on Linux.
#### Dependencies
The build system supports multiple Linux distributions including Ubuntu/Debian and Arch Linux. All required dependencies will be installed automatically by the provided shell script where possible, however you may need to manually install some dependencies.
> [!NOTE]
> Fedora and other distributions are not currently supported, but you can try building manually by installing the required dependencies listed below.
- `-j N`: Limit builds to N cores (useful for low-memory systems)
- `-1`: Limit builds to one core
- `-l`: Use Clang instead of GCC
- `-p`: Disable precompiled headers (boost ccache hit rate)
- `-r`: Skip RAM and disk checks (for low-memory systems)
> [!NOTE]
> The build script automatically detects your Linux distribution and uses the appropriate package manager (apt, pacman) to install dependencies.
> [!TIP]
> For first-time builds, use `./build_linux.sh -u` to install dependencies, then `./build_linux.sh -dsi` to build everything.
> [!WARNING]
> If you encounter memory issues during compilation, use `-j 1` or `-1` to limit parallel compilation, or `-r` to skip memory checks.
---
## Portable User Configuration
If you want OrcaSlicer to use a custom user configuration folder (e.g., for a portable installation), you can simply place a folder named `data_dir` next to the OrcaSlicer executable. OrcaSlicer will automatically use this folder as its configuration directory.
This allows for multiple self-contained installations with separate user data.
> [!TIP]
> This feature is especially useful if you want to run OrcaSlicer from a USB stick or keep different profiles isolated.
### Example folder structure
```shell
OrcaSlicer.exe
data_dir/
```
You don’t need to recompile or modify any settings — this works out of the box as long as `data_dir` exists in the same folder as the executable.
3. Filament (type `filament`). Example: `Generic PLA @Orca 3D Fuse1@.json`
4. Process (type `process`). Example: `0.10mm Standard @Orca 3D Fuse1 0.2.json`
Additionally, there is an overall meta file for each vendor (`Orca 3D.json`).
For easier understanding, let's consider a scenario with a printer manufacturer called `Orca 3D`. The manufacturer offers one printer model called `Fuse 1`, which supports 0.2/0.4/0.6/0.8mm nozzles and common market filaments.
In this case:
- Vendor profile: `Orca 3D`
- Printer profile: `Orca 3D Fuse1`
- Printer variant profile: `Orca 3D Fuse1 0.4 nozzle`
- Filament profile: `Generic PLA @Orca 3D Fuse1@`
- Process profile: `0.20mm Standard @Orca 3D Fuse1 0.4`
The profile name should be same as the filename without the `.json` extension in principal.
5. Process profile: `layer_height` + `preset_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` (`preset_name` typically includes "standard," "fine," "fast," "draft," etc.)
## File Structure and Templates
Profiles should be structured in the following way under the OrcaSlicer installation directory:
```plaintext
resources\profiles\
├── Orca 3D.json
└── Orca 3D\
├── machine\
│ ├── Orca 3D Fuse1.json
│ ├── Orca 3D Fuse1 0.2 nozzle.json
│ └── Orca 3D Fuse1 0.4 nozzle.json
├── process\
│ ├── 0.10mm Standard @Orca 3D Fuse1 0.2.json
│ └── 0.20mm Standard @Orca 3D Fuse1 0.4.json
└── filament\
└── Generic PLA @Orca 3D Fuse1@.json
```
> [!TIP]
> Use short vendor names in filenames to avoid excessive length.
> [!NOTE]
> Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
Template files for profiles are available in:
```shell
OrcaSlicer\resources\profiles_template\Template
```
These templates can be used as a starting point for new printer, filament, and process profiles.
## Filament Profiles
OrcaSlicer features a global filament library called `OrcaFilamentLibrary`, which is automatically available for all printers. It includes generic filaments like `Generic PLA @System` and `Generic ABS @System` etc.
Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
Relationship diagram:
```mermaid
graph TD;
OrcaFilamentLibrary-->Orca_3D_filament;
OrcaFilamentLibrary-->Vendor_A_filament;
OrcaFilamentLibrary-->Vendor_B_filament;
```
> [!IMPORTANT]
> Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
### Adding Filament Profiles to the Global Library
In this section, we will discuss how to add a new filament profile into the global library.
If you want to add a new generic profile into the global library, you need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
The following sample JSON file shows how to create a new generic filament profile `Generic PLA-GF @System` in the global library.
1. The first step is to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. The file name should be `Generic PLA-GF @System.json`. Please note that we leave the `compatible_printers` field empty so that it is available for all printers.
```json
{
"type":"filament",
"filament_id":"GFL99",
"setting_id":"GFSA05",
"name":"Generic PLA-GF @System",
"from":"system",
"instantiation":"true",
"inherits":"fdm_filament_pla",
"filament_type":["PLA-GF"],
"filament_flow_ratio":[
"0.96"
],
"compatible_printers":[]
}
```
2. Register the profile in `resources\profiles\OrcaFilamentLibrary.json`:
```json
{
"name":"OrcaFilamentLibrary",
"version":"02.02.00.04",
"force_update":"0",
"description":"Orca Filament Library",
"filament_list":[
// ...
{
"name":"Generic PLA-GF @System",
"sub_path":"filament/Generic PLA-GF @System.json"
}
]
}
```
3. The last step is to validate the newly added filament profiles see [Validate Profiles](#validate-profiles).
> [!NOTE]
> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
### Adding Filament Profiles to Printer Vendor Library
In this section, we will discuss how to add a new filament profile for a certain vendor.
If you want to add a new filament profile, whether it's a brand new profile or a specialized version of a global filament profile for a given printer, you need to create a new file in the `resources\profiles\vendor_name\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
Below is a sample JSON file showing how to create a specialized `Generic ABS` filament profile for the ToolChanger printer.
Please note that here we must leave the compatible_printers field non-empty, unlike in the global library.
```json
{
"type":"filament",
"setting_id":"GFB99_MTC_0",
"name":"Generic ABS @MyToolChanger",
"from":"system",
"instantiation":"true",
"inherits":"Generic ABS @System",
"filament_cooling_final_speed":[
"3.5"
],
"filament_cooling_initial_speed":[
"10"
],
"filament_cooling_moves":[
"2"
],
"filament_load_time":[
"10.5"
],
"filament_loading_speed":[
"10"
],
"filament_loading_speed_start":[
"50"
],
"filament_multitool_ramming":[
"1"
],
"filament_multitool_ramming_flow":[
"40"
],
"filament_stamping_distance":[
"45"
],
"filament_stamping_loading_speed":[
"29"
],
"filament_unload_time":[
"8.5"
],
"filament_unloading_speed":[
"100"
],
"compatible_printers":[
"MyToolChanger 0.4 nozzle",
"MyToolChanger 0.2 nozzle",
"MyToolChanger 0.6 nozzle",
"MyToolChanger 0.8 nozzle"
]
}
```
> [!NOTE]
> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
## Process Profiles
Process profiles define print quality and behavior. They follow a structure similar to filament profiles:
- A common base file, e.g., `fdm_process_common.json`, acts as the parent.
- Vendor-specific process profiles should inherit from the base using the `inherits` field.
- Profiles are stored under:
```shell
resources\profiles\vendor_name\process\
```
- **There are no global process profiles**.
- Each process profile includes a `"compatible_printers"` field with an array of compatible printer variant names.
Example:
```json
{
"type":"process",
"name":"0.10mm Standard @ExampleVendor Printer 0.2",
"inherits":"fdm_process_common",
"from":"system",
"instantiation":"true",
"compatible_printers":[
"ExampleVendor Printer 0.2 nozzle"
]
}
```
## Printer Model Profiles
- Printer model profiles (type `machine_model`) describe the general printer information.
- Example fields: `nozzle_diameter`, `bed_model`, `bed_texture`, `model_id`, etc.
- Stored in:
```shell
resources\profiles\vendor_name\machine\
```
- Each vendor's folder may contain an image named:
- The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles.
- Used for additional printer-related 3D models or definitions, stored at:
```shell
resources\profiles\vendor_name\model\
```
## Vendor Meta File
```shell
resources\profiles\vendor_name.json
```
Each vendor must include a JSON file in the `resources\profiles` directory, named `vendor_name.json`. This file lists all available models, variants, processes, and filaments:
Example:
```json
{
"name":"ExampleVendor",
"version":"01.00.00.00",
"force_update":"1",
"description":"Example configuration",
"machine_model_list":[
{
"name":"Example M5",
"sub_path":"machine/Example M5.json"
}
],
"machine_list":[
{
"name":"fdm_machine_common",
"sub_path":"machine/fdm_machine_common.json"
}
],
"process_list":[
{
"name":"fdm_process_common",
"sub_path":"process/fdm_process_common.json"
}
],
"filament_list":[
{
"name":"fdm_filament_common",
"sub_path":"filament/fdm_filament_common.json"
}
]
}
```
## Validate Profiles
You can validate your profiles using both the **OrcaSlicer profile validator** and the **Python validation script**. These tools are designed to check different aspects of the profiles, so both should be executed and pass without errors to ensure full compatibility.
> [!NOTE]
> **✅ Recommendation:** Always run **both** the OrcaSlicer validator and the Python script to ensure all aspects of the profiles are valid.
### 1. OrcaSlicer Profile Validator
You can run OrcaSlicer to verify if the filament you just added is available and usable. You can also use the [Orca profile validator](https://github.com/SoftFever/Orca_tools/releases/tag/1) tool to help debug any errors.
> [!IMPORTANT]
> You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your lastest changes.
The process is the same if you want to add a new brand filament profile into the global library. You need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament\brand_name` folder. The only difference is that you should put the file into the brand's own subfolder.
#### Usage
```shell
-h [ --help ]help
-p [ --path ] arg profile folder
-v [ --vendor ] arg Vendor name. Optional, all profiles present in the folder will be validated if not specified
-l [ --log_level ] arg (=2) Log level. Optional, default is 2(warning). Higher values produce more detailed logs.
This guide explains how to contribute to the Orca Slicer wiki.
Orca Slicer uses GitHub's wiki feature, which allows users and developers to create and edit documentation collaboratively.
We encourage all developers and users to contribute to the wiki by updating existing pages and adding new content. This helps keep the documentation up-to-date and useful for everyone.
When developing new features, please consider updating the wiki to reflect these changes. This ensures that users have access to the latest information and can make the most of the features.
- [Wiki Structure](#wiki-structure)
- [Home](#home)
- [Index and Navigation](#index-and-navigation)
- [File Naming and Organization](#file-naming-and-organization)
- [Formatting and Style](#formatting-and-style)
- [Markdown Formatting](#markdown-formatting)
- [Alerts and Callouts](#alerts-and-callouts)
- [Images](#images)
- [Image Naming](#image-naming)
- [Image Placement](#image-placement)
- [Linking Images](#linking-images)
- [Examples](#examples)
- [Avoid the Following](#avoid-the-following)
- [Resize Images](#resize-images)
- [Image Cropping and Highlighting](#image-cropping-and-highlighting)
- [Recommended Formats](#recommended-formats)
- [Structuring Content](#structuring-content)
- [Commands and Code Blocks](#commands-and-code-blocks)
- [External Links](#external-links)
## Wiki Structure
Each wiki page is a Markdown file located in the `doc` directory of the repository. The wiki is organized into various sections, each covering different areas of the project.
### Home
The starting point of the Orca Slicer wiki is the **Home** page. From there, you can navigate to different sections and topics related to the project.
When creating a new page or section, be sure to link it from the Home page under the appropriate category.
- **Print Settings:** Detailed explanations of print settings, tips, and tricks for optimizing print quality.
- **Printer Calibration:** Step-by-step calibration tests in Orca Slicer, including how to interpret the results.
- **Developer Section:** Information for developers and contributors on building Orca Slicer, localization, and developer resources.
#### Index and Navigation
Github Wiki uses the name of the files as identifiers for the pages. To link to a page, use the file name without the `.md` extension.
If the file is inside a subdirectory, dont include the subdirectory in the link. Instead, link directly to the file from the Home page.
For example, if you create a new page `doc/calibration/flow-rate-calib.md`, link it as follows:
```markdown
[Calibration Guide](Calibration)
```
For pages with extensive content, it's helpful to include a table of contents at the beginning. This allows users to quickly find and access different sections of the page.
```markdown
- [Wiki Structure](#wiki-structure)
- [Home](#home)
- [Index and Navigation](#index-and-navigation)
- [File Naming and Organization](#file-naming-and-organization)
- [Formatting and Style](#formatting-and-style)
```
> [!NOTE]
> If you're adding a new section, follow the existing structure and ensure it doesn't already fit within an existing category. Link it from the Home page accordingly.
### File Naming and Organization
When creating new pages, follow these file naming conventions:
- Use unique file names to avoid conflicts.
- Use descriptive names that reflect the page's content.
- Use kebab-case for filenames (e.g., `How-to-wiki.md`).
- If the page belongs to a specific section, include the section name in the file name. For example, calibration pages should end with `-calib.md` (e.g., `flow-rate-calib.md`, `pressure-advance-calib.md`).
- Place files in the appropriate subdirectory when applicable (e.g., `doc/calibration/` for calibration-related content).
## Formatting and Style
Please adhere to the following style and formatting conventions when contributing to the wiki.
### Markdown Formatting
The wiki uses standard Markdown syntax for formatting and aims to maintain a consistent style across all pages. Avoid using raw HTML tags and prefer Markdown formatting instead.
Ensure your indentation is consistent, especially for code blocks and lists.
Refer to the [GitHub Markdown Guide](https://guides.github.com/features/mastering-markdown/) for more information on Markdown syntax.
### Alerts and Callouts
To add alerts or notes, use GitHub’s Markdown alert syntax:
```markdown
> [!NOTE]
> Useful information that users should know, even when skimming content.
> [!TIP]
> Helpful advice for doing things better or more easily.
> [!IMPORTANT]
> Key information users need to know to achieve their goal.
> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.
> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.
```
> [!NOTE]
> Useful information that users should know, even when skimming content.
> [!TIP]
> Helpful advice for doing things better or more easily.
> [!IMPORTANT]
> Key information users need to know to achieve their goal.
> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.
> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.
Refer to the [GitHub Alert Guide](https://docs.github.com/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for more details.
## Images
Images are encouraged to enhance the clarity and quality of the wiki content. They help illustrate concepts, provide examples, and improve readability.
> [!CAUTION]
> Do not use images from third-party sources unless you have the proper permissions.
### Image Naming
- Use clear, descriptive filenames that reflect the image content.
- For section-specific images, include the section name or initials. For example, images related to Pressure Advance could be named `pa-[description].png`.
### Image Placement
- General images should be placed in the `doc/images/` directory.
- Section-specific images should be stored in their corresponding subdirectories (e.g., `doc/images/calibration/` for calibration content).
### Linking Images
Always use raw GitHub URLs for image links to ensure correct display:
Format = `![[filename]](` + Base URL + filename.extension + Raw tag + `)`
- Use annotations like arrows or shapes (circles, rectangles) to highlight key parts—but avoid overloading the image.
### Recommended Formats
- **JPG:** Suitable for photographs. Avoid for images with text or fine detail due to compression artifacts.
- **PNG:** Ideal for screenshots or images with transparency. Ensure sufficient contrast for light and dark modes.
- **SVG:** Preferred when possible. SVGs support theme adaptation (light/dark mode), making them ideal for icons and diagrams.
## Structuring Content
Each wiki page should have a clear objective, which helps determine the structure of the content. After a brief introduction, use one of the following formats:
- **Step-by-Step Guide:** Organize content into sections and subsections for tasks requiring sequential actions (e.g., calibration procedures).
- **GUI-Based Reference:** If sequence isn’t crucial, structure the content following Orca Slicer’s GUI. This format works well for configurable settings or feature overviews.
- Example: Explain **Layer Height** before **Initial Layer Height**, as the former applies globally while the latter is specific to the first layer.
## Commands and Code Blocks
When adding commands or code blocks please use the [Code Block with Syntax Highlighting feature of Markdown](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting).
- Use triple backticks (```) to enclose code blocks.
- Specify the language for proper highlighting and readability.
````markdown
```json
{
"key": "value"
}
```
````
```json
{
"key": "value"
}
```
## External Links
Be careful when linking to external resources. Ensure that the links are relevant and reliable.
Papers, articles, and other resources should be cited properly.
The purpose of this guide is to describe how to contribute to the Orca Slicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations.
Those can be downloaded here:
- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog.
- https://poedit.net PoEdit provides good interface for the translators.
Those can be downloaded here:
- [GNUgettext](https://www.gnu.org/software/gettext/) package contains a set of tools to extract strings from the source code and to create the translation Catalog.
- [PoEdit](https://poedit.net) provides good interface for the translators.
After GNUgettext is installed, it is recommended to add the path to gettext/bin to PATH variable.
Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext/manual/gettext.html
Full manual for GNUgettext can be seen here: [http://www.gnu.org/software/gettext/manual/gettext.html](http://www.gnu.org/software/gettext/manual/gettext.html)
### Scenario 1. How do I add a translation or fix an existing translation
1. Get PO-file 'OrcaSlicer_xx.pot' from corresponding sub-folder here:
3. Select Translation Language (for example French).
4. As a result you will have fr.po - the file containing translation to French.
Notice. When the translation is complete you need to:
- Rename the file to OrcaSlicer_fr.po
- Click "Save file" button. OrcaSlicer_fr.mo will be created immediately
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n, and be pushed
- copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
( name of folder "fr" means "French" - the translation language).
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of [https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n), and be pushed
- copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
( name of folder "fr" means "French" - the translation language).
### Scenario 3. How do I add a new text resource when implementing a feature to Orca Slicer
Each string resource in Orca Slicer available for translation needs to be explicitly marked using L() macro like this:
```C++
auto msg = L("This message to be localized")
```
To get translated text use one of needed macro/function (`_(s)` or `_CHB(s)` ).
If you add new file resource, add it to the list of files containing macro `L()`
### Scenario 4. How do I use GNUgettext to localize my own application taking Orca Slicer as an example
1. For convenience create a list of files with this macro `L(s)`. We have
Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding
Use flag `--debug` to correctly extract formatted strings(used %d, %s etc.)
3. Create PO- and MO-files for your project as described above.
3. Create PO- and MO-files for your project as described above.
4. To merge old PO-file with strings from created new POT-file use command:
```
msgmerge -N -o new.po old.po new.pot
4. To merge old PO-file with strings from created new POT-file use command:
```shell
msgmerge -N -o new.po old.po new.pot
```
Use option `-N` to not using fuzzy matching when an exact match is not found.
5. To concatenate old PO-file with strings from new PO-file use command:
```
msgcat -o new.po old.po
5. To concatenate old PO-file with strings from new PO-file use command:
```shell
msgcat -o new.po old.po
```
6. Create an English translation catalog with command:
```
msgen -o new.po old.po
```
Notice, in this Catalog it will be totally same strings for initial text and translated.
6. Create an English translation catalog with command:
```shell
msgen -o new.po old.po
```
> [!NOTE]
> In this Catalog it will be totally same strings for initial text and translated.
When you have Catalog to translation open POT or PO file in PoEdit and start translating.
## General guidelines for Orca Slicer translators
- We recommend using _PoEdit_ application for translation (as described above). It will help you eliminate most punctuation errors and will show you strings with "random" translations (if the fuzzy parameter was used).
- We recommend using*PoEdit* application for translation (as described above). It will help you eliminate most punctuation errors and will show you strings with "random" translations (if the fuzzy parameter was used).
- To check how the translated text looks on the UI elements, test it :) If you use *PoEdit*, all you need to do is save the file. At this point, a MO file will be created. Rename it Orca Slicer.mo, and you can run Orca Slicer (see above).
- To check how the translated text looks on the UI elements, test it :) If you use_PoEdit_, all you need to do is save the file. At this point, a MO file will be created. Rename it Orca Slicer.mo, and you can run Orca Slicer (see above).
- If you see an encoding error (garbage characters instead of Unicode) somewhere in Orca Slicer, report it. It is likely not a problem of your translation, but a bug in the software.
- See on which UI elements the translated phrase will be used. Especially if it's a button, it is very important to decide on the translation and not write alternative translations in parentheses, as this will significantly increase the width of the button, which is sometimes highly undesirable:

- If you decide to use autocorrect or any batch processing tool, the output requires very careful proofreading. It is very easy to make it do changes that break things big time.
- **Any formatting parts of the phrases must remain unchanged.** For example, you should not change `%1%` to `%1 %`, you should not change `%%` to `%` (for percent sign) and similar. This will lead to application crashes.
@@ -101,4 +109,3 @@ When you have Catalog to translation open POT or PO file in PoEdit and start tra
- If the phrase doesn't have a dot at the end, don't add it. And if it does, then don't forget to :)
- It is useful to stick to the same terminology in the application (especially with basic terms such as "filament" and similar). Stay consistent. Otherwise it will confuse users.
As the name might suggest this class deals with presets for various things. It defines an enum `Type` which basically tells you what kind of data the present contains. Below are a few explained and there corresponding UI elements
#### Note: There is a lot of outdated and legacy code in the code base.
> [!WARNING]
> There is a lot of outdated and legacy code in the code base.
-`TYPE_PRINT`: Refers to a process preset. It's called 'Print' probably due to some legacy code.
There are other preset types but some of them are for SLA. Which is legacy code, since SLA printers are no longer supported. Above 3 are the important types.
This is a bundle containing a few types of `PresetCollection`. One bundle has presets for some printers, filaments and some processes (TYPE_PRINT).
@@ -30,9 +33,10 @@ This is a bundle containing a few types of `PresetCollection`. One bundle has pr
each one of these contains a collection of processes, filaments and printers respectively.\
#### Note: Printers, filaments and processes in the bundle don't all have to be compatible with each other. In fact all the saved presets are stored in one `PresetBundle`. The `PresetBundle` is loaded on start up. The list of filaments and processes shown for a particular printer is a subset of `filaments` and `prints` `PresetCollection`s.
> [!IMPORTANT]
> Printers, filaments and processes in the bundle don't all have to be compatible with each other. In fact all the saved presets are stored in one `PresetBundle`. The `PresetBundle` is loaded on start up. The list of filaments and processes shown for a particular printer is a subset of `filaments` and `prints` `PresetCollection`s.
Refers to the entire application. The whole view, file loading, project saving and loading is all managed by this class. This class contains members for the model viewer, the sidebar, gcode viewer and everything else.
Refers to the various windows with settings. e.g. the Popup to edit printer or filament preset. Also the section to edit process preset and the object list. These 4 are managed by `TabPrinter`, `TabFilament`, `TabPrint` and `TabPrintModel` respectively.
The Slicing logic is not the easiest to locate in the code base. Below is a flow diagram of function calls that are made after clicking the `Slice Plate` button in the UI. Most of the processing happens in different threads. Note the calls after `BackgroundSlicingProcess::start()`, but this is how you can find the slicing logic.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.