Compare commits

..

718 Commits

Author SHA1 Message Date
SoftFever
6ae89f7d9b rename 2DHoneycomb and 2DLattice to LateralHoneycomb and LateralLattice (#10423)
* rename 2DHoneycomb and 2DLattice to LateralHoneycomb and LateralLattice

* more renaming
2025-08-17 23:49:06 +08:00
SoftFever
9e0df24b9a use Ninja for deps build on Mac (#10426) 2025-08-17 14:00:29 +08:00
GlauTech
173788b25c Update TURKISH translations (V2.3.1-alpha) (#10419)
* Valmet filament pla derivative filaments have been added.

Valmet filament pla derivative filaments have been added.

* Update TURKISH translations (V2.3.1-alpha)

* Update TURKISH translations (V2.3.1-alpha)
2025-08-16 22:16:55 +08:00
SoftFever
721ce0cb6d Bump version to 2.3.1-alpha 2025-08-13 00:13:17 +08:00
yw4z
739e4b374e Infill pattern icons improvements / fixes (#10354)
* init

* Update param_quartercubic.svg

* update 2D icons
2025-08-13 00:10:00 +08:00
Maxime3d77
cdb22a3505 Add profiles with pooptool for wanhao d12 (#10321)
* Update Wanhao D12

* update wanhao

* Update D12_texture.svg

* update wanhao

* pixel boot

* add layer

* start

* add multi layer

* m600

* images

* new

* d12 300 plate

* new fix

* m600

* jerk

* area 300

* restore wanhao

* add pooptool v1

* update img to 320x320

* add pooptool for 300 and 500

* update pooptool and end gcode

* Update D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json

* Update D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json

* Update D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json

* Update D12 230 PRO M2 MONO DUAL PoopTool.json

* merge

* printer_setting id

* rename pooptol test

* clean pooptool

* 230 pooptool

* 230 pooptool

* Update Wanhao France.json

* 230 pooptool

* 230 pooptool update

* name 230 pooptool

* 230 clean

* name

* setting clean

* Update D12 230 PRO SMARTPAD MONO DUAL PoopTool 0.4 nozzle.json

* 230 reset

* Update D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json

* name d12

* 230

* Update Wanhao France.json

* 230

* Update Wanhao France.json

* link

* Delete Wanhao France.zip

* end gcode update

---------

Co-authored-by: Xtrack33 <44250528+xtrack33@users.noreply.github.com>
2025-08-12 21:05:06 +08:00
SoftFever
5973cc2fbc Add wonderMaker profiles(on behalf) (#10387)
Add wonderMaker profiles
2025-08-12 20:49:56 +08:00
SoftFever
3d2b332c01 Update default profile folder path for macOS
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.
2025-08-12 20:07:54 +08:00
Jojoistauchdabei
90b59ff7d6 feat: expand Creality Ender-3 V3 KE profile with multiple nozzle diameters and new machine configurations (#10277)
* 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
2025-08-12 00:24:07 +08:00
SoftFever
612d5c42b4 Update localization files with new strings and corrections 2025-08-12 00:20:17 +08:00
Jo Kroese
e5d6de9080 Fix inability to create custom filament due to hidden printer selection checkbox (#10362)
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>
2025-08-12 00:14:18 +08:00
SoftFever
eb92a2ddde Fix focus stealing issue in dialog windows (#9874) (#10374)
Remove RequestUserAttention calls on window deactivation to prevent random window activation when multiple OrcaSlicer instances are running.
2025-08-11 23:49:06 +08:00
SoftFever
05adf5f9c9 Update macOS build script to use Ninja Multi-Config generator (#10377)
* Update macOS build script to use Ninja Multi-Config generator

* fix
2025-08-11 22:35:17 +08:00
Jack Boswell
05181779d1 Update WebView2 to 1.0.3351.48 (#10239) 2025-08-11 13:44:01 +08:00
coryrc
53440fd390 Don't overwrite config if the new one was not successfully written (#10284)
* Don't overwrite config if the new one was not successfully written

The errors weren't being checked, now they are.

Fixes #10283
2025-08-11 09:59:01 +08:00
Ian Bassi
9ae20024aa Wiki Update 10 - Quality (#10301)
* Update quality_settings_wall_generator.md

* Expand layer height wiki

* Rework height

* Update quality_settings_line_width.md

* Update quality_settings_precision.md

* Update quality_settings_seam.md

* Minor linking

* Update quality_settings_wall_and_surfaces.md

* Reverse on odd improved

* Extra perimeter on overhangs

* Images fixes

* Update speed_settings_jerk_xy.md

* quality_settings_ironing

* Update quality_settings_seam.md

* Update quality_settings_bridging.md

* Remove precision sub-section links

* Add icons to settings links in Home documentation

* Moved fuzzy skin

Remove Fuzzy Skin section from special mode settings to it's own place.

* Fix image adaptive-pressure-advance-calib.md

* Update image references

Standardized image alt text and filenames for consistency and clarity.

* Update image alt text and file references in docs

Standardized and clarified image alt text in Calibration.md for easy md to html conversion.

* Update seam

* Base scarf joint seam

* Update quality_settings_seam.md

* Update quality_settings_wall_generator.md

* Update quality_settings_overhangs.md

* Fuzzy Skin Generator Mode Wiki

Co-Authored-By: π² <189209038+pi-squared-studio@users.noreply.github.com>

* Infill Templates Wiki

Co-Authored-By: π² <189209038+pi-squared-studio@users.noreply.github.com>

* basic md formating

* Update infill and advanced strength settings docs

* Moved + Linked Metalanguage

* image preview (change befor ready)

* Update strength_settings_infill_rotation_template_metalanguage.md

* reorder image description

* Some credits

* Spelling infill rotation metalanguage docs

* Crop metalanguage fills

* fix image reference

* Update strength_settings_infill_rotation_template_metalanguage.md

* Update strength_settings_infill_rotation_template_metalanguage.md

* standard characters images

* flow rate update division

* Update Tab.cpp

* Reworking flow rate calibration guide

* Update strength_settings_top_bottom_shells.md

* Flow Calib WIP

---------

Co-authored-by: π² <189209038+pi-squared-studio@users.noreply.github.com>
Co-authored-by: pi-squared-studio <pi.squared.studio@gmail.com>
2025-08-11 09:51:49 +08:00
Rodrigo
202875a4bb TPMS-FK Infill ( Triply Periodic Minimal Surface Fischer Koch S) (#10360)
* seteo inicial

* version inicial

* Update FillTpmsFK.cpp

* marching squares

* Multiline support

* density adjusted

* tuning

cleaning

* symplify points

* optimization

* smoothing

* center offset contour

* icon

* bugfix 1

* reverse tbb scalar field bug fix

* safety

* Update Icon

Co-Authored-By: yw4z <28517890+yw4z@users.noreply.github.com>

* Update FillTpmsFK.cpp

* delete allptpos

---------

Co-authored-by: yw4z <28517890+yw4z@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-08-10 23:10:35 +08:00
SoftFever
2e63ce2196 Disable the Claude Code Review workflow for PRs from forks, as CLAUDE_CODE_OAUTH_TOKEN cannot be retrieved for such PRs. 2025-08-10 18:49:01 +08:00
SoftFever
0ac0263542 Add Claude Code GitHub Workflow (#10368)
* "Update Claude PR Assistant workflow"

* "Update Claude Code Review workflow"
2025-08-10 15:45:08 +08:00
SoftFever
ce67aa43ea Add claude GitHub actions 1754810265440 (#10366)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"
2025-08-10 15:20:23 +08:00
Marek-Dvorny
6f44ca576c Fixed a mistake in Max volumetric flow Wiki (#10339) 2025-08-09 23:54:50 +08:00
Alexandre Folle de Menezes
4cab501f14 Fix inconsistencies on new translated strings (#10310)
* Unmark string that don't need to be translated

* Spellcheck

* Fix calibration strings consistency
2025-08-09 23:52:48 +08:00
Kirill Ziuzin
255d7153f4 feat: add ABS, HIPS, PETG, PLA, SBS, TPU filaments by FDplast (#10346) 2025-08-09 12:02:20 +08:00
innovatiQ
31aa149a1e InnovatiQ additional material (#10295)
* Added InnovatiQ Vendor Files

* Cover image corrected

* Corrected Texture Image

* Support Interface Pattern modified

* Fix file name casing

* Added new filament(PETG)

---------

Co-authored-by: MohanS <sibi.mohan@innovatiq.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Ashidsha Jaleel <JaA0@germanreprap.local>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-08-09 11:07:36 +08:00
SoftFever
aacbcab468 Allow default_bed_type to be defined in machine profile
update some profiles
2025-08-09 10:51:00 +08:00
Noisyfox
b84fe5561a Update BBL network plugin to 2.1.1 which allows debugger again (#10320)
* 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
2025-08-05 22:57:41 +08:00
Ian Bassi
f4d2d050f5 Wiki Update 9 - Speed (#10173)
* 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>
2025-08-05 22:57:00 +08:00
SoftFever
f27a40d29b Remap filament for pre-colored models (#10303)
* 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
2025-08-03 13:28:03 +08:00
SoftFever
e5ea789b89 Fix broken freetype-2.12.1.tar.gz link 2025-08-02 17:23:26 +08:00
Ian Bassi
b16d3a2f4a Fix Ironing/Support patterns (#10278)
NoisyGoat

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-08-02 10:59:01 +08:00
GuoGeTiertime
468c8492b6 Add 0.6/0.8 nozzle for tiertime printer. (#10264) 2025-08-01 11:42:46 +08:00
SoftFever
dc3da3df8f Revert "Stagger concentric infill seams. (#6184)"
This reverts commit 0286c36f42.
2025-07-30 23:33:35 +08:00
SoftFever
13bd1a4d68 Revert "Refactor stagger concentric seams (#6432)"
This reverts commit bd8c2ffaeb.
2025-07-30 23:33:21 +08:00
Noisyfox
282cdd111a Avoid cross perimeter improvements ported from BBS (#10220)
* FIX: fix avoid crossing perimeters not work[github issue #6597]

jira: STUDIO-11682

github: #6597

Change-Id: Ib86fac93280504e0040f1cce44dad4d02f709c01
(cherry picked from commit 35afceb9a7f4e5a3baba97f054d0e6768e4f59cf)

* FIX: optimize avoid crossing wall

jira: STUDIO-11682

Change-Id: I49b6756a5d3aeb482c019813074d8f6f9cc3c6ef
(cherry picked from commit e9b7006db994d78b9153dedfd0f89447c941cb76)

* Sync with latest BBS code

---------

Co-authored-by: huicong.li <huicong.li@bambulab.com>
2025-07-30 21:42:39 +08:00
SoftFever
c86eb27675 Fix a bug where the maximum line width limit is inconsistent across different checks.
Fixes #10188
2025-07-30 21:22:40 +08:00
Ian Bassi
3f1e4ca55a Wiki Update 8 - Lorita (#10094)
* 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>
2025-07-30 00:15:18 +08:00
Kirill Ziuzin
d93671bbc7 feat: add ABS, PLA, PETg filaments by NIT (#10205)
* feat: add ABS, PLA, PETg filaments by NIT

* feat: Set value of default_filament_colour to empty string
2025-07-30 00:12:38 +08:00
SoftFever
8f3ed9bc7b Introduce a new seam alignment option: Aligned back (#10255)
* Introduce a new seam alignment option: spAlignedBack.
2025-07-29 21:11:35 +08:00
SoftFever
4cdbe5fa30 fix an issue that OrcaSlicer_profile_validator for Mac was not published to nightly build 2025-07-27 22:04:09 +08:00
Simon
7bf79a1a6c Prevent collision: end load line at X(old+5) to avoid nozzle scratching (#10193)
End load line at X(old+5) top prevent drip collision
2025-07-27 16:49:34 +08:00
Rodrigo
42e820e505 Bug fix: avoid crossing perimeters (#10185)
* avoid crossing perimeters

avoid crossing perimeters

Timelapse issue

Update GCode.cpp

Update GCode.cpp

Update GCode.cpp

Update GCode.cpp

* Update GCode.cpp

* Update GCode.cpp

Update GCode.cpp

* Update GCode.cpp

Update GCode.cpp

* Replace tab with space

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-27 16:13:36 +08:00
Robert M Lugg
3461577d57 correct winget command --e (#10198)
winget seems to accept -e or --exact.  Modified README.md to use --exact.
2025-07-27 09:24:09 +08:00
Heiko Liebscher
f51b887928 fix / add de locale (#10236)
* fix many stings

* fix
2025-07-27 08:59:42 +08:00
SoftFever
0cd3030c53 include OrcaSlicer_profile_validator in nightly build (#10233)
* include OrcaSlicer_profile_validator in nightly build

* build OrcaSlicer_profile_validator on Win

* create dmg
2025-07-27 00:13:30 +08:00
SoftFever
c7e66637f9 udpate locale 2025-07-26 15:08:54 +08:00
SoftFever
611e1f7718 add CLAUDE.md 2025-07-26 15:08:48 +08:00
SoftFever
40123e1c0d Adjust the CAUTION format to make it more visible, as there are more fake websites claim to be official (#10230)
Update README.md
2025-07-26 09:36:56 +08:00
SoftFever
6996d317df update readme 2025-07-26 00:19:54 +08:00
Noisyfox
85e66de431 Do not connect to default BBL device during app startup (#10214)
* 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>
2025-07-26 00:18:56 +08:00
SoftFever
68110eeecc Feature/add_snapmaker_u1_profiles (#10225)
* add snapmaker u1 profiles

* tweak some parameters for U1
2025-07-25 22:25:28 +08:00
π²
1ef427f661 Add template metalanguage support for infill rotation template (#9996)
* 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>
2025-07-25 20:29:08 +08:00
π²
3d16c7f4c8 Feature: Fuzzy Skin Extrusion Mode (#9878)
* 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>
2025-07-25 15:36:18 +08:00
Ian Bassi
43a84842e8 Disable resonance avoidance in calibration routines + Calibration Reorder (#10174)
* Disable resonance avoidance in calibration routines

* Reorder Calibrations

* Moved Tolerance to Handy Models
2025-07-25 15:21:22 +08:00
Jack Boswell
c8a27715a9 Replace DEPS_BITS with DEPS_ARCH (#10183)
* Replace DEPS_BITS with DEPS_ARCH

* Restore missing DEP_MSVC_GEN

* STREQUAL

* STREQUAL

* Other cmakelists

* webview2 rename
2025-07-23 19:17:05 +08:00
InnovatiQ
7f27c9b37b InnovatiQ Vendor Addition (#10163)
* Added InnovatiQ Vendor Files

* Cover image corrected

* Corrected Texture Image

* Support Interface Pattern modified

* Fix file name casing

---------

Co-authored-by: MohanS <sibi.mohan@innovatiq.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-22 19:49:17 +08:00
Noisyfox
daeedc51a3 Fix build issue caused by renamed fill pattern (#10197)
Fix issue caused by renamed fill pattern
2025-07-22 16:44:09 +08:00
Ian Bassi
bb5dbd7bfd Fix ubuntu build - Continous appimagetool (#10190)
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
2025-07-22 08:50:39 +08:00
Ian Bassi
c8b3899c5e New Fill & Patterns Order (#10055)
* New Fill Order

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

* Reorder Wiki

* Support infills grouped

* Update old rectilinear profiles into new ZigZag algorithm.

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Renaming compatibility fix + Rename Wiki

Co-Authored-By: SoftFever <softfeverever@gmail.com>

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-07-21 23:08:43 +08:00
KrisMorr
16d7a1458f Update OrcaSlicer_pl.po (#10186) 2025-07-21 23:00:18 +08:00
SoftFever
823d27b128 VOLUMIC profils updates v0.36 (#10086)
Machines added
Machines updated
Materials updated
Optimisations
2025-07-21 22:45:06 +08:00
SoftFever
69520bdf97 Merge branch 'main' into main 2025-07-20 21:00:39 +08:00
Noisyfox
e44ec1f27b Update 3mf key for fuzzy skin painting to match BBS (#10169) 2025-07-18 16:09:34 +08:00
Noisyfox
50e64d5961 Add fuzzy skin painting (#9979)
* 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>
2025-07-18 16:01:25 +08:00
Noisyfox
c00502638c Add ironing fan speed control (#9944)
* Internal bridge fan speed should be applied only if overhang bridge fan control is enabled

* Reduce duplicate code

* Add ironing fan speed control
2025-07-18 16:01:15 +08:00
mosfet80
46c0f19cc9 Update unordered_dense.h (#10101)
* Update unordered_dense.h

update lib version from 3.1.1 to 4.5.0

changelog:
https://github.com/martinus/unordered_dense/releases

* Update README.txt
2025-07-18 15:51:40 +08:00
krmz-krmz
11e2c054d0 add user name placeholder (#10109)
* Add user name placeholder

* non-ASCII character support

* fix: Explicitly include <boost/nowide/cstdlib.hpp>
2025-07-18 15:43:46 +08:00
discip
46af00aa01 hide Reverse threshold when not editable (#10161)
* make **`Reverse threshold`** inactive when **`Reverse only internal perimeters`**  is activated

* Update ConfigManipulation.cpp

* 100%% => 100%

Also fixed a typo along the way.
2025-07-18 14:06:48 +08:00
Andy
41659bcfda Update OrcaSlicer_ru.po (#10077)
Improving translation, correcting errors.
2025-07-18 07:52:23 +08:00
Kappa971
365376ec2e Update Italian translation (#10142) 2025-07-18 07:50:54 +08:00
shimmyx
521d2470eb Add CR10 V3 (Marlin) Profile to Orcaslicer (#10122)
* Update Creality.json

Added Creality CR-10 V3, 0.4 and 0.6 nozzles

* CR10 V3 /profiles/creality

CR10 V3 Image cover, buildplate model, buildplate texture

* CR10 V3 /profiles/creality/process

CR10 V3 Process files

* CR10 V3 /resources/profiles/Creality/machine

CR10 V3 machine files, 0.4, 0.6 nozzle

* Update Creality CR-10 V3 0.4 nozzle.json

Fixed typo

* Update Creality Generic ABS.json

* Update Creality Generic ASA.json

Add CR-10 V3

* Update Creality Generic PETG.json

* Update Creality Generic ABS.json

* Add CR10 V3

* Add CR10 V3

* Add CR10 V3

* Add CR10 V3

* Add CR10 V3

* Fix missing nozzle size

* Fix nozzle size missing

* Update 0.20mm Standard @Creality CR10V3 0.6.json

Fixed naming

* Update 0.20mm Standard @Creality CR10V3 0.4.json

* Update Creality CR-10 V3 0.6 nozzle.json

* Update Creality CR-10 V3 0.4 nozzle.json

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-18 07:49:50 +08:00
EmilVitus
571adb9a3f Fixed error in Anycubic Kobra 2 0.4 nozzle.json (#10128)
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.
2025-07-18 07:48:28 +08:00
Noisyfox
18f17a10c9 Fix issue that clicking paint gizmos while mouse is hovering above the model, view panning doesn't work (#10164)
Fix issue that clicking paint gizmos while mouse is hovering above the model, view panning doesn't work.

The issue was introduced in #8776.
2025-07-18 07:31:14 +08:00
Pepe-Polymaker
821e5ac597 Add more Polymaker filaments to Global Library and BBL (#10152) 2025-07-17 23:16:45 +08:00
yw4z
e9e069c167 Styling management for buttons and matching all button styles (#8184)
* Add button styling

* Fix dark mode compability

* printable area button

* Connection dialog icons

* Add aligment control

* Fix alignment

* add new styles

* Update BedShapeDialog.cpp

* Use darker text color on dark mode

* update code

* Update

* update

* Update

* Update WipeTowerDialog.cpp

* update

* Update Button.cpp

* update

* Update Button.cpp

* add enums for style and type

* update

* Update Button.cpp

* fix

* update

* Update DialogButtons.cpp

* Update UnsavedChangesDialog.cpp

* update

* update

* update

* Update Button.cpp

* cleanup

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-17 20:44:45 +08:00
VOLUMIC
83f578ae50 Merge branch 'main' into main 2025-07-17 13:14:18 +02:00
Maxime3d77
37d8bec3e1 Add official profiles for Wanhao Duplicator D12 Series (230/300/500 – Bowden/Direct – M2/SmartPad) (#9614)
* Update Wanhao D12

* update wanhao

* Update D12_texture.svg

* update wanhao

* pixel boot

* add layer

* start

* add multi layer

* m600

* images

* new

* d12 300 plate

* new fix

* m600

* jerk

* area 300

* restore wanhao

* add pooptool v1

* update img to 320x320

* add pooptool for 300 and 500

---------

Co-authored-by: Xtrack33 <44250528+xtrack33@users.noreply.github.com>
2025-07-17 15:43:51 +08:00
Vlad
203dfa1b84 Improving Z-Bolt Profiles (#10017)
* bugfixes (tree supports, dual wipe, travel speed)

* Update fdm_process_zbolt_common.json

* S800 Dual profiles added

* S1000 profiles added

* Dual printers layer change bugfix

* Max layer for 06 nozzle bugfix

* 0.4-0.48 layers slicing bugfix

* First layers budfix

---------

Co-authored-by: zavodik <zavodva@gmail.com>
2025-07-17 15:41:20 +08:00
Ian Bassi
5202fe30ea Improved New ZAG infills SVGs (#10066)
* Improved New ZAG infills SVGs

* Improve Dark mode
2025-07-17 15:30:22 +08:00
KIMDONGYEON00
a729d7ce35 Security Fix : CVE-2024-45492 in libexpat library. (#10141)
CVE-2024-45492
2025-07-17 15:28:29 +08:00
yw4z
0726819547 Color & Icon fixes / improvements (#9773)
* init

* update

* update

* revert changes for stepmesh dialog

* make highlight arrow more obvious

* reset to zero icons

* modernize return icon

* better dark mode icon for project page

* fix return arrow

* revert changes for hyperlinks

* update

* Update SelectMachine.cpp

* Update SendToPrinter.cpp

* update

* update plate icons

* dragcanvas dark mode support

* revert changes for calibration page

* revert changes for bind dialog

* Update BindDialog.cpp

* fix green text on bbl calibration window

* Update AmsMappingPopup.cpp

* match measure axis color

* fix

* update

* Update AmsMappingPopup.cpp

* revert color change for hyperlink

* Update NotificationManager.cpp

* update

* add icon for resonance avoidance

* update

* Fix wrong icon color after switching dark mode

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-17 15:26:55 +08:00
Ian Bassi
3e186d2393 Fix firware to firmware typo (#10014) 2025-07-17 11:20:00 +08:00
Alexandre Folle de Menezes
fd0d716f53 Standard units don't need translation, part 2 (#9974)
* Revert unit change made by mistake, and fix some unit translations

* Fix the declaration of untranslated Unicode strings
2025-07-17 09:48:29 +08:00
Noisyfox
03d25c97b4 Skip the layer initial travel properly in vase mode (#10135)
Skip the layer initial travel properly in vase mode (SoftFever/OrcaSlicer#10072)

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2025-07-14 21:21:40 +08:00
Ian Bassi
f45155a966 Enable ironing and shell options for spiral vase mode (#10115)
* Enable ironing and shell options for spiral vase mode

Co-Authored-By: Kaarel Pärtel <kaarelp2rtel@gmail.com>

* Remove boolean

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

* Tab fix

* bool has_top_shell

* Fix some missing toggle lines

* Update Fill.cpp

* unnecessary check.

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

---------

Co-authored-by: Kaarel Pärtel <kaarelp2rtel@gmail.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-14 21:17:13 +08:00
Rodrigo
bf52f5b4bf Handy Models geometry improvement. (#10092)
* helper disk by code

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Torus

Delete torus.stl

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* traingle count tunning

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Update TriangleMesh.hpp

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* adjusting disk diameter

---------

Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-13 22:07:55 +08:00
Michele Stefanelli
65e3bcc183 Add Multimaterial "ramming parameters" to Prusa MK4/MK4S filament profiles (#10006)
* 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>
2025-07-13 22:07:18 +08:00
Michele Stefanelli
686a9bd44a Ramming config improvements to enable support for Prusa MMU3 (#9935)
* 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>
2025-07-13 20:10:42 +08:00
yw4z
b410154cb3 Improvements / Fixes for RadioGroup and apply to more windows II (#10089)
* init

* Fix issue that `Button` is not focusable on Linux

See: https://github.com/SoftFever/OrcaSlicer/pull/10089#issuecomment-3065050902

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-12 19:26:47 +08:00
Ian Bassi
eba08bf727 Wiki Update 7 (#10007)
* 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>
2025-07-08 08:53:53 +08:00
VOLUMIC
41000db5bc Create desactive.json 2025-07-07 12:29:33 +02:00
VOLUMIC
c6399f6ee0 Delete Desactive.json 2025-07-07 12:29:06 +02:00
VOLUMIC
dbc6cb74b6 VOLUMIC profils update (v0.36) 2025-07-07 12:15:58 +02:00
VOLUMIC
f595f40d1d Merge branch 'SoftFever:main' into main 2025-07-07 12:12:11 +02:00
SoftFever
b785f40fb0 Support latest BambuLab P/X/A firmwares & AMS 2/HT (#9517)
# How to download this
To download the latest test version of this PR, click the "Checks" tab
on top of this page, then click "Build All", then you will find the
latest build:

![image](https://github.com/user-attachments/assets/48bd3d59-941b-48d8-a004-8e8944a31984)

![image](https://github.com/user-attachments/assets/82945f81-2d31-4962-9307-c9a74975aba4)


-----------------


# About this PR

An option has been added in preference to toggle between the new network
plugin and the legacy one:

![image](https://github.com/user-attachments/assets/1b059f60-cd53-40b4-9415-d786048f41ba)


By default it uses the legacy network plugin, which does not come with
the authentication feature. You can use it if your printer is on an old
firmware and do not need to use the new AMS 2 pro/HT etc.

To support the new AMS 2 or if you just decided to update to the latest
firmware, uncheck this option and restart Orca, which will tell it to
use the latest bambu network plugin. I don't have X1/A1 so I could not
test it to see if you could still use the BambuCloud print with the new
plugin, or maybe you have to switch to Lan/Dev mode. However cloud print
does still work for P1 with firmware 1.8.0.




![image](https://github.com/user-attachments/assets/35ffd8bf-90b7-4ef3-8e6f-edd7f8cafadb)

![Image](https://github.com/user-attachments/assets/b3b43bc1-6aa2-4b1f-acd2-ebe0f0123dc9)

![image](https://github.com/user-attachments/assets/8f880110-83ea-4e1f-bddc-ebd0afde2f82)

![image](https://github.com/user-attachments/assets/44915c4b-f02a-4ae3-9466-dc533c047702)


Other updates:

- [x] Support print all plates for P1P/P1S
- [x] Support showing humidity percentage
- [x] Support showing info of AMS 2 pro
- [x] Work with AMS HT properly
- [x] Show AMS temp & drying
2025-07-06 16:28:02 +08:00
yw4z
c4e8b26f17 Dialog for Clone (#9897)
* init

* update

* Update CloneDialog.cpp

* fix focus
2025-07-06 11:34:47 +08:00
SoftFever
0fa846823a Merge branch 'main' into dev/bbl-network-upd 2025-07-05 19:02:11 +08:00
Rodrigo
ea7cfbc050 Multiline infill support for 2D lattice and 2DHoneycomb patterns (#10060)
* 2d Laticce multiline

Update FillRectilinear.cpp

* Optimize remove overlapp

* 2D Honeycomb multiline

* Calculate distance at midpoint
2025-07-05 18:42:28 +08:00
Jessy LANGE
e348923283 GUI: Add filament notes to material selector tooltip (#10051)
* 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
2025-07-05 00:29:47 +08:00
SoftFever
7f8f807500 Fixed an issue that Orca won't run if multi-Config generator is used on Linux(Fedora) 2025-07-04 23:02:24 +08:00
SoftFever
a332167e5a add clang support on Linux 2025-07-04 23:02:24 +08:00
SoftFever
b39893078a Fix error for Clang 20 2025-07-04 23:02:24 +08:00
Jack_up
da2d2a07b5 Updated the documentation on how to build OrcaSlicer (#10026)
* 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
2025-07-04 23:01:50 +08:00
Rodrigo
f8ef9bc363 Small improvement of tpmsd infill (#10049)
* 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
2025-07-04 14:09:44 +08:00
Rodrigo
a8141ef360 Infill Line Multiplier (#9432)
* 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>
2025-06-30 23:07:33 +08:00
SoftFever
10687085ee Fix an issue that Orca rebuilds every time. (#10033)
remove SLIC3R_BUILD_TIME as it cause rebuild everytime
2025-06-30 23:05:53 +08:00
Ian Bassi
3f7d5b85fd Enable toggling of surface density and overlap options (#10013)
* 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>
2025-06-29 23:03:01 +08:00
Jack_up
cc3a3fcd76 added skin_infill_line_width and skeleton_infill_line_width to fix Ginger Additive profiles (#9994)
* 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
2025-06-28 10:51:24 +08:00
Jack_up
a8f1220f19 fix: Set the default value for the skeleton infill width to 0 fork sk… (#9995)
* 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%
2025-06-28 10:49:29 +08:00
Ian Bassi
c2eda0b0fa Wiki Update 6 (#9952)
* Add process images

* Reorder like GUI + images

* GUI images subfolder

* MVF restandarizarion (naming pending)

Update volumetric speed calibration docs and image paths

* Improved SVGs

* Infill Wall Overlap

* Apply gap fill + Anchor

* Minor change

* Internal Solid Infill

* Images++

* Step file import image update

* Add VFA calibration documentation and images

* fix pa-tower image not visible

* Removed WIP in not implemented features.

* Added Old and New Order in xlsx

* Wall generator

* Wiki #9924

* New Zag Infills

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

* Infill Rescaled images + sharpness

2d honeycomb image fix

* Update infill_desc_calculator.xlsx

* Rename extrusion rate smoothing references for consistency

* Add wiki and link for top/bottom shells settings

* Updated Wiki Links tab.cpp

* Update infill_desc_calculator.xlsx

* Fix indentation in top/bottom shells option group

* Fill images optimized

Removed Metadata
Reduce color bit to 16

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
2025-06-27 21:20:25 +08:00
Ian Bassi
d80bb1cfc9 Fix typos in infill rotation tooltips (#9986)
Corrected duplicated word 'all' in the tooltips for sparse and solid infill rotation parameters.
2025-06-25 19:47:18 +08:00
VOLUMIC
e276e15b1b Merge branch 'main' of https://github.com/VOLUMIC/OrcaSlicer 2025-06-25 11:25:46 +02:00
VOLUMIC
414c8a36e4 VOLUMIC profils updates 2025-06-25 11:24:49 +02:00
VOLUMIC
aeea69706e Merge branch 'SoftFever:main' into main 2025-06-25 11:21:44 +02:00
Noisyfox
9988d0a1f8 Merge branch 'main' into dev/bbl-network-upd 2025-06-25 08:49:55 +08:00
Kiss Lorand
5707f8f4a5 Swap pan and rotate mouse buttons (#9972)
* Swap pan and rotate buttons

* Add translation
2025-06-24 23:41:41 +08:00
yw4z
bec5d9ea57 Fixes for LabeledStaticBox & Height Range UI (#9991)
init
2025-06-24 22:29:30 +08:00
Eryoneoffical
9d79eefc28 Optimize the default settings for the printer Eryone X400 (#9879)
* 1) Optimize some default settings for printer Thinker X400,  2) adding eryone filament

* fix the file check error

* recover and modify the process files( 0.12 0.16 0.24mm layer profile)
2025-06-24 10:26:11 +08:00
kris buggenhout
9be13033a0 fix for printer time estimate on anker/eufy M5 M5C printers (#9990)
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.
2025-06-24 09:03:35 +08:00
Noisyfox
168dd08042 Fix load step as modifier (#9946)
Fix load step as modifier (SoftFever/OrcaSlicer#9940)
2025-06-23 22:28:55 +08:00
Rodrigo
392a3dd7ab Fillgyroid Bug Fix (#9975)
Bugfix Fillgyroid
2025-06-23 20:42:12 +08:00
yw4z
661d7b88da Fix notification position on scaling (#9982)
Update NotificationManager.cpp
2025-06-23 17:00:42 +08:00
Noisyfox
3696d43590 Fix invalid value for symmetric_infill_y_axis (#9983) 2025-06-23 16:53:35 +08:00
Jonathan Dyrekilde Sommerlund
51d844af2c Top/bottom surface pattern density (#9783)
* 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>
2025-06-23 10:28:21 +08:00
SoftFever
88fb8187d9 Allow specifying rotation patterns for Sparse and Solid infill (#9924)
* 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>
2025-06-22 23:10:35 +08:00
Alexandre Folle de Menezes
fa70582ed1 Standard units don't need translation (#9965) 2025-06-22 15:10:40 +08:00
Rodrigo
bd1281954d Better TpmsD infill implementation (#9966)
Better TpmsD implementation

Better TpmsD

Density Adjusted
2025-06-22 13:52:12 +08:00
Noisyfox
6ed9b08173 Link libspnav statically (#9964)
* Link libspnav statically

* Find static libspnav

* Force linking libspnav.a
2025-06-21 19:08:59 +08:00
Noisyfox
d60fcb0d11 Merge branch 'main' into dev/bbl-network-upd
# Conflicts:
#	src/slic3r/GUI/SelectMachine.cpp
2025-06-21 10:27:10 +08:00
Noisyfox
7cbd0d2b74 Remove classic overhang speed code (#9934)
* Remove code related to classic overhang speed

* Remove `overhang_degree` and `curve_degree`
2025-06-20 23:01:09 +08:00
Jack_up
dec21efe7f Fix: DockerBuild.sh script (#9958)
* Aggiungi eccezione per build_linux.sh nel file .dockerignore

* Aggiungi sezioni di risoluzione dei problemi per lo script DockerRun.sh

* fix: typo
2025-06-20 21:47:16 +08:00
Jack_up
5c42b396e0 Add check for obsolete keys in profiles (#9955)
* 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
2025-06-20 21:38:02 +08:00
yw4z
8aec3f69e5 Remove usage of titlebar icons (#9932)
* ibit

* update

* Update RecenterDialog.cpp

* Update AboutDialog.cpp
2025-06-20 16:52:15 +08:00
Ian Bassi
4ec16fd714 Wiki Update part 5 (#9873)
* 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>
2025-06-20 10:19:48 +08:00
Vlad
3e3a07a5b8 Adding printers Z-Bolt S800 Dual, Z-Bolt S1000 and Z-Bolt S1000 Dual (#9953)
* fix: tree supports, dual wipe, travel speed

* Add printers Z-Bolt S800 Dual, Z-Bolt S1000 and Z-Bolt S1000 Dual
2025-06-20 10:05:48 +08:00
Noisyfox
b9cce6c179 Ironing support interfaces (#9548)
* 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
2025-06-19 15:19:05 +08:00
Michele Stefanelli
961b73c6be Reduce printers images size using lossless compression and adjusting resolution (#9936)
* Performed lossless compression on prusa images

* Reduce excessive size of images to be 320px

* compressed sovol png (lossless)
2025-06-19 09:03:44 +08:00
Noisyfox
d4536fae9c Merge branch 'main' into dev/bbl-network-upd 2025-06-18 20:51:14 +08:00
Noisyfox
fe4a72ec94 Upgrade clipper & improve multi-thread performance (#7177)
* 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>
2025-06-18 17:50:44 +08:00
GlauTech
95b4334bf7 Valmet filament pla derivative filaments have been added. (#9913)
Valmet filament pla derivative filaments have been added.
2025-06-18 09:04:55 +08:00
Henk
0010dc6bb4 Add 2D honeycomb infill pattern (#9483)
* Add 2D honeycomb infill pattern

* Reverted change of 2D lattice infill void area estimation

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-18 08:48:48 +08:00
Noisyfox
a136ba1837 Merge branch 'main' into dev/bbl-network-upd 2025-06-17 20:43:27 +08:00
xin.zhang
f62e9a71e2 FIX: do not popup for AMS1
jira: [STUDIO-12083]
Change-Id: Id2297576fa2b520282d8e4ce9af8e47817fc7088
(cherry picked from commit 8d29e09c1b8c1b9598f869235e99038d48b1bffc)
2025-06-17 20:41:42 +08:00
Simone
dd6b0fb793 Fix character spacing issue in GCODE preview for Italian (#9778) (#9914) 2025-06-17 20:36:04 +08:00
Noisyfox
1aee8a0783 Don't split tiny cracks on first layer (#9917)
Don't split tiny cracks on first layer to get an uninterrupted bottom surface
2025-06-17 19:22:16 +08:00
Ioannis Giannakas
5041e0772e Disable detect thin wall for VFA test (#9912) 2025-06-16 22:11:26 +08:00
Noisyfox
043abb4389 Merge branch 'main' into dev/bbl-network-upd 2025-06-16 14:02:04 +08:00
EpiphanyPrinting
3a81a8f358 Adds resonance avoidance ported from qidi slicer (#9403)
* Update tab.cpp for resonance avoidance

* update files for resonance avoidance

updated gcode.cpp, gcode.hpp, preset.cpp, printconfig.cpp, printconfig.hpp to add resonance avoidance. Based on qidi slicer changes.

* Update README.md

* Update README.md

* Update Tab.cpp

* Update Preset.cpp

Updating code comments

* Update PrintConfig.cpp

* Update PrintConfig.hpp

* Update .gitattributes

* Remove carriage return

* Update doc

* Move resonance avoidance settings to printer settings

* Disable resonance avoidance by default

* Update options

---------

Co-authored-by: Paul Mourer <paul.mourer@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-16 13:14:00 +08:00
Vovodroid
b259ee22b3 Disable SAFC and retract for Hilbert curve (#9592)
* SAFC flow for rectilinear/monotonic only and Hilbet curve retract

* Refactor

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-15 20:50:34 +08:00
Bernhard Koppensteiner
52e4d2af82 High Flow Profiles for MINIIS; minor Profile Tweaks for MK3.5 and MINIIS (#9485)
* 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>
2025-06-15 19:44:39 +08:00
dremc
d8683fc045 add filament_vendors:DREMC (#9519)
* Update CreatePresetsDialog.cpp

* Update generate_presets_vendors.py
2025-06-15 19:41:46 +08:00
Rodrigo
1471276580 TPMS-D Infill ( Triply Periodic Minimal Surface D) (#9613)
* Fill TPMS-D

limpieza

* delete unused function

* cleaning

* Icon update

* fix missing header

* density Adjusted

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Improve Precision +  refactoring

clean tpms.hpp

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

---------

Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-15 19:38:54 +08:00
Alexandre Folle de Menezes
e13ec786d5 Fix english strings punctuation mistakes (#8901)
* 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
2025-06-15 16:12:03 +08:00
Noisyfox
c72e8a24f1 Merge branch 'main' into dev/bbl-network-upd
# Conflicts:
#	src/slic3r/GUI/SelectMachine.cpp
2025-06-15 15:28:10 +08:00
lodriguez
be3bbfa39e remove OSMesa (#9708)
* 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>
2025-06-15 14:53:42 +08:00
anjis
ecfe53e488 The multi-color printing wipe tower now includes the Bambu RIB wall feature (#9881)
* 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>
2025-06-15 14:53:35 +08:00
Vasily Khoruzhick
b72e28c116 Various flatpak fixes and improvements (#9527)
* 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>
2025-06-15 12:10:51 +08:00
Dipl.-Ing. Raoul Rubien, BSc
6da7fe62a2 Fixes, refactors and enhances Linux build-scripts (#8269)
* 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)
2025-06-15 00:41:20 +08:00
_mightyMax147
153c478c35 Add Phrozen Arco machine profiles and bed plate assets (#9486)
* 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>
2025-06-14 21:26:07 +08:00
Dipl.-Ing. Raoul Rubien, BSc
3ecca6116d fixes compiler warnings (#9619)
* compiler warnings: adds SYSTEM to [target_]include_directories to skip warnings originating from dependencies

* compiler warnings: uninitialized/unused variables, missing parenthesis, pragma

* compiler warnings: redundant template type, missing curly braces, pass 0 instead of NULL as int argument

* compiler warnings: removes fclose(fp) where fp==nullptr since fclose() has attribute __nonnull((1))

* compiler warnings: uninitialized variables, missing parentheses, missing curly braces

* compiler warnings: ? as lower precedence than <<

* compiler warnings: unused variable

* compiler warnings: unused result

* compiler warnings: undefined/unused variable

* compiler warnings: uninitialized variable
2025-06-14 21:05:25 +08:00
yw4z
9569841091 Ramming dialog improvements & add step control for SpinInput class (#9651)
* 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>
2025-06-14 15:19:25 +08:00
Noisyfox
13e4b54754 Merge branch 'main' into dev/bbl-network-upd 2025-06-14 11:49:30 +08:00
Noisyfox
ec44768eb9 Fix staticbox content margin on macOS (#9901) 2025-06-14 11:32:31 +08:00
yw4z
0999cb057d DialogButtons fixes and apply to more windows (#9809)
* step import dialog

* update

* update

* drop file dialog

* Update UnsavedChangesDialog.cpp

* update

* fix focus

* Update CreatePresetsDialog.cpp

* improve usage of return button

* fix first button not getting hover effects

* update

* update

* improve button styles

* update button events

* update button events

* update button events

* remove Raise()
2025-06-14 10:27:10 +08:00
Noisyfox
d0bf8746d0 Merge branch 'main' into dev/bbl-network-upd 2025-06-14 09:52:33 +08:00
Ian Bassi
33dc7bc1f2 Wiki Update part 4 (#9872)
* How to wiki

* Local images + pressure-advance realocation

* fill patterns WIP

+ Patch Until they fix this: https://github.com/orgs/community/discussions/118296

* Wiki images update 8fff1ca

Updated images with new style from commit 8fff1ca (pr: #9797)

* Internal Wiki Links + standardization

* Update Flow Calibration image

Co-Authored-By: Dowsha3d <216038220+dowsha3d@users.noreply.github.com>

* Seam wiki merge

* Updated Wiki Home

* MD Final lines

* How to index

---------

Co-authored-by: Dowsha3d <216038220+dowsha3d@users.noreply.github.com>
2025-06-13 23:09:05 +08:00
zefir-o
25785abfe0 Generate GCode for skirt prior wipe tower. (#9885) 2025-06-13 14:24:26 +08:00
Ian Bassi
f44e90b884 Transparent printers (#9888) 2025-06-13 14:23:47 +08:00
Ondřej Bartas
db926cd9f4 Fix Voron profile printable_height value (#9889)
fix Voron printable_height
2025-06-13 14:21:13 +08:00
yw4z
8fff1caa39 Class for RadioGroup & LabeledStaticBox and improvements for Calibration Dialogs, Windows with wxStaticBoxSizer (#9797)
* update

* Update calib_dlg.cpp

* Update LabeledStaticBox.hpp

* Update calib_dlg.cpp

* update

* update

* RadioGroup fix

* update

* update

* update

* update

* RadioGroup

* Fix render issue when position is set to default (-1)

* Fix macOS render issue by removing default NSBox border

* Fix compile

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-12 20:15:02 +08:00
Ondřej Bartas
5c2fe4da87 fix BBL bed_model stl hacks (#9882) 2025-06-12 18:11:52 +08:00
yw4z
a60b65367a Use proper case for "return" (#9831)
init
2025-06-10 09:42:06 +08:00
Ian Bassi
3b2fa4469a Wiki fix images and links (#9858)
* Fix Wiki Links

Co-Authored-By: StdVectorBool <4926951+StdVectorBool@users.noreply.github.com>

* Fix Wiki images

* Chamber temp Wiki update

---------

Co-authored-by: StdVectorBool <4926951+StdVectorBool@users.noreply.github.com>
2025-06-10 09:02:19 +08:00
Ocraftyone
15f0d2a514 Remove CORES env variable from devcontainer (#9662) 2025-06-08 18:06:59 +08:00
Brian Schmidt Pedersen
e52eb480d6 Transparent versions (#9771)
Replaced FLSun T1 and S1 cover images with transparent versions from FLSunSlicer.
2025-06-08 18:06:05 +08:00
Michele Stefanelli
5a173bb1c4 Improve printers pictures and sorting (prusa printers) (#9824)
* 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
2025-06-08 18:04:04 +08:00
Noisyfox
b2ed8ff53e Remove sensitive data in 3mf files (#9825)
* Do not store BBL user id in 3mf file

* Do not store creation & modification date in 3mf file
2025-06-08 17:55:15 +08:00
Ian Bassi
4e59b0abc6 Wiki + Readme: MD security and improvements (#9807)
* Wiki + Readme: MD, security and improvements

Standardized MD GitHub Wiki format
Removed outdated and malicious links
Modularized calibrations
Suggested calibration order added
Minor bug fixes
Image improvements and corrections
Added winget commands
Completed previous WIPs
Added new WIPs
Removed obsolete references
Visual Changes

Co-Authored-By: Noisyfox <timemanager.rick@gmail.com>
Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-Authored-By: Nico Domino <7415984+ndom91@users.noreply.github.com>
Co-Authored-By: Martin Ulmschneider <7497782+mulmschneider@users.noreply.github.com>
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>

* MD Indentation + images update

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: Nico Domino <7415984+ndom91@users.noreply.github.com>
Co-authored-by: Martin Ulmschneider <7497782+mulmschneider@users.noreply.github.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
2025-06-08 11:11:43 +08:00
Noisyfox
0242e9462b Fix error when drag-n-drop a file from network location to home screen (#9821)
Fix error when drag-n-drop a file from network location to home screen on Windows
2025-06-07 17:38:23 +08:00
yw4z
4b893b40a1 wxDataViewCtrl fixes (#9818)
* init

* update
2025-06-07 17:15:41 +08:00
Simone
8b1277b554 Update Italian translations for clarity and accuracy (#9804)
improving Italian translation
2025-06-07 12:19:26 +08:00
Noisyfox
7f8f36bf40 Fix crash on Linux when you searched the placeholder in gcode editor dialog (#9815)
Fix crash on Linux when you searched the placeholder in gcode editor dialog (SoftFever/OrcaSlicer#5671)
2025-06-07 11:03:25 +08:00
Jack_up
3900042280 Update dev docs (#9383)
* 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
2025-06-05 16:17:56 +08:00
John Parton
9bf5cf0fb9 Use backticks instead of single quotes on code example in README.md (#9728)
Instructions for building on Ubuntu used single quotes. Changed to use backticks so that Github applies the `code` style
2025-06-04 17:09:16 +08:00
Gabriel Janucik
dec18f5c70 Update Adventurer3 machine start g-code.json (#9726) 2025-06-04 17:08:07 +08:00
Noisyfox
b3598ea3cc Add missing close tag in MacOSXBundleInfo.plist.in (#9799) 2025-06-04 17:00:47 +08:00
GuoGeTiertime
83b28ff2d6 add profiles of tiertime printer (#9739)
* add profiles of tiertime printer

* Fix: correct filament name(300HS)

* add Tiertime as prefix for all generic filament.
2025-06-04 11:32:41 +08:00
yw4z
dd549a6c52 class for DialogButtons (#9639)
* init

* match code

* update

* Update DialogButtons.hpp

* make Ok uppercase

* update

* fix and cleanup

* Update DialogButtons.cpp

* update

* Update DialogButtons.cpp

* update

* Update CreatePresetsDialog.cpp

* update

* update

* update
2025-06-04 09:30:36 +08:00
Sebastian Kuzminsky
91ffc79c7b better version check in linux build script (#9496)
* 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.
2025-06-02 23:11:19 +08:00
Frank Pian
f978a584fe Revert #6867: remove bambustudioopen:// protocol on Mac (#9680)
Fix link redirection defaulting to Orca
2025-06-02 23:03:53 +08:00
Lee Jong Mun
32aa040287 kor translation update (#9756)
* kor translation update
2025-06-02 22:40:37 +08:00
Heiko Liebscher
90e00eec66 Add new de lang (#9716)
* fix de

* Merge remote-tracking branch 'upstream/main' into add_new_de_lang

* Merge branch 'main' into add_new_de_lang
2025-06-02 22:38:41 +08:00
Noisyfox
7d7308feb2 Log network msg 2025-06-02 21:20:43 +08:00
Noisyfox
aac6e2a3d0 Fix potential crash during calib 2025-06-02 19:18:11 +08:00
xin.zhang
57e5f5c4c4 FIX: wrong update info about AMS1
jira: [STUDIO-9089]
Change-Id: I7ce5b1069abddd8aaa187ade03d0271b0b16dc9e
(cherry picked from commit 032b34eded21f452535086f672dd408200461d5a)
2025-06-02 19:11:23 +08:00
Stone Li
40be2d5ef0 ENH: format to utf8 when parse_json failed
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)
2025-06-02 18:58:47 +08:00
Noisyfox
81c14f60b6 Remove unused code 2025-06-02 18:57:51 +08:00
楼兰碎叶
522aa8e585 Update OrcaSlicer_zh_CN.po (#9746)
* Update OrcaSlicer_zh_CN.po
2025-06-02 17:13:03 +08:00
楼兰碎叶
21f25b9365 Update OrcaSlicer_zh_CN.po (#9745)
* Update OrcaSlicer_zh_CN.po

add some chinese translate item
2025-06-02 17:11:22 +08:00
noisyfox
fc33a680d1 Add debugger detector for Linux 2025-06-02 16:48:58 +08:00
Noisyfox
1441da246b Add debugger detector for macOS 2025-06-02 16:17:11 +08:00
tao wang
e8f5b374b2 ENH:support u0 firmware homing
jira:[none]

Change-Id: I9533944c343007897d25929739e5eb175bad6689
(cherry picked from commit 533911e2cd46fadc92bd7d908e81ad51ce14944c)
2025-06-01 23:39:42 +08:00
tao wang
50fe1f7312 NEW:use new homing command
jira:[none]

Change-Id: I9d60d0b5c2d0e2cf7ac5c5e4b0dbcf2daf6edbb1
(cherry picked from commit 9dce95d401e8333077db63dbad57bda837d0ce19)
2025-06-01 23:38:27 +08:00
felix-ebbe
736da49da4 updated Anycubic Kobra S1 cover to png with no background (#9776) 2025-06-01 22:54:20 +08:00
Noisyfox
b01ccc8def Merge branch 'main' into dev/bbl-network-upd 2025-06-01 22:51:13 +08:00
Noisyfox
340da6fa85 Fix event table baseclass error (#9777) 2025-06-01 22:49:54 +08:00
Noisyfox
beaaa09f2f Fix project info editor dark mode text color (#9775) 2025-06-01 21:37:53 +08:00
Noisyfox
9444d61bb6 Merge branch 'main' into dev/bbl-network-upd 2025-06-01 19:33:39 +08:00
Alexandre Folle de Menezes
b8c5ddd0ee Fix the spelling/grammar on the original english strings (#9487)
* Fix the spelling/grammar on english strings

* Fix the spelling/grammar on english strings, part 2
2025-06-01 19:32:36 +08:00
Alexandre Folle de Menezes
a2f87dc980 Fix casing issues on the original english strings (#9513)
* Use lowercase after comma

* Use uppercase after period
2025-06-01 19:31:55 +08:00
Nanashi
be7312f153 Remove dead (unsafe) Orcalibrate link (#9761)
* Remove dead (unsafe) link

Removed as noted in <https://github.com/SoftFever/OrcaSlicer/issues/9731>

* Add new calibration site link

* remove link entirely as per conversation with @ianalexis

Related to https://github.com/SoftFever/OrcaSlicer/pull/9761
2025-06-01 19:28:23 +08:00
twonfi
50fb11dddc add official Twitter/X account in security alert (#9734)
* add official Twitter/X account in security Alert

account mentioned on https://orcaslicer.com

* fix quotes
2025-06-01 19:27:06 +08:00
Noisyfox
3d64af917a Merge branch 'main' into dev/bbl-network-upd 2025-06-01 19:25:21 +08:00
kfbest
63bca8ab64 Additional Model metadata - Description (#9398)
* starting to add description field to GUI

* additional work to add GUI

* make a multi-line entry

* Remove building of non-mac

* fix tag collision

* debugging suggestions from CoPilot

* yet another debug suggestion

* Fix build with Xcode 16.3

* Simplify OpenVDB patch, from 930c3acb8e (diff-bc3061cc2fe6c64a3d67c8350330bb3a530d01037faace6da27ad9a12aa03e29)

* Fix CGAL header under clang 19
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281880

* Fix compile error due to removal of base template for `std::char_traits` in clang 19
https://releases.llvm.org/19.1.0/projects/libcxx/docs/ReleaseNotes.html#deprecations-and-removals

* Update Auxiliary.cpp trying to prevent crash

* Add files via upload

* from other branch

* rolling back changes

---------

Co-authored-by: Kaleb Best <kalebbest@MacBook-Air.local>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-01 18:35:48 +08:00
Maciej Lisiewski
5df4275c18 Make it easy to pass extra build args to deps and orca in BuildLinux.sh (#9648) 2025-06-01 15:41:19 +08:00
yw4z
895b21fb2b Fix scaling on Plates toolbar for Windows (#9674)
Update GLCanvas3D.cpp
2025-06-01 15:40:44 +08:00
Ian Bassi
9565f39c7a Fix #9439 - IS Calib - Use default Filament MVS (#9703)
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>
2025-06-01 13:38:09 +08:00
Ian Bassi
6423d521cd Fix Line Infill with no anchor (#9768)
* Fix Line Fill with no anchor

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

* Disable anchor option for Line Infill

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

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Henk <40023052+elektrohenk@users.noreply.github.com>
2025-06-01 13:34:44 +08:00
wrathernaut
17586cf0a1 simplified model and corrected part origin- taz4/5 (#9658) 2025-06-01 13:31:50 +08:00
BelligerentBash
c0da25f036 Fix 9620 (#9717)
* fix #9620

* fix-9620

* fix-9620
2025-06-01 13:31:19 +08:00
Noisyfox
4ae4634976 Fix tree support bed exclusion area calculation (#9633)
Fix tree support bed exclusion area calculation (SoftFever/OrcaSlicer#9624)
2025-06-01 13:18:03 +08:00
yw4z
c93e321ef0 Fix scaling on SideButton (#9673)
* Update MainFrame.cpp

* fix scaling on gap
2025-06-01 13:16:51 +08:00
yw4z
23ee612c03 Fix scaling on about dialog (#9672)
* Update AboutDialog.cpp

* Update AboutDialog.cpp
2025-06-01 13:00:05 +08:00
Fei Deng
9d1ab72c29 Turn on Elegoo Centauri Carbon aux fan to help cool the build plate when using a cool plate (#9676)
turn on aux fan to help cool the build plate when using a cool plate
2025-06-01 12:58:54 +08:00
Noisyfox
26306d586a Fix H2D AMS humidity display 2025-05-31 18:57:19 +08:00
Noisyfox
49ae4ab8f7 Update OrcaArena vendor name in file names 2025-05-27 10:33:07 +08:00
Noisyfox
2dacde5b3b Rename fdm_process_bbl_ to fdm_process_single_ 2025-05-27 10:32:03 +08:00
Noisyfox
7ecd3e7f0c Reorganize bbl printer profiles 2025-05-27 10:14:34 +08:00
Noisyfox
659a65f27f Force using local camera view for H2D if legacy network plugin is used 2025-05-26 20:02:16 +08:00
Noisyfox
6b9ce834e1 Fix text alignment of storage page error message 2025-05-26 17:54:10 +08:00
Noisyfox
5335357f4c ENH:optimization of select machine page
(cherry picked from commit bambulab/BambuStudio@9afe123026)

---------

Co-authored-by: tao wang <tao.wang@bambulab.com>
2025-05-26 17:41:58 +08:00
chunmao.guo
06cc09b62a FIX: wxMediaCtrl2 on macOS error code
JIRA: STUDIO-8945
Change-Id: I03d6f7bcb7f3032dd269fc60202aca86bedfef18
(cherry picked from commit 0e1b399859a60075b46878bc3560df87c66b2092)
2025-05-26 14:43:32 +08:00
tao wang
54748aee1c ENH:Support more SD card states
jira:[for sdcard]

Change-Id: Ic09198a0ed357f827768ed2f8d8a9ed6266f749f
(cherry picked from commit c877405caba2b75c515c814b7aaa0793200eee04)
2025-05-26 14:41:43 +08:00
xin.zhang
f970bf8160 FIX: add some dark mode images
jira: [STUDIO-9654]
Change-Id: I89c8efcd95e7b326c4e9ecff76a10c1813e018ea
(cherry picked from commit 10ea0696c613340cc54e3245678e7e4605d19f4f)
2025-05-26 10:44:54 +08:00
xin.zhang
add22fb695 FIX: update the images
jira: [STUDIO-9581]
Change-Id: I1cea4547d9b436ca29932d0d5724dedf42eadc8f
(cherry picked from commit 09a6a3695be229f655adbb10b820134d4922479e)
2025-05-26 10:44:37 +08:00
chunmao.guo
062d922beb FIX: liveview_remote protocol missing agora
Change-Id: If3a46c67e139e3abc47dc672e32246eb6b59f9fd
Jira: STUDIO-10041
(cherry picked from commit 71d9d8969e4bf502adaa56f165fc857be7fe6f5a)
2025-05-26 10:16:32 +08:00
tao wang
5246fc4c0c ENH:fet the correct Agora status
jira:[none]

Change-Id: Ic779e41f0b652212aa8e4ce016cfe1ef2aba3608
(cherry picked from commit 1c1b366d0035298b387fbeb3a7ee69ef4afb8e2d)
2025-05-26 10:14:39 +08:00
Noisyfox
057ba55c87 Fix crash when attempt to start remote live view for H2D 2025-05-26 09:55:56 +08:00
zhimin.zeng
aebd2f5305 FIX:k value is set to default value when editing k value on printer
jira: STUDIO-10120
Change-Id: I6c67efb77ca681aab510399031deed7faa473713
(cherry picked from commit 7380ee0a2c488bc5b206f4f6462e81ff744cc8d2)
2025-05-25 20:32:53 +08:00
zhimin.zeng
8579885e8e FIX: FIX cali protocol
add extruder_id for start_cali and add protection for setting_id
jira:none

Change-Id: Idd8eeaa38c618c0ef8db10064d3e4d9793487aa6
(cherry picked from commit 9097efd8699b93d1d8a128eadf55a9252fa728ad)
2025-05-25 20:32:16 +08:00
zhimin.zeng
d613662ef7 FIX: Calibration adaptation encryption
jira: none
Change-Id: Ie42da224ca02261b0c32262be895c215878b7921
(cherry picked from commit 7498d6e5f89751d4f576ba073485238baba53d0f)
2025-05-25 20:29:53 +08:00
liz.li
23c148fb74 ENH: o series don't show ams hub
jira: STUDIO-8568

Change-Id: I298e026f70211595ca58c69c6345961dbc64e350
(cherry picked from commit a6c29c3ad0a3030f3be90af58f1689bb1b28ab37)
(cherry picked from commit 8b6f1612d819b47114449648578e6d07c6699016)
2025-05-25 20:29:53 +08:00
tao wang
6fca6f527c ENH:support new chamber temper protocols
jira:[none]

Change-Id: Id068b7144eacd03da342a15468d998b80f3cb8f2
(cherry picked from commit 17e0490337b61d0c38d8c17a56ac97c3d4a9034e)
2025-05-25 19:13:07 +08:00
Noisyfox
4909c517d1 Merge branch 'main' into dev/bbl-network-upd 2025-05-25 17:01:04 +08:00
Noisyfox
61aa5d2c09 Sync AMS lite render code from BBS 2025-05-25 17:01:13 +08:00
Noisyfox
59c2a453ab Fix H2D AMS render 2025-05-25 16:45:31 +08:00
Noisyfox
67ccaa3f6c Fix crash when H2D is present 2025-05-25 14:38:40 +08:00
lodriguez
4545132a0d Fix deferred URL not cleared properly (#9711)
* Fix deferred URL not cleared properly

ensure the deferred URL is fully cleared after use

* cleared properly in load_url too
2025-05-25 00:45:12 +08:00
Noisyfox
09d309ee9c Make sure filament_id is not longer than 8 chars if the filament can be set in AMS (#9574)
Make sure `filament_id` is not longer than 8 chars if the filament is compatiable with AMS
2025-05-25 00:06:07 +08:00
Noisyfox
6e47c0c175 Fix issue that filament is rolled back and forth when click ams slots 2025-05-24 23:23:42 +08:00
Noisyfox
65936b34c1 Fix crash when using old firmware 2025-05-24 18:37:35 +08:00
Noisyfox
0d61ae87ed Fix typo 2025-05-23 15:31:09 +08:00
Noisyfox
e6eb80e003 Use Orca color scheme for machine selection dialog 2025-05-23 15:25:55 +08:00
Noisyfox
56b6e0742e Fix AMS HT filament road rendering
(cherry picked from commit bambulab/BambuStudio@afbf3cf197)

---------

Co-authored-by: tao wang <tao.wang@bambulab.com>
2025-05-23 10:11:26 +08:00
Noisyfox
625a946e25 FIX:update load/unload command for n3s
(cherry picked from commit bambulab/BambuStudio@fc32042639)

---------

Co-authored-by: tao wang <tao.wang@bambulab.com>
2025-05-22 21:54:15 +08:00
Noisyfox
b5c164fae6 Fix crash when switching between printers with different AMS configs 2025-05-22 18:03:20 +08:00
Noisyfox
b88b1e4819 Fix AMS HT display if it's the only AMS
(cherry picked from commit bambulab/BambuStudio@a182fa1aa4)

---------

Co-authored-by: tao wang <tao.wang@bambulab.com>
2025-05-22 17:51:48 +08:00
Noisyfox
4339bd308e Ensure log is flushed so we could know what happened before crash 2025-05-22 17:03:09 +08:00
Noisyfox
8b43ecca30 Fix AMS HT slot render alignment 2025-05-21 23:18:54 +08:00
Noisyfox
4425f91caa Fix AMS update 2025-05-21 21:18:53 +08:00
Noisyfox
cee7041b4d Clean up code 2025-05-21 16:25:48 +08:00
Noisyfox
3b3406a375 Rename AmsCans to AmsItem 2025-05-21 15:56:41 +08:00
Noisyfox
d654408bed Rename AMSItem to AMSPreview 2025-05-21 10:46:28 +08:00
xin.zhang
9c8736f416 FIX: fix the json assert
jira: none
Change-Id: I0d17ef2e8474e84397c92ecd7868c6313bb8c9f7
(cherry picked from commit ec2412ddec0fd9d21a004f231154bec28d3107f8)
2025-05-20 20:32:47 +08:00
xin.zhang
87c0719b32 FIX: update the time shown; keep the val update while popup
jira: [STUDIO-9268]
Change-Id: I0b743ddb0ae479f9baad6239f68861a199681cda
(cherry picked from commit e1bc737d1cbc1dcf79ceecf9ed301a4a02590d5a)
2025-05-20 11:52:06 +08:00
xin.zhang
502cee88ee FIX: fix the bg painting
jira: [none]
Change-Id: Id3183ceb93850992cff9834d0141874e33594d35
(cherry picked from commit 0d480b3f6e4e71baae7787802b30c0d572e1ba9d)
2025-05-20 11:48:47 +08:00
xin.zhang
0b98094dac FIX: The humidity popup with humidity_percent/temperature/dry_time
jira: [STUDIO-9268]
Change-Id: Ic6e923ae7cff56fa3e053d48e5dea6e393cd41eb
(cherry picked from commit 75da1db2f926125a0cb3595a8cae9f4d7588c6a8)
2025-05-20 11:48:15 +08:00
xin.zhang
e924a04fb8 FIX: add translate key
jira: [STUDIO-10586]
Change-Id: Ice409b9459230254bbaaa4f706761d6927d8bdf8
(cherry picked from commit 5509447a6d500142ef3d078773678e37ba2f03e0)
2025-05-20 11:33:17 +08:00
xin.zhang
6c9cbfc848 FIX: the translation problem
jira: [STUDIO-10531]
Change-Id: I59b12a4efe181a98093bbbd5d3c341613609fc8e
(cherry picked from commit 379e6314367a82a4e065f02355b853c4e068e75d)
2025-05-20 11:32:34 +08:00
xin.zhang
b051870245 FIX: support more device components
jira: [STUDIO-9275]
Change-Id: I8105828183d42496eed77793daa1c1a618e252bf
(cherry picked from commit 478fc597c4b0f054c93bef954f3ca1054111b4b3)
2025-05-20 10:55:48 +08:00
Noisyfox
917b638227 Adjust spacing 2025-05-20 10:48:19 +08:00
Noisyfox
575d543299 Fix AMS panel colour 2025-05-19 23:52:33 +08:00
Noisyfox
5f989c81d1 Port BBS AMSHumidity 2025-05-19 23:37:10 +08:00
Noisyfox
e3ffc39316 Display correct AMS type 2025-05-19 23:10:16 +08:00
Myles Berueda
00277ac4b0 fix(coreone): adds printer structure (#9679) 2025-05-19 16:30:20 +08:00
xin.zhang
2a19372ca0 FIX: update the display of AMSHumidity
jira: [STUDIO-10119]
Change-Id: I7a1be57bd0dff13be149d6450b36fb54ffa9521d
(cherry picked from commit c3a8690987005e0f53bbd5f9622a670e76bed93a)
2025-05-19 11:04:15 +08:00
Noisyfox
80b234a369 Preparing for AMS drying support 2025-05-19 11:04:14 +08:00
tao wang
8a7fa6918d FIX:fixed obtaining incorrect bits
jira:[none]

Change-Id: I27a4ae24870276912b69fad1c0285889e749030b
(cherry picked from commit 207d81c76933c5cf2fe2d28ed70ab2d246af2615)
2025-05-19 11:04:14 +08:00
tao wang
1556523ca1 FIX:Fix the display issue of uncalibrated AMS
jira:[for uncalibrated ams]

Change-Id: I02e3f3548750fd0bd61d64e36a535a0f83371e98
(cherry picked from commit f08d40b42a8193123bdba559cb8eade5ff062b4a)
2025-05-19 11:04:13 +08:00
tao wang
60ac0a514e ENH:adjust the parsing of ams info data
jira:[none ]

Change-Id: I8e5125ae313b48b3f64fe59ae45ee7b437a0119f
(cherry picked from commit c38074d3cdc38f8e676a443f23b20d9477facea9)
(cherry picked from commit c8ce030bd2de6b54a79e218d6073164956f6f0b9)
2025-05-19 11:04:12 +08:00
Noisyfox
6c22b0c86f Update plugin version in PresetUpdater 2025-05-19 10:54:38 +08:00
Noisyfox
9711b65736 Only download ARM version when not using legacy plugin 2025-05-19 10:51:55 +08:00
lane.wei
a67436ee7e FIX: app: fix the crash issue on win-7 again
jira: no-jira
Change-Id: I96e713513270270db3abcfdd67792b0a3ac92619
(cherry picked from commit caff5d9f38cdb962ca4069f8b0b5696d140aac6d)
2025-05-19 09:58:52 +08:00
lane.wei
85bce2ac33 FIX: app: fix the issue on win-7
use typedef instead of IsWow64Process2

jira: no-jira

Change-Id: I3d5c4becca1586094b6950431470b12bd71a0056
(cherry picked from commit c34e985f188c206d588ee8da7149ded2516981cf)
2025-05-19 09:58:46 +08:00
lane.wei
2d7259623f FIX: fix studio not launch issue on windows-7
jira: no-jira
Change-Id: I531e009c0547d3a5d86d48e990d930eb8fa6ba00
(cherry picked from commit 3d02f03ef4ba229ebf9e28cd99a5d871916994dd)
2025-05-19 09:58:06 +08:00
lane.wei
285bbeceb7 FIX: GUI: use another api to get process type
jira: no-jira
Change-Id: I43fb1738b9b0173704c17c0d92df06f3c78fcde6
(cherry picked from commit af8926ea396480ea06222d421a2ecb704df04218)
2025-05-19 09:56:56 +08:00
lane.wei
ebc072b141 ENH: init: output the process architecture when init
jira: no-jira
Change-Id: Id5acb828269565945d887c6de4e32d715f83f503
(cherry picked from commit a29cb80bc7f959b5df44238a0a7f0a08948ff2a3)
2025-05-19 09:54:24 +08:00
lane.wei
aec877c7e0 FIX: gui: fix the crash issue on arm64 plateform
jira: no-jira
Change-Id: Ib95ffc3ceb421af345418d73af0261d3c25464a3
(cherry picked from commit 132d87b687f4b3bd016539380d7e9268d817ac40)
2025-05-18 22:47:42 +08:00
lane.wei
c0ba405a64 ENH: GUI: rename win_arm64 to windows_arm
jira: no-jira
Change-Id: I01eeb96efb06ec779f1338d1207f7f6641c2bc58
(cherry picked from commit bbf32fd6f7ffbf543c28882ff3801108942fb399)
2025-05-18 22:47:18 +08:00
lane.wei
320cd87f0b ENH: GUI: add arm64 check logic for windows
jira: no-jira
Change-Id: Ic788d4ae9218b909eae5ce571d4436c39e77230a
(cherry picked from commit 323184e42c5f85c8738b03b890e5aaf3818e8858)
2025-05-18 22:46:50 +08:00
lane.wei
7af9802688 ENH: gui: add win_arm64 support
jira: no-jira
Change-Id: I43f66be1f264434a9bb26a9dd3fff1fb5c36d57c
(cherry picked from commit 659f758e451d20d3a6c5505a2530be578dd584dd)
2025-05-18 22:46:00 +08:00
xin.zhang
1f2b320b94 FIX: display fault in dark mode about AMS
jira: [STUDIO-8964]
Change-Id: If2785b3bf6b8067f87eef610af548abbe841603a
(cherry picked from commit b22618db87c0bfdd4b36f108c258342a9db550d0)
2025-05-18 17:14:59 +08:00
liz.li
58c2ee4f06 FIX: ams_id out of bounds crash
jira: none

Change-Id: Icfc5555e4772cd70a9f018f0c734e2edb8b7d626
(cherry picked from commit aa03f489dcc6bd737d2d12c53adfb90a01270d66)
2025-05-18 16:49:33 +08:00
liz.li
1f41e18d7f ENH: support dynamic size ams panel list in upgrade panel
jira: none

adjust accessories display text

Change-Id: I1de6872325b17bd5cfb11e750608d5f420055ee4
(cherry picked from commit 6ba1518c24b4dcba01eabb6d1d0ce3a0ce69576c)
2025-05-18 16:42:19 +08:00
tao wang
21c69a99e6 ENH:show n3f/n3s version info
jira:[for n3s]

Change-Id: Ia0056dfdf7157036008cc63a37c9fd8076063a6a
(cherry picked from commit a44ff5a95a6774b4eed1238bde12d0a750c24a10)
2025-05-18 16:35:09 +08:00
Noisyfox
eba2e0af78 Update transition_tridid to support newer ams 2025-05-18 16:32:09 +08:00
tao wang
fd5b6f88ab FIX:support show n3f ams in mapping popup
jira:[for n3f ams]

Change-Id: I619010de072df1635e1bb39b694c7a0e0a7c127a
(cherry picked from commit 46efe1542742fbc43e0f60ea385aadad39d08353)
2025-05-18 16:23:58 +08:00
Noisyfox
54d6f9f0de Fix nozzle target temp display 2025-05-18 14:59:08 +08:00
Maciej Lisiewski
c6b8664c8e Fix building with cmake 4.x on Arch (#9644)
* 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
2025-05-17 23:36:39 +08:00
Noisyfox
05a0703120 Merge branch 'main' into dev/bbl-network-upd
# Conflicts:
#	src/slic3r/GUI/SelectMachine.cpp
2025-05-17 00:22:09 +08:00
Vovodroid
778deab033 Correct repair menu message (#9468) 2025-05-16 23:54:10 +08:00
Noisyfox
a91fa2a40c Brim ear updates model object in real-time (#9625)
* ENH:Brim ear updates model object in real-time

jira: studio-8687 8683
Change-Id: Ic730957bf8c1e96c0464791cce60cb097d1a4dc9
(cherry picked from commit af174cb8b64e870929f926d3957d3471d0b09e29)
(cherry picked from commit a1037509aef57b2276bba3ddcab33a6bfeebf87a)

* Fix build error

---------

Co-authored-by: Mack <yongfang.bian@bambulab.com>
2025-05-16 23:52:48 +08:00
Noisyfox
294d07a2a0 Fix several crash when build in debug mode (#9650)
* Fix crash when open bed shape dialog.

DO NOT USE `auto` FOR EIGEN EXPRESSION RESULT!

* Fix assertion failure when switching printer models
2025-05-16 23:49:19 +08:00
yw4z
b7e0abc5f5 Bed shape dialog improvements (#9569)
* init

* reduce changes

* Update BedShapeDialog.cpp

* update
2025-05-16 23:49:07 +08:00
Maciej Lisiewski
2490564f7f Fix building with GCC 15 (#9643)
* 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
2025-05-16 23:48:59 +08:00
FlashforgeUser
9110dd51dc Add Flashforge printer profile for Adventurer 5X, Guider 4 and Guider 4 Pro. (#9646)
* Add Flashforge printer profile for Guider 4 and Guider 4 Pro.

* Add Flashforge printer profile for Guider 4 and Guider 4 Pro.

* Add Flashforge printer profile for Guider 4 and Guider 4 Pro.

* Add Flashforge printer profile for Adventurer 5X, Guider 4 and Guider 4 Pro.
2025-05-16 20:46:57 +08:00
Alexandre Folle de Menezes
57a6f61349 Fix the spacing on the original english strings (#9596)
* 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
2025-05-16 16:31:58 +08:00
Vlad
020d31d600 Improved Z-Bolt profiles (#9502)
fix: tree supports, dual wipe, travel speed
2025-05-16 09:42:44 +08:00
Dipl.-Ing. Raoul Rubien, BSc
7c76bb754a adds libspnav-dev dependency to linux.d/debian (#9498)
* linux.d/debian: adds libspnav-dev dependency; enables spacemouse support

* linux.d/arch: adds libspnav dependency; enables spacemouse support

* linux.d/fedora: adds libspnav-devel dependency; enables spacemouse support
2025-05-16 09:37:52 +08:00
AMstuff
95e96712f1 flatpak: update libspnav to version 1.2 (#9511) 2025-05-16 09:36:37 +08:00
Noisyfox
ff9ce434a2 Fix preview gcode misalignment caused by placeholder postprocess (#9529)
* Fix layer number placeholder process

* Fix gcode move id misalignment when M73 is disabled

* Fix gcode move id misalignment when M73 is enabled
2025-05-16 09:28:30 +08:00
Aerospacesmith
dfdf9a3159 Fix Elegoo Centauri Carbon layercount gcode (Really this time) (#9630)
* Update fdm_machine_ecc_common.json

* Update Elegoo Centauri Carbon 0.4 nozzle.json
2025-05-15 14:30:05 +08:00
xin.zhang
b998ddd1bd FIX: fix the humidity display of N3S_AMS
jira: [STUDIO-10641]
Change-Id: I48ac96443f851262b3ce720d4b4948b7b515a381
(cherry picked from commit 51042edcbdc1d8d24c11fa8a479559d4fd000fc7)
2025-05-15 13:35:07 +08:00
xin.zhang
8f143a1764 FIX: the humidity display
jira: [STUDIO-10481]
Change-Id: Ib4bec6db6afbe40199c401c539b13a0e8459bbad
(cherry picked from commit 658a8ab7ef1d2149fee58b45ea9455bb188f82f0)
2025-05-15 13:35:06 +08:00
Noisyfox
795945376c Fix external spool filament settings 2025-05-14 21:29:12 +08:00
Noisyfox
1c58c933e2 Add missing print params 2025-05-14 20:39:27 +08:00
Noisyfox
7a548ca7fb Merge branch 'main' into dev/bbl-network-upd 2025-05-14 19:46:08 +08:00
Noisyfox
aebc01abfc Removed dependency on libtiff (#9514)
(cherry picked from commit prusa3d/PrusaSlicer@f12e0b4d21)

Co-authored-by: Lukas Matena <lukasmatena@seznam.cz>
2025-05-14 15:04:49 +08:00
Kiss Lorand
24784bae9a Auto orient shortcuts (#9615) 2025-05-14 11:45:08 +08:00
Noisyfox
3b658cba3b Fix new project crash on Windows if multi-extruder printer profile is edited (#9600)
Fix new project crash on Windows if profile is edited
2025-05-14 11:36:50 +08:00
Noisyfox
d4809b58b8 Fix startup crash when network plugin is not enabled 2025-05-14 11:26:24 +08:00
Kiss Lorand
1a5b238ba4 Gizmo shortcuts (#9604)
* Gizmo shortcuts

* Delete invalid comment
2025-05-12 22:11:39 +08:00
Noisyfox
2ce2facb0e Add network debugging 2025-05-12 21:51:34 +08:00
Noisyfox
bd67bd8270 Fix brim ear render when camera projection changed (#9605)
* Fix brim ear render when camera projection changed (SoftFever/OrcaSlicer#9602)

* Remove unnecessary shader uniform
2025-05-12 21:18:19 +08:00
Noisyfox
3f60a23718 Merge branch 'main' into dev/bbl-network-upd
# Conflicts:
#	src/slic3r/GUI/Widgets/AMSControl.cpp
2025-05-11 21:17:43 +08:00
yw4z
a008014ab0 Improvements for Default color button in filament settings (#9581)
* init

* fix colors on theme switch

* update

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-05-11 20:11:09 +08:00
Alexandre Folle de Menezes
43b2acba36 Use "°C" instead of "degree" to avoid ambiguity (#9597) 2025-05-11 15:06:30 +08:00
Alexandre Folle de Menezes
3e48390cee Remove markers from strings that don't need to be translated (#8842)
Remove markers from text that does not need to be translated
2025-05-11 15:04:48 +08:00
yw4z
75dd55fcf6 fixes for dependencies tab (#9594)
* init

* fix indent
2025-05-10 22:13:28 +08:00
yw4z
41ff632d28 Improve UI of profile dependencies tab (#9553)
* init

* Update Tab.cpp

* update labels

* Update Tab.hpp

* Fix checkbox label

* Update Tab.cpp

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-05-10 13:49:52 +08:00
Kiss Lorand
cc525608e9 Organic tree support GUI fix (#9587) 2025-05-10 12:50:12 +08:00
Noisyfox
4d25037614 Merge branch 'main' into dev/bbl-network-upd 2025-05-09 23:03:47 +08:00
Noisyfox
0cc495b425 Make Custom GCode Editor resizable (#9405)
* 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
2025-05-09 23:00:27 +08:00
Noisyfox
0c4f778ddb Fix crash when switching back to prepare tab after clicking the support paint icon in preview (#9417) 2025-05-09 22:59:18 +08:00
Noisyfox
b0b6e000f2 Don't show "remember my choice" on 3mf open dialog (#9547)
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.
2025-05-09 22:58:46 +08:00
yw4z
2fbfb70994 Fix filament type parameter box uses wrong width (#9582)
* Update Tab.cpp

* Update Tab.cpp
2025-05-09 22:54:35 +08:00
Noisyfox
9b18c82bfb Fix crash when start_extruder_id is empty (#9584)
Fix crash when `start_extruder_id` is empty (SoftFever/OrcaSlicer#9580)
2025-05-09 22:47:18 +08:00
yw4z
f0384e7bc3 Color & shape improvements for Axes (#9495)
init
2025-05-08 16:00:48 +08:00
yw4z
92b31a6435 Improve quality of bed name / number texture (#9535)
* init

* update

* update

* update

* update

* update

* Update PartPlate.cpp
2025-05-08 12:33:57 +08:00
yw4z
13225c817a Increase size of layer mode button on preview tab (#9554)
* Update IMSlider.cpp

* fix slider positions
2025-05-07 23:33:33 +08:00
Noisyfox
fe0f6497ad Fix external filament calib 2025-05-07 21:31:42 +08:00
Noisyfox
37244cce95 Update to latest BBS code. Fix ams filament preset check 2025-05-07 20:42:23 +08:00
tao wang
406ccadd06 ENH:use the correct trayID
jira[STUDIO-11274]

Change-Id: I0025bb74002b00c448fd4a499e547a5fbd35537f
(cherry picked from commit 937f687169091982bc6f11c5e76fb823b0456590)
2025-05-07 18:45:18 +08:00
tao wang
48ec9edc51 ENH:command ams filament settings is compatible with all AMS
jira:[none]

Change-Id: I622300794d1fa14826847229737b1f6f2ae490db
(cherry picked from commit c2adbe140b134b958f589ba178286e245a09adbf)
2025-05-07 18:13:03 +08:00
Noisyfox
ca68aa6d2b Fix compile error 2025-05-07 16:57:28 +08:00
zhimin.zeng
92972879f5 FIX: modify for get pa cali result
jira: none
Change-Id: I3c57ccaac3b7e73e0b2eb0e26678635478480298
(cherry picked from commit 6bf39690517f9e25de895bf52673d3a4a7b77255)
2025-05-07 16:38:26 +08:00
Noisyfox
b4f1ef06a2 Fix compile error 2025-05-07 16:36:00 +08:00
Noisyfox
108a5b8344 Update naming 2025-05-07 16:35:57 +08:00
zhimin.zeng
2ee934a7ee FIX: cannot cali for single nozzle printer
jira: none
Change-Id: I1cc0e5e4b0f9db2a66694c894f96a14047fde9e5
(cherry picked from commit 7bd3a5218af9f3d172090a80da447c4f2bbfff61)
2025-05-07 16:35:35 +08:00
Noisyfox
f6bfad9de1 Fix wrong slot id 2025-05-07 16:35:34 +08:00
tao wang
b0872aaba9 FIX:Fix the issue of extruder matching errors
jira:[for nozzle match]

Change-Id: I6965500bfb7feef6d18d28bea8a53a3c477f5e36
(cherry picked from commit 7bcf4b6cc5bc38e723bfd8dcd495c60a55134490)
2025-05-07 15:49:21 +08:00
zhimin.zeng
7c5dee1eda ENH: support auto pa cali for multi_extruder printer
jira: none
Change-Id: I835a0e20de81f9af7c40983e00bdb37ea6c95a68
(cherry picked from commit 4e387d4ace4332a7c2b6c0ab695b80a51597d0c7)
2025-05-07 15:46:24 +08:00
zhimin.zeng
2db5cae51f FIX: crash when sending print with empty ams_id
jira: none
Change-Id: I89dc87af28b45c69eac86810444de2519dfccd08
(cherry picked from commit f53e00ec6d9350046df4b9dc70cec75039b6d5d1)
2025-05-07 15:37:22 +08:00
zhimin.zeng
72fa3fbb26 FIX: modify color to empty string when reset filament
jira: none
Change-Id: I3a32dc8307ec5d65c8c5b7b05a5bc1e2d7d2b5b7
(cherry picked from commit a0b563dc8fbddd201198dd073471887d104a58cb)
2025-05-07 15:36:05 +08:00
hang.xu
df3fe1491a FIX: crash when select filament in device
jira: STUDIO-7972

Change-Id: Ice9e7360fbfe0c07bd49bbd696bb3cfb662e94e4
(cherry picked from commit 4c644d47157dd5cc403d6a1640c5874b99b10c4a)
2025-05-07 15:33:36 +08:00
zhimin.zeng
e9e661a9db FIX:when ams cali_idx is unknown, use default item
2. use transparent color when reset filament
jira: 7946

Change-Id: I129dc0e6b7244cad3b5e61e1bc423938f4b92d7e
(cherry picked from commit 7f473c2027e31458664e184645cf46f8e9b5d307)
2025-05-07 15:32:23 +08:00
zhimin.zeng
8a89c159db FIX: modify for virtual slot when multi_extruder
jira: none
Change-Id: Ic7284018ecb44e24536788b05dba572b96460e66
(cherry picked from commit 52e890fba1584bf9687a24ee46890c00f531e383)
2025-05-07 15:30:04 +08:00
zhimin.zeng
11cc964352 FIX: pa default item add filament_id
jira: none
Change-Id: Icfc24390e62cc1eca7e670311dc88502cea16fd7
(cherry picked from commit fb72d19a44d3b916920373acb7dd359282c1b750)
2025-05-07 15:21:07 +08:00
zhimin.zeng
500d1835a8 FIX: add filament_id when reset ams setting
jira: none
Change-Id: Iedd2eec94bd1e41a51cededc06b304a2e29ef808
(cherry picked from commit 4c6316b98137dc230c6a0c2093ffb290c09ccef7)
2025-05-07 15:20:49 +08:00
tao wang
1f08ec6072 FIX:use old tray_id for set ams filament
jira:[ams setting]

Change-Id: I965f532fbd590b501b40c2cc812d6d02054b3628
(cherry picked from commit ee3cb45b4d49d05417a6a4735e2cdd5050bc35c5)
2025-05-07 15:20:36 +08:00
tao wang
d71b1b57e2 FIX:fixed unable to reset ams filament setting
jira:[for reset ams]

Change-Id: I9f2f8be4a6e16b05191e4076db4e3f53d7601db4
(cherry picked from commit 3119a84eb2af58b89113f03c4393d1062423f930)
2025-05-07 15:18:02 +08:00
tao.wang
45dd04c899 ENH:support set ams filament
jira:[for 2nozzle setting]

Change-Id: Ib9e20bcdf6d8ea1bf5dd5e8624a68730e05e69ad
(cherry picked from commit 78c592819473b1291d1bec1126ccbf7d86bb17d5)
2025-05-07 15:13:39 +08:00
tao wang
319827daec ENH:support parse new print data
jira:[for new print data]

Change-Id: Iac6747e9ade690fcdf3b7b11239fe183bc7c3796
(cherry picked from commit 6c02c7bc8c77a481253e6c574f7bc13ff2cfcbdc)
2025-05-07 15:01:17 +08:00
zhimin.zeng
89a225a0e1 ENH: add default item for pa
jira: none
Change-Id: I4ad3bd094325bdbd1e6b013a91766214951dc032
(cherry picked from commit 0c772105f946121c292f92ab3ca1d050b898311b)
2025-05-07 14:33:38 +08:00
zhimin.zeng
693cf5f2f4 FIX: the default value is not correct
and the pa profile not display in AMS setting dialog after switch nozzle diameter
jira: 8620

Change-Id: If40bfe41ae13f5199f09baae3af09757498f1edf
(cherry picked from commit f3064e223df468eb9901e65c8f0abab2dae91f15)
2025-05-07 14:27:03 +08:00
tao.wang
d77ef4c8a3 FIX:fixed some amscontrol issue
jira:[for fix amscontrol issue]

Change-Id: Id62ffd047403bf80f6aba732b8ce31d782bcea57
(cherry picked from commit 55898ab88ee844dd7da17d992ad8f79e439f96a0)
2025-05-07 14:27:02 +08:00
Noisyfox
afb1d3df6f refactoring the modules of amscontrol
adapted from bambulab/BambuStudio@b78fa4c11c

Co-authored-by: tao wang <tao.wang@bambulab.com>
2025-05-07 11:30:29 +08:00
Noisyfox
dad7320f4b Fix setting AMS calib profile
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>
2025-05-06 23:04:35 +08:00
Noisyfox
9b9c9ba569 Merge remote-tracking branch 'remote/main' into dev/bbl-network-upd 2025-05-05 19:22:34 +08:00
xun.zhang
d40be52f18 FIX: wrong curr bed type in print page
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)
2025-05-05 19:18:39 +08:00
tao wang
c4c670c995 FIX:fix the issue of macOS crashing easily
jira:[udesk 7578206]

Change-Id: If5e0b2d0969ca70815a5d2c9cca71654c9e1817b
(cherry picked from commit 8dfa6839e5e3a9bebb03616ff6d0c0c1699ad22f)
2025-05-05 19:18:13 +08:00
hang.xu
c5c3fdc321 FIX: Bed type display
jira: none

Change-Id: Ibac2a7a80d6841ebea639e0a58547413df6f5c74
(cherry picked from commit 2c3fa062c92da50f839432a43356d491c2e5bbba)
2025-05-05 19:13:50 +08:00
hang.xu
78a09d9be6 FIX: Add bed type in send print page
jira: STUDIO-7824

Change-Id: I64d9ed41b862ed4e3b8c21218c289132d767105e
(cherry picked from commit 7bb5060b739b3a95fe889ae64e8d7289e2c928d9)
2025-05-05 19:10:45 +08:00
yw4z
241d097d2e Match style of checkboxes on Material Settings > Setting Overrides (#9551)
init
2025-05-05 18:53:46 +08:00
yw4z
4925f65fed Fix: 2Dbed step calculation for grid not working (#9550)
init
2025-05-05 17:59:00 +08:00
Dipl.-Ing. Raoul Rubien, BSc
cb7aef10ec Fixes compile error with SLIC3R_PCH=OFF (#9543)
fixes compile error with SLIC3R_PCH=OFF
2025-05-05 17:55:17 +08:00
Noisyfox
b9729f872a Fix crash when start print from sdcard 2025-05-05 17:17:03 +08:00
tao wang
7c60219ab1 FIX:fixed the issue of multiple plates object card not flip pages
jira:[STUDIO-9373]

Change-Id: I520b2626da8dc3acc066b2ea26a5f8d3c27f64fb
(cherry picked from commit aee0cb382ba40607c278dbd68e5134fa26a2027c)
2025-05-05 17:09:18 +08:00
tao wang
569814d77c ENH:Hide multi disk switching
jira:[for demo]

Change-Id: I4cbfde15ec2b6f7e8aa68e8654ebea0e9cb09b9c
(cherry picked from commit 370be63709f1d8f3bdaa923023b71afed0391edb)
2025-05-05 17:03:20 +08:00
tao wang
f5d58bb9f0 ENH:support printing all plate
jira:[none]

Change-Id: I528129705ad2b6e81cb7d0b625d3a9228baf9cf1
(cherry picked from commit 00f4fbb5a6723ba4977cb18802c65bf8dedf6e29)
2025-05-05 16:54:08 +08:00
Noisyfox
9e304d0743 Merge branch 'main' into dev/bbl-network-upd 2025-05-05 15:21:17 +08:00
Noisyfox
be2d193117 Fix floating brim (#9393)
* 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
2025-05-05 11:27:42 +08:00
yw4z
0dd356a3a7 Fix exclusion area shape and color (#8792)
* Update PartPlate.cpp
2025-05-04 23:12:04 +08:00
Lee Jong Mun
e9eb6f9d95 kor translation update (#9423)
* kor translation update
2025-05-04 18:04:52 +08:00
yw4z
a91ee67ac7 2D Bed (Bed shape dialog) improvements (#9524)
* init

* fix grid & text colors for light theme

* scale axis

* fix custom bed plate not appearing

* merge functions for generating gridlines

* simplify

* Fix flatpak build

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-05-04 16:38:38 +08:00
Noisyfox
038b25627e Show proper printer names on printer selection page (#9363)
* Show actual printer name from sub_path files on printer selection screen

* Merge branch 'main' into bugfox/preset-name-consistency
2025-05-04 16:02:15 +08:00
Noisyfox
86f4c3a014 PA calib: Don't decrease speed too much for the speed trick line (#9358)
* Don't decrease speed too much for the speed trick line (SoftFever/OrcaSlicer#9354)

* Make sure no negative accel/speed
2025-05-03 19:26:37 +08:00
Noisyfox
81f1cd4532 Fix filament/printer selection loading page translation (#9530) 2025-05-03 18:06:04 +08:00
yw4z
a37d648370 Match UI style of object list (#9494)
* 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>
2025-05-03 12:01:09 +08:00
Brandon Wees
2304e6a9cd Prusa CORE One Profiles (#9352)
* update profiles from 3b3aa19543

* capitalize SPEED

* Capitalize SPEED

* sync with cac592a462 (diff-b2ec55404a83d29c6c998171282a456702f47a98bade1a24aa583ea65c4314e0)

* sync with 1d5331b7d9

there was an issue with the filament start gcode conversion that appears to make the gcode invalid

* tweak Prusa CORE One

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-05-03 00:02:37 +08:00
SoftFever
a4f35e0291 Ensure bed shape is in correct orientation (#9350)
Fix #9345

This also fixes deltamaker's plate logo rendering:
![image](https://github.com/user-attachments/assets/517c9b3c-8eee-4081-a2bc-5913fe35328b)

And fix bed rendering issue for custom shaped bed without model:
![image](https://github.com/user-attachments/assets/9643413e-9b1c-4e74-afe8-edf2306e7021)


Also fix rendering of exclusion area that are defined in clockwise:
![image](https://github.com/user-attachments/assets/0949c1c3-6304-4ece-85c7-f3162249bf90)
2025-05-01 17:28:10 +08:00
Noisyfox
8c4b7456c1 Fix vendor/model selector on create printer dialog (#9344)
* 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
2025-05-01 17:12:03 +08:00
Noisyfox
a9d426a3dc Fix Xcode 16.3 build (#9422)
* Fix build with Xcode 16.3

* Simplify OpenVDB patch, from 930c3acb8e (diff-bc3061cc2fe6c64a3d67c8350330bb3a530d01037faace6da27ad9a12aa03e29)

* Fix CGAL header under clang 19
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281880

* Fix compile error due to removal of base template for `std::char_traits` in clang 19
https://releases.llvm.org/19.1.0/projects/libcxx/docs/ReleaseNotes.html#deprecations-and-removals
2025-05-01 17:09:45 +08:00
Noisyfox
461d42635f Add option to toggle between legacy and new network plugins 2025-05-01 16:23:56 +08:00
tao wang
e4d8c2e440 NEW:support new mapping type
jira:[support new mapping]

Change-Id: I88e5d3b6966d4ed1e8098d13fe9335fecf6e01c4
(cherry picked from commit c0932e16ff9fcae0e900c6e0cac9a5b496d0cc0e)
2025-05-01 15:54:19 +08:00
tao wang
7fe421b1b3 ENH:support new amsmapping data
jira:[for 2 extruder]

Change-Id: Ie03eae17d600bc68451511a0179f20d1919ff6ea
(cherry picked from commit 0848c26da97c7b74e98645b9a0873fe928fdf631)
2025-05-01 15:54:18 +08:00
Noisyfox
12d5ffb8e5 Store dummy filament map data in bbl 3mf 2025-05-01 15:54:18 +08:00
Noisyfox
aef4dba512 Support both old and new version of BBL network plugin 2025-05-01 15:54:17 +08:00
Noisyfox
440d44340d Remove outdated bbl network agent functions 2025-05-01 15:53:45 +08:00
Noisyfox
66830d2344 Fix object search bar on macOS and Linux (#9473)
* 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>
2025-05-01 15:21:11 +08:00
Noisyfox
940800b059 Merge tiny cracks that is part of a large bottom surface into bottom surface (#9332)
* 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
2025-04-29 22:19:30 +08:00
Alexandre Folle de Menezes
a499695c93 Remove non-translated translations (#8841) 2025-04-29 17:25:15 +08:00
Noisyfox
032e6c8580 Fix non-windows build (#9509) 2025-04-29 13:02:22 +08:00
SoftFever
9913736b41 Fixed a bug that console window was created when --datadir parameter is used (#9506)
* 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
2025-04-28 23:27:20 +08:00
yw4z
84d3bd2b48 Fix: Grid size calculation wrong on large scale (#9500)
* Update PartPlate.cpp

* Update PartPlate.cpp

* add descriptions

* simplify calculations
2025-04-28 15:17:47 +08:00
SoftFever
5bf1596d65 attach console for Windows when command line is used (#9450)
* attach console for Windows when command line is used

* fix version check failer in command line mode
2025-04-27 22:38:40 +08:00
Alexandre Folle de Menezes
7d72db562f Add translation markers on more unstranslated strings (#9134) 2025-04-26 23:11:36 +08:00
Alexandre Folle de Menezes
d37f1b6a81 Fix english strings consistency (#8881)
* "non zero" -> "non-zero"

* "Z hop" -> "Z-hop"

* "works" -> "is working"

* "version at least x" -> "version x or higher"

* "printing job" -> "print job"
"to print on" -> "printing on"

* "is not find" -> "was not found"

* "boundary of plate" -> "plate boundaries"

* "toolchange" -> "tool change"

* "colour" -> "color"

* "cancelled" -> "canceled"

* "can not" -> "cannot"

* "gcode" -> "G-code"
2025-04-26 19:59:49 +08:00
Alexandre Folle de Menezes
e787666605 Remove empty string initializations (#9131)
* Remove empty string initializations
2025-04-26 18:00:09 +08:00
Noisyfox
2cc5b3e335 Make sure exclusion area is correctly rendered even in wrong orientation 2025-04-26 12:38:13 +08:00
Noisyfox
6938d2da7f Merge branch 'main' into bugfox/bed-shape-orientation 2025-04-26 12:35:23 +08:00
yw4z
9f4cd93817 Modernize Object Search Box & Improvements for Parameter Search Box (#9434)
* update

* Update Plater.cpp

* Update Plater.cpp

* Update Plater.cpp

* Update Plater.cpp

* Update Plater.cpp

* Update Tab.cpp

* update

* Update Tab.cpp

* Update Plater.cpp

* Update Tab.cpp
2025-04-24 22:33:50 +08:00
yw4z
0d3683c3e1 Add Filament / Printer window & web based windows improvements (#9431)
* update

* update

* Update 23.css

* update

* update

* Update 21.css

* update
2025-04-24 16:23:28 +08:00
yw4z
07634d2ba2 Modernize wxButtons on Parameters & Physical Printer window (#9459)
* update

* Update Tab.hpp
2025-04-24 16:09:39 +08:00
yw4z
2a6c15d15a Fix: Rotation gizmo axis line colors not matches with axis colors (#9427)
Update GLGizmoRotate.cpp
2025-04-24 15:41:36 +08:00
Henk
672c115c61 Fix infill anchor missing for FillPlanePath (#9462)
Fix infill anchor missing for archimedian chords, hilbert curve and octagram spiral infill pattern
2025-04-24 11:03:28 +08:00
Noisyfox
09f2ee467b Enable deploy orca_custom_preset_tests (#9465) 2025-04-24 09:37:05 +08:00
SoftFever
54a5ac9235 reenable appimage build on ubuntu 24.04 (#9458)
* reenable appimage build on ubuntu 24.04

* update TIFF

* fix build error
2025-04-24 08:13:15 +08:00
Noisyfox
e2b16f527a Improve gcode preview flow rate scale (#9319)
* 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
2025-04-23 23:37:08 +08:00
Henk
66cab434b8 Fix infill anchor missing (#9407)
* 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>
2025-04-23 21:17:19 +08:00
vampiro2004
d1c2368eee adding overture TPU & ABS profiles (#9453)
Co-authored-by: Vampiro2004 <vampiro2004@users.noreply.github.com>
2025-04-23 19:50:19 +08:00
yw4z
2c12515035 Add icon to Profile dependencies (#9455)
Update Tab.cpp
2025-04-23 19:49:52 +08:00
yw4z
f4ebf9830c Fix alignment of plate name text an its input box on plate settings window (#9456)
Update PlateSettingsDialog.cpp
2025-04-23 19:49:25 +08:00
FusRock
e2f59f02e4 Fix FusRock ABS-GF Parameters in .bbl , Add Global Parameters for FusRock ABS-GF (#9442)
* Fix FusRock ABS-GF Parameters in .bbl , Add Global Parameters for FusRock ABS-GF

* Add Global Parameters for FusRock ABS-GF
2025-04-22 13:54:01 +08:00
yw4z
1f74b6b78a Fix: Prevent move of Advanced toggle when highlighting Global / Objects switch (#9445)
Update ParamsPanel.cpp
2025-04-22 12:47:07 +08:00
Shantanu Nair
ee7ebda584 Fixed an issue where the Max Volumetric Speed doesn't consider the Filament Flow Ratio (#9218)
* Rework extrusion-per-mm and speed-cap logic to enforce max vol speed

* Fix _mm3_per_mm typo
2025-04-21 00:00:10 +08:00
Noisyfox
bfe0778421 Merge branch 'main' into bugfox/bed-shape-orientation 2025-04-20 18:21:31 +08:00
yw4z
2349ea063d Fix: Alignment issues for default shapes / gridlines of bed plates (#9360)
* Update PartPlate.cpp

* Update 3DBed.cpp

* Update 3DBed.cpp

* update

* Update PartPlate.cpp

* Update 3DBed.cpp

* Update PartPlate.cpp

* Update PartPlate.cpp

* Update PartPlate.cpp
2025-04-20 18:20:25 +08:00
lodriguez
c456d38b5c fix case-sensitive mismatches in localization/i18n/list.txt (#9406)
replace AMSMappingPopup.cpp with AmsMappingPopup.cpp (the case-sensitive filename)
2025-04-20 16:16:21 +08:00
Vovodroid
35b4aadfda Search whole option string. (#9391)
Tune fuzzy match coefficients
2025-04-20 16:09:31 +08:00
FusRock
423172484e Add FusRock ABS-GF to BBL (#9412)
* add abs-gf

add abs-gf

* fix fusrock abs-gf

fix fusrock abs-gf

* fix

* Update FusRock ABS-GF @base.json

fix  false

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-04-20 16:06:59 +08:00
Azi
06d36b9718 Fixed some UI glitches about the All checkbox in the dependency tab (#8949)
* 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>
2025-04-20 14:44:58 +08:00
Noisyfox
cd2df8f5ef Fix profile check error msg (#9414)
* Ensure file encoding

* Show correct file path in error message
2025-04-20 14:21:40 +08:00
Noisyfox
cd2077ebaf Fix prime tower wipe volume calculation (#9235)
* 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>
2025-04-20 13:36:11 +08:00
HaythamB
d9c27f3dee Fix #6839 with final tool preheating on multitool machines causing in… (#7405)
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>
2025-04-20 13:24:49 +08:00
yw4z
e395ba18ad Icon fixes and improvements (#6204)
* Fix blurry AMS icon on sidebar

* Fix search icon anti aliasing problem

* home page thumbnail / new / open / delete / explore icons

* Homepage > finetune color of thumbnail image

* Custom filaments > Edit button

* Update homepage thumbnail image

* BBL printers > Device / Calibration tab > Printer icon blurry

* Update homepage open project icon

* Homepage > User rectangular Orca logo for UI consistency

* Add new icons for parameters

* Update bed plate Move to Front icon

* Update project page icons

* revert changes on homepage context menu

* Add dependencies icon

* fix document icons on project page

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-04-20 13:20:20 +08:00
Aerospacesmith
0628a9444c Fix elegoo cc layercount gcode (#9308)
* Update fdm_machine_ecc_common.json

* Update Elegoo Centauri Carbon 0.4 nozzle.json
2025-04-20 13:02:52 +08:00
GiacomoGuaresi
7d2a12aa3c Add check to CMakeList for check versions and path order on windows (#9390)
* 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
2025-04-18 19:42:46 +08:00
GiacomoGuaresi
addade1216 Update G1 printer configurations and material (#9365)
* squash all commits

* rename file to lower case

* add tmp file to change name

* add tmp file to change name

* update g1 profile configuration

* chore: add renamed_from attribute

* fix: typo

* fix: typo

* chore: fix printer_model reference
2025-04-18 16:38:36 +08:00
Noisyfox
f5849e5c08 Improve profile check script (#9389)
* Make missing `compatible_printers` error message more clear

* Support checking `compatible_printers` from parent profiles
2025-04-18 10:48:08 +08:00
SoftFever
ee85cda2bb Update README.md with social media links. (#9375)
# 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.
2025-04-17 22:06:42 +08:00
Garrick Cheung
2c8c3449c6 Update README.md with social media links.
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.
2025-04-16 12:14:58 -07:00
Tido Klaassen
9c5c7c4c92 Add Sovol Zero Profiles (#9233)
Add Profiles from Sovol's repo (https://github.com/Sovol3d/Sovol-OrcaSlicer)
for the Sovol Zero printer.

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-04-16 14:58:49 +08:00
staff1010
2e9cb000f5 Add CoLiDo Series Profiles (#9247)
# 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

![image](https://github.com/user-attachments/assets/6d38e55e-5499-46be-b948-132294f108de)

<!--
> 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.
-->
2025-04-16 13:05:35 +08:00
Noisyfox
3369a394e6 add filament_vendors:FusRock (#9361)
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.
-->
2025-04-16 11:48:05 +08:00
Noisyfox
bae3a1e6b8 Fix selected filament not shown up (#9371)
* 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)
2025-04-16 10:59:29 +08:00
Noisyfox
2b5fd7ad2e Fix filament name inconsistency
(cherry picked from commit 36225fc3dbd88babbc5a227fcc6247528d0de6a4)
2025-04-16 10:57:24 +08:00
Noisyfox
eb57036dab Update filament name checking script
(cherry picked from commit 7c4c1bf191de1fd6b86a07bf62c1ab634faa9f55)
2025-04-16 10:50:50 +08:00
Noisyfox
eb38474bb2 Add check for profile name consistency
(cherry picked from commit 7343aa5b55cab9a9f7cbdcdddd4e7650f1577598)
2025-04-16 10:50:05 +08:00
Noisyfox
5a39e6beda Add renamed_from so existing user won't break
(cherry picked from commit f8f3b5c2c9b0b15c209d8307a6eaba24e393ddda)
2025-04-16 10:49:53 +08:00
Bernhard Koppensteiner
69c2143804 High Flow Profiles for Prusa MK3.5 (#9312)
* 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
2025-04-16 10:34:27 +08:00
Vovodroid
1bce6a24d2 Small area semicolon description. (#8995) 2025-04-15 23:06:39 +08:00
Rodrigo
8cdc9c02df Junction Deviation Machine Limit (#9234)
* 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>
2025-04-15 21:49:17 +08:00
FusRock
3a3f695967 add filament_vendors:FusRock
Add FusRock and keep the alphabetical order
2025-04-15 16:25:26 +08:00
Noisyfox
bbf17e919e Fix non-rectangular bed rendering offset issue 2025-04-15 14:05:08 +08:00
Noisyfox
228b50f858 Ensure bed shape is in correct orientation (SoftFever/OrcaSlicer#9345) 2025-04-15 12:51:01 +08:00
Noisyfox
035b047fef Fix AMS filament selection compatible check (#9126)
* Fix AMS filament selection compatible check (SoftFever/OrcaSlicer#9112)
2025-04-14 23:31:20 +08:00
Noisyfox
c90b3a2cce Attempt to speed up outside bed detection (#8869)
* 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
2025-04-14 23:23:08 +08:00
cochcoder
b795708852 Fix/improve Prusa XL & XL 5T profiles (#8833)
* 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.
2025-04-14 15:39:03 +08:00
yw4z
0e2582e0bb Fix: Circular bed shape (without 3D model) not rendering in correct position (#9333)
* Update 3DBed.cpp

* Update 3DBed.cpp

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-04-14 15:25:13 +08:00
Vovodroid
e2e06e5e89 Fix skirt start angle per object (#7374) 2025-04-14 15:24:12 +08:00
Azi
6d467c8f16 fix: no printers show up for custom filament creation (#8959)
* 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>
2025-04-14 15:23:22 +08:00
Simon Biewald
205056b572 Remove 'www' subdomain from official link to avoid certificate warnings (#9291)
Remove 'www' subdomain from official link.

With 'www.orcaslicer.com' creates certificate warnings, and ultimately redirects to 'orcaslicer.com' anyway.
2025-04-14 15:07:16 +08:00
Co Print 3D Printing Technologies
4dca5b6a7c Updated Co Print Machine profile file (#8965)
* Add files via upload

* Update Co Print.json

* Update Co Print.json

* Add files via upload

* Update CoPrint Generic ABS.json

* Update CoPrint Generic PETG.json

* Update fdm_machine_common.json
2025-04-14 14:25:05 +08:00
yw4z
5b3109945e Allow right click on empty space while an object selected (#9335)
Update GLCanvas3D.cpp
2025-04-14 10:13:39 +08:00
Noisyfox
8dd9e64af8 Update profile selector loading text color (#9334)
Update loading text color
2025-04-13 23:18:46 +08:00
yw4z
9c10f8cbc5 Fix grid lines not aligned to origin (#8767)
* fix

* Update PartPlate.cpp

* fix typo
2025-04-13 23:02:01 +08:00
Noisyfox
8e38ac234f Fix rare crash when calculating bridge expansion (#9287)
* 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>
2025-04-13 17:39:28 +08:00
Noisyfox
7a40ebda66 Fix orca filament lib load (#9260) 2025-04-13 17:38:58 +08:00
Noisyfox
97ec03692c Fix wipe tower initial movement when switching extruder offsets (#9222)
Fix wipe tower initial movement when switching extruder offsets (SoftFever/OrcaSlicer#9214)
2025-04-13 17:38:29 +08:00
Noisyfox
443034553b Fix M486 still presented even with obj exclusion disabled (#9202)
Make sure `m_enable_exclude_object` is initialized correctly from user config (SoftFever/OrcaSlicer#7775)
2025-04-13 17:38:13 +08:00
Noisyfox
2f8fa3fec2 Avoid unnecessary travel in scarf seam (#9197)
* Avoid unnecessary travel in scarf seam (SoftFever/OrcaSlicer#9139)

* Fix typo
2025-04-13 17:37:40 +08:00
Noisyfox
0a3cbabae6 Fix flow calibration overlapping objects with nozzle > 0.4mm (#9189)
* Make sure the objects are refreshed after scaling

* Scale the calib pattern using `selection.scale` so they won't overlap (SoftFever/OrcaSlicer#9085)
2025-04-13 17:36:51 +08:00
Noisyfox
74df3a450b Fix wrong travel before printing first skirt point (#9179)
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
2025-04-13 17:36:36 +08:00
Noisyfox
abcd6e7847 Don't apply adaptive PA in PA calibration (#9149)
Don't apply adaptive PA in PA calibration (SoftFever/OrcaSlicer#9140)
2025-04-13 17:35:57 +08:00
Noisyfox
61a68fb497 Don't allow selection change in paint gizmo (#8776)
If object has modifier, in some paint gizmos such as seam and support
paint, if you click the modifier, the gizmo will exit:

![paint-modifier](https://github.com/user-attachments/assets/5680a19f-5de7-485e-bf73-3d79b6a080a9)

This PR fixes this issue so the gizmo won't accidentally exit.
2025-04-13 17:35:12 +08:00
Noisyfox
5ed855aeef Improve brim paint gizmo shortcuts (#9174)
* Change section view hotkey to alt+mouse wheel

* Use ctrl+mouse wheel up/down to change brim size

* Update current brim brush size
2025-04-13 17:34:05 +08:00
Noisyfox
672a829cdb Fix issue that option visibility not updated after resetting (#9150)
Fix
https://github.com/SoftFever/OrcaSlicer/issues/8895#issuecomment-2764217763
2025-04-13 17:33:02 +08:00
Noisyfox
ee07700aa7 Fix brim ear paint memory leaking & multi-selection with shift+left click (#9167)
* 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`
2025-04-13 17:32:39 +08:00
Noisyfox
d54c139cdb Fix PA calib crash when default line width is set to 0 (#9146)
Fix PA calib crash when default line width is set to 0 (SoftFever/OrcaSlicer#9144)
2025-04-13 17:31:54 +08:00
Noisyfox
697fc5b8d3 Async profile load on printer/filament selection screen (#9118)
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:


![profile-select-async](https://github.com/user-attachments/assets/ff6c810e-72f8-4398-b86f-2ca5b516fbe2)

Ported from BambuStudio, huge thanks to BambuLab!
2025-04-13 17:30:37 +08:00
b4imetu
23372478a8 Update README.md (#9295) 2025-04-13 15:20:15 +08:00
Ian Bassi
822de5ce29 Input shaping & JunctionDeviatio wiki + improvements (#9256)
* 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
2025-04-13 15:17:24 +08:00
Vlad
9e53b079c6 Adding Z-Bolt profiles (#9240)
Added profiles for Z-Bolt S300, S300 Dual, S400, S400 Dual, S600, S600 Dual
2025-04-13 15:11:50 +08:00
yw4z
cc81be0992 Improvements for Sliced Plates Toolbar (#9313)
* initial

* fix scaling related issues

* Update GLCanvas3D.cpp

* update

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* update

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-04-13 14:57:08 +08:00
yw4z
4b33c31106 Fix: Correct color of bed plates without 3D model (#9320)
fix color
2025-04-13 13:35:23 +08:00
yw4z
5f16371672 Fix: Bed icons not vertically centered on circular shaped plates (#9321)
* Update PartPlate.cpp

* simplify changes
2025-04-13 13:34:17 +08:00
Kiss Lorand
5c0afd5e84 Skirt settings GUI fixes (#9325) 2025-04-13 13:32:18 +08:00
Vovodroid
69df9420c1 Apply single_loop_draft_shield also to skirt (#9298) 2025-04-12 11:06:30 +08:00
Dipl.-Ing. Raoul Rubien, BSc
82bc52cbcc hotfix: avoids legend-viewer horizontal overexpansion on linux (#9171)
hotfix: avoids legend-viewer horizontal overexpansion on linux (enhancement 9fe905c)
2025-04-10 23:50:41 +08:00
Ian Bassi
7cc46619a5 STL Transformation WiKi (#9265)
STL Transformation Wiki

STL Transformation Wiki
Step import & Simplify
Images
2025-04-10 23:19:06 +08:00
Arcodude
a987f03aeb Update Calibration.md (#9277)
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.
2025-04-10 23:17:55 +08:00
sharanchius
3612d8e4eb Finished Lithuanian translation - OrcaSlicer_LT.po (#9000)
# Description

Finished Lithuanian translation
Still some work with *.js (C:\Program
Files\OrcaSlicer\resources\web\***) files:


![image](https://github.com/user-attachments/assets/b6c47fe8-fef0-4249-93e3-bd553678dfa6)
****

Not found where can add Lithuanian language into preferences menu:

![image](https://github.com/user-attachments/assets/ea02a8e5-6464-4c59-b127-caffa9ca7d12)


<!--
> 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


![image](https://github.com/user-attachments/assets/de541508-7abe-40c3-9bfc-e10dd4f725f7)

<!--
> 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.
-->
2025-04-10 14:02:38 +08:00
Noisyfox
b149cb0682 Remove MAX_FLUSH_VALUE (#9262)
# 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.
2025-04-09 21:09:53 +08:00
mitt3n
267d81e9cc Set MAX_FLUSH_VALUE to maximum possible value
"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."
2025-04-09 08:03:40 -05:00
mitt3n
e97d9f5f17 Set MAX_FLUSH_VALUE to maximum possible value
"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."
2025-04-09 08:01:32 -05:00
mitt3n
7a50acb607 Set MAX_FLUSH_VALUE to maximum possible value
"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."
2025-04-09 07:52:18 -05:00
mitt3n
dd4a3ec042 Removing MAX_FLUSH_VALUE
Purge all the filament!
2025-04-08 23:03:50 -05:00
mitt3n
5e42120df5 Increase MAX_FLUSH_VALUE from 999 to 9999 2025-04-08 12:03:37 -05:00
Noisyfox
32efc176d9 Vfa calibs - Input Shaping & Junction Deviation (#9160)
@RF47 and I have been working on a **two-step input shaping
calibration** to help fine-tune print quality and Junction Deviation
Test for Marlin2 printers.
This is based on [Klipper's Resonance
Compensation](https://www.klipper3d.org/Resonance_Compensation.html#resonance-compensation),
[Marlin’s M593 G-code](https://marlinfw.org/docs/gcode/M593.html),
discussions from
[SoftFever/OrcaSlicer#1820](https://github.com/SoftFever/OrcaSlicer/issues/1820),
some elements from the [input_shaping
branch](https://github.com/SoftFever/OrcaSlicer/tree/feature/input_shaping)
and Junction Deviation [Marlin
Documentation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-)

This is for Marlin only, but I'm working on a future Klipper-compatible
version here:
[VFA-Calibs+Klipper](https://github.com/ianalexis/OrcaSlicer/tree/VFA-Calibs%2BKlipper).
However, we don't own a Klipper machine, so we're unsure how to improve
it or verify if it works correctly.

### Calibration Steps

1. **Frequency Test** – Helps identify the optimal input shaping
frequency.
2. **Damping Test** – Fine-tunes the damping ratio for smoother prints. 

### Screenshots

![imagen](https://github.com/user-attachments/assets/bfa9ef9c-3a81-499e-b7f8-d60a77952304)

![imagen](https://github.com/user-attachments/assets/df764cfd-85ca-4048-8748-c95a56bc2c8b)

![imagen](https://github.com/user-attachments/assets/cb991d1b-d1f5-489c-81f2-c25d4f9e394c)

![imagen](https://github.com/user-attachments/assets/7da6607c-7644-49af-8c13-97349d7226ef)

![imagen](https://github.com/user-attachments/assets/db8ce73a-6b51-4bcd-ad7e-b654074096e5)

![imagen](https://github.com/user-attachments/assets/5deea699-e5d1-4a09-85f4-809d07395ca1)

![imagen](https://github.com/user-attachments/assets/cc87c756-75a3-40e4-9df3-7437ea78ac4e)

![imagen](https://github.com/user-attachments/assets/de5a8329-3567-473f-bf40-8649d84279b6)

## Tests
- Marlin tested on **Ender 3-class printers** (@RF47 and @ianalexis)
- Klipper tested in Voron 2.4 and an FLSun T1 Pro @ShaneDelmore 
- Tested in Windows and MacOs.
2025-04-06 20:16:12 +08:00
Noisyfox
1fd21371b1 Camera rotate around current plate center if plate is empty (#8912)
* Camera rotate around current plate center if plate is empty (SoftFever/OrcaSlicer#8856)

* Don't expand plate bounding box when camera rotating
2025-04-05 23:23:26 +08:00
Noisyfox
ecd91bcf01 Make sure sidebar is not triggered by child notebook tab changes (#8934)
* Make sure sidebar is not triggered by child notebook tab changes such as AMS group selection (SoftFever/OrcaSlicer#8656)
2025-04-05 23:21:36 +08:00
SoftFever
85d46d2979 Fix shortcut collision on macOS (#9136)
Fix #8152
2025-04-05 21:44:48 +08:00
SoftFever
c577fdd792 Ensure the flow calib pattern to be printed in desired order (#9145)
Fix issue in https://github.com/SoftFever/OrcaSlicer/pull/8993


![image](https://github.com/user-attachments/assets/60a64088-8af8-45d6-9724-aa225f19a10f)
2025-04-05 21:43:31 +08:00
SoftFever
a519ea34a5 Port STEP import dialog from BambuStudio (#9102)
![image](https://github.com/user-attachments/assets/db27ee5d-c158-4729-a648-a33f1222a479)


Thanks BambuLab!

Fix #8820
2025-04-05 21:20:51 +08:00
Noisyfox
f14232396a FIX: prevent dead loop of conflict checker (#9115)
jira: STUDIO-10282
Change-Id: I5722e9967cdd83cde5ef59aee37b0f7019e53d89
(cherry picked from commit b952006e4db49f00054cc2ac539074222c890d08)

Co-authored-by: Arthur <arthur.tang@bambulab.com>
2025-04-05 17:51:16 +08:00
Noisyfox
a2bf46fc53 Make gcode 3mf file smaller when sending to BBL printers (#9114)
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>
2025-04-05 17:50:41 +08:00
SoftFever
b1de545ff9 Merge branch 'main' into dev/step-import-dialog 2025-04-05 17:47:59 +08:00
sharanchius
f20a4d705a Added Lithuanian translation to text.js (#9001)
Update text.js

Added Lithuanian translation
2025-04-05 15:09:43 +08:00
Alexandre Folle de Menezes
503475f063 Fix the translation of "in" (inches) in fr, de (#9020)
Fix the translation of inches in de, fr
2025-04-05 15:08:56 +08:00
Noisyfox
4aafa7a90d Merge branch 'main' into VFA-Calibs 2025-04-05 14:50:12 +08:00
Thomas
831608e6d6 Fix French translations (#9175)
* Several fixes

* Fix translation of "Prime tower"

* Fix Prime Volume translation
2025-04-05 14:47:50 +08:00
Juan Jesús García de Soria
c4d47abc52 Fix -j to export CMAKE_BUILD_PARALLEL_LEVEL. (#9195)
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).
2025-04-05 14:46:55 +08:00
Ioannis Giannakas
7f913f1cc2 Fix speed up during overhang slowdown when curled perimeters is enabled. (#9215) 2025-04-05 14:46:02 +08:00
Alexandre Folle de Menezes
66a71d4db0 Fix the temperature unit name to "degree Celsius" (#9224)
The correct temperature unit name is "degree Celsius"
2025-04-05 14:13:33 +08:00
Alexandre Folle de Menezes
14502673da Use the correct Unicode codepoint for ellipsis in pt-BR (#9230) 2025-04-05 14:11:13 +08:00
Noisyfox
1b8f798d3b Port coordinate system selection for Move, Scale and Rotate gizmo (#9099)
* 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>
2025-04-04 23:07:00 +08:00
Shantanu Nair
4b0977d306 Fix bridge & perimeter paths to use set flow ratios in Volumetric Speed Capping (#9210)
Fix bridge, perimeter speed caps, flows
2025-04-04 15:00:56 +08:00
Ian Bassi
40928a5d22 Switch to improve readability 2025-04-03 15:56:07 -03:00
Ian Bassi
a66bc06b2d Klipper compatible
Klipper freq & damp test

Klipper guide separation from the Marlin guide

Co-Authored-By: Shane Delmore <shane@delmore.io>
2025-04-03 14:40:26 -03:00
Ian Bassi
4376f8ba3c Lowering Jerk 2025-04-03 14:40:26 -03:00
Ian Bassi
69b645d5c8 Jerk Fix + No slow down 2025-04-03 14:40:25 -03:00
Ian Bassi
ac56fffffd Jerk maxed + Documentation 2025-04-03 14:40:25 -03:00
Ian Bassi
9890ab333c Disable PA
PA = 0
To improve the test and Klipper compatibility
Fix
2025-04-03 14:40:25 -03:00
Ian Bassi
428cba9a25 Juntion Deviation + Documentation
Junction Deviation Calibration Test
Base documentation
 - VFA
 - Input Shaping
 - Junction Deviation

Co-Authored-By: Rodrigo <162915171+rf47@users.noreply.github.com>
2025-04-03 14:40:25 -03:00
Ian Bassi
3662b5139c FastTower and Granular Parameters
Co-Authored-By: Rodrigo <162915171+rf47@users.noreply.github.com>
2025-04-03 13:59:07 -03:00
Ian Bassi
1857849cba Input Shaping Damping
Damping
Fix spanish comments
2025-04-03 13:59:07 -03:00
Ian Bassi
19dae83e40 Input Shaping Frequency
Input Shaping calibration based in https://marlinfw.org/docs/gcode/M593.html
2025-04-03 13:59:07 -03:00
5idereal
bf9cce4800 Update zh_TW translation (#9101) 2025-04-03 21:59:55 +08:00
Noisyfox
b4c17d6e97 Fix split to objects crash (#9066)
* Fix split to objects crash (SoftFever/OrcaSlicer#9047)

* Avoid unnecessary trigger of `ObjectList::list_manipulation` when object selection changed programmly
2025-04-03 21:55:44 +08:00
KrisMorr
8698f75144 update POLISH translations (#9089)
* update POLISH translations

* Update OrcaSlicer_pl.po

* Merge branch 'SoftFever:main' into update_pl

* fix_OrcaSlicer_pl.po
2025-04-03 21:54:51 +08:00
Kappa971
c2bbc5b450 Update Italian translation (#9079)
* Update Italian translation

* Fix Italian translation

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Fix Italian translation

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Merge branch 'main' into kappa971/orca-trad-ita

* Fix Italian translation
2025-04-03 21:51:25 +08:00
Noisyfox
0cb458db89 Fix wxEVT_UPDATE_UI event been consumed by wrong control (#9061)
* Fix `wxEVT_UPDATE_UI` event been consumed by wrong control (SoftFever/OrcaSlicer#9059)
2025-04-02 22:48:32 +08:00
Noisyfox
2e9c30883b Fix brim type combox in object table (#9019)
* Fix brim type combox in object table (SoftFever/OrcaSlicer#8969)
2025-04-02 22:20:27 +08:00
Liv Flowers
d91ef31bac Add filament load time for Creality Hi (#9177) 2025-04-02 17:35:05 +08:00
John Oleksowicz
d4e5a61efd Fix PCTG calibration temperatures (#9111)
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)
```
2025-04-02 10:11:22 +08:00
Ian Bassi
60dac5f1f4 Disable FirmwareRetraction in RetractionTest (#9113)
Fix issue 8332

Automatically disable firmware retraction when running retraction calibration.
2025-04-02 10:10:09 +08:00
Noisyfox
9fc51ba22e Disable BBL server error dialog (#9060)
* Disable BBL server error dialog (SoftFever/OrcaSlicer#9045)

* Log server error
2025-04-01 22:53:57 +08:00
Jonathan Rascher
b5a7a917bf Mark SV06 ACE PLA compatible with 0.2 nozzle (#9051)
* Mark SV06 ACE PLA compatible with 0.2 nozzle
2025-04-01 22:45:06 +08:00
SoftFever
3a114a5d7f Avoid creating bridges on very tiny surface cracks (#9053)
Fix #8563

Before:
![image](https://github.com/user-attachments/assets/eba13eae-42f1-4249-865f-536a2a2af370)

After:
![image](https://github.com/user-attachments/assets/62f990a5-c6db-4f1e-ad31-93a250956ac1)
2025-04-01 22:44:19 +08:00
Noisyfox
a3984a706e FIX: enable circle fitting of tree support with larger threshold (#9038)
* FIX: enable circle fitting of tree support with larger threshold

jira: STUDIO-8588
Change-Id: Ia566fa14f7f786ff905fc3484885634811a6d686
(cherry picked from commit bambulab/BambuStudio@82c72b19bd)
2025-04-01 22:39:15 +08:00
Noisyfox
075565f4f4 Do not loade web page until switching to device page (#9031)
* Do not loade web page until switching to device page
2025-04-01 22:38:38 +08:00
Noisyfox
67681c971f Add extra anchor line to PA line test (#9022)
* Add extra anchor line to PA line test (SoftFever/OrcaSlicer#8945)
2025-04-01 22:37:12 +08:00
Noisyfox
64ac0ecd41 Fix render_hover_point memory leaking by using std::optional 2025-04-01 16:08:24 +08:00
Noisyfox
19e5ee3f42 Update current brim brush size 2025-04-01 15:51:01 +08:00
Noisyfox
00cf9be46e Use ctrl+mouse wheel up/down to change brim size 2025-04-01 15:34:49 +08:00
Noisyfox
b832370421 Change section view hotkey to alt+mouse wheel 2025-04-01 11:43:04 +08:00
Tobias Rumiz
70aa20b9ee Fix typos and spacing (#9168)
Fixed minor typos and spacing issues in OrcaSlicer_en.po
2025-04-01 09:02:33 +08:00
Noisyfox
d31546b2ae Fix brim ear size preview when dragging the slide 2025-03-31 23:37:49 +08:00
SoftFever
c11b28d910 Fix broken profile OTA (#9166)
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.
-->
2025-03-31 23:31:57 +08:00
Noisyfox
8210d76449 Fix issue that you cannot select multiple brim ears with shift+left click 2025-03-31 23:23:23 +08:00
SoftFever
df19e91845 fix a bug for OTA updating feature.
Add a help script to pack OTA package
2025-03-31 23:17:02 +08:00
SoftFever
f6dc9c1ab4 bump bbl.json version 2025-03-31 14:36:37 +08:00
SoftFever
ef978b848c update SBS filament 2025-03-31 14:32:49 +08:00
SoftFever
8c4a65e3e1 update OrcaFilamentLibrary 2025-03-31 13:48:58 +08:00
Noisyfox
c163d11fdb Fix filament editor crash on Linux (#9016)
Fix filament editor crash on Linux (SoftFever/OrcaSlicer#8895)
2025-03-30 22:02:36 +08:00
yw4z
9fe905c47d gCode Legend & Viewer Improvements (#8198)
* commit

* update buttons and icons

* Update GCodeViewer.cpp

* Update GCodeViewer.cpp

* Update GCodeViewer.cpp

* replace invisible item icon

* reduce code changes & add svg icons for hidden / visible

* update

* Update GCodeViewer.cpp

* Update GCodeViewer.cpp

* Update GCodeViewer.cpp

* fix window width when scrollbar visible

* Update GCodeViewer.cpp

* Update GCodeViewer.cpp

* add corner rounding to all plate stats

* Update GCodeViewer.cpp

* update

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-03-30 20:07:49 +08:00
Graham Held
933b282c53 Add in a pref for camera orbit speed multiplier (#8725)
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-30 16:16:08 +08:00
Ocraftyone
d869a61ac1 Update devcontainer (#8516)
* Update devcontainer

* Merge branch 'main' into update-devcontainer

* Revert to using Dockerfile

* Merge branch 'main' into update-devcontainer
2025-03-30 15:43:55 +08:00
SoftFever
61efef9e88 Only consider part above plate when checking for object outside (#8456)
Fix #8218

Before:
![image](https://github.com/user-attachments/assets/3fa8bcb0-b0df-4503-b2f7-0ecba99fafab)


After:
![image](https://github.com/user-attachments/assets/f7280b50-42be-4ef1-a53e-12408511a627)
![image](https://github.com/user-attachments/assets/65ffebb7-6d49-4d8a-9dda-4676e4b0953b)


Note: there is still an issue that you still cannot slice if object below plate overlaps exclusion area. It won't be easy to fix and also will be computational costy, so I won't try to solve this in this PR yet.
![image](https://github.com/user-attachments/assets/76cb2f65-6233-47e7-85fe-fd92dd1d2507)
2025-03-30 15:40:44 +08:00
Noisyfox
9db74c05c0 Fix vase mode with filament change (#8404)
* Fix lift in vase mode

* Disable vase mode of layers that have color change (SoftFever/OrcaSlicer#8387)
2025-03-30 15:34:48 +08:00
Noisyfox
ec752671da Ensure the flow calib pattern to be printed in desired order 2025-03-30 15:21:52 +08:00
cochcoder
98be94a729 Fix flatpak not using dark theme (#8964)
* Create set-dark-theme-variant.py

* Update entrypoint

* Update io.github.softfever.OrcaSlicer.yml

* Create uses-dark-theme.py

* Update MPFR to 4.2.2

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-03-30 09:47:18 +08:00
Noisyfox
2fbeb75ced Fix display of command key 2025-03-30 01:11:04 +08:00
Noisyfox
eb0d0386a0 Fix shortcut collision on macOS (SoftFever/OrcaSlicer#8152) 2025-03-30 00:42:04 +08:00
Noisyfox
c2a1a8c39b Use different threshold for top & bottom surfaces 2025-03-30 00:08:26 +08:00
Noisyfox
6bd2355a69 Avoid creating bridges on very tiny surface cracks (SoftFever/OrcaSlicer#8563) 2025-03-30 00:08:26 +08:00
Alexandre Folle de Menezes
41c14281e5 More pt-BR translation fixes (#9086) 2025-03-29 23:03:44 +08:00
magicmaker3
0001d62dc8 Parameter optimization of Magicmaker series printer (#8956)
* Update MM BoneKing 0.4 nozzle.json

* Update MM hj SK 0.4 nozzle.json

* Update MM hqs SF 0.4 nozzle.json

* Update MM hqs hj 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM hqs hj 0.4 nozzle.json

* Update MM hqs SF 0.4 nozzle.json

* Update MM hj SK 0.4 nozzle.json

* Update MM BoneKing 0.4 nozzle.json

* Update MM BoneKing 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

* Update MM slb 0.4 nozzle.json

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-03-29 22:35:09 +08:00
SoftFever
5dac629712 Improve flow rate calibration: use ipArchimedeanChords pattern for flow rate calibration (#8993)
* 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
2025-03-29 20:27:04 +08:00
Seth LaForge
782adafc39 Build script improvements. (#7914)
* 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
2025-03-29 20:21:44 +08:00
Noisyfox
ed45bf425e Use boost::nowide directly from boost (#9037)
* Use `boost::nowide` directly from boost

Cherry-picked from prusa3d/PrusaSlicer@bffa3f8578

Co-authored-by: tamasmeszaros <meszaros.q@gmail.com>

* Replaced all occurrences of boost::nowide::narrow for wxStrings with into_u8

Cherry-picked from prusa3d/PrusaSlicer@8d6497297a

Co-authored-by: tamasmeszaros <meszaros.q@gmail.com>

* Fix flatpak build
2025-03-29 20:14:10 +08:00
cochcoder
45221a2bea Trigger build workflow when flatpak changes are made (#9105)
Trigger build all for changes under the flatpak folder
2025-03-29 16:18:34 +08:00
Noisyfox
41c3a059a7 Use Orca color 2025-03-28 23:21:02 +08:00
lane.wei
cf0c5624a1 FIX: gui: fix the crash issue when close guide frame at the beginning
jira: STUDIO-9941
Change-Id: I47e189e838ae606d294d0c0b4ccffc6f833a27c3
(cherry picked from commit 093a7c25cb7507d0d6af228c2efa3410e1184c27)
2025-03-28 23:05:41 +08:00
zorro.zhang
5e79e9196f ENH: SaveProfileData to AppConfig in MainThread
JIRA: none
Change-Id: I22ae3dac5e2bed42a2edfb848d627cd5092ef171
(cherry picked from commit c2042d7e20ab03001e4b38f366d0f129f2ee0918)
(cherry picked from commit d027e098acf37330076273799d2ff873a07044b5)
2025-03-28 23:02:16 +08:00
zorro.zhang
d753292823 ENH: Update UserGuide Load UI
JIRA: none
Change-Id: Ifc8cdd59a61dfece6c497ed50fcad9663d380be3
(cherry picked from commit 37918c4463fe6bdced742d5d81d756fa811510b7)
(cherry picked from commit cea5bc967c3c2e8ed538903823ffb3cd70d62584)
2025-03-28 22:56:18 +08:00
zorro.zhang
df6516e3e3 NEW: UserGuide Add Loading Tip
JIRA: none
Change-Id: I43d79d740b9180a16d02c54c0c9d6e11c23b1ce7
(cherry picked from commit 03d8d58fad95199236ee7a5f931d3f395ee8dc1d)
2025-03-28 22:48:04 +08:00
zorro.zhang
f1cba23976 ENH: Ignore Not Exist Profile Json
JIRA: none
Change-Id: Ied94cdadf0097b819328284cbc773ffe3c47d32b
(cherry picked from commit a081818b0c03170e749ae1461c57e24dae75bc94)
2025-03-28 22:47:23 +08:00
Noisyfox
5dee7297cf Fix mac build error 2025-03-28 09:31:16 +08:00
Noisyfox
5c7cb0578f Update link color 2025-03-28 09:13:50 +08:00
Noisyfox
ef8649910f Fix build failure caused by OCCT and boost::regex 2025-03-28 09:13:49 +08:00
SoftFever
17d08aec41 deprecate AppImage 2025-03-27 22:55:16 +08:00
SoftFever
658669d103 Universal mac build (#9074)
build universal Mac app
2025-03-27 22:53:37 +08:00
Mack
b65d6172cc Fix:Step mesh didn't initially count faces
jira: STUDIO-10273
Change-Id: Ic7e672edae03f5ce00e564eaf82dd1c474b84558
(cherry picked from commit 7e4932eec4a12e02f0f40b5e783d38ae1b66a30a)
2025-03-27 22:35:38 +08:00
MackBambu
72d8c82927 Fix:fix step mesh dark mode on linux
jira: STUDIO-10665
Change-Id: I9e9e837441b5627406cdadcbfdaa4c16abc2d762
(cherry picked from commit e02f44d8dde01de0715935e609a5634fc1faee4e)
2025-03-27 22:35:20 +08:00
yongfang.bian
08eeed9c72 Fix:step mesh using boost thread
github: #5304
Change-Id: I4afc5978b00eed20c46a1bf4100c9a0f0328daf8
(cherry picked from commit 151f40ad4dbf871576937f9674ac532c32df27d0)
2025-03-27 22:35:00 +08:00
mack-test
affa9068f0 Fix:on Mac,step mesh shows a count of 0 initially
jira: STUDIO-9595
Change-Id: I9908d3eff394ada12dd9ab0a2c10ca8a78d4f1f6
(cherry picked from commit 8bafed6e0a0ac7237077e7e0a964706e35e5ed12)
2025-03-27 22:34:34 +08:00
Mack
d14571edfe ENH:Optimize the STEP mesh UI
jira: nojira
Change-Id: Ie8d4f1eace04b2c51d4975c67b9a4deb7d88a56f
(cherry picked from commit b9aa0397600ab0f5040ac719277c7b16b1371435)
2025-03-27 22:34:00 +08:00
Mack
588f42e2e2 NEW:step mesh add 'Split compound and compsolid'
Optimize getting STEP node names.
Fix load_same_type_files()

GITHUB: #5214
Change-Id: I7d1035c122f21e3b08305509489bce415634ae80
(cherry picked from commit 76a401bfca1897994795cb37ffa9cbcbdaca8b6c)
(cherry picked from commit a0669137ec7e698320d0bc50ee986cb3f0e85164)
2025-03-27 22:25:29 +08:00
Mack
1e75686221 FIX:If the angle and linear deflections get
incorrect values, reset them to the default values

jira: nojira
Change-Id: Ia2c64a2a0ebe30641192fdb716234f34c356a6c6
(cherry picked from commit f9d9d40c4fd72ddf4c6aaa9b3d45851bf1fe7ffc)
2025-03-27 22:21:27 +08:00
Mack
6590ccf168 ENH:translate step mesh text
jira: nojira
Change-Id: Ic8c9e010551cc9acab9e863e60321a6b64f83778
(cherry picked from commit 228a19e6049bae320560c5eac05580bee354860e)
2025-03-27 22:20:42 +08:00
Mack
d27630cec7 ENH:update step mesh ui
jira: nojira
Change-Id: I4cea486dee7fafa6495d63e8557ff790cc1640dc
(cherry picked from commit b2b157f1a49a53d119a382a686a6e343899e98b9)
2025-03-27 22:20:04 +08:00
Mack
0d9534bcf1 FIX:m_last_linear and m_last_angle add init value
jira: studio-8739
Change-Id: Ib1052856e7f9b4e427a58fb89f828dc0e6593247
(cherry picked from commit 8e2b233730ece85c04149aa4d1328519b3b79100)
2025-03-27 22:19:54 +08:00
Mack
9b439ff5a2 FIX:STEP mesh crashes in specific language
1.fix dark model

2.fix reload file

3.fix macos ui

jira: STUDIO-8722
Change-Id: I17c723cbf88b97b187c72fbc6f65fc2da591465f
(cherry picked from commit 6c48a8e40b3a28859d5883b13106683cbe61c73d)
2025-03-27 22:17:49 +08:00
Mack
0bc2444079 ENH:Add 'Don't show again' to the step mesh
jira: STUDIO-8606
Change-Id: I2382b9052e2c994a458ad36ca61eb94c517927c6
(cherry picked from commit 0cce6619ce12aa8540f6dfca6d9ee79ffba65c19)
2025-03-27 22:17:07 +08:00
Arthur
65e5b193e1 ENH: translation
jira: STUDIO-8530
Change-Id: I43aeda64251165eaa2fc7f26b6dbaf548bc62057
(cherry picked from commit 9c799cc98641e546e736acbf6c944cc3c230ba58)
2025-03-27 22:07:59 +08:00
Mack
207d08476c ENH: update step mesh ui
jira:nojira

Change-Id: I7ba88d1ad80fa1e8152393c523bc301187e543d1
(cherry picked from commit 8dfd3bbb0c2b32ba95d942a662c4223b9001c40a)
2025-03-27 22:05:12 +08:00
Mack
8c4794de38 ENH:step mesh optimize interface
jira: STUDIO-8281
Change-Id: Ic1e3e958816d6a213f68009ecc0b9430ba4b5482
(cherry picked from commit 072ba8339b1acd46c6d1a5a91b671f98f4045b37)
2025-03-27 22:02:42 +08:00
zhou.xu
288a367e4d ENH:translate texts
jira: none
Change-Id: If48a4a25c379f589f80af2715f825c5e1b13dfac
(cherry picked from commit 3bc4bf93bd98372e3bfd932ed096b57cd645b4bd)
2025-03-27 22:01:42 +08:00
Mack
6d7260a6e9 FIX:Parameter value has not changed, no recalculation
jira: STUDIO-8283
Change-Id: I3564ff0993de1c3b8e039fc0115b4ccd81b2a5a2
(cherry picked from commit fecd3c3297c8dc85775622d65e292492523cc150)
2025-03-27 21:58:12 +08:00
Mack
f91b520bb8 ENH: step mesh operation adjustment
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)
2025-03-27 21:56:09 +08:00
Mack
e1477e642c FIX:Replace non-UTF8 characters in STEP model names with IDs on import
jira: STUDIO-8055
Change-Id: I9255a7a871ebc9920ec683d1a2a80cd53ada0f10
(cherry picked from commit 89be3166e286346254a08c8efc188e0cea83f2a4)
2025-03-27 21:50:32 +08:00
Mack
61ebddf9b8 NEW:add step mesh parameters
jira: STUDIO-7415
Change-Id: I5e09a1eb1ad31063ad56d08d5738907a804dc112
(cherry picked from commit ccbe9630076b754ab440e98977c4164afff96250)
(cherry picked from commit 84e7063c54a99e8a1440e74f831c6d1f6828f3f8)
2025-03-27 21:27:25 +08:00
Vovodroid
00811ee5bb Fix endless loop in ReplaceString (#9077) 2025-03-26 11:33:52 +08:00
Russell Cloran
108eeaed0a Make printer model search more flexible (#9050)
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.
2025-03-25 08:59:32 +08:00
SoftFever
41450b3a64 avoid using https://www.mpfr.org/mpfr-current link (#9034)
* avoid using https://www.mpfr.org/mpfr-current link
2025-03-23 13:25:50 +08:00
Asim Siddiqui
2efee60a22 Added TCP Queue Delay + Fixed Flashforge Serial comms (#8905)
* 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
2025-03-22 23:38:29 +08:00
Benjamin Stürmer
a16b8e4963 Add PETG-GF filament type (#8960)
* Add PETG-GF filament type
2025-03-22 22:59:47 +08:00
Alexandre Folle de Menezes
37653324fa Finish pt-BR translation (#8962)
* Finish pt-BR translation
2025-03-22 22:58:12 +08:00
Andy
c6f4ad0efa Russian translation update (#8994)
* Russian translation update

Translation update, correction of errors, add missing string.
2025-03-22 22:57:42 +08:00
VOLUMIC
420d0c2f74 Updates VOLUMIC profils 2025-03-22 15:23:27 +01:00
Noisyfox
ce453ccd58 Fix flatpak build (#9017)
follow up of c3542ce014
2025-03-22 22:13:33 +08:00
VOLUMIC
30db093c73 Merge branch 'SoftFever:main' into main 2025-03-22 13:26:19 +01:00
lodriguez
c3542ce014 Update to mpfr-4.2.2.tar.bz2 (#9007)
Needed an update, the old link is 404.
2025-03-22 16:42:34 +08:00
SoftFever
4c56a3b3f5 bump version to 2.3.1-dev 2025-03-22 12:05:10 +08:00
SoftFever
19c4a4dc3f Automatically update nightly-builds tag 2025-03-21 23:19:10 +08:00
SoftFever
671d3d8f70 fix docker build 2025-03-20 23:30:27 +08:00
Noisyfox
70931e5321 Fix crash when support bottom interface layer is set to same as top (#8955)
* Fix crash when support bottom interface layer option is set to `same as top` (SoftFever/OrcaSlicer#8604)
2025-03-18 23:26:46 +08:00
SoftFever
b02e8bb7f3 Backup user folder to folder instead of zip file (#8953) 2025-03-18 19:53:47 +08:00
Thomas
83f8b6b625 Set Crosshatch as default infill pattern instead of grid (#8952) 2025-03-18 19:53:10 +08:00
Noisyfox
6825cf6d52 Output x64 registers to windows crash report too (#8951)
* Output x64 registers to windows crash report too
2025-03-18 19:42:42 +08:00
cochcoder
c432d2c537 Fixes/Improvements for Creality profiles (#8850)
* 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
2025-03-18 19:41:16 +08:00
Alexandre Folle de Menezes
61b86b976e Adding more pt-BR translations (#8947)
* Adding more pt-BR translations
2025-03-18 19:40:12 +08:00
Alex Griffith
9bf6a44608 Add support for Creality Ender-5 Max (#8870)
* 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
2025-03-18 19:39:20 +08:00
SoftFever
7c1122d06f backup user folder for each version (#8939)
* backup user folder for each version
2025-03-18 00:37:47 +08:00
wrathernaut
4eaef65a79 Add Lulzbot Taz 4, 5, Pro Dual, Pro S (#8844)
* 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
2025-03-17 08:46:55 +08:00
Bernhard Koppensteiner
44b6a6a6b6 bugfix and updates in profiles for MK3.5 (#8778)
* 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
2025-03-16 23:42:24 +08:00
SoftFever
d8bb1786e5 bump version to 2.3.0 2025-03-16 23:07:49 +08:00
SoftFever
2e4576b201 update locale and fix some translation caused by string changes 2025-03-16 23:05:15 +08:00
SoftFever
4ebbadb2a6 update profile version 2025-03-16 22:59:07 +08:00
Noisyfox
4dc6530391 Fix wrong first layer temperature when ooze prevention and print-by-obj are enabled (#8927)
* Don't apply idle temperature to current nozzle (SoftFever/OrcaSlicer#8924)

* Merge branch 'main' into bugfox/ooze-prevention-current-nozzle
2025-03-16 22:32:00 +08:00
SoftFever
e6467d4872 Use .gcode.3mf as ext for gcode 3mf files (#8928) 2025-03-16 22:17:38 +08:00
Noisyfox
69154652ba Allow generating brims for objects inside other object's hole (#8914)
* Allow generating brims for objects inside other object's hole

* Make sure inner brim stays inside holes

(cherry picked from commit 4afbc5bf340835727344bae77572595a4aa2c7ba)

* Merge branch 'main' into bugfox/nested-brim
2025-03-16 20:07:41 +08:00
davidjuanesb
9e2054278f Update Catalan language for OrcaSlicer V2.3.0 Release Candidate (#8913)
* Update Catalan language for OrcaSlicer V2.3.0 Release Candidate

Update Catalan language for OrcaSlicer V2.3.0 Release Candidate
2025-03-16 18:22:04 +08:00
Noisyfox
61464de50b Fix crash when resetting filament presets (#8911)
* Fix crash when resetting filament presets (SoftFever/OrcaSlicer#8863)

* Fix crash when resetting filament presets when dependencies are changed (SoftFever/OrcaSlicer#8849)

* Merge branch 'main' into bugfox/mm-preset-reset-crash
2025-03-16 18:21:20 +08:00
Jesse Litton
c73513ee0d Fix query of gcode's slicer version. (#8925)
* Fix query of gcode's slicer version.
2025-03-16 14:24:28 +08:00
Co Print 3D Printing Technologies
818025635a Added TPU, ABS, and PETG Profiles for Co Print ChromaSet-2 (#8888)
* Add files via upload

* Update Co Print.json

* Update Co Print.json

* Add files via upload

* Update CoPrint Generic ABS.json

* Update CoPrint Generic PETG.json
2025-03-16 14:16:18 +08:00
Shuwn Hsu
7a788c29fd Traditional Chinese Localization Update in 2.3.0-rc (#8883)
* update OrcaSlicer_zh_TW.po
2025-03-16 14:07:41 +08:00
TheLegendTubaGuy
8d09a502f0 Change Elegoo Centauri Start GCode to Wait for bed temp (#8882)
* 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.
2025-03-16 14:06:19 +08:00
wrathernaut
e36d9f9dbf Fix typo (#8872)
* Fix typo 

Typo in remark.
2025-03-16 13:58:54 +08:00
Alexandre Folle de Menezes
d1fbf8b7bf Adding more pt-BR translations (#8871)
* More pt-BR translations
2025-03-16 13:57:41 +08:00
GlauTech
6a3e56b103 Update TURKISH translations (2.3.0-rc) (#8851)
* Update TURKISH translations (2.3.0-rc)
2025-03-16 13:46:09 +08:00
cochcoder
afdf33e402 Show Creality CR-6 Optimal processes (#8848)
* Change Opitmal to Optimal

* Fix typos in CR-6 0.2 profile

* Include optimal CR-6 profiles

* Remove extra space
2025-03-16 13:45:37 +08:00
cochcoder
558cd53b4a Add pause gcode command to Sovol SV08 & SV07 (#8840)
* Update Sovol SV08 0.8 nozzle.json

* Update Sovol SV08 0.6 nozzle.json

* Update Sovol SV08 0.4 nozzle.json

* Update Sovol SV08 0.2 nozzle.json

* Update Sovol SV07 0.4 nozzle.json

* Fix check error
2025-03-16 13:36:58 +08:00
Alexandre Folle de Menezes
1aff64d28c Improve the pt-BR translation of "plate" (#8828)
* Improve the pt-BR translation of "plate"
2025-03-16 13:16:58 +08:00
Thomas
b8b60a3eb1 Fix Creality Hi extruder_clearance_height_to_lid (#8806)
* Fix extruder_clearance_height_to_lid
2025-03-16 13:15:44 +08:00
Heiko Liebscher
bd9dc7764f fix de after update locale (#8803)
* fix de after update locale
2025-03-16 13:14:53 +08:00
cochcoder
79a5a9b5f8 Flatpak arm64 support (#8033)
* 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
2025-03-10 22:36:50 +08:00
SoftFever
be0effc068 update Sovol, remove generic filaments 2025-03-10 21:50:36 +08:00
Apoorv Parle
9227ebbff8 Add SV06 high-speed settings which were incomplete earlier (#8648)
* 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
2025-03-10 21:39:05 +08:00
Thomas
07148536db Fix French translation (for RC) and add new ones (#8789)
* Fix French translation and add new ones.

* One more fix
2025-03-10 21:36:16 +08:00
Noisyfox
70d7768868 Fix crash when slicing batch PA pattern test (#8786)
* Fix crash when slicing batch PA pattern test (SoftFever/OrcaSlicer#8777)
2025-03-10 21:35:44 +08:00
Kappa971
ff9178b830 Update Italian translation (#8785)
* Update Italian translation

* Merge branch 'main' into kappa971/orca-ita

* Fix Italian translation
2025-03-10 21:34:35 +08:00
KrisMorr
9ead771405 update POLISH translations ( 2.3.0-rc) (#8783)
* update_PL

* Merge branch 'main' into update_locale_pl
2025-03-10 21:33:38 +08:00
Alexandre Folle de Menezes
144cdcdc6d Restore translations for string with removed space at the end (#8780) 2025-03-10 11:07:30 +08:00
SoftFever
312ddaa8fb Limit visibility of custom filament profiles based on OrcaFilamentLibrary to currently selected printer only (#8779)
Set compatible_printers when creating custom filament profiles so that this custom profile won't be visible automatically for all printers.
2025-03-09 21:51:19 +08:00
SoftFever
c150bbf61c bump version to 2.3.0-rc 2025-03-09 17:33:16 +08:00
bo0tzz
2a0de19e4e stale bot: exempt "enhancement" label (#8416)
* stale bot: exempt "enhancement" label

Feature requests don't go stale
2025-03-09 16:28:51 +08:00
SoftFever
c17b52ad66 bump profile version to "02.03.00.02" 2025-03-09 15:25:44 +08:00
SoftFever
5c29ec73ee update elegoo filament 2025-03-09 15:25:11 +08:00
SoftFever
e4f8489b4a update locale 2025-03-09 14:33:16 +08:00
Alexandre Folle de Menezes
1ba7f18b90 Mark strings missing from translation (#8757) 2025-03-09 14:14:27 +08:00
Noisyfox
345ab82f91 QoL: Add auto perspective (#8312)
* 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>
2025-03-09 14:04:46 +08:00
yw4z
1558edf827 Profile folder optimizations (BLOCKS, ELEGOO, ERYONE, FLSUN, GEETECH, GINGER ADDITIVE, LULZBOT, SOVOL) (#8764)
* update

* Merge branch 'main' into profiles-optimisation-2

* Fix gridlines not visible on Sovol
2025-03-09 13:29:27 +08:00
Noisyfox
0f3fbd4390 Fix gcode viewer not working properly when opening .gcode files (#8761)
* Fix crash during project openning due to preset sync

* Don't reset gcode preview when open as gcode viewer
2025-03-08 21:26:59 +08:00
Ioannis Giannakas
ec213e98fb Introduce option to control one wall draft shield (#8562)
* 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
2025-03-08 16:48:07 +08:00
cochcoder
4900c546f9 Fix Dremel 3D40 (#8751)
* Fix Dremel 3D40 extrusion

* Fix incorrect layer height
2025-03-08 14:03:10 +08:00
anjis
38fb975d2a Launching and directly loading GCode will result in missing information. (#8745)
Fix the issue where launching the software and directly loading a GCode file fails to display inner and outer wall information.
2025-03-08 14:01:16 +08:00
Alexandre Folle de Menezes
74d9a88480 Remove unnecessary trailing spaces (#8752) 2025-03-08 13:41:31 +08:00
Noisyfox
464b89c3a7 Fix issue that sharp tails are supported regardless of support blockers (#8743)
when using normal support (SoftFever/OrcaSlicer#8737)

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-03-08 11:03:40 +08:00
SoftFever
69bab18a8e update OrcaFilamentLibrary (#8753)
* update OrcaFilamentLibrary
disable activate_air_filtration and remove filament_start_gcode

* Revert "update OrcaFilamentLibrary
disable activate_air_filtration and remove filament_start_gcode"

This reverts commit 1b8eebcff3.
2025-03-08 01:56:20 +08:00
Noisyfox
1d71ed5ade Fix preset transfer crash (#8744)
Fix preset transfer crash (SoftFever/OrcaSlicer#7991)
2025-03-08 00:49:25 +08:00
SoftFever
bc698a88df Revert "Bug fix: Check for air filtration support on the printer level before emitting air filtration gcode command" (#8750)
Revert "Bug fix: Check for air filtration support on the printer level before…"

This reverts commit 22e410f82d.
2025-03-08 00:47:45 +08:00
Dima Buzdyk
ecc16bfabf pa calib: batch mode for pa pattern (#7199)
* pa calib: batch mode option
2025-03-07 19:26:54 +08:00
Shuwn Hsu
538db07127 Traditional Chinese Localization Update and Fix for PrintConfig.cpp in 2.3.0-beta2 (#8730)
* add monitor-filee

* Merge branch 'SoftFever:main' into main

* Traditional Chinese localization update for 2.3.0-beta2

* Update translation catalog

* Fix missing characters and repair changes errors.

* Merge branch 'SoftFever:main' into main

* Merge branch 'main' of github.com:shuwn/OrcaSlicer

* Patch translation

* Patch translation

* Patch translation

* Merge branch 'main' of github.com:shuwn/OrcaSlicer

* Merge branch 'SoftFever:main' into PR-Line

* rm monitor-file.yml form PR-Line

* Merge branch 'main' into PR-Line
2025-03-07 19:22:27 +08:00
Ruslan Kyba
2b8cdfe547 Update Ukranian translations (#8727)
* Update OrcaSlicer_uk.po
2025-03-07 19:19:19 +08:00
Vladimir Gamalyan
af2e1e1873 Update Russian translation (#8726)
* Update OrcaSlicer_ru.po

Fix a typo
2025-03-07 19:18:43 +08:00
Christian Muehlhaeuser
7c650c16f8 Update Artillery Genius & Sidewinder profiles (#8673)
* 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.
2025-03-07 19:18:00 +08:00
urself25
bc3347a538 Add Flashforge Adventurer 4 Printer Profile (#8662)
* Add Flashforge Adventurer 4 Printer Profile

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-03-07 19:15:14 +08:00
Heiko Liebscher
36a5a14507 update german translation (#8722)
* add new de translations

* Merge remote-tracking branch 'upstream/main' into add_more_de

* fix

* Merge remote-tracking branch 'upstream/main' into add_more_de
2025-03-06 20:39:48 +08:00
Ioannis Giannakas
22e410f82d Bug fix: Check for air filtration support on the printer level before emitting air filtration gcode command (#8681)
* 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
2025-03-06 20:32:30 +08:00
Ioannis Giannakas
9a0ce083a4 Bug fix: Removed expand factor from IOI as it was incorrectly causing perimeter failing to observe IOI reordering. (#8682)
* 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
2025-03-06 20:30:57 +08:00
Noisyfox
b5f443c64c Fix issue that painted brim is not generated if brim width is set to 0 (#8700)
* Fix issue that painted brim is not generated if brim width is set to 0 (SoftFever/OrcaSlicer#8687)
2025-03-06 20:28:54 +08:00
Noisyfox
fbfbb0932f Switch to print-by-layer mode automatically for PA pattern test (#8688)
* Switch to print-by-layer mode automatically for PA pattern test (SoftFever/OrcaSlicer#8665)
2025-03-06 20:27:46 +08:00
Kappa971
fc2335e554 Update Italian translation (#8694)
* Update Italian translation

* Fix Italian translation

* Fix Italian translation

* Fix Italian translation

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-06 11:18:19 +08:00
Piotr Sokół
398a91d548 Update Polish translation (#8690)
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-06 11:16:48 +08:00
GlauTech
e5bd7379a8 Update TURKISH translations (#8671)
* Update TURKISH translations

* Update TURKISH translations

Update TURKISH translations

* Update TURKISH translations

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-06 11:15:33 +08:00
Lee Jong Mun
55beb67387 kor translation update (#8676)
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-06 11:12:59 +08:00
Alexandre Folle de Menezes
d92dfc097c Add leftover strings from "overwrite dialog" fix (#8712) 2025-03-06 11:11:30 +08:00
davidjuanesb
30cfc13a3d Catalan language updated to OrcaSlicer v2.3.0-beta2 (#8716)
Catalan language updated to OrcaSlicer v2.3.0-beta2
2025-03-06 11:10:54 +08:00
Alexandre Folle de Menezes
bd0859d35d Add markers to allow translation of strings with '%' (#8488) 2025-03-06 11:08:39 +08:00
Alexandre Folle de Menezes
2b109d552c Fix typo on format string (#8470) 2025-03-06 11:07:08 +08:00
Alexandre Folle de Menezes
2a5371ab62 Fix text on file/config overwrite dialog (#8471)
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-03-05 23:22:33 +08:00
Pouria Mousavizadeh Tehrani
a407feed24 fix: typo in CMakeLists.txt (#8707) 2025-03-05 21:29:54 +08:00
Thomas
3bf935e00d Fix typo "timeplapse" (#8652) 2025-03-05 16:32:28 +08:00
Ruslan Kyba
1584c883b0 chore: Improve Ukrianian translation (#8667)
* Update OrcaSlicer_uk.po

* Update OrcaSlicer_uk.po
2025-03-03 20:40:15 +08:00
Noisyfox
d9b4c9d18f Arachne: Make sure wall is generated only if wall number set to > 0 (#8666)
Arachne: Make sure wall is generated only if wall number set to > 0 (SoftFever/OrcaSlicer#8619)
2025-03-03 20:38:05 +08:00
SoftFever
5e5542d02f Update default filaments for printers (#8655)
* update M1

* update Voron

* update Positron

* update Biqu

* update Eryone

* update Folgetech

* update Geeetech

* update Kingroon

* update MagicMaker

* update Raise3D

* update Rolohaun

* update Tronxy

* update Kingroon and Tronxy

* update Voxelab

* update Wanhao

* more fix
2025-03-03 20:32:47 +08:00
Slawomir Ciunczyk
118266f721 Creality K2 Plus fixed build plate model (#8646)
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.
2025-03-03 20:29:51 +08:00
Andy
c81b743d31 Russian translation update (#8645)
The next update:
General improvement of translation, correction of errors.
2025-03-03 20:28:54 +08:00
Thomas
e11a121983 Add missing French translations (#8651)
Added French translations
2025-03-03 20:22:23 +08:00
yw4z
d9f4e6b8ba Sidebar margin & spacing fixes (#6238)
* 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
2025-03-03 11:13:51 +08:00
Noisyfox
632eff6a3a Fix filament combox disappearing (#8649)
Make sure frozen filament combox is thawed
2025-03-02 23:20:16 +08:00
SoftFever
d649472412 Update .gitignore 2025-02-26 20:14:36 +08:00
VOLUMIC
74b6371994 EXO/SH profils updates 2025-02-25 18:25:47 +01:00
VOLUMIC
fa206896f4 Merge branch 'main' of https://github.com/VOLUMIC/OrcaSlicer 2025-02-25 18:24:57 +01:00
Noisyfox
5b1cfa4529 Handle sinking object properly 2025-02-19 18:02:39 +08:00
Noisyfox
961254b81d Make print_volume_state reusable 2025-02-19 16:17:25 +08:00
Noisyfox
7494825038 Avoid unnecessary call of volume_bbox if bed shape is not rectangle 2025-02-19 15:50:15 +08:00
SoftFever
f7e9792a5d Update .gitignore 2025-02-08 00:09:05 +08:00
VOLUMIC
921e4cef2e Acceleration fixes 2025-02-04 13:49:14 +01:00
VOLUMIC
b5b837cf41 Fixes 2025-02-04 13:05:58 +01:00
VOLUMIC
ed538b0307 Merge branch 'main' of https://github.com/VOLUMIC/OrcaSlicer 2025-02-04 10:09:56 +01:00
VOLUMIC
dd8812cd04 accelerations removing 2025-02-04 10:09:52 +01:00
SoftFever
4ca541fbc7 Merge branch 'main' into main 2025-02-04 07:58:42 +08:00
VOLUMIC
eb908d0aa7 Update VS30ULTRA (0.4 nozzle).json 2025-02-01 17:17:11 +01:00
VOLUMIC
478e2a68a0 profils fixes 2025-02-01 17:12:58 +01:00
VOLUMIC
1924d9b7ae Add new machines 2025-02-01 17:01:04 +01:00
3957 changed files with 254851 additions and 86333 deletions

10
.cursorignore Normal file
View File

@@ -0,0 +1,10 @@
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
deps/
build_*/
build/
localization/
sandboxes/
resources/*
!resources/web/
!resources/dailytip
!resources/shaders

View File

@@ -1,2 +1,2 @@
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
ARG BASE_IMAGE
FROM ${BASE_IMAGE}

View File

@@ -1,14 +1,14 @@
{
"name": "OrcaSlicer",
"build": {
"dockerfile": "Dockerfile",
"args": {
"PLATFORM": "linux/amd64",
"BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-20.04"
},
"options": ["--platform=linux/amd64"]
"dockerfile": "Dockerfile",
"args": {
"PLATFORM": "linux/amd64",
"BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04"
},
"options": ["--platform=linux/amd64"]
},
"runArgs": ["--env-file", "/tmp/devcontainer.env"],
"runArgs": ["--platform=linux/amd64"],
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {
"password": "orca"
@@ -16,16 +16,13 @@
},
"customizations": {
"vscode": {
"settings": {
"settings": {
"cmake.configureArgs": [
"-DSLIC3R_GTK=3",
"-DBBL_RELEASE_TO_PUBLIC=1",
"-DBBL_INTERNAL_TESTING=0",
"-DSLIC3R_STATIC=1",
"-DCMAKE_PREFIX_PATH=${workspaceFolder}/deps/build/destdir/usr/local"
],
"cmake.buildToolArgs": [
"-l${containerEnv:CORES}"
]
},
@@ -47,10 +44,6 @@
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"initializeCommand": {
"Setup Temporary Env File": "echo \"CORES=`nproc --all`\" > /tmp/devcontainer.env"
},
"onCreateCommand": {
"Set postCreate executable flag": "chmod +x .devcontainer/postCreate.sh"
},

View File

@@ -3,12 +3,13 @@
apt update
apt upgrade -y
build_linux="./build_linux.sh -u"
echo "-----------------------------------------"
echo "Running BuildLinux.sh with update flag..."
echo "Running ${build_linux}..."
echo "-----------------------------------------"
./BuildLinux.sh -u
${build_linux}
echo "------------------------------"
echo "Installing missing packages..."
echo "------------------------------"
apt install -y libgl1-mesa-dev m4 autoconf libtool
apt install -y libgl1-mesa-dev m4 autoconf libtool

View File

@@ -22,6 +22,7 @@ deps/build-linux/*
**/.DS_Store
install_*
build_*/
!build_linux.sh
SVG
Dockerfile
DockerBuild.sh

2
.gitattributes vendored
View File

@@ -0,0 +1,2 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

View File

@@ -13,6 +13,7 @@ on:
- 'localization/**'
- 'resources/**'
- ".github/workflows/build_*.yml"
- 'flatpak/**'
pull_request:
branches:
@@ -24,9 +25,10 @@ on:
- '**/CMakeLists.txt'
- 'version.inc'
- ".github/workflows/build_*.yml"
- 'BuildLinux.sh'
- 'build_linux.sh'
- 'build_release_vs2022.bat'
- 'build_release_macos.sh'
- 'flatpak/**'
workflow_dispatch: # allows for manual dispatch
inputs:
@@ -47,11 +49,10 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
# Deprecate 20.04appimage
# - os: ubuntu-20.04
- os: ubuntu-24.04
- os: windows-latest
- os: macos-14
arch: x86_64
- os: macos-14
arch: arm64
uses: ./.github/workflows/build_check_cache.yml
@@ -62,19 +63,26 @@ jobs:
secrets: inherit
flatpak:
name: "Flatpak"
runs-on: ubuntu-latest
env:
date:
ver:
ver_pure:
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-46
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-47
options: --privileged
volumes:
- /usr/local/lib/android:/usr/local/lib/android
- /usr/share/dotnet:/usr/share/dotnet
- /opt/ghc:/opt/ghc1
- /usr/local/share/boost:/usr/local/share/boost1
strategy:
matrix:
variant:
- arch: x86_64
runner: ubuntu-24.04
- arch: aarch64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.variant.runner }}
env:
date:
ver:
ver_pure:
steps:
- name: "Remove unneeded stuff to free disk space"
run:
@@ -92,24 +100,25 @@ jobs:
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
- uses: flathub-infra/flatpak-github-actions/flatpak-builder@master
with:
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml
cache: true
arch: ${{ matrix.variant.arch }}
upload-artifact: false
- name: Upload artifacts Flatpak
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak'
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
- name: Deploy Flatpak to nightly release
if: ${{github.ref == 'refs/heads/main'}}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
asset_name: OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
asset_name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted

View File

@@ -30,13 +30,12 @@ jobs:
- name: set outputs
id: set_outputs
env:
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
dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-14') && 'OrcaSlicer_dep' || 'destdir' }}
# todo: this is mad! refactor other build scripts to use same name
dep-folder-name: ${{ inputs.os == 'windows-latest' && '/OrcaSlicer_dep' || inputs.os == 'macos-14' && '' || inputs.os != 'macos-14' && '/destdir' || '' }}
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
run: |
echo cache-key=${{ inputs.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
echo cache-path=${{ github.workspace }}/deps/build${{ env.underscore-arch }}/${{ env.dep-folder-name }}${{ env.underscore-arch }} >> ${{ env.output-cmd }}
echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
- name: load cache
id: cache_deps

View File

@@ -74,12 +74,14 @@ jobs:
if: inputs.os == 'macos-14'
working-directory: ${{ github.workspace }}
run: |
brew install automake texinfo ninja libtool
brew install automake texinfo libtool
brew list
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }}
brew uninstall --ignore-dependencies zstd
./build_release_macos.sh -dpx -a ${{ inputs.arch }} -t 10.15 -1
./build_release_macos.sh -dx -a universal -t 10.15 -1
for arch in arm64 x86_64; do
(cd "${{ github.workspace }}/deps/build/${arch}" && \
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
done
brew install zstd
@@ -95,7 +97,7 @@ jobs:
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-${{ env.webkit-ver }}-dev \
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev texinfo
gstreamer1.0-plugins-bad wget sudo autoconf curl libunwind-dev texinfo
- name: Build on Ubuntu
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
@@ -103,20 +105,20 @@ jobs:
run: |
mkdir -p ${{ github.workspace }}/deps/build
mkdir -p ${{ github.workspace }}/deps/build/destdir
sudo ./BuildLinux.sh -ur
sudo ./build_linux.sh -ur
sudo chown $USER -R ./
./BuildLinux.sh -dr
./build_linux.sh -dr
cd deps/build
tar -czvf OrcaSlicer_dep_ubuntu_$(date +"%Y%m%d").tar.gz destdir
# Upload Artifacts
- name: Upload Mac ${{ inputs.arch }} artifacts
if: inputs.os == 'macos-14'
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }}
path: ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep*.tar.gz
# - name: Upload Mac ${{ inputs.arch }} artifacts
# if: inputs.os == 'macos-14'
# uses: actions/upload-artifact@v4
# with:
# name: OrcaSlicer_dep_mac_${{ env.date }}
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.tar.gz
- name: Upload Windows artifacts
if: inputs.os == 'windows-latest'

View File

@@ -81,10 +81,9 @@ jobs:
- name: Install tools mac
if: inputs.os == 'macos-14'
run: |
brew install ninja libtool
brew install libtool
brew list
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}}
mkdir -p ${{ github.workspace }}/deps/build
- name: Free disk space
if: inputs.os == 'macos-14'
@@ -98,7 +97,7 @@ jobs:
if: inputs.os == 'macos-14'
working-directory: ${{ github.workspace }}
run: |
./build_release_macos.sh -s -n -x -a ${{inputs.arch}} -t 10.15 -1
./build_release_macos.sh -s -n -x -a universal -t 10.15 -1
# Thanks to RaySajuuk, it's working now
- name: Sign app and notary
@@ -119,27 +118,66 @@ jobs:
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/OrcaSlicer.app
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer.app
# Sign OrcaSlicer_profile_validator.app if it exists
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app
fi
# Create main OrcaSlicer DMG
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
# Create separate OrcaSlicer_profile_validator DMG if the app exists
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg
cp -R ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/Applications
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
fi
# Notarize main DMG
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
xcrun notarytool submit "OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun stapler staple OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
# Notarize profile validator DMG if it exists
if [ -f "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" ]; then
xcrun notarytool submit "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun stapler staple OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
fi
- name: Create DMG without notary
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14'
working-directory: ${{ github.workspace }}
run: |
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
# Create separate OrcaSlicer_profile_validator DMG if the app exists
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg
cp -R ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/Applications
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
fi
- name: Upload artifacts mac
if: inputs.os == 'macos-14'
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
name: OrcaSlicer_Mac_universal_${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
- name: Upload OrcaSlicer_profile_validator DMG mac
if: inputs.os == 'macos-14'
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
if-no-files-found: ignore
- name: Deploy Mac release
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
@@ -147,11 +185,22 @@ jobs:
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
asset_name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
asset_name: OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy Mac OrcaSlicer_profile_validator DMG release
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
asset_name: OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
asset_content_type: application/octet-stream
max_releases: 1
# Windows
- name: setup MSVC
if: inputs.os == 'windows-latest'
@@ -210,6 +259,13 @@ jobs:
name: PDB
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
- name: Upload OrcaSlicer_profile_validator Win
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
- name: Deploy Windows release portable
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
uses: WebFreak001/deploy-nightly@v3.2.0
@@ -232,6 +288,17 @@ jobs:
asset_content_type: application/x-msdownload
max_releases: 1
- name: Deploy Windows OrcaSlicer_profile_validator release
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
asset_name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}.exe
asset_content_type: application/x-msdownload
max_releases: 1
# Ubuntu
- name: Install dependencies
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
@@ -244,13 +311,13 @@ jobs:
${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget ${{ env.libfuse2-pkg }}
- name: Install dependencies from BuildLinux.sh
- name: Install dependencies from build_linux.sh
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
shell: bash
run: sudo ./BuildLinux.sh -ur
run: sudo ./build_linux.sh -ur
- name: Fix permissions
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
@@ -263,12 +330,12 @@ jobs:
env:
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
run: |
./BuildLinux.sh -isr
./build_linux.sh -isr
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
- name: Build orca_custom_preset_tests
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04'
working-directory: ${{ github.workspace }}/build/src
shell: bash
run: |
@@ -286,6 +353,15 @@ jobs:
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
- name: Upload OrcaSlicer_profile_validator Ubuntu
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
env:
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_profile_validator_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
path: './build/src/OrcaSlicer_profile_validator'
- name: Deploy Ubuntu release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
env:
@@ -298,9 +374,30 @@ jobs:
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy Ubuntu release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
uses: rickstaa/action-create-tag@v1
with:
tag: "nightly-builds"
tag_exists_error: false
force_push_tag: true
message: "nightly-builds"
- name: Deploy Ubuntu OrcaSlicer_profile_validator release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
env:
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ./build/src/OrcaSlicer_profile_validator
asset_name: OrcaSlicer_profile_validator_Linux${{ env.ubuntu-ver-str }}_${{ env.ver }}
asset_content_type: application/octet-stream
max_releases: 1
- name: Deploy orca_custom_preset_tests
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}

View File

@@ -0,0 +1,71 @@
name: Claude Code Review
on:
workflow_dispatch:
jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
# model: "claude-opus-4-1-20250805"
# Direct prompt for automated review (no @claude mention needed)
direct_prompt: |
Please review this pull request and provide feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security concerns
- Test coverage
Be constructive and helpful in your feedback.
# Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR
# use_sticky_comment: true
# Optional: Customize review based on file types
# direct_prompt: |
# Review this PR focusing on:
# - For TypeScript files: Type safety and proper interface usage
# - For API endpoints: Security, input validation, and error handling
# - For React components: Performance, accessibility, and best practices
# - For tests: Coverage, edge cases, and test quality
# Optional: Different prompts for different authors
# direct_prompt: |
# ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&
# 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||
# 'Please provide a thorough code review focusing on our coding standards and best practices.' }}
# Optional: Add specific tools for running tests or linting
# allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"
# Optional: Skip review for certain conditions
# if: |
# !contains(github.event.pull_request.title, '[skip-review]') &&
# !contains(github.event.pull_request.title, '[WIP]')

64
.github/workflows/claude.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
# model: "claude-opus-4-1-20250805"
# Optional: Customize the trigger phrase (default: @claude)
# trigger_phrase: "/claude"
# Optional: Trigger when specific user is assigned to an issue
# assignee_trigger: "claude-bot"
# Optional: Allow Claude to run specific commands
# allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
# Optional: Add custom instructions for Claude to customize its behavior for your project
# custom_instructions: |
# Follow our coding standards
# Ensure all new code has tests
# Use TypeScript for new files
# Optional: Custom environment variables for Claude
# claude_env: |
# NODE_ENV: test

View File

@@ -31,6 +31,8 @@ jobs:
exempt-all-issue-milestones: true
# Exempt all issues with assignees from stale
exempt-all-issue-assignees: true
# Exempt feature requests
exempt-issue-labels: "enhancement"
# Idle number of days before marking issues stale
days-before-issue-stale: 90
# Idle number of days before marking issues close

View File

@@ -1,195 +0,0 @@
#!/bin/bash
export ROOT=$(dirname $(readlink -f ${0}))
set -e # exit on first error
function check_available_memory_and_disk() {
FREE_MEM_GB=$(free -g -t | grep 'Mem' | rev | cut -d" " -f1 | rev)
MIN_MEM_GB=10
FREE_DISK_KB=$(df -k . | tail -1 | awk '{print $4}')
MIN_DISK_KB=$((10 * 1024 * 1024))
if [ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]; then
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (systen has only ${FREE_MEM_GB}G available)"
echo && free -h && echo
exit 2
fi
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]]; then
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo ${MIN_DISK_KB} |awk '{ printf "%.1fG\n", $1/1024/1024; }') (systen has only $(echo ${FREE_DISK_KB} | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
echo && df -h . && echo
exit 1
fi
}
function usage() {
echo "Usage: ./BuildLinux.sh [-1][-b][-c][-d][-i][-r][-s][-u]"
echo " -1: limit builds to 1 core (where possible)"
echo " -b: build in debug mode"
echo " -c: force a clean build"
echo " -d: build deps (optional)"
echo " -h: this help output"
echo " -i: Generate appimage (optional)"
echo " -r: skip ram and disk checks (low ram compiling)"
echo " -s: build orca-slicer (optional)"
echo " -u: update and build dependencies (optional and need sudo)"
echo "For a first use, you want to 'sudo ./BuildLinux.sh -u'"
echo " and then './BuildLinux.sh -dsi'"
}
unset name
while getopts ":1bcdghirsu" opt; do
case ${opt} in
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
;;
b )
BUILD_DEBUG="1"
;;
c )
CLEAN_BUILD=1
;;
d )
BUILD_DEPS="1"
;;
h ) usage
exit 0
;;
i )
BUILD_IMAGE="1"
;;
r )
SKIP_RAM_CHECK="1"
;;
s )
BUILD_ORCA="1"
;;
u )
UPDATE_LIB="1"
;;
esac
done
if [ ${OPTIND} -eq 1 ]
then
usage
exit 0
fi
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '"')
DISTRIBUTION_LIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
# Check for direct distribution match to Ubuntu/Debian
if [ "${DISTRIBUTION}" == "ubuntu" ] || [ "${DISTRIBUTION}" == "linuxmint" ]; then
DISTRIBUTION="debian"
# Check if distribution is Debian/Ubuntu-like based on ID_LIKE
elif [[ "${DISTRIBUTION_LIKE}" == *"debian"* ]] || [[ "${DISTRIBUTION_LIKE}" == *"ubuntu"* ]]; then
DISTRIBUTION="debian"
fi
if [ ! -f ./linux.d/${DISTRIBUTION} ]
then
echo "Your distribution does not appear to be currently supported by these build scripts"
exit 1
fi
source ./linux.d/${DISTRIBUTION}
echo "FOUND_GTK3=${FOUND_GTK3}"
if [[ -z "${FOUND_GTK3_DEV}" ]]
then
echo "Error, you must install the dependencies before."
echo "Use option -u with sudo"
exit 1
fi
echo "Changing date in version..."
{
# change date in version
sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc
}
echo "done"
if ! [[ -n "${SKIP_RAM_CHECK}" ]]
then
check_available_memory_and_disk
fi
if [[ -n "${BUILD_DEPS}" ]]
then
echo "Configuring dependencies..."
BUILD_ARGS="-DDEP_WX_GTK3=ON"
if [[ -n "${CLEAN_BUILD}" ]]
then
rm -fr deps/build
fi
if [ ! -d "deps/build" ]
then
mkdir deps/build
fi
if [[ -n "${BUILD_DEBUG}" ]]
then
# have to build deps with debug & release or the cmake won't find everything it needs
if [ ! -d "deps/build/release" ]
then
mkdir deps/build/release
fi
cmake -S deps -B deps/build/release -G Ninja -DDESTDIR="${PWD}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${PWD}/deps/DL_CACHE" ${BUILD_ARGS}
cmake --build deps/build/release
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
fi
echo "cmake -S deps -B deps/build -G Ninja ${BUILD_ARGS}"
cmake -S deps -B deps/build -G Ninja ${BUILD_ARGS}
cmake --build deps/build
fi
if [[ -n "${BUILD_ORCA}" ]]
then
echo "Configuring OrcaSlicer..."
if [[ -n "${CLEAN_BUILD}" ]]
then
rm -fr build
fi
BUILD_ARGS=""
if [[ -n "${FOUND_GTK3_DEV}" ]]
then
BUILD_ARGS="-DSLIC3R_GTK=3"
fi
if [[ -n "${BUILD_DEBUG}" ]]
then
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
else
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
fi
echo -e "cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="${PWD}/deps/build/destdir/usr/local" -DSLIC3R_STATIC=1 ${BUILD_ARGS}"
cmake -S . -B build -G Ninja \
-DCMAKE_PREFIX_PATH="${PWD}/deps/build/destdir/usr/local" \
-DSLIC3R_STATIC=1 \
-DORCA_TOOLS=ON \
${BUILD_ARGS}
echo "done"
echo "Building OrcaSlicer ..."
cmake --build build --target OrcaSlicer
echo "Building OrcaSlicer_profile_validator .."
cmake --build build --target OrcaSlicer_profile_validator
./run_gettext.sh
echo "done"
fi
if [[ -e ${ROOT}/build/src/BuildLinuxImage.sh ]]; then
# Give proper permissions to script
chmod 755 ${ROOT}/build/src/BuildLinuxImage.sh
echo "[9/9] Generating Linux app..."
pushd build
if [[ -n "${BUILD_IMAGE}" ]]
then
${ROOT}/build/src/BuildLinuxImage.sh -i
else
${ROOT}/build/src/BuildLinuxImage.sh
fi
popd
echo "done"
fi

116
CLAUDE.md Normal file
View File

@@ -0,0 +1,116 @@
# CLAUDE.md
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
- Platform-independent slicing functionality
- Key classes: Print, PrintObject, Layer, GCode, Config
- **src/slic3r/**: Main application framework
- GUI application entry points and main loops
- Integration between libslic3r and the GUI
### GUI Components
- Built with wxWidgets framework
- Located primarily in `src/slic3r/GUI/`
- Main application class: `GUI_App`
- Uses OpenGL for 3D visualization
### Key Modules
- **3MF Format Support**: `src/libslic3r/Format/3mf.cpp` - 3MF file format reading/writing
- **G-code Processing**: `src/libslic3r/GCode/` - G-code generation and processing
- **Geometry**: `src/libslic3r/Geometry.cpp` - 2D/3D geometry operations
- **Print Configuration**: `src/libslic3r/PrintConfig.cpp` - Print settings and presets
- **Model Handling**: `src/libslic3r/Model.cpp` - 3D model representation and manipulation
### External Dependencies
- **Clipper**: 2D polygon clipping operations
- **libigl**: Geometry processing library
- **OpenVDB**: Voxel data structures (optional)
- **TBB**: Threading Building Blocks for parallelization
- **wxWidgets**: Cross-platform GUI toolkit
- **OpenGL**: 3D graphics rendering
## File Organization
### Configuration and Profiles
- `resources/profiles/`: Printer and material profiles organized by manufacturer
- `resources/printers/`: Printer-specific configurations and G-code templates
### Internationalization
- `localization/i18n/`: Translation files
- `resources/i18n/`: Runtime language resources
### Platform-Specific Code
- Platform abstractions in `src/libslic3r/Platform.cpp`
- macOS-specific utilities in `src/libslic3r/MacUtils.mm`
## Development Workflow
### Code Style
- C++17 standard
- Use existing patterns found in libslic3r for consistency
- Follow existing naming conventions (PascalCase for classes, snake_case for functions)
### Common Tasks
- **Adding new print settings**: Extend `PrintConfig.cpp` and related GUI components
- **Modifying slicing algorithms**: Work in `libslic3r/` core modules
- **GUI changes**: Modify components in `src/slic3r/GUI/`
- **Adding printer support**: Add profiles in `resources/profiles/`
### Dependencies Management
Dependencies are managed through CMake and built separately from the main application. The `deps/` directory contains dependency build configurations.
## Important Notes
- The codebase is large and complex - use search tools to navigate effectively
- Many algorithms are performance-critical - consider computational complexity
- The project maintains backward compatibility with various file formats
- Cross-platform compatibility is important (Windows, macOS, Linux)
- The GUI uses a custom theming system supporting light/dark modes

View File

@@ -1,5 +1,50 @@
cmake_minimum_required(VERSION 3.13)
# Verify that your CMake version is exactly 3.31.x series or lower on windows
if ( ((MSVC) OR (WIN32)) AND (${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0") )
message(FATAL_ERROR "Only cmake versions between 3.13.x and 3.31.x is supported on windows. Detected version: ${CMAKE_VERSION}")
endif()
if (WIN32)
# Detect known CI environments
set(IS_CI FALSE)
if(DEFINED ENV{CI})
set(IS_CI TRUE)
elseif(DEFINED ENV{GITHUB_ACTIONS})
set(IS_CI TRUE)
elseif(DEFINED ENV{GITLAB_CI})
set(IS_CI TRUE)
elseif(DEFINED ENV{TF_BUILD})
set(IS_CI TRUE)
elseif(DEFINED ENV{BUILD_NUMBER}) # Jenkins
set(IS_CI TRUE)
endif()
# Detect common misconfiguration (Strawberry Perl in PATH before CMake)
# We use ENV to check the PATH order
string(REPLACE "\\" "/" ENV_PATH "$ENV{PATH}")
string(FIND "${ENV_PATH}" "Strawberry/c/bin" STRAWBERRY_POS)
string(FIND "${ENV_PATH}" "Program Files/CMake/bin" CMAKE_POS)
if (STRAWBERRY_POS GREATER -1 AND CMAKE_POS GREATER -1 AND STRAWBERRY_POS LESS CMAKE_POS)
set(_warning_text "
#############################################################
Detected Strawberry Perl's 'c/bin' appearing before CMake in PATH.
This is known to cause CMake to misbehave (e.g., missing modules).
Please adjust your PATH so that:
C:\\Program Files\\CMake\\bin
appears before:
C:\\Strawberry\\c\\bin
You can do this in Environment Variables settings.
#############################################################
")
if(NOT IS_CI)
message(FATAL_ERROR "${_warning_text}")
endif()
endif()
endif ()
if (APPLE)
# if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3
if (NOT CMAKE_OSX_DEPLOYMENT_TARGET)
@@ -63,6 +108,15 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
set(IS_CROSS_COMPILE FALSE)
option (COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
if (${COLORED_OUTPUT})
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options (-fdiagnostics-color=always)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options (-fcolor-diagnostics)
endif ()
endif ()
if (APPLE)
set(CMAKE_FIND_FRAMEWORK LAST)
set(CMAKE_FIND_APPBUNDLE LAST)
@@ -182,7 +236,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT WIN32)
# Add DEBUG flags to debug builds.
add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
add_compile_definitions("$<IF:$<CONFIG:Debug>,DEBUG,NDEBUG>")
endif()
# To be able to link libslic3r with the Perl XS module.
@@ -219,7 +273,7 @@ if(WIN32)
if(WIN10SDK_INCLUDE_PATH)
message("Building with Win10 Netfabb STL fixing service support")
add_definitions(-DHAS_WIN10SDK)
include_directories("${WIN10SDK_INCLUDE_PATH}")
include_directories(SYSTEM "${WIN10SDK_INCLUDE_PATH}")
else()
message("Building without Win10 Netfabb STL fixing service support")
endif()
@@ -247,7 +301,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
find_package(Threads REQUIRED)
find_package(DBus REQUIRED)
include_directories(${DBUS_INCLUDE_DIRS})
include_directories(SYSTEM ${DBUS_INCLUDE_DIRS})
endif()
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
@@ -309,7 +363,7 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
add_compile_options(-Wno-unknown-pragmas)
endif()
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
add_compile_options(-gz=zstd)
endif()
@@ -356,11 +410,11 @@ message(STATUS "LIBDIR: ${LIBDIR}")
message(STATUS "LIBDIR_BIN: ${LIBDIR_BIN}")
# For the bundled boost libraries (boost::nowide)
include_directories(${LIBDIR})
include_directories(SYSTEM ${LIBDIR})
# For generated header files
include_directories(${LIBDIR_BIN}/platform)
include_directories(SYSTEM ${LIBDIR_BIN}/platform)
# For ligigl
include_directories(${LIBDIR}/libigl)
include_directories(SYSTEM ${LIBDIR}/libigl)
if(WIN32)
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
@@ -430,7 +484,10 @@ endif()
# set(Boost_COMPILER "-mgw81")
# boost::process was introduced first in version 1.64.0,
# boost::beast::detail::base64 was introduced first in version 1.66.0
find_package(Boost 1.66 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options)
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
find_package(Boost 1.83.0 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options nowide)
add_library(boost_libs INTERFACE)
add_library(boost_headeronly INTERFACE)
@@ -447,7 +504,7 @@ endif()
function(slic3r_remap_configs targets from_Cfg to_Cfg)
if(MSVC)
string(TOUPPER ${from_Cfg} from_CFG)
foreach(tgt ${targets})
if(TARGET ${tgt})
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
@@ -456,7 +513,7 @@ function(slic3r_remap_configs targets from_Cfg to_Cfg)
endif()
endfunction()
target_include_directories(boost_headeronly INTERFACE ${Boost_INCLUDE_DIRS})
target_include_directories(boost_headeronly SYSTEM INTERFACE ${Boost_INCLUDE_DIRS})
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
# Find and configure intel-tbb
@@ -466,7 +523,7 @@ endif()
set(TBB_DEBUG 1)
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release "")
find_package(TBB REQUIRED)
# include_directories(${TBB_INCLUDE_DIRS})
# include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
# add_definitions(${TBB_DEFINITIONS})
# if(MSVC)
# # Suppress implicit linking of the TBB libraries by the Visual Studio compiler.
@@ -508,7 +565,7 @@ if (SLIC3R_STATIC AND NOT SLIC3R_STATIC_EXCLUDE_CURL)
find_package(OpenSSL REQUIRED)
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
target_include_directories(libcurl INTERFACE ${OPENSSL_INCLUDE_DIR})
target_include_directories(libcurl SYSTEM INTERFACE ${OPENSSL_INCLUDE_DIR})
target_link_libraries(libcurl INTERFACE ${OPENSSL_LIBRARIES})
endif()
endif()
@@ -574,7 +631,7 @@ add_custom_target(gettext_make_pot
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
-f "${BBL_L18N_DIR}/list.txt"
-o "${BBL_L18N_DIR}/OrcaSlicer.pot"
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Generate pot file from strings in the source tree"
)
@@ -629,11 +686,9 @@ endif ()
find_path(SPNAV_INCLUDE_DIR spnav.h)
if (SPNAV_INCLUDE_DIR)
find_library(HAVE_SPNAV spnav)
if (HAVE_SPNAV)
find_library(SPNAV_LIB NAMES libspnav.a) # Force linking libspnav statically
if (SPNAV_LIB)
add_definitions(-DHAVE_SPNAV)
add_library(libspnav SHARED IMPORTED)
target_link_libraries(libspnav INTERFACE spnav)
message(STATUS "SPNAV library found")
else()
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
@@ -644,10 +699,12 @@ endif()
set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR})
function(orcaslicer_copy_dlls target config postfix output_dlls)
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(_bits 64)
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(_bits 32)
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
set(_arch "x64")
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
set(_arch "x86")
else ()
message(FATAL_ERROR "Unable to detect architecture")
endif ()
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
@@ -664,9 +721,9 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
endif ()
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win${_bits}/WebView2Loader.dll
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win-${_arch}/libgmp-10.dll
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win-${_arch}/libmpfr-4.dll
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win-${_arch}/WebView2Loader.dll
DESTINATION ${_out_dir})
file(COPY ${CMAKE_PREFIX_PATH}/bin/occt/TKBO.dll
@@ -734,7 +791,7 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
PARENT_SCOPE
)
endfunction()
@@ -761,7 +818,7 @@ endif()
if (NOT WIN32 AND NOT APPLE)
set(SLIC3R_APP_CMD "orca-slicer")
configure_file(${LIBDIR}/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh @ONLY)
configure_file(${LIBDIR}/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh USE_SOURCE_PERMISSIONS @ONLY)
endif()
option(BUILD_BBS_TEST_TOOLS "Build bbs test tools" OFF)
@@ -774,7 +831,7 @@ endif()
if (WIN32)
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "./resources")
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
include(InstallRequiredSystemLibraries)
include(InstallRequiredSystemLibraries)
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ".")
elseif (SLIC3R_FHS)
# CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share)

View File

@@ -32,7 +32,6 @@ RUN apt-get update && apt-get install -y \
libgstreamer-plugins-good1.0-dev \
libgtk-3-dev \
libgtk-3-dev \
libosmesa6-dev \
libsecret-1-dev \
libsoup2.4-dev \
libssl3 \
@@ -40,7 +39,7 @@ RUN apt-get update && apt-get install -y \
libtool \
libudev-dev \
libwayland-dev \
libwebkit2gtk-4.0-dev \
libwebkit2gtk-4.1-dev \
libxkbcommon-dev \
locales \
locales-all \
@@ -65,17 +64,17 @@ WORKDIR OrcaSlicer
# These can run together, but we run them seperate for podman caching
# Update System dependencies
RUN ./BuildLinux.sh -u
RUN ./build_linux.sh -u
# Build dependencies in ./deps
RUN ./BuildLinux.sh -dr
RUN ./build_linux.sh -dr
# Build slic3r
RUN ./BuildLinux.sh -sr
RUN ./build_linux.sh -sr
# Build AppImage
ENV container podman
RUN ./BuildLinux.sh -ir
RUN ./build_linux.sh -ir
# It's easier to run Orca Slicer as the same username,
# UID and GID as your workstation. Since we bind mount
@@ -86,10 +85,16 @@ SHELL ["/bin/bash", "-l", "-c"]
ARG USER=root
ARG UID=0
ARG GID=0
RUN [[ "$UID" != "0" ]] \
&& groupadd -f -g $GID $USER \
&& useradd -u $UID -g $GID $USER
RUN if [[ "$UID" != "0" ]]; then \
# Create group if it doesn't exist \
groupadd -f -g $GID $USER; \
# Check if user with this UID already exists \
if getent passwd $UID > /dev/null 2>&1; then \
echo "User with UID $UID already exists, skipping user creation"; \
else \
useradd -u $UID -g $GID $USER; \
fi \
fi
# Using an entrypoint instead of CMD because the binary
# accepts several command line arguments.
ENTRYPOINT ["/OrcaSlicer/build/package/bin/orca-slicer"]

247
README.md
View File

@@ -1,129 +1,147 @@
<div align="center">
<h1> <p "font-size:200px;"><img align="left" src="https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/OrcaSlicer.ico" width="100"> Orca Slicer</p> </h1>
<picture>
<img alt="OrcaSlicer logo" src="resources/images/OrcaSlicer.png" width="15%" height="15%">
</picture>
[![Build all](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml/badge.svg?branch=main)](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
<br>Orca Slicer is an open source slicer for FDM printers.
<a href="https://trendshift.io/repositories/952" target="_blank"><img src="https://trendshift.io/api/badge/repositories/952" alt="SoftFever%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
[![GitHub Repo stars](https://img.shields.io/github/stars/SoftFever/OrcaSlicer)](https://github.com/SoftFever/OrcaSlicer/stargazers) [![Build all](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml/badge.svg?branch=main)](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
<h3>
# Official links and community
#### Official Website:
<a href="https://www.orcaslicer.com/" style="font-size:2em;">OrcaSlicer.com</a>
#### Github Repository:
<a href="https://github.com/SoftFever/OrcaSlicer"><img src="https://img.shields.io/badge/OrcaSlicer-181717?style=flat&logo=github&logoColor=white" width="200" alt="GitHub Logo"/> </a>
#### Follow us:
<a href="https://twitter.com/real_OrcaSlicer"><img src="https://img.shields.io/badge/real__OrcaSlicer-000000?style=flat&logo=x&logoColor=white" width="200" alt="X Logo"/> </a>
#### Join our Discord community:
<a href="https://discord.gg/P4VE9UY9gJ"><img src="https://img.shields.io/badge/-Discord-5865F2?style=flat&logo=discord&logoColor=fff" width="200" alt="discord logo"/> </a>
<table border="2" style="border-color: #ffa500; background-color:rgb(232, 220, 180); color: #856404;">
<tr>
<td>
<strong>⚠️ CAUTION:</strong><br><br>
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.
</td>
</tr>
</table>
Join our Discord community here:<br>
<a href="https://discord.gg/P4VE9UY9gJ"><img src="https://img.shields.io/static/v1?message=Discord&logo=discord&label=&color=7289DA&logoColor=white&labelColor=&style=for-the-badge" height="35" alt="discord logo"/> </a>
<h3>🚨🚨🚨Important Security Alert🚨🚨🚨</h3>
</div>
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
- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall)
- Polyholes conversion support: [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
- Klipper support
- More granular controls
- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
- **[Advanced Calibration Tools](https://github.com/SoftFever/OrcaSlicer/wiki/Calibration)**
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.
- **[Open-Source](https://github.com/SoftFever/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)**
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:*
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
- [Details of this runtime](https://aka.ms/webview2)
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
- [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:*
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
- [Details of this runtime](https://aka.ms/webview2)
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
- [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`
```console
softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
- Step 2: A warning window will pop up, click _Open_
- Option 2:
Execute this command in terminal:
```shell
xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
```
- Option 3:
- Option 3:
- Step 1: open the app, a warning window will pop up
![image](./SoftFever_doc/mac_cant_open.png)
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
![image](./SoftFever_doc/mac_security_setting.png)
![mac_cant_open](./SoftFever_doc/mac_cant_open.png)
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
![mac_security_setting](./SoftFever_doc/mac_security_setting.png)
</details>
**Linux (Ubuntu)**:
1. If you run into trouble executing it, try this command in the terminal:
## Linux (Ubuntu):
1. If you run into trouble executing it, try this command in the terminal:
`chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage`
# How to compile
- Windows 64-bit
- Tools needed: Visual Studio 2019, Cmake, git, git-lfs, Strawberry Perl.
- You will require cmake version 3.14 or later, which is available [on their website](https://cmake.org/download/).
- Strawberry Perl is [available on their GitHub repository](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/).
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
- Note: Don't forget to run `git lfs pull` after cloning the repository to download tools on Windows
- Mac 64-bit
- Tools needed: Xcode, Cmake, git, gettext, libtool, automake, autoconf, texinfo
- 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.
- Linux (All Distros)
- Docker
- Dependencies: Docker [Installation Instructions](https://www.docker.com/get-started/), git
- clone this repository `git clone https://github.com/SoftFever/OrcaSlicer`
- run `cd OrcaSlicer`
- run `./DockerBuild.sh`
- To run OrcaSlicer:
- run `./DockerRun.sh`
- For most common errors, open `DockerRun.sh` and read the comments.
- Ubuntu
- Dependencies **Will be auto installed with the shell script**: `libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git texinfo`
- run 'sudo ./BuildLinux.sh -u'
- run './BuildLinux.sh -dsir'
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
# Note:
# Klipper Note:
If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file.
```
```gcode
# Enable object exclusion
[exclude_object]
@@ -133,57 +151,52 @@ resolution: 0.1
```
# Supports
**Orca Slicer** is an open-source project and I'm deeply grateful to all my sponsors and backers.
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
**Orca Slicer** is an open-source project and I'm deeply grateful to all my sponsors and backers.
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
Thank you! :)
### Sponsors:
## Sponsors:
<table>
<tr>
<td>
<a href="https://qidi3d.com/">
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="96" height="">
<a href="https://qidi3d.com/" style="display:inline-block; border-radius:8px; background:#fff;">
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="100" height="100">
</a>
</td>
<td>
<a href="https://bigtree-tech.com/">
<img src="SoftFever_doc\sponsor_logos\BigTreeTech.png" alt="BIGTREE TECH" width="96" height="">
<a href="https://bigtree-tech.com/" style="display:inline-block; border-radius:8px; background:#222;">
<img src="SoftFever_doc\sponsor_logos\BigTreeTech.png" alt="BIGTREE TECH" width="100" height="100">
</a>
</td>
</tr>
</table>
### Backers:
**Ko-fi supporters**: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
## Support me
<a href="https://github.com/sponsors/SoftFever"><img src="https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86" width="130"></a>
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://ko-fi.com/img/githubbutton_sm.svg" width="200"></a>
[![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/softfever3d)
## Backers:
**Ko-fi supporters**: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
## Support me
<a href="https://github.com/sponsors/SoftFever"><img src="https://img.shields.io/badge/GitHub%20Sponsors-30363D?style=flat&logo=GitHub-Sponsors&logoColor=EA4AAA" height="50"></a>
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://img.shields.io/badge/Support_me_on_Ko--fi-FF5E5B?style=flat&logo=ko-fi&logoColor=white" height="50"></a>
<a href="https://paypal.me/softfever3d"><img src="https://img.shields.io/badge/PayPal-003087?style=flat&logo=paypal&logoColor=fff" height="50"></a>
## Some background
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.

226
build_linux.sh Executable file
View File

@@ -0,0 +1,226 @@
#!/usr/bin/env bash
SCRIPT_NAME=$(basename "$0")
SCRIPT_PATH=$(dirname $(readlink -f ${0}))
pushd ${SCRIPT_PATH} > /dev/null
set -e # Exit immediately if a command exits with a non-zero status.
function check_available_memory_and_disk() {
FREE_MEM_GB=$(free --gibi --total | grep 'Mem' | rev | cut --delimiter=" " --fields=1 | rev)
MIN_MEM_GB=10
FREE_DISK_KB=$(df --block-size=1K . | tail -1 | awk '{print $4}')
MIN_DISK_KB=$((10 * 1024 * 1024))
if [[ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]] ; then
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (system has only ${FREE_MEM_GB}G available)"
echo && free --human && echo
echo "Invoke with -r to skip RAM and disk checks."
exit 2
fi
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]] ; then
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo ${MIN_DISK_KB} |awk '{ printf "%.1fG\n", $1/1024/1024; }') (system has only $(echo ${FREE_DISK_KB} | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
echo && df --human-readable . && echo
echo "Invoke with -r to skip ram and disk checks."
exit 1
fi
}
function usage() {
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-h][-i][-j N][-p][-r][-s][-u][-l]"
echo " -1: limit builds to one core (where possible)"
echo " -j N: limit builds to N cores (where possible)"
echo " -b: build in debug mode"
echo " -c: force a clean build"
echo " -C: enable ANSI-colored compile output (GNU/Clang only)"
echo " -d: download and build dependencies in ./deps/ (build prerequisite)"
echo " -h: prints this help text"
echo " -i: build the Orca Slicer AppImage (optional)"
echo " -p: boost ccache hit rate by disabling precompiled headers (default: ON)"
echo " -r: skip RAM and disk checks (low RAM compiling)"
echo " -s: build the Orca Slicer (optional)"
echo " -u: install system dependencies (asks for sudo password; build prerequisite)"
echo " -l: use Clang instead of GCC (default: GCC)"
echo "For a first use, you want to './${SCRIPT_NAME} -u'"
echo " and then './${SCRIPT_NAME} -dsi'"
}
SLIC3R_PRECOMPILED_HEADERS="ON"
unset name
while getopts ":1j:bcCdhiprsul" opt ; do
case ${opt} in
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
;;
j )
export CMAKE_BUILD_PARALLEL_LEVEL=$OPTARG
;;
b )
BUILD_DEBUG="1"
;;
c )
CLEAN_BUILD=1
;;
C )
COLORED_OUTPUT="-DCOLORED_OUTPUT=ON"
;;
d )
BUILD_DEPS="1"
;;
h ) usage
exit 0
;;
i )
BUILD_IMAGE="1"
;;
p )
SLIC3R_PRECOMPILED_HEADERS="OFF"
;;
r )
SKIP_RAM_CHECK="1"
;;
s )
BUILD_ORCA="1"
;;
u )
UPDATE_LIB="1"
;;
l )
USE_CLANG="1"
;;
esac
done
if [ ${OPTIND} -eq 1 ] ; then
usage
exit 0
fi
# cmake 4.x compatibility workaround
export CMAKE_POLICY_VERSION_MINIMUM=3.5
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '"')
DISTRIBUTION_LIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
# Check for direct distribution match to Ubuntu/Debian
if [ "${DISTRIBUTION}" == "ubuntu" ] || [ "${DISTRIBUTION}" == "linuxmint" ] ; then
DISTRIBUTION="debian"
# Check if distribution is Debian/Ubuntu-like based on ID_LIKE
elif [[ "${DISTRIBUTION_LIKE}" == *"debian"* ]] || [[ "${DISTRIBUTION_LIKE}" == *"ubuntu"* ]] ; then
DISTRIBUTION="debian"
elif [[ "${DISTRIBUTION_LIKE}" == *"arch"* ]] ; then
DISTRIBUTION="arch"
fi
if [ ! -f ./linux.d/${DISTRIBUTION} ] ; then
echo "Your distribution \"${DISTRIBUTION}\" is not supported by system-dependency scripts in ./linux.d/"
echo "Please resolve dependencies manually and contribute a script for your distribution to upstream."
exit 1
else
echo "resolving system dependencies for distribution \"${DISTRIBUTION}\" ..."
source ./linux.d/${DISTRIBUTION}
fi
echo "FOUND_GTK3=${FOUND_GTK3}"
if [[ -z "${FOUND_GTK3_DEV}" ]] ; then
echo "Error, you must install the dependencies before."
echo "Use option -u with sudo"
exit 1
fi
echo "Changing date in version..."
{
# change date in version
sed --in-place "s/+UNKNOWN/_$(date '+%F')/" version.inc
}
echo "done"
if ! [[ -n "${SKIP_RAM_CHECK}" ]] ; then
check_available_memory_and_disk
fi
export CMAKE_C_CXX_COMPILER_CLANG=""
if [[ -n "${USE_CLANG}" ]] ; then
export CMAKE_C_CXX_COMPILER_CLANG="-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++"
fi
if [[ -n "${BUILD_DEPS}" ]] ; then
echo "Configuring dependencies..."
BUILD_ARGS="${DEPS_EXTRA_BUILD_ARGS} -DDEP_WX_GTK3=ON"
if [[ -n "${CLEAN_BUILD}" ]]
then
rm -fr deps/build
fi
if [ ! -d "deps/build" ]
then
mkdir deps/build
fi
if [[ -n "${BUILD_DEBUG}" ]] ; then
# build deps with debug and release else cmake will not find required sources
if [ ! -d "deps/build/release" ] ; then
mkdir deps/build/release
fi
cmake ${CMAKE_C_CXX_COMPILER_CLANG} -S deps -B deps/build/release -DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} -G Ninja -DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" ${COLORED_OUTPUT} ${BUILD_ARGS}
cmake --build deps/build/release
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
fi
echo "cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${BUILD_ARGS}"
cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${COLORED_OUTPUT} ${BUILD_ARGS}
cmake --build deps/build
fi
if [[ -n "${BUILD_ORCA}" ]] ; then
echo "Configuring OrcaSlicer..."
if [[ -n "${CLEAN_BUILD}" ]] ; then
rm --force --recursive build
fi
BUILD_ARGS="${ORCA_EXTRA_BUILD_ARGS}"
if [[ -n "${FOUND_GTK3_DEV}" ]] ; then
BUILD_ARGS="${BUILD_ARGS} -DSLIC3R_GTK=3"
fi
if [[ -n "${BUILD_DEBUG}" ]] ; then
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
else
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
fi
CMAKE_CMD="cmake -S . -B build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja \
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
-DCMAKE_PREFIX_PATH="${SCRIPT_PATH}/deps/build/destdir/usr/local" \
-DSLIC3R_STATIC=1 \
-DORCA_TOOLS=ON \
${COLORED_OUTPUT} \
${BUILD_ARGS}"
echo -e "${CMAKE_CMD}"
${CMAKE_CMD}
echo "done"
echo "Building OrcaSlicer ..."
cmake --build build --target OrcaSlicer
echo "Building OrcaSlicer_profile_validator .."
cmake --build build --target OrcaSlicer_profile_validator
./run_gettext.sh
echo "done"
fi
if [[ -n "${BUILD_IMAGE}" || -n "${BUILD_ORCA}" ]] ; then
pushd build > /dev/null
echo "[9/9] Generating Linux app..."
build_linux_image="./src/build_linux_image.sh"
if [[ -e ${build_linux_image} ]] ; then
extra_script_args=""
if [[ -n "${BUILD_IMAGE}" ]] ; then
extra_script_args="-i"
fi
${build_linux_image} ${extra_script_args}
echo "done"
fi
popd > /dev/null # build
fi
popd > /dev/null # ${SCRIPT_PATH}

View File

@@ -3,7 +3,7 @@
set -e
set -o pipefail
while getopts ":dpa:snt:xbc:hu" opt; do
while getopts ":dpa:snt:xbc:h" opt; do
case "${opt}" in
d )
export BUILD_TARGET="deps"
@@ -24,7 +24,7 @@ while getopts ":dpa:snt:xbc:hu" opt; do
export OSX_DEPLOYMENT_TARGET="$OPTARG"
;;
x )
export SLICER_CMAKE_GENERATOR="Ninja"
export SLICER_CMAKE_GENERATOR="Ninja Multi-Config"
export SLICER_BUILD_TARGET="all"
export DEPS_CMAKE_GENERATOR="Ninja"
;;
@@ -37,19 +37,15 @@ while getopts ":dpa:snt:xbc:hu" opt; do
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
;;
u )
export BUILD_UNIVERSAL="1"
;;
h ) echo "Usage: ./build_release_macos.sh [-d]"
echo " -d: Build deps only"
echo " -a: Set ARCHITECTURE (arm64 or x86_64)"
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
echo " -s: Build slicer only"
echo " -n: Nightly build"
echo " -t: Specify minimum version of the target platform, default is 11.3"
echo " -x: Use Ninja CMake generator, default is Xcode"
echo " -x: Use Ninja Multi-Config CMake generator, default is Xcode"
echo " -b: Build without reconfiguring CMake"
echo " -c: Set CMake build configuration, default is Release"
echo " -u: Build universal binary (both arm64 and x86_64)"
echo " -1: Use single job for building"
exit 0
;;
@@ -61,16 +57,8 @@ done
# Set defaults
if [ -z "$ARCH" ]; then
if [ "1." == "$BUILD_UNIVERSAL". ]; then
ARCH="universal"
else
ARCH="$(uname -m)"
fi
export ARCH
fi
if [ "1." == "$BUILD_UNIVERSAL". ]; then
echo "Universal build enabled - will create a combined arm64/x86_64 binary"
export ARCH
fi
if [ -z "$BUILD_CONFIG" ]; then
@@ -119,169 +107,187 @@ echo
# fi
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
DEPS_DIR="$PROJECT_DIR/deps"
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_deps"
# Fix for Multi-config generators
if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
else
export BUILD_DIR_CONFIG_SUBDIR=""
fi
# For Multi-config generators like Ninja and Xcode
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
function build_deps() {
echo "Building deps..."
(
set -x
mkdir -p "$DEPS"
cd "$DEPS_BUILD_DIR"
if [ "1." != "$BUILD_ONLY". ]; then
cmake .. \
-G "${DEPS_CMAKE_GENERATOR}" \
-DDESTDIR="$DEPS" \
-DOPENSSL_ARCH="darwin64-${ARCH}-cc" \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
# iterate over two architectures: x86_64 and arm64
for _ARCH in x86_64 arm64; do
# if ARCH is universal or equal to _ARCH
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
echo "Building deps..."
(
set -x
mkdir -p "$DEPS"
cd "$DEPS_BUILD_DIR"
if [ "1." != "$BUILD_ONLY". ]; then
cmake "${DEPS_DIR}" \
-G "${DEPS_CMAKE_GENERATOR}" \
-DDESTDIR="$DEPS" \
-DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
fi
cmake --build . --config "$BUILD_CONFIG" --target deps
)
fi
cmake --build . --config "$BUILD_CONFIG" --target deps
)
done
}
function pack_deps() {
echo "Packing deps..."
(
set -x
mkdir -p "$DEPS"
cd "$DEPS_BUILD_DIR"
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "OrcaSlicer_dep_$ARCH"
cd "$DEPS_DIR"
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build"
)
}
function build_slicer() {
echo "Building slicer..."
(
set -x
mkdir -p "$PROJECT_BUILD_DIR"
cd "$PROJECT_BUILD_DIR"
if [ "1." != "$BUILD_ONLY". ]; then
cmake .. \
-G "${SLICER_CMAKE_GENERATOR}" \
-DBBL_RELEASE_TO_PUBLIC=1 \
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_MACOSX_RPATH=ON \
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
-DCMAKE_MACOSX_BUNDLE=ON \
-DCMAKE_OSX_ARCHITECTURES="${ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
fi
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
)
# iterate over two architectures: x86_64 and arm64
for _ARCH in x86_64 arm64; do
# if ARCH is universal or equal to _ARCH
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
echo "Verify localization with gettext..."
(
cd "$PROJECT_DIR"
./run_gettext.sh
)
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
echo "Fix macOS app package..."
(
cd "$PROJECT_BUILD_DIR"
mkdir -p OrcaSlicer
cd OrcaSlicer
# remove previously built app
rm -rf ./OrcaSlicer.app
# fully copy newly built app
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
# fix resources
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
rm ./OrcaSlicer.app/Contents/Resources
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
# delete .DS_Store file
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
)
echo "Building slicer for $_ARCH..."
(
set -x
mkdir -p "$PROJECT_BUILD_DIR"
cd "$PROJECT_BUILD_DIR"
if [ "1." != "$BUILD_ONLY". ]; then
cmake "${PROJECT_DIR}" \
-G "${SLICER_CMAKE_GENERATOR}" \
-DBBL_RELEASE_TO_PUBLIC=1 \
-DORCA_TOOLS=ON \
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_MACOSX_RPATH=ON \
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
-DCMAKE_MACOSX_BUNDLE=ON \
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
fi
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
)
# extract version
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
# ver="_V${ver//\"}"
# echo $PWD
# if [ "1." != "$NIGHTLY_BUILD". ];
# then
# ver=${ver}_dev
# fi
echo "Verify localization with gettext..."
(
cd "$PROJECT_DIR"
./run_gettext.sh
)
# zip -FSr OrcaSlicer${ver}_Mac_${ARCH}.zip OrcaSlicer.app
echo "Fix macOS app package..."
(
cd "$PROJECT_BUILD_DIR"
mkdir -p OrcaSlicer
cd OrcaSlicer
# remove previously built app
rm -rf ./OrcaSlicer.app
# fully copy newly built app
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
# fix resources
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
rm ./OrcaSlicer.app/Contents/Resources
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
# delete .DS_Store file
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
# Copy OrcaSlicer_profile_validator.app if it exists
if [ -f "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
echo "Copying OrcaSlicer_profile_validator.app..."
rm -rf ./OrcaSlicer_profile_validator.app
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app" ./OrcaSlicer_profile_validator.app
# delete .DS_Store file
find ./OrcaSlicer_profile_validator.app/ -name '.DS_Store' -delete
fi
)
# extract version
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
# ver="_V${ver//\"}"
# echo $PWD
# if [ "1." != "$NIGHTLY_BUILD". ];
# then
# ver=${ver}_dev
# fi
# zip -FSr OrcaSlicer${ver}_Mac_${_ARCH}.zip OrcaSlicer.app
fi
done
}
function build_universal() {
echo "Building universal binary..."
# Save current ARCH
ORIGINAL_ARCH="$ARCH"
# Build x86_64
ARCH="x86_64"
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
build_deps
build_slicer
# Build arm64
ARCH="arm64"
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
build_deps
build_slicer
# Restore original ARCH
ARCH="$ORIGINAL_ARCH"
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
# Create universal binary
echo "Creating universal binary..."
PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer"
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/Universal_OrcaSlicer.app"
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app"
rm -rf "$UNIVERSAL_APP"
cp -R "$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
# Get the binary path inside the .app bundle
BINARY_PATH="Contents/MacOS/OrcaSlicer"
# Create universal binary using lipo
lipo -create \
"$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
"$PROJECT_DIR/build_arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
-output "$UNIVERSAL_APP/$BINARY_PATH"
echo "Universal binary created at $UNIVERSAL_APP"
# Create universal binary for profile validator if it exists
if [ -f "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ] && \
[ -f "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
echo "Creating universal binary for OrcaSlicer_profile_validator..."
UNIVERSAL_VALIDATOR_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer_profile_validator.app"
rm -rf "$UNIVERSAL_VALIDATOR_APP"
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app" "$UNIVERSAL_VALIDATOR_APP"
# Get the binary path inside the profile validator .app bundle
VALIDATOR_BINARY_PATH="Contents/MacOS/OrcaSlicer_profile_validator"
# Create universal binary using lipo
lipo -create \
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
-output "$UNIVERSAL_VALIDATOR_APP/$VALIDATOR_BINARY_PATH"
echo "Universal binary for OrcaSlicer_profile_validator created at $UNIVERSAL_VALIDATOR_APP"
fi
}
case "${BUILD_TARGET}" in
all)
if [ "1." == "$BUILD_UNIVERSAL". ]; then
build_universal
else
build_deps
build_slicer
fi
build_deps
build_slicer
;;
deps)
build_deps
;;
slicer)
if [ "1." == "$BUILD_UNIVERSAL". ]; then
build_universal
else
build_slicer
fi
build_slicer
;;
*)
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all."
@@ -289,6 +295,10 @@ case "${BUILD_TARGET}" in
;;
esac
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
build_universal
fi
if [ "1." == "$PACK_DEPS". ]; then
pack_deps
fi

View File

@@ -1,4 +1,4 @@
@REM OcarSlicer build script for Windows
@REM OrcaSlicer build script for Windows
@echo off
set WP=%CD%
@@ -58,7 +58,7 @@ mkdir %build_dir%
cd %build_dir%
echo on
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="%WindowsSdkDir%Include\%WindowsSDKVersion%\"
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DORCA_TOOLS=ON -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="%WindowsSdkDir%Include\%WindowsSDKVersion%\"
cmake --build . --config %build_type% --target ALL_BUILD -- -m
@echo off
cd ..

View File

@@ -37,14 +37,6 @@
<array>
<string>orcaslicer</string>
</array>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>BambuStudio Downloads</string>
<key>CFBundleURLSchemes</key>
<array>
<string>bambustudioopen</string>
</array>
</dict>
</array>
<key>CFBundleDocumentTypes</key>

59
deps/CGAL/0001-clang19.patch vendored Normal file
View File

@@ -0,0 +1,59 @@
--- a/BGL/include/CGAL/boost/graph/iterator.h 2022-10-07 19:04:41 UTC
+++ b/BGL/include/CGAL/boost/graph/iterator.h
@@ -213,18 +213,7 @@ class Halfedge_around_source_iterator { (public)
{}
#ifndef DOXYGEN_RUNNING
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_source_iterator::*bool_type)() const;
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
- }
-
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@@ -313,18 +302,7 @@ class Halfedge_around_target_iterator { (public)
{}
#ifndef DOXYGEN_RUNNING
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_target_iterator::*bool_type)() const;
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
- }
-
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@@ -411,18 +389,6 @@ class Halfedge_around_face_iterator { (public)
const value_type& operator * ( ) const { return pos; }
pointer operator -> ( ) { return &pos; }
const value_type* operator -> ( ) const { return &pos; }
-
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_face_iterator::*bool_type)() const;
-
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
- }
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);

View File

@@ -1,3 +1,7 @@
if (IN_GIT_REPO)
set(CGAL_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_CGAL-prefix/src/dep_CGAL)
endif ()
orcaslicer_add_cmake_project(
CGAL
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
@@ -5,6 +9,7 @@ orcaslicer_add_cmake_project(
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
PATCH_COMMAND git apply ${CGAL_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
DEPENDS dep_Boost dep_GMP dep_MPFR
)

23
deps/CMakeLists.txt vendored
View File

@@ -45,7 +45,7 @@ if (NPROC EQUAL 0)
endif ()
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.")
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.")
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
if (NOT FLATPAK)
set(DESTDIR "${DESTDIR}/usr/local/")
@@ -88,7 +88,7 @@ endif ()
# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF)
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR}")
message(STATUS "OrcaSlicer dowload dir for source packages: ${DEP_DOWNLOAD_DIR}")
message(STATUS "OrcaSlicer download dir for source packages: ${DEP_DOWNLOAD_DIR}")
message(STATUS "OrcaSlicer deps debug build: ${DEP_DEBUG}")
find_package(Git REQUIRED)
@@ -203,13 +203,13 @@ endfunction(orcaslicer_add_cmake_project)
if (MSVC)
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
message(STATUS "\nDetected 64-bit compiler => building 64-bit deps bundle\n")
set(DEPS_BITS 64)
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
message(STATUS "\nDetected X64 compiler => building X64 deps bundle\n")
set(DEPS_ARCH "x64")
include("deps-windows.cmake")
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
message(STATUS "\nDetected 32-bit compiler => building 32-bit deps bundle\n")
set(DEPS_BITS 32)
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
message(STATUS "\nDetected X86 compiler => building X86 deps bundle\n")
set(DEPS_ARCH "x86")
include("deps-windows.cmake")
else ()
message(FATAL_ERROR "Unable to detect architecture")
@@ -248,7 +248,6 @@ if(FLATPAK)
find_package(EXPAT)
find_package(CURL)
find_package(JPEG)
find_package(TIFF)
find_package(Freetype)
find_package(OpenSSL 1.1...<3.2)
find_package(CURL)
@@ -321,12 +320,6 @@ if (NOT JPEG_FOUND)
set(JPEG_PKG dep_JPEG)
endif()
set(TIFF_PKG "")
if (NOT TIFF_FOUND)
include(TIFF/TIFF.cmake)
set(TIFF_PKG "dep_TIFF")
endif()
# flatpak builds wxwidgets separately
set(WXWIDGETS_PKG "")
if (NOT FLATPAK)

View File

@@ -11,7 +11,7 @@ else()
endif()
orcaslicer_add_cmake_project(FREETYPE
URL https://mirror.ossplanet.net/nongnu/freetype/freetype-2.12.1.tar.gz
URL https://github.com/SoftFever/orca_deps/releases/download/freetype-2.12.1.tar.gz/freetype-2.12.1.tar.gz
URL_HASH SHA256=efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
#DEPENDS ${ZLIB_PKG}
#"${_patch_step}"

View File

@@ -22,7 +22,6 @@ https://github.com/nigels-com/glew
* [Install build tools](#install-build-tools)
* [Build](#build-1)
* [Linux EGL](#linux-egl)
* [Linux OSMesa](#linux-osmesa)
* [Linux mingw-w64](#linux-mingw-w64)
* [Using cmake](#using-cmake)
* [Install build tools](#install-build-tools-1)
@@ -95,11 +94,6 @@ _Note: you may need to call `make` in the **auto** folder first_
$ sudo apt install libegl1-mesa-dev
$ make SYSTEM=linux-egl
##### Linux OSMesa
$ sudo apt install libosmesa-dev
$ make SYSTEM=linux-osmesa
##### Linux mingw-w64
$ sudo apt install mingw-w64
@@ -140,7 +134,6 @@ RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel c
| --------------- | ----------- |
| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
| GLEW_REGAL | Build in Regal mode. |
| GLEW_OSMESA | Build in off-screen Mesa mode. |
| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
### Windows

32
deps/GMP/0001-GMP_GCC15.patch vendored Normal file
View File

@@ -0,0 +1,32 @@
--- GMP/acinclude.m4 2025-05-14 18:50:11.396354745 -0400
+++ GMP/acinclude.m4.2 2025-05-14 18:57:20.757853503 -0400
@@ -609,7 +609,7 @@
#if defined (__GNUC__) && ! defined (__cplusplus)
typedef unsigned long long t1;typedef t1*t2;
-void g(){}
+void g(int,t1 const*,t1,t2,t1 const*,int){}
void h(){}
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
--- GMP/configure 2025-05-14 19:33:35.730593315 -0400
+++ GMP/configure 2025-05-14 19:35:37.805619186 -0400
@@ -6526,7 +6526,7 @@
#if defined (__GNUC__) && ! defined (__cplusplus)
typedef unsigned long long t1;typedef t1*t2;
-void g(){}
+void g(int,t1 const*,t1,t2,t1 const*,int){}
void h(){}
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
@@ -8145,7 +8145,7 @@
#if defined (__GNUC__) && ! defined (__cplusplus)
typedef unsigned long long t1;typedef t1*t2;
-void g(){}
+void g(int,t1 const*,t1,t2,t1 const*,int){}
void h(){}
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}

17
deps/GMP/GMP.cmake vendored
View File

@@ -1,18 +1,22 @@
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp)
if (IN_GIT_REPO)
set(GMP_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_GMP-prefix/src/dep_GMP)
endif ()
if (MSVC)
set(_output ${DESTDIR}/include/gmp.h
${DESTDIR}/lib/libgmp-10.lib
set(_output ${DESTDIR}/include/gmp.h
${DESTDIR}/lib/libgmp-10.lib
${DESTDIR}/bin/libgmp-10.dll)
add_custom_command(
OUTPUT ${_output}
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.dll ${DESTDIR}/bin/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.dll ${DESTDIR}/bin/
)
add_custom_target(dep_GMP SOURCES ${_output})
else ()
@@ -59,7 +63,8 @@ else ()
URL https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
BUILD_IN_SOURCE ON
PATCH_COMMAND git apply ${GMP_DIRECTORY_FLAG} --verbose ${CMAKE_CURRENT_LIST_DIR}/0001-GMP_GCC15.patch
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
BUILD_COMMAND make -j
INSTALL_COMMAND make install

View File

@@ -10,8 +10,8 @@ if (MSVC)
OUTPUT ${_output}
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${DESTDIR}/bin/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.dll ${DESTDIR}/bin/
)
add_custom_target(dep_MPFR SOURCES ${_output})
@@ -25,8 +25,8 @@ else ()
endif ()
ExternalProject_Add(dep_MPFR
URL https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.bz2
URL_HASH SHA256=b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0
URL https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2.tar.bz2
URL_HASH SHA256=9ad62c7dc910303cd384ff8f1f4767a655124980bb6d8650fe62c815a231bb7b
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND autoreconf -f -i &&

View File

@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
if (!myFTLib->IsValid())
{
From 7236e83dcc1e7284e66dc61e612154617ef715d6 Mon Sep 17 00:00:00 2001
From: dpasukhi <dpasukhi@opencascade.com>
Date: Tue, 27 Aug 2024 11:33:29 +0100
Subject: [PATCH] 0033808: Coding - FreeType Use unsigned point and contour
indexing in `FT_Outline`
Changes to auto instead of specific type
---
src/StdPrs/StdPrs_BRepFont.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx
index ab2d9b3c9f..cd701879b1 100644
--- a/src/StdPrs/StdPrs_BRepFont.cxx
+++ b/src/StdPrs/StdPrs_BRepFont.cxx
@@ -457,7 +457,7 @@ Standard_Boolean StdPrs_BRepFont::renderGlyph (const Standard_Utf32Char theChar,
for (short aContour = 0, aStartIndex = 0; aContour < anOutline->n_contours; ++aContour)
{
const FT_Vector* aPntList = &anOutline->points[aStartIndex];
- const char* aTags = &anOutline->tags[aStartIndex];
+ const auto* aTags = &anOutline->tags[aStartIndex];
const short anEndIndex = anOutline->contours[aContour];
const short aPntsNb = (anEndIndex - aStartIndex) + 1;
aStartIndex = anEndIndex + 1;

54
deps/OpenCV/0002-clang19-macos.patch vendored Normal file
View File

@@ -0,0 +1,54 @@
From 893b8113f04d408cc6177c6de19c9889a48faa24 Mon Sep 17 00:00:00 2001
From: Zixu Wang <zixu_wang@apple.com>
Date: Thu, 18 Jan 2024 11:12:00 -0800
Subject: [PATCH] Fix unused platform check and configuration for macOS
In a similar manner as zlib (https://github.com/madler/zlib/pull/895),
libpng contains a header configuration that's no longer valid and
hasn't been exercised for the macOS target.
- The target OS conditional macros are misused. Specifically
`TARGET_OS_MAC` covers all Apple targets, including iOS, and it
should not be checked with `#if defined` as they would always be
defined (to either 1 or 0) on Apple platforms.
- `#include <fp.h>` no longer works for the macOS target and results
in a compilation failure. macOS ships all required functions in
`math.h`, and clients should use `math.h` instead.
This problem has not been noticed until a recent extension in clang
(https://github.com/llvm/llvm-project/pull/74676) exposed the issue
and broke libpng builds on Apple platforms. The failure can be
reproduced now by adding `#include <TargetConditionals.h>` before the
block.
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
---
AUTHORS | 2 ++
pngpriv.h | 14 ++------------
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/3rdparty/libpng/pngpriv.h b/3rdparty/libpng/pngpriv.h
index 6c7280cf53..190eb85cbf 100644
--- a/3rdparty/libpng/pngpriv.h
+++ b/3rdparty/libpng/pngpriv.h
@@ -556,18 +556,8 @@
*/
# include <float.h>
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
- /* We need to check that <math.h> hasn't already been included earlier
- * as it seems it doesn't agree with <fp.h>, yet we should really use
- * <fp.h> if possible.
- */
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
-# include <fp.h>
-# endif
-# else
-# include <math.h>
-# endif
+# include <math.h>
+
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
* MATH=68881

View File

@@ -11,7 +11,7 @@ endif ()
orcaslicer_add_cmake_project(OpenCV
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
CMAKE_ARGS
-DBUILD_SHARED_LIBS=0
-DBUILD_PERE_TESTS=OFF

29
deps/OpenVDB/0001-clang19.patch vendored Normal file
View File

@@ -0,0 +1,29 @@
--- a/openvdb/openvdb/tree/NodeManager.h 2023-11-01 20:31:11 UTC
+++ b/openvdb/openvdb/tree/NodeManager.h
@@ -327,7 +327,7 @@ class NodeList (private)
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(mNodeOp, it);
+ OpT::eval(mNodeOp, it);
}
}
const NodeOp mNodeOp;
@@ -347,7 +347,7 @@ class NodeList (private)
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(mNodeOp, it);
+ OpT::eval(mNodeOp, it);
}
}
const NodeOp& mNodeOp;
@@ -372,7 +372,7 @@ class NodeList (private)
void operator()(const NodeRange& range)
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(*mNodeOp, it);
+ OpT::eval(*mNodeOp, it);
}
}
void join(const NodeReducer& other)

View File

@@ -6,10 +6,15 @@ else()
set(_build_static ON)
endif()
if (IN_GIT_REPO)
set(OPENVDB_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenVDB-prefix/src/dep_OpenVDB)
endif ()
orcaslicer_add_cmake_project(OpenVDB
# support vs2022, update to 8.2
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
PATCH_COMMAND git apply ${OPENVDB_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost
CMAKE_ARGS
-DCMAKE_POSITION_INDEPENDENT_CODE=ON

29
deps/PNG/0002-clang19-macos.patch vendored Normal file
View File

@@ -0,0 +1,29 @@
--- a/pngpriv.h 2025-04-20 19:36:04.000000000
+++ b/pngpriv.h 2025-04-20 19:35:55.000000000
@@ -511,24 +511,14 @@
* DBL_DIG Maximum number of decimal digits (can be set to any constant)
* DBL_MIN Smallest normalized fp number (can be set to an arbitrary value)
* DBL_MAX Maximum floating point number (can be set to an arbitrary value)
*/
# include <float.h>
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
- /* We need to check that <math.h> hasn't already been included earlier
- * as it seems it doesn't agree with <fp.h>, yet we should really use
- * <fp.h> if possible.
- */
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
-# include <fp.h>
-# endif
-# else
-# include <math.h>
-# endif
+# include <math.h>
+
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
* MATH=68881
*/
# include <m68881.h>
# endif

4
deps/PNG/PNG.cmake vendored
View File

@@ -12,7 +12,7 @@ if(APPLE AND IS_CROSS_COMPILE)
GIT_TAG v1.6.35
DEPENDS ${ZLIB_PKG}
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
CMAKE_ARGS
-DPNG_SHARED=OFF
-DPNG_STATIC=ON
@@ -24,7 +24,7 @@ if(APPLE AND IS_CROSS_COMPILE)
else ()
set(_patch_step "")
if (APPLE)
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch)
endif ()
orcaslicer_add_cmake_project(PNG
# GIT_REPOSITORY https://github.com/glennrp/libpng.git

33
deps/TIFF/TIFF.cmake vendored
View File

@@ -1,33 +0,0 @@
find_package(OpenGL QUIET REQUIRED)
if (APPLE)
message(STATUS "Compiling TIFF for macos ${CMAKE_SYSTEM_VERSION}.")
orcaslicer_add_cmake_project(TIFF
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.3.0/libtiff-v4.3.0.zip
URL_HASH SHA256=4fca1b582c88319f3ad6ecd5b46320eadaf5eb4ef6f6c32d44caaae4a03d0726
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
CMAKE_ARGS
-Dlzma:BOOL=OFF
-Dwebp:BOOL=OFF
-Djbig:BOOL=OFF
-Dzstd:BOOL=OFF
-Dlibdeflate:BOOL=OFF
-Dpixarlog:BOOL=OFF
)
else()
orcaslicer_add_cmake_project(TIFF
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
CMAKE_ARGS
-Dlzma:BOOL=OFF
-Dwebp:BOOL=OFF
-Djbig:BOOL=OFF
-Dzstd:BOOL=OFF
-Dpixarlog:BOOL=OFF
)
endif()

File diff suppressed because it is too large Load Diff

View File

@@ -5,11 +5,27 @@
#ifndef __core_webview2_environment_options_h__
#define __core_webview2_environment_options_h__
// Adding the definition of this macro to enable unsafe buffer usage
#ifndef UNSAFE_BUFFERS
#if defined(__clang__)
// clang-format off
#define UNSAFE_BUFFERS(...) \
_Pragma("clang unsafe_buffer_usage begin") \
__VA_ARGS__ \
_Pragma("clang unsafe_buffer_usage end")
// clang-format on
#else
#define UNSAFE_BUFFERS(...) __VA_ARGS__
#endif
#endif
#include <objbase.h>
#include <wrl/implements.h>
#include "webview2.h"
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"107.0.1418.22"
#include "WebView2.h"
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"138.0.3351.48"
#define COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(p) \
public: \
@@ -31,21 +47,180 @@
protected: \
AutoCoMemString m_##p;
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p) \
public: \
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
if (!value) \
return E_POINTER; \
*value = m_##p; \
return S_OK; \
} \
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
m_##p = value; \
return S_OK; \
} \
\
protected: \
BOOL m_##p = FALSE;
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p, defPVal) \
public: \
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
if (!value) \
return E_POINTER; \
*value = m_##p; \
return S_OK; \
} \
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
m_##p = value; \
return S_OK; \
} \
\
protected: \
BOOL m_##p = defPVal ? TRUE : FALSE;
#define DEFINE_AUTO_COMEM_STRING() \
protected: \
class AutoCoMemString { \
public: \
AutoCoMemString() {} \
~AutoCoMemString() { Release(); } \
void Release() { \
if (m_string) { \
deallocate_fn(m_string); \
m_string = nullptr; \
} \
} \
\
LPCWSTR Set(LPCWSTR str) { \
Release(); \
if (str) { \
m_string = MakeCoMemString(str); \
} \
return m_string; \
} \
LPCWSTR Get() { return m_string; } \
LPWSTR Copy() { \
if (m_string) \
return MakeCoMemString(m_string); \
return nullptr; \
} \
\
protected: \
LPWSTR MakeCoMemString(LPCWSTR source) { \
const size_t length = wcslen(source); \
const size_t bytes = (length + 1) * sizeof(*source); \
\
if (bytes <= length) { \
return nullptr; \
} \
\
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes)); \
\
if (result) \
memcpy(result, source, bytes); \
return result; \
} \
LPWSTR m_string = nullptr; \
};
template <typename allocate_fn_t,
allocate_fn_t allocate_fn,
typename deallocate_fn_t,
deallocate_fn_t deallocate_fn>
class CoreWebView2CustomSchemeRegistrationBase
: public Microsoft::WRL::RuntimeClass<
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
ICoreWebView2CustomSchemeRegistration> {
public:
CoreWebView2CustomSchemeRegistrationBase(LPCWSTR schemeName) {
m_schemeName.Set(schemeName);
}
CoreWebView2CustomSchemeRegistrationBase(
CoreWebView2CustomSchemeRegistrationBase&&) = default;
~CoreWebView2CustomSchemeRegistrationBase() { ReleaseAllowedOrigins(); }
HRESULT STDMETHODCALLTYPE get_SchemeName(LPWSTR* schemeName) override {
if (!schemeName)
return E_POINTER;
*schemeName = m_schemeName.Copy();
if ((*schemeName == nullptr) && (m_schemeName.Get() != nullptr))
return HRESULT_FROM_WIN32(GetLastError());
return S_OK;
}
HRESULT STDMETHODCALLTYPE
GetAllowedOrigins(UINT32* allowedOriginsCount,
LPWSTR** allowedOrigins) override {
if (!allowedOrigins || !allowedOriginsCount) {
return E_POINTER;
}
*allowedOriginsCount = 0;
if (m_allowedOriginsCount == 0) {
*allowedOrigins = nullptr;
return S_OK;
} else {
*allowedOrigins = reinterpret_cast<LPWSTR*>(
allocate_fn(m_allowedOriginsCount * sizeof(LPWSTR)));
if (!(*allowedOrigins)) {
return HRESULT_FROM_WIN32(GetLastError());
}
ZeroMemory(*allowedOrigins, m_allowedOriginsCount * sizeof(LPWSTR));
for (UINT32 i = 0; i < m_allowedOriginsCount; i++) {
UNSAFE_BUFFERS((*allowedOrigins)[i] = m_allowedOrigins[i].Copy();
if (!(*allowedOrigins)[i]) {
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
for (UINT32 j = 0; j < i; j++) {
deallocate_fn((*allowedOrigins)[j]);
}
deallocate_fn(*allowedOrigins);
return hr;
})
}
*allowedOriginsCount = m_allowedOriginsCount;
return S_OK;
}
}
HRESULT STDMETHODCALLTYPE
SetAllowedOrigins(UINT32 allowedOriginsCount,
LPCWSTR* allowedOrigins) override {
ReleaseAllowedOrigins();
if (allowedOriginsCount == 0) {
return S_OK;
} else {
m_allowedOrigins = new AutoCoMemString[allowedOriginsCount];
if (!m_allowedOrigins) {
return HRESULT_FROM_WIN32(GetLastError());
}
for (UINT32 i = 0; i < allowedOriginsCount; i++) {
UNSAFE_BUFFERS(m_allowedOrigins[i].Set(allowedOrigins[i]);
if (!m_allowedOrigins[i].Get()) {
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
for (UINT32 j = 0; j < i; j++) {
m_allowedOrigins[j].Release();
}
m_allowedOriginsCount = 0;
delete[] (m_allowedOrigins);
return hr;
})
}
m_allowedOriginsCount = allowedOriginsCount;
return S_OK;
}
}
protected:
DEFINE_AUTO_COMEM_STRING()
void ReleaseAllowedOrigins() {
if (m_allowedOrigins) {
delete[] (m_allowedOrigins);
m_allowedOrigins = nullptr;
}
}
AutoCoMemString m_schemeName;
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(TreatAsSecure, false)
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(HasAuthorityComponent, false)
// WebView2EnvironmentOptions.h this is a publicly exposed header to clients
// and it used by them to integrate the webview2 enviorment as published at
// https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2environmentoptions?view=webview2-1.0.3179.45
// This file is not included in msedge.dll/lib/exe and is limited to WebView2
// SDK which does not use partition alloc. So need to use raw_ptr_exclusion
// here.
#if defined(__has_attribute)
__attribute__((annotate("raw_ptr_exclusion")))
#endif
AutoCoMemString* m_allowedOrigins = nullptr;
unsigned int m_allowedOriginsCount = 0;
};
// This is a base COM class that implements ICoreWebView2EnvironmentOptions.
template <typename allocate_fn_t,
@@ -56,70 +231,183 @@ class CoreWebView2EnvironmentOptionsBase
: public Microsoft::WRL::Implements<
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
ICoreWebView2EnvironmentOptions,
ICoreWebView2EnvironmentOptions2> {
ICoreWebView2EnvironmentOptions2,
ICoreWebView2EnvironmentOptions3,
ICoreWebView2EnvironmentOptions4,
ICoreWebView2EnvironmentOptions5,
ICoreWebView2EnvironmentOptions6,
ICoreWebView2EnvironmentOptions7,
ICoreWebView2EnvironmentOptions8> {
public:
static const COREWEBVIEW2_RELEASE_CHANNELS kInternalChannel =
static_cast<COREWEBVIEW2_RELEASE_CHANNELS>(1 << 4);
static const COREWEBVIEW2_RELEASE_CHANNELS kAllChannels =
COREWEBVIEW2_RELEASE_CHANNELS_STABLE |
COREWEBVIEW2_RELEASE_CHANNELS_BETA | COREWEBVIEW2_RELEASE_CHANNELS_DEV |
COREWEBVIEW2_RELEASE_CHANNELS_CANARY | kInternalChannel;
CoreWebView2EnvironmentOptionsBase() {
// Initialize the target compatible browser version value to the version of
// the browser binaries corresponding to this version of the SDK.
// Initialize the target compatible browser version value to the version
// of the browser binaries corresponding to this version of the SDK.
m_TargetCompatibleBrowserVersion.Set(CORE_WEBVIEW_TARGET_PRODUCT_VERSION);
}
// ICoreWebView2EnvironmentOptions7
HRESULT STDMETHODCALLTYPE
get_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS* channels) override {
if (!channels) {
return E_POINTER;
}
*channels = m_releaseChannels;
return S_OK;
}
HRESULT STDMETHODCALLTYPE
put_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS channels) override {
m_releaseChannels = channels;
return S_OK;
}
HRESULT STDMETHODCALLTYPE
get_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND* value) override {
if (!value) {
return E_POINTER;
}
*value = m_channelSearchKind;
return S_OK;
}
HRESULT STDMETHODCALLTYPE
put_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND value) override {
m_channelSearchKind = value;
return S_OK;
}
// ICoreWebView2EnvironmentOptions8
HRESULT STDMETHODCALLTYPE
get_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE* style) override {
if (!style) {
return E_POINTER;
}
*style = m_scrollbarStyle;
return S_OK;
}
HRESULT STDMETHODCALLTYPE
put_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE style) override {
m_scrollbarStyle = style;
return S_OK;
}
protected:
~CoreWebView2EnvironmentOptionsBase() {}
~CoreWebView2EnvironmentOptionsBase() { ReleaseCustomSchemeRegistrations(); }
class AutoCoMemString {
public:
AutoCoMemString() {}
~AutoCoMemString() { Release(); }
void Release() {
if (m_string) {
deallocate_fn(m_string);
m_string = nullptr;
void ReleaseCustomSchemeRegistrations() {
if (m_customSchemeRegistrations) {
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
// SAFETY: Since we can't convert the raw buffer to safe type we do a
// bound check and use the macro to mitigate the error.
UNSAFE_BUFFERS(m_customSchemeRegistrations[i])->Release();
}
deallocate_fn(m_customSchemeRegistrations);
m_customSchemeRegistrations = nullptr;
m_customSchemeRegistrationsCount = 0;
}
}
LPCWSTR Set(LPCWSTR str) {
Release();
if (str) {
m_string = MakeCoMemString(str);
}
return m_string;
}
LPCWSTR Get() { return m_string; }
LPWSTR Copy() {
if (m_string)
return MakeCoMemString(m_string);
return nullptr;
}
private:
// TODO(task.ms/56073082): Use raw_ptr.
#if defined(__has_attribute)
__attribute__((annotate("raw_ptr_exclusion")))
#endif
ICoreWebView2CustomSchemeRegistration** m_customSchemeRegistrations = nullptr;
unsigned int m_customSchemeRegistrationsCount = 0;
protected:
LPWSTR MakeCoMemString(LPCWSTR source) {
const size_t length = wcslen(source);
const size_t bytes = (length + 1) * sizeof(*source);
// Ensure we didn't overflow during our size calculation.
if (bytes <= length) {
return nullptr;
}
COREWEBVIEW2_RELEASE_CHANNELS m_releaseChannels = kAllChannels;
COREWEBVIEW2_CHANNEL_SEARCH_KIND m_channelSearchKind =
COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE;
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes));
if (result)
memcpy(result, source, bytes);
// ICoreWebView2EnvironmentOptions8
COREWEBVIEW2_SCROLLBAR_STYLE m_scrollbarStyle =
COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT;
return result;
}
LPWSTR m_string = nullptr;
};
DEFINE_AUTO_COMEM_STRING()
public:
// ICoreWebView2EnvironmentOptions
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(AdditionalBrowserArguments)
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(Language)
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(TargetCompatibleBrowserVersion)
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(
AllowSingleSignOnUsingOSPrimaryAccount)
AllowSingleSignOnUsingOSPrimaryAccount,
false)
// ICoreWebView2EnvironmentOptions2
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess)
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess,
false)
// ICoreWebView2EnvironmentOptions3
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(IsCustomCrashReportingEnabled,
false)
// ICoreWebView2EnvironmentOptions4
public:
HRESULT STDMETHODCALLTYPE GetCustomSchemeRegistrations(
UINT32* count,
ICoreWebView2CustomSchemeRegistration*** schemeRegistrations) override {
if (!count || !schemeRegistrations) {
return E_POINTER;
}
*count = 0;
if (m_customSchemeRegistrationsCount == 0) {
*schemeRegistrations = nullptr;
return S_OK;
} else {
*schemeRegistrations =
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(
allocate_fn(sizeof(ICoreWebView2CustomSchemeRegistration*) *
m_customSchemeRegistrationsCount));
if (!*schemeRegistrations) {
return HRESULT_FROM_WIN32(GetLastError());
}
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
// SAFETY: Since we can't convert the raw buffer to safe type we do a
// bound check and use the macro to mitigate the error.
UNSAFE_BUFFERS((*schemeRegistrations)[i] =
m_customSchemeRegistrations[i];
(*schemeRegistrations)[i]->AddRef();)
}
*count = m_customSchemeRegistrationsCount;
return S_OK;
}
}
HRESULT STDMETHODCALLTYPE SetCustomSchemeRegistrations(
UINT32 count,
ICoreWebView2CustomSchemeRegistration** schemeRegistrations) override {
ReleaseCustomSchemeRegistrations();
m_customSchemeRegistrations =
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(allocate_fn(
sizeof(ICoreWebView2CustomSchemeRegistration*) * count));
if (!m_customSchemeRegistrations) {
return GetLastError();
}
for (UINT32 i = 0; i < count; i++) {
// SAFETY: Since we can't convert the raw buffer to safe type we do a
// bound check and use the macro to mitigate the error.
UNSAFE_BUFFERS(m_customSchemeRegistrations[i] = schemeRegistrations[i];
m_customSchemeRegistrations[i]->AddRef());
}
m_customSchemeRegistrationsCount = count;
return S_OK;
}
// ICoreWebView2EnvironmentOptions5
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(EnableTrackingPrevention, true)
// ICoreWebView2EnvironmentOptions6
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(AreBrowserExtensionsEnabled,
false)
};
template <typename allocate_fn_t,
@@ -140,6 +428,12 @@ class CoreWebView2EnvironmentOptionsBaseClass
~CoreWebView2EnvironmentOptionsBaseClass() override {}
};
typedef CoreWebView2CustomSchemeRegistrationBase<decltype(&::CoTaskMemAlloc),
::CoTaskMemAlloc,
decltype(&::CoTaskMemFree),
::CoTaskMemFree>
CoreWebView2CustomSchemeRegistration;
typedef CoreWebView2EnvironmentOptionsBaseClass<decltype(&::CoTaskMemAlloc),
::CoTaskMemAlloc,
decltype(&::CoTaskMemFree),

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -27,16 +27,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(DEP_BOOST_TOOLSET "clang-win")
endif ()
if (${DEPS_BITS} EQUAL 32)
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
if ("${DEPS_ARCH}" STREQUAL "x86")
set(DEP_PLATFORM "Win32")
else ()
if (DEP_VS_VER LESS 16)
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER} Win64")
else ()
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
endif ()
elseif ("${DEPS_ARCH}" STREQUAL "x64")
set(DEP_PLATFORM "x64")
else ()
message(FATAL_ERROR "Unsupported OS architecture")
endif ()
if (${DEP_DEBUG})
@@ -57,12 +54,14 @@ if (${DEP_DEBUG})
endif ()
endmacro()
if (${DEPS_BITS} EQUAL 32)
if ("${DEPS_ARCH}" STREQUAL "x86")
set(DEP_WXWIDGETS_TARGET "")
set(DEP_WXWIDGETS_LIBDIR "vc_lib")
else ()
elseif ("${DEPS_ARCH}" STREQUAL "x64")
set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64")
set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
else ()
message(FATAL_ERROR "Unsupported OS architecture")
endif ()
find_package(Git REQUIRED)

View File

@@ -26,7 +26,7 @@ orcaslicer_add_cmake_project(
wxWidgets
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
GIT_SHALLOW ON
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${TIFF_PKG} ${JPEG_PKG}
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
CMAKE_ARGS
-DwxBUILD_PRECOMP=ON
${_wx_toolkit}
@@ -52,7 +52,7 @@ orcaslicer_add_cmake_project(
-DwxUSE_LIBPNG=sys
-DwxUSE_ZLIB=sys
-DwxUSE_LIBJPEG=sys
-DwxUSE_LIBTIFF=sys
-DwxUSE_LIBTIFF=OFF
-DwxUSE_NANOSVG=OFF
-DwxUSE_EXPAT=sys
)

View File

@@ -1,153 +0,0 @@
- [Flow rate](#Flow-rate)
- [Pressure Advance](#Pressure-Advance)
1. [Line method](#Line-method)
2. [Pattern method](#Pattern-method)
3. [Tower method](#Tower-method)
- [Temp tower](#Temp-tower)
- [Retraction test](#Retraction-test)
- [Orca Tolerance Test](#Orca-Tolerance-Test)
- [Advanced calibration](#Advanced-Calibration)
1. [Max Volumetric speed](#Max-Volumetric-speed)
2. [VFA]
> [!IMPORTANT]
> After completing the calibration process, remember to create a new project in order to exit the calibration mode.
> [!TIP]
> @ItsDeidara has made a webpage to help with the calculation. Check it out if those equations give you a headache [here](https://orcalibrate.com/).
# Flow rate
> [!WARNING]
> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.
>
> ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg)
![flowrate](./images/flow-calibration.gif)
Calibrating the flow rate involves a two-step process.
Steps
1. Select the printer, filament, and process you would like to use for the test.
2. Select `Pass 1` in the `Calibration` menu
3. A new project consisting of nine blocks will be created, each with a different flow rate modifier. Slice and print the project.
4. Examine the blocks and determine which one has the smoothest top surface.
![flowrate-pass1_resize](https://user-images.githubusercontent.com/103989404/210138585-98821729-b19e-4452-a08d-697f147d36f0.jpg)
![0-5](https://user-images.githubusercontent.com/103989404/210138714-63daae9c-6778-453a-afa9-9a976d61bfd5.jpg)
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.
![pass2](https://user-images.githubusercontent.com/103989404/210139072-f2fa91a6-4e3b-4d2a-81f2-c50155e1ff6d.jpg)
![-6](https://user-images.githubusercontent.com/103989404/210139131-ee224146-b242-4c1c-ac96-35ef0ca591f1.jpg)
![image](./images/flowcalibration_update_flowrate.jpg)
# Pressure Advance
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.
>
> ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg)
### Line method
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.
![pa_line](https://user-images.githubusercontent.com/103989404/210139630-8fd189e7-aa6e-4d03-90ab-84ab0e781f81.gif)
<img width="1003" alt="Screenshot 2022-12-31 at 12 11 10 PM" src="https://user-images.githubusercontent.com/103989404/210124449-dd828da8-a7e4-46b8-9fa2-8bed5605d9f6.png">
![line_0 016](https://user-images.githubusercontent.com/103989404/210140046-dc5adf6a-42e8-48cd-950c-5e81558da967.jpg)
![image](https://user-images.githubusercontent.com/103989404/210140079-61a4aba4-ae01-4988-9f8e-2a45a90cdb7d.png)
### Pattern method
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`.
![tower](https://user-images.githubusercontent.com/103989404/210140231-e886b98d-280a-4464-9781-c74ed9b7d44e.jpg)
![tower_measure](https://user-images.githubusercontent.com/103989404/210140232-885b549b-e3b8-46b9-a24c-5229c9182408.jpg)
# Temp tower
![image](./images/temp_tower_test.gif)
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.
![temp_tower](https://user-images.githubusercontent.com/103989404/221344534-40e1a629-450c-4ad5-a051-8e240e261a51.jpeg)
# Retraction test
![image](./images/retraction_test.gif)
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.
![image](./images/retraction_test_dlg.png)
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.
![image](./images/retraction_test_print.jpg)
# 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.
![image](./images/tolerance_hole.jpg)
You can assess the tolerance using either an M6 Allen key or the printed hexagon tester.
![image](./images/OrcaToleranceTes_m6.jpg)
![image](./images/OrcaToleranceTest_print.jpg)
# 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.
![image](./images/vmf_measurement_point.jpg)
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.
![image](./images/caliper_sample_mvf.jpg)
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.
![image](./images/max_volumetric_flow.jpg)
> [!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).
- *ChatGPT* ;)

View File

@@ -1,52 +0,0 @@
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`).
![image](./images/activate_chamber_heater.jpg)
*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:
`M191 S{overall_chamber_temperature}`
--------------------------Klipper--------------------------
If you are using Klipper, you can define these macros to control the active chamber heater.
Bellow is a reference configuration for Klipper.
*Note: Don't forget to change the pin name/values to the actual values you are using in the configuration*
```
[heater_generic chamber_heater]
heater_pin:PB10
max_power:1.0
# Orca note: here the temperature sensor should be the sensor you are using for chamber temperature, not the PTC sensor
sensor_type:NTC 100K MGB18-104F39050L32
sensor_pin:PA1
control = pid
pid_Kp = 63.418
pid_ki = 0.960
pid_kd = 1244.716
min_temp:0
max_temp:70
[gcode_macro M141]
gcode:
SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={params.S|default(0)}
[gcode_macro M191]
gcode:
{% set s = params.S|float %}
{% if s == 0 %}
# If target temperature is 0, do nothing
M117 Chamber heating cancelled
{% else %}
SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={s}
# Orca: uncomment the following line if you want to use heat bed to assist chamber heating
# M140 S100
TEMPERATURE_WAIT SENSOR="heater_generic chamber_heater" MINIMUM={s-1} MAXIMUM={s+1}
M117 Chamber at target temperature
{% endif %}
```

View File

@@ -1,39 +1,146 @@
# Welcome to the OrcaSlicer WIKI!
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!
- [Printer Settings](#printer-settings)
- [Material Settings](#material-settings)
- [Prepare](#prepare)
- [Process Settings](#process-settings)
- [Quality Settings](#quality-settings)
- [Strength Settings](#strength-settings)
- [Speed Settings](#speed-settings)
- [Support Settings](#support-settings)
- [Multimaterial Settings](#multimaterial-settings)
- [Others Settings](#others-settings)
- [Calibrations](#calibrations)
- [Developer Section](#developer-section)
## Print Settings, Tips and Tricks (Work In Progress)
The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results.
> [!NOTE]
> The Wiki is **Work In Progress** so bear with us while we get it up and running!
> Please consider contributing to the wiki following the [How to contribute to the wiki](How-to-wiki) guide.
### Quality Settings
- [Layer Height Settings](quality_settings_layer_height)
- [Line Width Settings](quality_settings_line_width)
- [Seam Settings](quality_settings_seam)
- [Precise wall](Precise-wall)
## Printer Settings
### Speed Settings
- [Extrusion rate smoothing](extrusion-rate-smoothing)
![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true)
### Multi material
- [Single Extruder Multimaterial](semm)
### Printer Settings:
- [Air filtration/Exhaust fan handling](air-filtration)
- [Auxiliary fan handling](Auxiliary-fan)
- [Chamber temperature control](chamber-temperature)
- [Adaptive Bed Mesh](adaptive-bed-mesh)
- [Using different bed types in Orca](bed-types)
## Material Settings
![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true)
- [Single Extruder Multimaterial](semm)
- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient)
## Printer Calibration
The guide below takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances and maximum volumetric speed
- [Calibration Guide](./Calibration)
- [Adaptive Pressure Advance Guide](adaptive-pressure-advance)
## Prepare
First steps to prepare your model/s for printing.
- [STL Transformation](stl-transformation)
## Process Settings
![process-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process-preset.png?raw=true)
The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results.
### Quality Settings
![process-quality](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-quality.png?raw=true)
- ![param_layer_height](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_layer_height.svg?raw=true) [Layer Height Settings](quality_settings_layer_height)
- ![param_line_width](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_line_width.svg?raw=true) [Line Width Settings](quality_settings_line_width)
- ![param_seam](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_seam.svg?raw=true) [Seam Settings](quality_settings_seam)
- ![param_precision](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_precision.svg?raw=true) [Precision](quality_settings_precision)
- ![param_ironing](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_ironing.svg?raw=true) [Ironing](quality_settings_ironing)
- ![param_wall_generator](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_wall_generator.svg?raw=true) [Wall generator](quality_settings_wall_generator)
- ![param_wall_surface](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_wall_surface.svg?raw=true) [Walls and surfaces](quality_settings_wall_and_surfaces)
- ![param_bridge](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_bridge.svg?raw=true) [Bridging](quality_settings_bridging)
- ![param_overhang](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_overhang.svg?raw=true) [Overhangs](quality_settings_overhangs)
### Strength Settings
![process-strength](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-strength.png?raw=true)
- ![param_wall](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_wall.svg?raw=true) [Walls](strength_settings_walls)
- ![param_shell](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_shell.svg?raw=true) [Top and Bottom Shells](strength_settings_top_bottom_shells)
- ![param_infill](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_infill.svg?raw=true) [Infill](strength_settings_infill)
- ![param_gcode](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Template Metalanguage for infill rotation](strength_settings_infill_rotation_template_metalanguage)
- ![param_advanced](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](strength_settings_advanced)
### Speed Settings
![process-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-speed.png?raw=true)
- ![param_speed_first](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_speed_first.svg?raw=true) [Initial Layer Speed](speed_settings_initial_layer_speed)
- ![param_speed](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_speed.svg?raw=true) [Other Layers Speed](speed_settings_other_layers_speed)
- ![param_overhang_speed](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_overhang_speed.svg?raw=true) [Overhang Speed](speed_settings_overhang_speed)
- ![param_travel_speed](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_travel_speed.svg?raw=true) [Travel Speed](speed_settings_travel)
- ![param_acceleration](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_acceleration.svg?raw=true) [Acceleration](speed_settings_acceleration)
- ![param_jerk](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_jerk.svg?raw=true) [Jerk (XY)](speed_settings_jerk_xy)
- ![param_advanced](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced / Extrusion rate smoothing](speed_settings_advanced)
### Support Settings
![process-support](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-support.png?raw=true)
- ![param_support](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_support.svg?raw=true) [Support](support_settings_support)
- ![param_raft](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_raft.svg?raw=true) [Raft](support_settings_raft)
- ![param_support_filament](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_support_filament.svg?raw=true) [Support Filament](support_settings_filament)
- ![param_ironing](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_ironing.svg?raw=true) [Support Ironing](support_settings_ironing)
- ![param_advanced](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](support_settings_advanced)
- ![param_support_tree](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_support_tree.svg?raw=true) [Tree Supports](support_settings_tree)
### Multimaterial Settings
![process-multimaterial](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-multimaterial.png?raw=true)
- ![param_tower](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tower.svg?raw=true) [Prime Tower](multimaterial_settings_prime_tower)
- ![param_filament_for_features](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_filament_for_features.svg?raw=true) [Filament for Features](multimaterial_settings_filament_for_features)
- ![param_ooze_prevention](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_ooze_prevention.svg?raw=true) [Ooze Prevention](multimaterial_settings_ooze_prevention)
- ![param_flush](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_flush.svg?raw=true) [Flush Options](multimaterial_settings_flush_options)
- ![param_advanced](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](multimaterial_settings_advanced)
### Others Settings
![process-others](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-others.png?raw=true)
- ![param_skirt](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_skirt.svg?raw=true) [Skirt](others_settings_skirt)
- ![param_adhension](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_adhension.svg?raw=true) [Brim](others_settings_brim)
- ![param_special](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_special.svg?raw=true) [Special Mode](others_settings_special_mode)
- ![fuzzy_skin](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/fuzzy_skin.svg?raw=true) [Fuzzy Skin](others_settings_fuzzy_skin)
- ![param_gcode](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [G-Code Output](others_settings_g_code_output)
- ![param_gcode](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Post Processing Scripts](others_settings_post_processing_scripts)
- ![note](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/note.svg?raw=true) [Notes](others_settings_notes)
## Calibrations
The [Calibration Guide](Calibration) outlines Orcas key calibration tests and their suggested order of execution.
- [Temperature](temp-calib)
- [Flow Rate](flow-rate-calib)
- [Pressure Advance](pressure-advance-calib)
- [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib)
- [Retraction](retraction-calib)
- [Tolerance](tolerance-calib)
- Advanced:
- [Volumetric Speed](volumetric-speed-calib)
- [Cornering (Jerk & Junction Deviation)](cornering-calib)
- [Input Shaping](input-shaping-calib)
- [VFA](vfa-calib)
## Developer Section
- [How to build Orca Slicer](./How-to-build)
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)
- [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md)
- [How to create profiles](./How-to-create-profiles)
- [How to create profiles](How-to-create-profiles)
- [How to contribute to the wiki](How-to-wiki)
- [Preset, PresetBundle and PresetCollection](Preset-and-bundle)
- [Plater, Sidebar, Tab, ComboBox](plater-sidebar-tab-combobox)
- [Slicing Call Hierarchy](slicing-hierarchy)

View File

@@ -1,11 +0,0 @@
# How to compile
- Windows 64-bit
- Tools needed: Visual Studio 2019, Cmake, git, Strawberry Perl.
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
- Mac 64-bit
- Tools needed: Xcode, Cmake, git, gettext
- run `build_release_macos.sh`
- Ubuntu
- run `BuildLinux.sh -udisr`

View File

@@ -1,180 +0,0 @@
# Guide: Develop Profiles for OrcaSlicer
## Introduction
This guide will help you develop profiles for OrcaSlicer.
## High-level Overview
OrcaSlicer uses JSON files to store profiles. There are four types of profiles:
1. Printer model (type `machine_model`). Example: `Orca 3D Fuse1.json`
2. Printer variant (type `machine`). Example: `Orca 3D Fuse1 0.2 nozzle.json`
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.
Naming conventions:
1. Vendor profile: `vendor_name.json`
2. Printer profile: `vendor_name` + `printer_name` + `.json`
3. Printer variant profile: `vendor_name` + `printer_variant_name` + `.json` (where `printer_variant_name` typically includes `printer_name` + `nozzle_diameter`)
4. Filament profile: `filament_vendor_name` + `filament_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json`
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.
```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"
]
}
```
## Process Profiles
WIP...
## Printer Profiles
WIP...
## Printer Variant Profiles
WIP...

View File

@@ -1,13 +0,0 @@
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.
![image](./images/precise_wall.png)
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.

View File

@@ -1,8 +0,0 @@
Print settings:
* [Seam](seam)
* [Axiliary fan](auxiliary-fan)
* [Chamber temperature](chamber-temperature)
* [Air filtration/Exhaust fan](air-filtration)
* [Single Extruder Multimaterial](semm)
* [Precise wall](Precise-wall)

View File

@@ -1,20 +0,0 @@
WIP...
### Scarf joint seam
WIP...
### Seam gap
![image](https://user-images.githubusercontent.com/103989404/215331359-236874c9-ca91-4dd4-b969-3cefc70ebe1b.png)
### Role-based wipe speed(auto)
### Wipe speed
### Wipe on loop(inward movement)
![image](https://user-images.githubusercontent.com/103989404/215334479-2687c518-1931-46a9-a363-7ae57a0aecf6.png)
Use outer wall speed and acceleration instead of travel speed and acceleration.
Added an option to disable this feature
### Support Cura style outer wall wipe(100% retract before wipe)
![image](https://user-images.githubusercontent.com/103989404/215334900-97c75010-4752-45f1-a57c-f0b723a8cb3f.png)
![image](https://user-images.githubusercontent.com/103989404/215335212-3253061d-bb7b-4853-a86c-10ff54cc8df5.png)
Extra length on restart

View File

@@ -0,0 +1,65 @@
# Calibration Guide
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.
![calibration](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/calibration.png?raw=true)
> [!IMPORTANT]
> 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.
<img alt="temp-tower" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower.jpg?raw=true" height="200">
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.
<img alt="flowcalibration-example" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-example.png?raw=true" height="200">
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.
<img alt="pa-tower" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-tower.jpg?raw=true" height="200">
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.
<img alt="retraction_test_print" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_print.jpg?raw=true" height="200">
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.
<img alt="mvf_measurement_point" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_measurement_point.jpg?raw=true" height="200">
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.
<img alt="jd_second_print_measure" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_print_measure.jpg?raw=true" height="200">
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.
<img alt="IS_damp_marlin_print_measure" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg?raw=true" height="200">
8. **[VFA](vfa-calib):** A VFA speed test is available to find resonance speeds.
<img alt="vfa_test_print" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_print.jpg?raw=true" height="200">
---
**[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.
<img alt="OrcaToleranceTes_m6" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/OrcaToleranceTes_m6.jpg?raw=true" height="200">
---
_Credits:_
- _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)._

View File

@@ -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 its 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 its the ultimate backstop).
![apa-material-config](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-material-config.png?raw=true)
## Pre-Requisites
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 shouldnt 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 MCUs (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.
![337601149-cbd96b75-a49f-4dde-ab5a-9bbaf96eae9c](https://github.com/user-attachments/assets/01234996-0528-4462-90c6-43828a246e41)
In addition, seams should appear smooth with no bulging or under extrusion.
![337601500-95e2350f-cffd-4af5-9c7a-e8f60870db7b](https://github.com/user-attachments/assets/46e16f2a-cf52-4862-ab06-12883b909615)
Solid infill should have no gaps, pinholes, or separation from the perimeters.
![337616471-9d949a67-c8b3-477e-9f06-c429d4e40be0](https://github.com/user-attachments/assets/3b8ddbff-47e7-48b5-9576-3d9e7fb24a9d)
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.
![337621601-eacc816d-cff0-42e4-965d-fb5c00d34205](https://github.com/user-attachments/assets/82edfd96-d870-48fe-91c7-012e8c0d9ed0)
![apa-expected-results](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-expected-results.jpg?raw=true)
In addition, seams should appear smooth with no bulging or under extrusion.
![apa-expected-seam](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-expected-seam.jpg?raw=true)
Solid infill should have no gaps, pinholes, or separation from the perimeters.
![apa-expected-solid-infill](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-expected-solid-infill.jpg?raw=true)
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.
![apa-unexpected-solid-infill](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-unexpected-solid-infill.jpg?raw=true)
## 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), dont 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, youd 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, lets create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
With the above in mind, lets 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, lets 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.
![337939815-e358b960-cf96-41b5-8c7e-addde927933f](https://github.com/user-attachments/assets/21290435-6f2a-4a21-bcf0-28cd6ae1912a)
#### OrcaSlicer 2.2.0 and later
Test parameters needed to build adaptive PA table are printed on the test sample:
![apa-test](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-test.png?raw=true)
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.
![apa-test210](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-test210.png?raw=true)
### Running the tests
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).
<img width="402" alt="PA calibration parameters" src="https://github.com/user-attachments/assets/b411dc30-5556-4e7c-8c40-5279d3074eae">
![pa-pattern-general](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-general.png?raw=true)
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.
![pa-pattern-batch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true)
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:
![apa-setup-result-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-speed.png?raw=true)
![apa-setup-result-acceleration-jerk](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-acceleration-jerk.png?raw=true)
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:
<img width="452" alt="calibration table" src="https://github.com/user-attachments/assets/9451e8e4-352f-4cfc-b835-dffa4420d580">
| Speed | Flow | Acceleration | PA | Model values |
|-------|-------|--------------|-------|----------------------|
| 50 | 3.84 | 1000 | 0.036 | 0.036 , 3.84 , 1000 |
| 100 | 7.68 | 1000 | 0.036 | 0.036 , 7.68 , 1000 |
| 150 | 11.51 | 1000 | 0.036 | 0.036 , 11.51 , 1000 |
| 200 | 15.35 | 1000 | 0.036 | 0.036 , 15.35 , 1000 |
| | | | | |
| 50 | 3.84 | 2000 | 0.036 | 0.036 , 3.84 , 2000 |
| 100 | 7.68 | 2000 | 0.03 | 0.03 , 7.68 , 2000 |
| 150 | 11.51 | 2000 | 0.029 | 0.029 , 11.51 , 2000 |
| 200 | 15.35 | 2000 | 0.028 | 0.028 , 15.35 , 2000 |
| | | | | |
| 50 | 3.84 | 4000 | 0.032 | 0.032 , 3.84 , 4000 |
| 100 | 7.68 | 4000 | 0.028 | 0.028 , 7.68 , 4000 |
| 150 | 11.51 | 4000 | 0.026 | 0.026 , 11.51 , 4000 |
| 200 | 15.35 | 4000 | 0.024 | 0.024 , 15.35 , 4000 |
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.
**Youre 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.
<img width="452" alt="pa profile" src="https://github.com/user-attachments/assets/e6e61d1b-e422-4a6a-88ff-f55e10f79900">
![apa-profile](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-profile.png?raw=true)
### Tips
#### Model input:
#### Model input
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 dont want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case youll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
However, if you dont want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case youll 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 youll 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 youll 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. Its 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. Its 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 cant 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 cant find any meaningful difference, simply use the optimal values from the higher flow rates.
- **Too high PA**
- **Too high PA**
![apa-identify-too-high](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-identify-too-high.jpg?raw=true)
![Too high PA](https://github.com/user-attachments/assets/ebc4e2d4-373e-42d5-af72-4d5bc81048ca)
- **Too low PA**
![apa-identify-too-low](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-identify-too-low.jpg?raw=true)
- **Too low PA**
![Too low PA](https://github.com/user-attachments/assets/6a2b6f16-7d1c-46d0-91f3-def5ed560318)
- **Optimal PA**
![Optimal PA](https://github.com/user-attachments/assets/cd47cf2e-dd32-47b4-bbdd-1563de8849be)
- **Optimal PA**
![apa-identify-optimal](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-identify-optimal.jpg?raw=true)

View File

@@ -0,0 +1,80 @@
# Cornering
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.
```math
JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}}
```
1. Pre-requisites:
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. You need to print the Junction Deviation test.
![jd_first_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_menu.png?raw=true)
1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
![jd_first_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_print_measure.jpg?raw=true)
![jd_first_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_slicer_measure.png?raw=true)
2. Its very likely that youll 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.
![jd_second_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_menu.png?raw=true)
4. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
![jd_second_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_print_measure.jpg?raw=true)
![jd_second_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_slicer_measure.png?raw=true)
3. Save the settings
1. Set your Maximum Junction Deviation value in [Printer settings/Motion ability/Jerk limitation].
![jd_printer_jerk_limitation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png?raw=true)
2. Use the following G-code to set the mm:
```gcode
M205 J#JunctionDeviationValue
M500
```
Example
```gcode
M205 J0.012
M500
```
3. Recompile your MarlinFW
1. In Configuration.h uncomment and set:
```cpp
#define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge
```
2. Check Classic Jerk is disabled (commented).
```cpp
//#define CLASSIC_JERK
```
## Credits
- **Junction Deviation Machine Limit** [@RF47](https://github.com/RF47)
- **Junction Deviation Calibration** [@IanAlexis](https://github.com/IanAlexis)
- **Fast tower model** [@RF47](https://github.com/RF47)

View File

@@ -0,0 +1,66 @@
# Flow rate
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.
- [Calibration Types](#calibration-types)
- [OrcaSlicer \> 2.3.0 Archimedean chords + YOLO (Recommended)](#orcaslicer--230-archimedean-chords--yolo-recommended)
- [OrcaSlicer \<= 2.3.0 Monotonic Line + 2-Pass Calibration](#orcaslicer--230-monotonic-line--2-pass-calibration)
- [Credits](#credits)
> [!WARNING]
> **Bambulab Printers:** make sure you do not select the 'Flow calibration' option.
> ![flowrate-Bambulab-uncheck](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png?raw=true)
> [!NOTE]
> 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`.
### OrcaSlicer > 2.3.0 Archimedean chords + YOLO (Recommended)
This example demonstrates the use of [Archimedean chords](strength_settings_infill#archimedean-chords) for flow rate calibration using the YOLO (Recommended) method.
WIP...
![flowcalibration-yolo](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-yolo.gif?raw=true)
### OrcaSlicer <= 2.3.0 Monotonic Line + 2-Pass Calibration
This example demonstrates the use of Monotonic Line for flow rate calibration using the 2-Pass Calibration method.
![flow-calibration-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif?raw=true)
Calibrating the flow rate involves a two-step process.
1. Select the printer, filament, and process you would like to use for the test.
2. Select `Pass 1` in the `Calibration` menu
3. A new project consisting of nine blocks will be created, each with a different flow rate modifier. Slice and print the project.
4. Examine the blocks and determine which one has the smoothest top surface.
![flowrate-pass1-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg?raw=true)
![flowrate-0-5-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg?raw=true)
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.
![flowrate-pass2-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg?raw=true)
![flowrate-6-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg?raw=true)
![flowcalibration_update_flowrate](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration_update_flowrate.png?raw=true)
> [!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).
## Credits
- **[Archimedean Chords Idea](https://makerworld.com/es/models/189543-improved-flow-ratio-calibration-v3#profileId-209504)**: [Jimcorner](https://makerworld.com/es/@jimcorner)

View File

@@ -0,0 +1,137 @@
# Input Shaping
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.
- [Klipper](#klipper)
- [Resonance Compensation](#resonance-compensation)
- [Marlin](#marlin)
- [ZV Input Shaping](#zv-input-shaping)
- [Fixed-Time Motion](#fixed-time-motion)
- [Credits](#credits)
## Klipper
### Resonance Compensation
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. In printer settigs:
1. Set the Shaper Type to `MZV` or `EI`.
```gcode
SET_INPUT_SHAPER SHAPER_TYPE=MZV
```
2. Disable [Minimun Cruise Ratio](https://www.klipper3d.org/Kinematics.html#minimum-cruise-ratio) with:
```gcode
SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0
```
3. Use an opaque, high-gloss filament to make the ringing more visible.
2. Print the Input Shaping Frequency test with a range of frequencies.
![IS_freq_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_menu.png?raw=true)
1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
![IS_damp_klipper_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg?raw=true)
![IS_freq_klipper_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png?raw=true)
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.
![IS_damp_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_menu.png?raw=true)
1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
![IS_damp_klipper_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg?raw=true)
![IS_damp_klipper_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png?raw=true)
> [!IMPORTANT]
> 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.
![IS_freq_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_menu.png?raw=true)
1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
![IS_freq_marlin_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg?raw=true)
![IS_freq_marlin_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png?raw=true)
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.
![IS_damp_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_menu.png?raw=true)
1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
![IS_damp_marlin_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg?raw=true)
![IS_damp_marlin_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png?raw=true)
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)
- **Klipper testing:** [@ShaneDelmore](https://github.com/ShaneDelmore)

View File

@@ -0,0 +1,78 @@
# Pressure Advance
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.
> [!NOTE]
> [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib)
> [!WARNING]
> **Marlin Printers:** Linear advance must be enabled in firmware (M900).
> **Not all printers have it enabled by default.**
> [!WARNING]
> **Bambulab Printers:** make sure you do not select the 'Flow calibration' option.
> ![flowrate-Bambulab-uncheck](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png?raw=true)
## Line method
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.
![pa-line](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-line.gif?raw=true)
![pa-lines](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-lines.png?raw=true)
![pa-line-0-016](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-line-0-016.png?raw=true)
![pressure_advance_enable](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pressure_advance_enable.png?raw=true)
## Pattern method
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.
1. Single test \
![pa-pattern-single](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-single.png?raw=true)
2. Batch mode testing (multiple tests on a single plate) \
![pa-pattern-batch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true)
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:**
![pa-pattern-batch-plater](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch-plater.png?raw=true)
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:
![pa-pattern-batch-objects](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch-objects.png?raw=true)
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`.
![pa-tower](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-tower.jpg?raw=true)
![pa-tower-measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-tower-measure.jpg?raw=true)
> [!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).

View File

@@ -0,0 +1,20 @@
# Retraction test
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.
![retraction_test](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/retraction/retraction_test.gif?raw=true)
![retraction_test_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_menu.png?raw=true)
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.
![retraction_test_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_print.jpg?raw=true)
> [!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.
> [!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).

View File

@@ -0,0 +1,69 @@
# Temp Calibration
In FDM 3D printing, the temperature is a critical factor that affects the quality of the print.
There is no other calibration that can have such a big impact on the print quality as temperature calibration.
- [Standard Temperature Ranges](#standard-temperature-ranges)
- [Nozzle Temp tower](#nozzle-temp-tower)
- [Bed Temperature](#bed-temperature)
- [Chamber Temperature](#chamber-temperature)
## Standard Temperature Ranges
| Material | [Nozzle Temp (°C)](#nozzle-temp-tower) | [Bed Temp (°C)](#bed-temperature) | [Chamber Temp (°C)](#chamber-temperature) |
|:------------:|:--------------------------------------:|:---------------------------------:|:-----------------------------------------:|
| PLA | 180-220 | 50-60 | Ambient |
| ABS | 230-250 | 90-100 | 50-70 |
| ASA | 240-260 | 90-100 | 50-70 |
| Nylon 6 | 230-260 | 90-110 | 70-100 |
| Nylon 12 | 225-260 | 90-110 | 70-100 |
| TPU | 220-245 | 40-60 | Ambient |
| PC | 270-310 | 100-120 | 80-100 |
| PC-ABS | 260-280 | 95-110 | 60-80 |
| HIPS | 220-250 | 90-110 | 50-70 |
| PP | 220-270 | 80-105 | 40-70 |
| Acetal (POM) | 210-240 | 100-130 | 70-100 |
## Nozzle Temp tower
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_test](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower_test.gif?raw=true)
![temp-tower_test_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower_test_menu.png?raw=true)
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.
![temp-tower](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower.jpg?raw=true)
> [!NOTE]
> 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 manufacturers 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 510°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.

View File

@@ -0,0 +1,37 @@
# Filament Tolerance Calibration
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:
- Filament Compensation:
- Shrinkage (XY)
![FilamentShrinkageCompensation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/FilamentShrinkageCompensation.png?raw=true)
- Process Compensation:
- X-Y hole compensation
- X-Y contour compensation
- Precise wall
- Precise Z height
![QualityPrecision](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/QualityPrecision.png?raw=true)
## Handy Models
Orca Slicer includes several handy models to help you test and calibrate your printer.
Right-click on your plate in Prepare mode and select "Add Handy Model" to access these models.
![handy-models-list](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Handy-Models/handy-models-list.png?raw=true)
### Orca Tolerance Test
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.
![tolerance_hole](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/tolerance_hole.svg?raw=true)
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.
![OrcaToleranceTes_m6](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/OrcaToleranceTes_m6.jpg?raw=true)
![OrcaToleranceTest_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/OrcaToleranceTest_print.jpg?raw=true)

View File

@@ -0,0 +1,22 @@
# VFA
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.
![vfa_test_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_menu.png?raw=true)
![vfa_test_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_print.jpg?raw=true)
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.
![vfa_resonance_avoidance](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_resonance_avoidance.png?raw=true)

View File

@@ -0,0 +1,49 @@
# Max Volumetric Speed (FlowRate) Calibration
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 its 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, its 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.
![mvf_measurement_point](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_measurement_point.jpg?raw=true)
Use calipers or a ruler to measure the **height** of the model just before the defects begin.
![mvf_caliper_sample_mvf](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_caliper_sample_mvf.jpg?raw=true)
Then you can:
- Use the following formula
```math
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.
![mvf_gui_flow](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_gui_flow.png?raw=true)
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.
![mvf_material_settings](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_material_settings.png?raw=true)
> [!NOTE]
> 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).

View File

@@ -1,7 +0,0 @@
# For Developers
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)
- [Plater, Sidebar, Tab, ComboBox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/plater-sidebar-tab-combobox.md)
- [Slicing Call Hierarchy](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/slicing-hierarchy.md)

View File

@@ -0,0 +1,320 @@
# How to Build
This wiki page provides detailed instructions for building OrcaSlicer from source on different operating systems, including Windows, macOS, and Linux.
It includes tool requirements, setup commands, and build steps for each platform.
Whether you're a contributor or just want a custom build, this guide will help you compile OrcaSlicer successfully.
- [Windows 64-bit](#windows-64-bit)
- [Windows Tools Required](#windows-tools-required)
- [Windows Instructions](#windows-instructions)
- [MacOS 64-bit](#macos-64-bit)
- [MacOS Tools Required](#macos-tools-required)
- [MacOS Instructions](#macos-instructions)
- [Debugging in Xcode](#debugging-in-xcode)
- [Linux](#linux)
- [Using Docker](#using-docker)
- [Docker Dependencies](#docker-dependencies)
- [Docker Instructions](#docker-instructions)
- [Troubleshooting](#troubleshooting)
- [Linux Build](#linux-build)
- [Dependencies](#dependencies)
- [Common dependencies across distributions](#common-dependencies-across-distributions)
- [Additional dependencies for specific distributions](#additional-dependencies-for-specific-distributions)
- [Linux Instructions](#linux-instructions)
- [Portable User Configuration](#portable-user-configuration)
- [Example folder structure](#example-folder-structure)
## Windows 64-bit
How to building with Visual Studio 2022 on Windows 64-bit.
### Windows Tools Required
- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) or Visual Studio 2019
```shell
winget install --id=Microsoft.VisualStudio.2022.Professional -e
```
- [CMake (version 3.31)](https://cmake.org/) — **⚠️ version 3.31.x is mandatory**
```shell
winget install --id=Kitware.CMake -v "3.31.6" -e
```
- [Strawberry Perl](https://strawberryperl.com/)
```shell
winget install --id=StrawberryPerl.StrawberryPerl -e
```
- [Git](https://git-scm.com/)
```shell
winget install --id=Git.Git -e
```
- [git-lfs](https://git-lfs.com/)
```shell
winget install --id=GitHub.GitLFS -e
```
> [!TIP]
> 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.
## MacOS 64-bit
How to building with Xcode on MacOS 64-bit.
### MacOS Tools Required
- Xcode
- CMake (version 3.31.x is mandatory)
- Git
- gettext
- libtool
- automake
- autoconf
- texinfo
> [!TIP]
> You can install most of them by running:
> ```shell
> brew install gettext libtool automake autoconf texinfo
> ```
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:
1. Download CMake **3.31.7** from: [https://cmake.org/download/](https://cmake.org/download/)
2. Install the application (drag it to `/Applications`).
3. Add the following line to your shell configuration file (`~/.zshrc` or `~/.bash_profile`):
```sh
export PATH="/Applications/CMake.app/Contents/bin:$PATH"
```
4. Restart the terminal and check the version:
```sh
cmake --version
```
5. Make sure it reports a **3.31.x** version.
> [!IMPORTANT]
> 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.
##### Common dependencies across distributions
- autoconf / automake
- cmake
- curl / libcurl4-openssl-dev
- dbus-devel / libdbus-1-dev
- eglexternalplatform-dev / eglexternalplatform-devel
- extra-cmake-modules
- file
- gettext
- git
- glew-devel / libglew-dev
- gstreamer-devel / libgstreamerd-3-dev
- gtk3-devel / libgtk-3-dev
- libmspack-dev / libmspack-devel
- libsecret-devel / libsecret-1-dev
- libspnav-dev / libspnav-devel
- libssl-dev / openssl-devel
- libtool
- libudev-dev
- mesa-libGLU-devel
- ninja-build
- texinfo
- webkit2gtk-devel / libwebkit2gtk-4.0-dev or libwebkit2gtk-4.1-dev
- wget
##### Additional dependencies for specific distributions
- **Ubuntu 22.x/23.x**: libfuse-dev, m4
- **Arch Linux**: mesa, wayland-protocols
#### Linux Instructions
1. **Install system dependencies:**
```shell
./build_linux.sh -u
```
2. **Build dependencies:**
```shell
./build_linux.sh -d
```
3. **Build OrcaSlicer:**
```shell
./build_linux.sh -s
```
4. **Build AppImage (optional):**
```shell
./build_linux.sh -i
```
5. **All-in-one build (recommended):**
```shell
./build_linux.sh -dsi
```
**Additional build options:**
- `-b`: Build in debug mode
- `-c`: Force a clean build
- `-C`: Enable ANSI-colored compile output (GNU/Clang only)
- `-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 dont 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.

View File

@@ -0,0 +1,422 @@
# Guide: Develop Profiles for OrcaSlicer
## Introduction
This guide will help you develop profiles for OrcaSlicer.
## High-level Overview
OrcaSlicer uses JSON files to store profiles. There are four types of profiles:
1. Printer model (type `machine_model`). Example: `Orca 3D Fuse1.json`
2. Printer variant (type `machine`). Example: `Orca 3D Fuse1 0.2 nozzle.json`
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.
Naming conventions:
1. Vendor profile: `vendor_name.json`
2. Printer profile: `vendor_name` + `printer_name` + `.json`
3. Printer variant profile: `vendor_name` + `printer_variant_name` + `.json` (where `printer_variant_name` typically includes `printer_name` + `nozzle_diameter`)
4. Filament profile: `filament_vendor_name` + `filament_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json`
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:
```shell
[machine_model_list.name]_cover.png
```
This image will be used in the UI.
Example model profile:
```json
{
"type": "machine_model",
"name": "Example M5",
"nozzle_diameter": "0.2;0.25;0.4;0.6",
"bed_model": "M5-Example-bed.stl",
"bed_texture": "M5-Example-texture.svg",
"model_id": "V1234",
"family": "Example",
"machine_tech": "FFF",
"default_materials": "Example Generic PLA;Example Generic PETG"
}
```
## Printer Variant Profiles
- Printer variants (type `machine`) define specific nozzle configurations and mechanical details.
- Each variant must inherit from a common base like `fdm_machine_common.json`.
- Must list the compatible nozzle diameter in the `nozzle_diameter` array.
- Example fields include `printer_model`, `printer_variant`, `default_print_profile`, `printable_area`, etc.
Example variant profile:
```json
{
"type": "machine",
"name": "Example M5 0.2 nozzle",
"inherits": "fdm_machine_common",
"from": "system",
"setting_id": "GM001",
"instantiation": "true",
"nozzle_diameter": ["0.2"],
"printer_model": "Example M5",
"printer_variant": "0.2",
"default_filament_profile": ["Example Generic PLA"],
"default_print_profile": "0.10mm Standard 0.2mm nozzle @Example",
"printable_area": ["0x0", "235x0", "235x235", "0x235"],
"nozzle_type": "brass"
}
```
## Models
- 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.
```
#### Example
```shell
./OrcaSlicer_profile_validator -p ~/codes/OrcaSlicer/resources/profiles -l 2 -v Custom
```
#### Sample result with errors
```shell
PS D:\codes\OrcaSlicer> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
[2024-02-28 21:23:06.102138] [0x0000a4e8] [error] Slic3r::ConfigBase::load_from_json: parse d:\codes\OrcaSlicer\resources\profiles/Custom/machine/fdm_klipper_common.json got a nlohmann::detail::parse_error, reason = [json.exception.parse_error.101] parse error at line 9, column 38: syntax error while parsing object - unexpected string literal; expected '}'
...
Validation failed
```
#### Sample result with success
```shell
PS D:\codes\OrcaSlicer\build\src\RelWithDebInfo> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
Validation completed successfully
```
> [!WARNING]
> Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows.
---
### 2. Python Profile Validation Script
In addition to the Orca validator, you should run the `orca_extra_profile_check.py` script. This script performs additional checks like:
- Validation of `compatible_printers` in filament profiles
- Consistency of filament names
- Validation of default materials in machine profiles (optional)
#### Example command
```shell
python ./orca_extra_profile_check.py
```
You can also enable or disable specific checks:
- `--help`: displays help information
- `--vendor` (optional): checks only the specified vendor. If omitted, all vendors are checked.
- `--check-filaments` (enabled by default): checks `compatible_printers` fields in filament profiles
- `--check-materials`: checks default material names in machine profiles
- `--check-obsolete-keys`: checks for obsolete keys in profiles
#### Sample usage with all checks enabled
```shell
python ./orca_extra_profile_check.py --vendor="vendor_name" --check-filaments --check-materials
```
The script will output the number of errors found and exit with a non-zero status code if any issues are detected.

View File

@@ -0,0 +1,251 @@
# How to Contribute to the Wiki
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 GitHubs 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 + `)`
- Base URL:
```markdown
https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/
```
- Raw tag:
```markdown
?raw=true
```
#### Examples
- For an image in `doc/images/` named `calibration.png`:
```markdown
![calibration](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/calibration.png?raw=true)
```
- For an image in a subdirectory like `doc/images/GUI/combobox.png`:
```markdown
![combobox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/combobox.png?raw=true)
```
> [!IMPORTANT]
> New or Moved Images will not appear in the preview until the Pull Request is merged. Double-check your paths.
> If you are changing an image path, ensure all links to that image are updated accordingly.
#### Avoid the Following
- Relative paths
- GitHub Assets, user content, or user-images URLs
- External image links from unreliable or temporary platforms
- Images containing personal or sensitive information
- Using images for content that can be expressed in text, such as equations or code—use Markdown syntax or Mermaid/Math formatting instead.
> [!NOTE]
> When contributing section-specific images, follow the naming conventions and directory structure.
#### Resize Images
Avoid the resize of images and let the Wiki handle it automatically.
If resizing is necessary (e.g., for thumbnails), use the following syntax:
HTML Format = `<img alt="` + filename + `"` + `src="` + Base URL + filename.extension + Raw tag + size limit.
Example:
```html
<img alt="IS_damp_marlin_print_measure" src="https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg?raw=true" height="200">
```
### Image Cropping and Highlighting
To ensure clarity:
- Crop images to focus on relevant areas.
- 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 isnt crucial, structure the content following Orca Slicers 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.

View File

@@ -2,92 +2,100 @@
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:
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
[https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n)
2. Open this file in PoEdit as "Edit a translation"
3. Apply your corrections to the translation
4. Push changed OrcaSlicer_xx.po into the original folder
5. copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
### Scenario 2. How do I add a new language support
1. Get file OrcaSlicer.pot here :
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
[https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n)
2. Open it in PoEdit for "Create new translation"
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
https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt.
1. For convenience create a list of files with this macro `L(s)`. We have
https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt.
2. Create template file(*.POT) with GNUgettext command:
```
xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
2. Create template file(*.POT) with GNUgettext command:
```shell
xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
```
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:
![Long text on button](images/long_text_on_button.png)
- 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.

View File

@@ -1,26 +1,29 @@
# Preset and Bundle
This page deals with the explanation for 3 classes in the code.
## [`Preset`](../../src/libslic3r/Preset.hpp)
## [`Preset`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/libslic3r/Preset.hpp)
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.
<img src="../images/process-preset.png" alt="Example Image" width="320">
![process-preset-full](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process-preset-full.png?raw=true)
- `TYPE_FILAMENT`: As the name suggests this preset is for filaments
<img src="../images/filament-preset.png" alt="Example Image" width="320">
![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true)
- `TYPE_PRINTER`: Preset for printers.
<img src="../images/printer-preset.png" alt="Example Image" width="320">
![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true)
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.
## [`PresetBundle`](../../src/libslic3r/PresetBundle.hpp)
## [`PresetBundle`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/libslic3r/PresetBundle.hpp)
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.
## [`PresetCollection`](../../src/libslic3r/Preset.hpp)
## [`PresetCollection`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/libslic3r/Preset.hpp)
`PrinterPresetCollection` is a class derived from `PresetCollection`.

View File

@@ -1,23 +1,28 @@
### !! incomplete, possibly inaccurate, being updated with new info !!
# Application Structure Overview
## [`Plater`](../../src/slic3r/GUI/Plater.hpp)
WIP...
> [!WARNING]
> !! incomplete, possibly inaccurate, being updated with new info !!
## [`Plater`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp)
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.
## [`Sidebar`](../../src/slic3r/GUI/Plater.hpp)
## [`Sidebar`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp)
This is relating the the sidebar in the application window
<img src="../images/full-sidebar.png" alt="Example Image" width="320">
![full-sidebar](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/full-sidebar.png?raw=true)
## [`ComboBox`](../../src/slic3r/GUI/Widgets/ComboBox.hpp)
## [`ComboBox`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Widgets/ComboBox.hpp)
The drop down menus where you can see and select presets
<img src="../images/combobox.png" alt="Example Image" width="320">
![combobox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/combobox.png?raw=true)
## [`Tab`](../../src/slic3r/GUI/Tab.hpp)
## [`Tab`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.hpp)
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.
<img src="../images/tab-popup.png" alt="Example Image" width="320">
![tab-popup](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/tab-popup.png?raw=true)

View File

@@ -2,4 +2,43 @@
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.
<img src="../images/slicing_call_heirarchy.svg" alt="Example Image" width="320">
```mermaid
flowchart TD
A["Slice plate"] --> B["void Plater::priv::on_action_slice_plate(SimpleEvent&)"]
B --> C["void Plater::reslice()"]
C --> D["bool Plater::priv::restart_background_process(unsigned int state)"]
D --> E["bool BackgroundSlicingProcess::start()"]
E --> F["void BackgroundSlicingProcess::thread_proc_safe_seh_throw()"]
F --> G["unsigned long BackgroundSlicingProcess::thread_proc_safe_seh()"]
G --> H["void BackgroundSlicingProcess::thread_proc_safe()"]
H --> I["void BackgroundSlicingProcess::thread_proc()"]
I --> J["void BackgroundSlicingProcess::call_process_seh_throw(std::exception_ptr &ex)"]
J --> K["unsigned long BackgroundSlicingProcess::call_process_seh(std::exception_ptr &ex)"]
K --> L["void BackgroundSlicingProcess::call_process(std::exception_ptr &ex)"]
L --> M["void BackgroundSlicingProcess::process_fff()"]
M --> N["void Print::process(long long *time_cost_with_cache, bool use_cache)"]
N --> O["void PrintObject::make_perimeters()"]
O --> P["void PrintObject::slice()"]
%% Labels for libraries
subgraph G1 [libSlic3r_gui]
B
C
D
E
F
G
H
I
J
K
L
M
end
subgraph G2 [libSlic3r]
N
O
P
end
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 773 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

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