corner cases
this patch is cherry-picked from PrusaSlicer's 84722876012ca310e29b291e10fef9d18ae26cea
thanks to 'Vojtech Bubnik' for the fix
Implementing a test whether the current thread is the main (UI) thread
and using it on AppConfig::save() to assert if save is called
from a worker thread.
The old assert was using thread names, which did not always work
on Windows.
Fixes#7839#9178#9370#9420
1. when object skipped, it should not be duplicated
it is set to unprintable before arrange
and the plate needs to be considered a skipped plate also
2. skip the wipe tower if not multi-color after skip
3. load default configs if there are no configs loaded
4. refine the result.json to include key_values
Change-Id: I8c132cabcdd78756673fe900267a226a41ae1b4d
1. load the updated machine/process config from uptodate_settings
2. if don't have uptodate_settings, keep the logic as before, use from local
Change-Id: I3520469ab6094f03895b8e0e4e84c7549190f244
1. from small bed to larger one, auto translate the models based on center;
2. from large bed to smaller one, report an error
Change-Id: I7b7fac1e370ff4daca82c4f36977a86fca268625
Enforcers should also subtract the lower polygons to get overhang areas.
Jira: STUDIO-3692
Github: #2045
Change-Id: I70f4aaae13826efc624e9bc942d2d11e9b1df1a1
(cherry picked from commit fc3d9b24ac1eb14e259488c94fca3469f319b368)
1. We have a logic to add supports at corners for tree(auto), now I extend
it to tree(manual) also.
2. Only show support_critical_regions_only option to tree(auto).
Github: #2008
Change-Id: I161444da93464fd2ef0e0f3b40a0c5852beba351
(cherry picked from commit af4efb4aadc2a4d16de3eea881c6610955985fff)
to avoid integer overflow during the polygon operations in make_brim(),
plateoffset is applied during gcode generation. This results in a wrong
first layer convexhull "m_first_layer_convex_hull" which is used in _make_skrit().
This patch fixs this issue.
JIRA: https://jira.bambooolab.com/browse/STUDIO-3719
Change-Id: Icfe21f4dbab05cc9e1c6f668791a62f954c2e0e5
(cherry picked from commit 6286b3e447b7ac7cbc061dca435091094783f74b)
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
* First working conical overhang impl
* Add settings for Make overhang printable
* Added an Advanced setting to the Quality menu for Make overhang printable
* Allow toggling the feature and adjusting the angle threshold
* Retain recesses in the bottom of the model when "Make Overhangs Printable" is turned on
* Add settings for Make overhang printable hole size
* Allow disabling conical overhang per modifier
* Should check upper layer instead
* Skip unnecessary layers
* Apply conical overhang before any size compensation
which fixs the `lslices` not being updated issue and also the elephant foot compensation
* 1. Fix an issue that changing make_overhang_printable related parameters won't clear caches properly.
2. Tweak the logic of make_overhang_printable parameter so that it works for per region/object/print level. Remove make_overhang_printable_disable parameter.
* Change default make_overhang_printable_angle to 55
* One more missing commit
* 1. Skip checking default_region_config()->make_overhang_printable
2. Handle make_overhang_printable_angle and make_overhang_printable_hole_size value change
---------
Co-authored-by: David Bern <odie5533@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Port single wall on top surface from classic wall generator to Arachne
* Move the surface split code into a separate function to be shared between classic and Arachne. This also adds bridge detection to Arachne as well.
* Remove unwanted infills
* Fix insets calculating
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Calculate extrusion width %s as a function of nozzle width, not layer height
* handled more width conversions
* more missing percent handling
* even more missed percent handling
* even more more extrusion % handling
* some fixes
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
[BUGFIX] Fix Klipper SET_VELOCITY_LIMIT code
- Always write out SET_VELOCITY_LIMTIT ACCEL=<acceleration> independently of the accel_to_decel setting
- Append the ACCEL_TO_DECEL fragment if enabled in config
* Added config options for Enforce Lift Z (from SS, doesn't affect Gcode
yet)
* working, minus first layer override; also fixed m_last_extrusion_role not being set
* fixed logic to match SS
* minimize to just one config
* removed first layer override
* Cleaned up logic, working as intended
* added lift above z, lift below z; somehow broke filament overrides
* fixed overrides not working, but lift above/below and enforce don't override
* fixed filament overrides
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* 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>
while the newer version of 3mf be load to older software
pressure_advance be unrecogized
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ie160759f58e573f8ad01a2941763016e9b070e9e
What: As title. The original code is always apply
at the end of last object of last layer, whichi is before
layer change
Why: the fan spped will be skipped if the last object is
skipped. So we must move the layer time fan speed setting
after changing layer, where is common gcode block and does
not belong to any object.
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: I442f80e00778b524576210b451f81dd15e25e14c
Only use MCut to do boolean, with a little modification to allow input
mesh to have multiple components.
Jira: STUDIO-3167
Change-Id: I4f53010f76fbcacfe966c2ef48e465f97d6516fe
(cherry picked from commit 92d0eb11744820466ee2f67c02d4764e496b7e60)
when the cached object is skipped
we need to reslicing it;
also do overhang detect for all objects
Change-Id: Ic842fd5a441426983a760145aeff9285e398d430
Previously tree supports are harder to remove than normal
supports. We learn from normal supports and improve the gap between
object and supports.
Jira: STUDIO-3530
Change-Id: I229a7b869b334bdf4c5aba96c9450213b83457f2
As title. This function need to be used in calibration
page.
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: Ia4228cbd195d87f433b59bc14129bd4acdd9df68