# 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.
-->
* Enhance backward compatibility for filament extruder variants in 3MF project files
Fix crashes when loading old 3MF project
* QoL: add handy models directory to ignore list
# 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.
-->
# Description
Fixes#6813Fixes#7782Fixes#6367
This is a port of libvgcode, OpenGL Core Profile (libvgcode requires OpenGL 3.2+), and probably other stuff I forgot from PrusaSlicer. libvgcode is also known as "Improved G-code Viewer" which was introduced in [PrusaSlicer 2.8.0](https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.8.0-alpha5). It significantly improves performance of the G-code preview and allows displaying the actual speed and volumetric flow rate.
## TODO
- [x] Make the sliders work properly again
- [x] Make view type selection work
- [x] Fix toggling of feature type visibility
- [x] Expose actual speed/actual flow view types
- [x] Fix display of G2/G3 arcs
- [x] Wire up actual speed graph widgets
- [x] Fix painter gizmos
- [x] Fix crash when selecting filament view type on Windows
- [ ] Figure out display color management (#10827)
- [x] Fix incorrect rendering of small area flow compensation (or any extrusions with varying flow)
- [ ] Localization
- [ ] Testing
- [ ] Code cleanup, performance optimization
## Removed functionality
Some functionality is not supported by libvgcode:
- Toggling visibility of tools
- Toggling visibility of colors in color print view
- Support for systems with OpenGL <3.2
- Bambu's implementation of G2/G3 arcs was replaced with PrusaSlicer's implementation
# Screenshots/Recordings/Graphs
https://github.com/user-attachments/assets/c1413a82-3058-4541-b96c-3d5f7cdef174
<details>
<summary>Outdated Stuff</summary>
https://github.com/user-attachments/assets/ca172ef4-0828-4d21-8768-b08a4132c9ab
<img width="1611" height="1145" alt="image" src="https://github.com/user-attachments/assets/5e0d04ff-8046-4636-a08a-cdedc60303bc" />
</details>
## Tests
- [x] Normally sliced G-code
- [ ] G-code viewer mode
- [x] Arc fitting enabled
- [x] Spiral Z-hops
- [x] Multi-extruder/multi-color
- [x] Vase mode
- [x] Skirt/brim
- [x] Supports
- [ ] Support transition (whatever this is)
- [x] Painter gizmos
- [x] Measurement gizmo
- [x] Move/rotate/scale gizmos
- [x] H2D/H2S support (oh no)
- [ ] Windows
- [x] macOS
- [ ] Linux
# Description
This PR introduces most features and capabilities needed for future network plugin-related changes, as discussed on Discord. In short bullet points:
- it allows users to select a specific version of the Bambu network library to use,
- improves hot reloading (in most cases, version changes don't require restarting Orca),
- introduces possibility to add _custom_ variants of supported plugin versions by placing them in the plugin directory with a suffix of `-<name>`,
- adds an button in the "Developer" section of Preferences to hot-reload the network plugin from disk,
- ports plugin error messages from Bambu Studio, including the questionable unsigned app one (rephrased), to make it clear to users why their printer commands don't really execute.
Also introduces CMake 4.x compatibility on macOS, because I was too lazy to install CMake 3 on my computer 😶
# Screenshots/Recordings/Graphs
<img width="494" height="225" alt="image" src="https://github.com/user-attachments/assets/366e8c0f-8b12-4c75-a2db-ba08e7544ecd" />
<img width="223" height="276" alt="image" src="https://github.com/user-attachments/assets/dffec726-b6d5-44d3-a2b3-dd56d2590356" />
<img width="521" height="182" alt="image" src="https://github.com/user-attachments/assets/934ba963-f299-4d20-a107-8375f1f99571" />
<img width="644" height="640" alt="image" src="https://github.com/user-attachments/assets/00385657-04f2-4f36-896e-58265df58ebc" />
## Tests
Tested manually, also added some basic tests to make sure config management behaves correctly.
# Description
This PR addresses the issue that WipeTower's start z position didn't consider the z_offset.
fixes#11611
# 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.
-->
### IMPORTANT NOTICE
- Every time you download a new PR build, make sure to delete `<orca
config folder>/system/` folder first, otherwise the latest profile
update might not take effect (such as crash during startup, or not able
to find certain printer models in the list). Also it's a good idea to
always backup your config folder before trying any dev builds.
- You MUST **turn on both lan mode AND dev mode on your P2S**, there is
no firmware exists for these printers that allows 3rd party slicer over
cloud unfortunately.
- You MUST **turn off "Use legacy network plugin"** in Orca's
preference.
### HOW TO download the test builds:
1. Click the ["Checks"
tab](https://github.com/SoftFever/OrcaSlicer/pull/11132/checks) on top
of this page
<img width="1450" height="436" alt="image"
src="https://github.com/user-attachments/assets/5453e5ef-4455-4f23-9c76-a45218b9bf03"
/>
2. Click the "Build all" on the left side
<img width="1084" height="1110" alt="image"
src="https://github.com/user-attachments/assets/7caa5dc4-6280-4183-85c1-06cb702d1407"
/>
3. You'll find the build artifacts on the bottom of right side
<img width="2194" height="1316" alt="image"
src="https://github.com/user-attachments/assets/73536c51-2790-4302-9f9c-c3403bcb88d5"
/>
4. If you find the artifact list not complete (can't find the build for
your operating system/platform), try switch to different run and a
different attempt might have the artifact you're looking for:
<img width="1217" height="669" alt="image"
src="https://github.com/user-attachments/assets/7ac09291-2902-4ce2-9626-0d5cba7dfdba"
/>
-----------------------------
# P2S support cherry picked from BBS, with some other updates & fixes.
Thanks Bambu!
# **NOT TESTED** yet since I don't own a P2S.
I've try my best to port changes that are necessary to support P2S, and
features & bugfixes that only affect BambuLab printers.
Noticable changes:
- Added P2S profiles.
- Added some new gcode placeholders `max_additional_fan`,
`hold_chamber_temp_for_flat_print` which are used by the new P2S
profiles.
- Added chamber temp check for BBL printers, show warnings when print
certain filaments with low chamber temp.
- Can now trigger a nozzle type auto-recognition from Orca for supported
BBL printers (basically printer uses chamber camera to scan the code on
the nozzle).
- Highlight potential flush volume value error. The flush volume botton
will be red if flush volume is way too low.
- A1 / A1 mini support for AMS, AMS HT, and AMS 2 Pro.
- Skip Part also skips unnecessary color-change flush.
- Lots of BBL printer/plate image updates.
- Fix bunch of GUI bugs.
- Sync HMS & profiles with latest BBS.
* Introduced a new command-line argument `--vendor` to process images from a specific vendor subfolder.
* Enhanced error handling to check for the existence of the vendor path and list available vendors if the path does not exist.
* Updated help documentation to reflect the new functionality.
This change improves the script's usability for users managing multiple vendor-specific cover images.
Updated multiple filament profiles to convert fields such as filament_cost, filament_density, and filament_max_volumetric_speed from single values to arrays for consistency. Removed unnecessary fields from filament profiles to streamline data structure. This change enhances compatibility with the updated profile handling logic in the orca_filament_lib.py script.
Ported part skip from BambuStudio. Thanks bambulab!
<img width="1350" height="902" alt="image"
src="https://github.com/user-attachments/assets/d7f89950-3420-4ea5-bbb6-e53c875e7422"
/>
Haven't fully tested yet!
### Minimum Firmware Requirements (from BambuStudio release page):
- **X1C**: v01.09.02.12 or later
- **H2D**: v01.02.00.00 or later
- **Other models**: Currently not supported. Feature support coming in
future firmware updates.
> ⚠️ Make sure your printer firmware is up to date to use this feature.
Refactor DMG creation process in build workflow
* Update the OrcaSlicer DMG creation steps to exclude the profile validator helper from the main DMG.
* Introduce a dedicated directory for the main OrcaSlicer DMG and the profile validator DMG, ensuring a cleaner build process.
* Use symbolic links with the `-sfn` option to avoid issues with existing links.
This change enhances the organization of the build artifacts and improves the clarity of the DMG creation process.
* Updated the 'How to create profiles' document to include a new section on testing profile changes.
* Added images for accessing the configuration folder and clearing the cache to ensure OrcaSlicer loads updated profiles.
This enhancement aims to assist developers in effectively managing profile updates during development.
* Enhance GCode handling for Z-axis movements
- Updated `travel_to_z` method to include a `force` parameter, allowing forced Z movements.
- Modified GCode generation logic to ensure Z position is restored after unknown last positions.
- Enforce z restoreation after tool changer
* Improve filament_multitool_ramming logic
* fix indent
Implement a check for projects created with OrcaSlicer 2.3.1-alpha to warn users about potential issues with infill rotation template settings. If the infill pattern is not safe to rotate, prompt the user to clear the rotation template settings to avoid print quality issues.