* Remove Unused Project Includes and Forward-Declare Where a Type Is Only Referenced
Generated with include-what-you-use and applied conservatively. Only OrcaSlicer's own headers, the ones under src/ and tests/, are removed or forward-declared; standard-library and third-party includes are left alone. An include is removed only when both the Release and the Debug configuration leave it unused, never from inside a conditional block, and never from a file with platform-specific blocks, which only gain includes. Files whose only use of a header sits behind a feature or debug macro (libvgcode's OpenGL ES and marker code, the ARACHNE/TESTS_EXPORT_SVGS debug output) keep their includes.
clonable_ptr.hpp gains #pragma once; it had no include guard and was only safe while Config.hpp was its sole includer.
* Remove Unused Project Includes From Files With Platform-Specific Code
A Linux include-what-you-use run cannot see the code inside _WIN32, __APPLE__ or __linux__ blocks, so its verdict is only taken where nothing the removed header declares, directly or through what it includes, is named inside those blocks. Removals also have to hold in both the Release and Debug configuration and never touch a line inside a conditional block.
* Restore the libslic3r Precompiled Header and Direct Includes Lost in the Platform Pass
The platform-file pass treated pchheader.hpp as an ordinary header and
emptied it, and left GUI_Preview.hpp and 14 other files relying on
headers they no longer reached directly.
* Restore MainFrame.hpp in ParamsDialog.cpp for the Windows-Only Reparent Call
* Include Headers That Files Reached Through Ones the Cleanup Removed
* Drop Includes Duplicated by the Cleanup or by Main's Own Additions
* Leave PreciseSeam.cpp as Main Has It After the Precise Seam Rework
* Add Missing Includes Across src/libslic3r
Every libslic3r source and header now directly includes the headers declaring what it uses, rather than relying on the precompiled header or transitive includes. Generated with clang-tidy misc-include-cleaner, with libslic3r headers spelled libslic3r/... so they resolve outside the library's private include paths. MultiMaterialSegmentation.hpp, Support/SupportParameters.hpp and Format/STEP.hpp are made self-contained by hand.
* Make the libslic3r Headers Compile on Their Own
Each now includes, or forward-declares, what it uses instead of relying on what its includers happened to include first. Left out: I18N.hpp, which errors on purpose when included from GUI code, and VoxelizeCSGMesh.hpp and SLA/bicubic.h, which nothing includes and which no longer compile at all.
* Add the Includes Missing From the Hand-Fixed libslic3r Headers
clang-tidy would not edit these headers while they failed to compile on their own, so the first pass skipped them. With the headers now self-contained, a second pass adds the rest.
* Keep Windows Setup Ahead of the Added libslic3r Includes
Print.cpp and Thread.cpp open with a _WIN32 block that has to come first; without the precompiled header, Print.cpp otherwise reaches windows.h through OCCT with NONLS defined and boost/regex fails. OpenVDBUtils.cpp and SLA/SupportTreeBuilder.cpp had includes inside #ifndef NOMINMAX, which libslic3r defines on Windows, so those were skipped there. .clang-tidy also ignores the MSVC STL and UCRT internals, Boost.Multiprecision's fwd.hpp and CPython's Windows include directory.
* Re-Add libslic3r Includes After the Clipper2 2.0.1 Migration
Rebasing onto main took main's version of the files the Clipper2 migration rewrote, so their added includes are restored here, along with includes for main's new code. Clipper2's individual headers are now ignored by clang-tidy: they only build the Z variant through clipper2_z.hpp, which defines USINGZ first, so including clipper.core.h and the like directly broke ClipperZUtils.cpp.
* fix: constrain PA_Line calibration bounding box to model geometry
- PA_Line bounding box now uses actual model convex hull for X constraint instead of full printable area
- Skip EXCLUDE_OBJECT_DEFINE for PA_Line mode (single object, no exclusion needed)
- Add tool config files to .gitignore
* modified: .gitignore
* fix: add gcode type annotations and fix box height in PA line calibration
- Label calibration segments with appropriate TYPE comments (Outer wall, Bottom surface, Top surface, Custom) for proper gcode processing
- Fix bounding box height calculation to account for z_offset
- Add LAYER_CHANGE and HEIGHT comments for multi-layer numbering display
* fix: lock PA_Line bounding box X to bed centre instead of model hull
* Added extra TYPE to ensure text/numbers/glyphs are labelled correctly
` gcode << ";TYPE:Outer wall\n"; `
* Remove hardcoded Perl path in OpenSSL.cmake
Remove hardcoded Perl path for Windows configuration.
* Add cross compilation support for Windows in OpenSSL.cmake
* Remove unnecessary blank line in OpenSSL.cmake
* Set perl config command back to variable
Accidentally uploaded version with hardcoded path for my local environment
* whitespace adjustment in previous
* removed personal .gitignore config
Remove specific files and directories from .gitignore.
* Fix box height parameter in DrawBoxOptArgs
Update DrawBoxOptArgs to use `m_height_layer` instead of `m_height_layer*2+z_offset`. This isn't a Z coordinate, it's a layer height
* Replace hardcoded extrusion type with call to `GCodeProcessor::reserved_tag` Etags
* Get pa_line bounding box from actual calibration variables
Updated calibration line bounding box calculation to use actual geometry for X bounds, using a fake call to generate the calibration pattern.
This will accurately get the size of the calibration pattern, massively reducing wasted time from bed mesh probing.
* Implement print_extents method in CalibPressureAdvanceLine
Add print_extents method to calculate bounding box extents based on bed dimensions.
* Declare print_extents method in CalibPressureAdvanceLine
Added print_extents method to return X-bounds of the pattern.
* Fixed whitespace issues
* Adjust print_extents to account for delta printers
Check if the printer is delta layout and adjust bed dimensions if so.
Used code from `CalibPressureAdvanceLine::generate_test`
* Added semicolons to reserved tags
Didn't realise etags wouldn't add semicolon - added these
* only include number list in bounding box if number list is used
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* avoid bounding box overflowing bed
* Tabs to spaces
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
CalibPressureAdvancePattern::line_width_first_layer() returned the raw
initial_layer_line_width, so a value of 0 (which means "use the default")
fed 0 into the Flow spacing math and threw FlowErrorNegativeSpacing,
crashing the whole app when slicing a PA pattern calibration.
Mirror the guard already present in the sibling line_width(): when the
configured width is non-positive, fall back to auto_extrusion_width.
Add a libslic3r regression test covering the width resolution.
Fixes#13188
2. modify the filament_flow_ratio to nullable
jira:none
Change-Id: I3f0569ee643cfe9473c6029ca0e04f4b80c8332e
(cherry picked from commit ed61d1d31bdc79f064567deacf35e05bd123880d)
1. backend support multi_extrude data structure
2. Compatible with third-party calibration
3. fix bug when get extruder in gocde export process
Change-Id: I5dac9abdd9907a521a1ba9b480f9e05640591bc1
(cherry picked from commit 21e6271e59ea8e4924866275566617d14a4b2b6e)
* fix: tray_exist_bits != tray_exist_bits comparison
* fix: title == GetTitle() == title comparison
* fix: possibly dangling reference to a temporary
```
OrcaSlicer/src/libslic3r/calib.cpp:456:17: warning: possibly dangling reference to a temporary [-Wdangling-reference]
456 | const auto &w = bed_ext.size().x();
OrcaSlicer/src/libslic3r/calib.cpp:456:45: note: the temporary was destroyed at the end of the full expression ‘((Eigen::DenseCoeffsBase<Eigen::Matrix<double, 2, 1, 2>, 1>*)(& Slic3r::BoundingBoxBase<PointClass>::size() const [with PointClass = Eigen::Matrix<double, 2, 1, 2>]()))->Eigen::DenseCoeffsBase<Eigen::Matrix<double, 2, 1, 2>, 1>::x()’
456 | const auto &w = bed_ext.size().x();
```
* fix: mixup of | and ||
in this case I think it actually does not change the semantics it just means that both comparison have to be evaluated.
* fix: multi-character character constants need "
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp:392: warning: multi-character character constant [-Wmultichar]
392 | if (auto n = tunnel.find_first_of('/_'); n != std::string::npos)
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp: In member function ‘void Slic3r::GUI::MediaPlayCtrl::Stop(const wxString&)’:
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp:392: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘12127’ to ‘95’ [-Woverflow]
* fix: missing paranthesis - skips null check
* NFC: Remove this check it can never be false
* NFC: fix warning: statement has no effect
* pa calib: print flow value and acceleration
Print flow value and acceleration for PA pattern calibration.
This should help keep track during adaptive PA calibration.
* pa pattern: fix legent section too wide in some cases
Rework pa pattern legent generation to correctly estimate
width of the legend section.
Current flow value now has variable length which is a longest of
PA value and the acceleration for a given test.
Few examples:
1. PA value are 4 characters: 0.04
Acceleratioion 3 chars: 400
Flow value will be 4 chars long: 7.98, or 11.3
2. PA: 0.018
Accel: 1000
Flow: 12.35, or 6.345
3. PA: 0.04
Accel: 15000
Flow: 34.34, or 4.567
Rework number-to-string conversion flow to correctly round values at
given precision.
* Fix z hop performed after retraction in PA pattern calibration. Fix zhop config value not used
* Updated gathering of z hop value method for consistency
* Fix calls to depreciated wxPen constructor
* Fix use of wxTimerEvent
* Fix unrecognized character escape sequence
* Fix signed/unsigned mismatch
At least as much as possible without significantly altering parts of the application
* Clean unreferenced variables
* fix mistyped namespace selector
* Update deprecated calls
* Fix preprocessor statement
* Remove empty switch statements
* Change int vector used as bool to bool vector
* Remove empty control statements and related unused code
* Change multi character constant to string constant
* Fix discarded return value
json::parse was being called on the object, rather than statically like it should be. Also, the value was not being captured.
* Rename ICON_SIZE def used by MultiMachine
By having the definition in the header, it causes issues when other files define ICON_SIZE. By renaming it to MM_ICON_SIZE, this lessens the issue. It would probably be ideal to have the definitions in the respective .cpp that use them, but it would make it less convenient to update the values if needed in the future.
* Remove unused includes
* Fix linux/macOS compilation
* Hide unused-function errors on non-Windows systems
* Disable signed/unsigned comparison mismatch error
* Remove/Disable more unused variables
Still TODO: check double for loop in Print.cpp
* Remove unused variable that was missed
* Remove unused variables in libraries in the src folder
* Apply temporary fix for subobject linkage error
* Remove/Disable last set of unused variables reported by GCC
* remove redundant for loop
* fix misspelled ifdef check
* Update message on dialog
* Fix hard-coded platform specific modifier keys
* Remove duplicate for loop
* Disable -Wmisleading-indentation warning
* disable -Wswitch warning
* Remove unused local typedefs
* Fix -Wunused-value
* Fix pragma error on Windows from subobject linkage fix
* Fix -Waddress
* Fix null conversions (-Wconversion-null)
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Attempt to fix retraction issues with PA pattern calibration
* PA pattern test fix - retract and wipe on layer change
* Naming convention
* fix crash
The current PA pattern implementation does not lift the nozzle
when moving. The way the pattern is drawn means that the nozzle
is often dragged over already printed lines, which can pull the
pattern off the bed, or damage the lines already drawn. As a
result I often see failed prints with the PA pattern, or moderate
damage to already drawn lines.
This change adds a 1 layer hop between each move to eliminate
nozzle drag.
1. Changed printing speed for all PA tests, where the speed will be calculated by max(100, outer_wall_speed) with consideration of max_volumetric_speed.
2. PA tower now uses the classic wall generator.
#1616
* Add pattern method to Pressure Advance dialog
* Convert calib_pressure_advance to more unique calib_pressure_advance_line
* Share move_to function with PA lines and patterns
* Add PA pattern to calib.hpp
* Implement move_to(Vec3d). Combine with Vec2d version
* Add call to PA pattern in GCode.cpp
* Add helper functions
* Add directionality to draw_digit
* Extract shared number drawing variables
* Extract convert_number_to_string function
* Use in-class initializers for pattern variables
* Add max_numbering_height function
* Add helper functions
* Extract shared delta helper functions
* Add pattern generate_test() and associated helpers
* Clarify use of math functions
* Remove unused move_to overload, accept move_to comments
* Add get_distance() and draw_line()
* Extract set_nozzle_diameter()
* Clean up and simplify
* Rearrange and clean up
* Start work on print_pa_pattern
* Complete basic draw_box function
* Add more helper functions
* Add struct for pattern config, more helpers
* Rearrange
* Add encroachment member variable
* Add structs to manage optional arguments
* Simplify optional arguments structs
* Update opt args usage. Finish draw_box function
* Complete print_pa_pattern function
* Reuse PA Line STL
* Fix forward declaration error
* Fix invalid comparison
* Fixing complier errors
* Make DrawDigitMode options more clear
* More compilation error fixes
* Yet more compile error fixes
* Fix incorrect default step value
* Handle top-level dialog changes, consolidate params definitions
* Add layer change G-code, set more print variables
* Simplify optArgs constructors
* Fix pattern drawing, minor misc. clean up
* Make draw_box() G-code comments more helpful
* Make more of draw_line() const
* Fix sequential number draw direction
* Extract shared e_per_mm function
* Fix misplaced decimal in PA Line
* Move short constructor into .hpp
* Fix inverted Y direction in pattern digit drawing
* Use placeholder STL to create needed layers
* Rearrange and clean up
* Proof of concept: Adding custom G-Code at layer
* Use new scaling method
* Reorganize Plater::calib_pa()
* Restructure calib
* New strategy for adding custom G-code
* Remove redundant invocation
* Use cube primitive as positioning handle
* Move logic to Plater
Modifications to model in GCode cancelled _do_export from within itself
* Consolidate m_starting_point and pattern_start functions
* Replace bed_center() with m_starting_point
* Fix and consolidate number tab creation
* Fix off by one layer bug
* Use correct bounding box
* Use Vec3d instead of Vec2d for m_starting_point and m_last_pos
* Add translate_starting_point function
* Vec3d fix
* Store CalibPressureAdvancePattern with model
* Formatting adjustments
* Move pattern when handle moves
* Improve const correctness
* Improve/fix pattern writer and config
* Fix speed setting bug
* Pass model into generate_gcodes to improve consistency
* Re-generate pattern on reslice
* Make pattern actually move with handle
* Fix overzealous m_last_pos initialization
* Use clearer function names
* Use correct model
* Remove unused member variable
* Don't hard-code print config settings
* Remove unused lines, formatting clean up
* Make sure set_key_value operates on existing keys
* Remove asserts which limited life of key/value set
* Update Calibration.md
* Update licensing info
* Actually use speed in draw_line
* Don't speed_adjust twice
* doc: Make width and speed settings used more clear
* Bugfix: Shouldn't need to move handle to see pattern
* Clean up
* Move mp_gcodegen into line method alone
* Fix wrong number thickness in PA Line
* Remove unnecessary middleman PatternSettings
* Give value of config to const m_initial_config, not ref
* Fix incorrect DrawBoxOptArg default
* Use line_width_anchor() for all of initial layer
* Use clearer function name
* Replace "anchor" with "first_layer" for better consistency
* Update Calibration.md
* Update Calibration.md
* Make number tab infill explanation more clear
* (Hopefully) fix missing origin
* Add GCodeProcessor tags
* Fully refresh config
* Don't store is_bbl_printer
* Move set_starting_point to private
* Don't constantly recreate GCodeWriter
* Use different step value for pattern test
* Remove redundant processor tags
* Label glyph G-code
* Fix comparison typo
* Set number print speed
* Fix mixed up draw_number parameter
* Don't use line_width_first_layer for pattern
* (Hopefully) fix temp tower generating PA pattern
* Start with pattern centered on plate
* Add gap between pattern and handle
* Fix overly persistent pattern
* Revert "(Hopefully) fix temp tower generating PA pattern"
This reverts commit 0aa1206886.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>