Commit Graph
100 Commits
Author SHA1 Message Date
Vojtech Bubnik 9ea81a9dbf Fixing Perl unit tests 2021-12-01 19:24:23 +01:00
Vojtech Bubnik 9cf483fe08 WIP Lightning infil: Cleaning up some compiler errors 2021-12-01 19:02:37 +01:00
Vojtech Bubnik 481def3205 WIP Lightning Infill, roughly integrated, untested, disabled with
HAS_LIGHTNING_INFILL
2021-12-01 18:11:41 +01:00
Vojtech Bubnik e8697d2fc2 WIP Cura Lightning infill, initial port. 2021-12-01 16:45:04 +01:00
Vojtech Bubnik a89020abd7 Trying to fix compilation issues due to _() macro being used by mpl. 2021-11-30 18:06:01 +01:00
Vojtech Bubnik 4158f9ec8e New config value "gcode_resolution" replaces the hard coded RESOLUTION
value, which was set to 0.0125mm.
2021-11-30 17:52:05 +01:00
Vojtech Bubnik f51162f238 Improved G-code post processor error reporting in case the G-code
post processor did not edit the G-code in place.
2021-11-30 14:16:04 +01:00
Vojtech Bubnik 5a873dd1e5 Fixing a loophole in GUI::format() for UTF8 template input. 2021-11-30 13:49:22 +01:00
Vojtech Bubnik c514f45260 Fix of #7386, missing include 2021-11-30 13:17:56 +01:00
Vojtech Bubnik 229c45c729 Linux checking for DISPLAY variable: Don't check for WAYLAND_DISPLAY,
PrusaSlicer does not use it.
2021-11-30 12:58:47 +01:00
Vojtech Bubnik a09b4ff5c8 Linux specific: Avoid crashing with DISPLAY variable not set. 2021-11-30 12:41:35 +01:00
Vojtech Bubnik d0014c3aa4 Fix of one more compiler warning. 2021-11-30 11:13:24 +01:00
Vojtech Bubnik 7a2bd9023a One more fix to run unit tests on Windows: Missing DLLS need to be copied. 2021-11-30 11:00:26 +01:00
Vojtech Bubnik 5fd279cbc8 Fixing clang compiler warnings 2021-11-30 10:50:27 +01:00
Vojtech Bubnik c5e8a1c409 Fixing linking on Windows after eddcd93e82
Merge branch 'RandoMan70-introduce-mks-wifi-support-2.3.0-rc2'
2021-11-30 09:40:40 +01:00
Vojtech Bubnik b553ef7478 Follow-up to 8967ee57ed
FlashAir does not support start of print
2021-11-30 09:18:05 +01:00
Vojtech Bubnik 8967ee57ed Start Simulation for Duet
Author: Martin Loidl <martin.loidl@gmail.com>

    * PrintHost can now return a set of possible actions to be done after a
      upload is finished
    * Added new Button for starting a simulation after upload
    * Duet Hosts are now able to start a simulation after upload instead of
      starting a print
    * removed now unneeded config key 'printhost_print'
2021-11-30 08:43:39 +01:00
Vojtech Bubnik 56d5a340ce Follow up to the MKS merge:
Reformatted for code conformity.
Changed the xxx_ member variables to m_xxx
Replaced std::list with std::deque
2021-11-29 18:12:35 +01:00
Vojtech Bubnik eddcd93e82 Merge branch 'RandoMan70-introduce-mks-wifi-support-2.3.0-rc2' 2021-11-29 17:36:41 +01:00
Vojtech Bubnik b02b33338c Merge branch 'introduce-mks-wifi-support-2.3.0-rc2' of https://github.com/RandoMan70/PrusaSlicer into RandoMan70-introduce-mks-wifi-support-2.3.0-rc2 2021-11-29 17:31:21 +01:00
Vojtech Bubnik 6883919a7b Fixed handling of "clip_multipart_objects".
This was a regression of 2.4.0-alpha1 wrt. 2.3.3, where handling of
multiple volumes was refactored.
As a result, handling multi-part objects with clip_multipart_objects
disabled was broken.

With clip_multipart_objects disabled, the multi-part objects no more
clip one another and it is sole responsibility of the user to handle
overlaps.

Fixes "add part" error - PrusaSlicer 2.4.0 b2 #7366
2021-11-29 16:33:44 +01:00
Vojtech Bubnik e7cc12b2c9 Fix of output file dialog extension template for OSX:
When opening a "Save" file dialog with a default output file name,
OSX file dialog strips the provided extension and replaces it
with the default extension. This causes issues with a custom
file output template, where a non-default file extension is specified.

This commit changes the function to generate file dialog templates
so that if a default extension is provided, it is emitted
as first into the extension template.

Fixes Post Processing passes wrong name #7190
2021-11-29 15:46:25 +01:00
Vojtech Bubnik 87b6073575 Follow-up to aed0003476
refactored for clarity
    Fix of SPE-1109 / #7285 (spiral vase+sequential printing)
    This was broken with ae7d6db, between 2.4.0-alpha1 and alpha2.
2021-11-29 10:26:53 +01:00
Vojtech Bubnik bcc02172f9 PrintApply: Limiting the update of a modifier to an intersection
of bounding boxes of all the modifiers up to the parent printable volume.
2021-11-29 10:13:09 +01:00
Vojtech Bubnik f458101db6 Fix of Resolution config setting appears to do nothing #7364
This is a regression wrt. to PrusaSlicer 2.3.3 due to refactoring
of the slicing process for better multi material support
and to support negative volumes.
2021-11-29 09:20:37 +01:00
Vojtech Bubnik a996f33579 Follow-up to a0ee41770d
see pull request #7323 for discussion what went wrong.

The original issue
    Fix of Print::apply() creating hierarchy of regions for complex scenarios:
    Unnecessary regions were created for a modifier over a volume or a modifier,
    where the modifier did not modify any of its parent's properties.
    This lead to an explosion of regions for this particular 3MF.
    Fixes Non Responsive & Memory Leak when opening or changing this 3MF project #7220

After a0ee41770d
quite often regions were not re-regenerated. This shoul now be fixed
together with the original slowness & memory leak issue.
2021-11-22 15:33:14 +01:00
Vojtech Bubnik 55a555c848 Tooltip for the new SLA material parameter "material_print_speed" 2021-11-19 16:30:37 +01:00
Vojtech Bubnik 6ebee079c9 Follow-up to 9994e0bcbc
Start updater during start of prusaslicer.
Don't search the directory if only verifying that a file exists
is sufficient.
2021-11-19 15:48:03 +01:00
Vojtech Bubnik 56f409921c Improved some string initialization and zeroing.
Assigning = "" in constructor does not make sense,
.clear() is better than = "",
default paramaeter = {} is cheaper than = ""
2021-11-19 15:34:22 +01:00
Vojtech Bubnik 4a7ac79637 Generalize PrusaLink 2021-11-19 15:32:42 +01:00
Vojtech Bubnik 05ed0a9b60 Removed check for a 64bit build running on a 32bit system,
such condition could never be fulfilled.

Slightly polished the wording of the warning.
2021-11-19 11:07:25 +01:00
Vojtech Bubnik d8590ac0a8 Tiny eigen vectorization beautification. 2021-11-19 10:56:07 +01:00
Vojtech Bubnik f5c23871e8 Follow-up to 77548df00f
(Fixed missing sinking property in objects list for multipart objects
with a part completely below the printbed):

It was not possible to slice an object with some part completely below
the print bed. The BuildVolume collision check newly supports
a "completely below print bed" return status,
Model evaluates this "completely below print bed status" allowing
objects with some volumes completely below the print bed to print.
2021-11-19 10:32:46 +01:00
Vojtech Bubnik ecd71e3e80 Some debugging code (asserts) for the optimized G-code number formatter. 2021-11-18 16:42:07 +01:00
Vojtech Bubnik e063fe920e Fix of the last commit, G-code resolution was increased 10x by mistake. 2021-11-16 15:59:43 +01:00
Vojtech Bubnik 135b3fcea8 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-11-16 15:48:17 +01:00
Vojtech Bubnik 0420f63540 Higher resolution G-code and volumetric rate legend, disabled. 2021-11-16 15:48:06 +01:00
Vojtech Bubnik 58c93196d5 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-11-16 10:18:58 +01:00
Vojtech Bubnik cc44089440 New BuildVolume class was created, which detects build volume type (rectangular,
circular, convex, concave) and performs efficient collision detection agains these build
volumes. As of now, collision detection is performed against a convex
hull of a concave build volume for efficency.

GCodeProcessor::Result renamed out of GCodeProcessor to GCodeProcessorResult,
so it could be forward declared.

Plater newly exports BuildVolume, not Bed3D. Bed3D is a rendering class,
while BuildVolume is a purely geometric class.

Reduced usage of global wxGetApp, the Bed3D is passed as a parameter
to View3D/Preview/GLCanvas.

Convex hull code was extracted from Geometry.cpp/hpp to Geometry/ConvexHulll.cpp,hpp.
New test inside_convex_polygon().
New efficent point inside polygon test: Decompose convex hull
to bottom / top parts and use the decomposition to detect point inside
a convex polygon in O(log n). decompose_convex_polygon_top_bottom(),
inside_convex_polygon().

New Circle constructing functions: circle_ransac() and circle_taubin_newton().

New polygon_is_convex() test with unit tests.
2021-11-16 10:15:51 +01:00
Vojtech Bubnik f31a2db495 Fix of Changing purge volumes doesn't set project as unsaved #7265 2021-11-12 17:05:19 +01:00
Vojtech Bubnik 3a93277531 Revert "medical"
This reverts commit 117302ba22.
2021-11-11 11:22:57 +01:00
Vojtech Bubnik 117302ba22 medical 2021-11-11 10:11:13 +01:00
Vojtech Bubnik 4e9f906848 Cooling buffer used to remove F word from G1 Fxxx lines if the feed rate
did not change compared to the preceding value creating empty "G1" lines.
The empty "G1" lines are now removed.
Improves Features fail with extra G1 moves when above a certain layer height and Detect Thin Walls is enabled #5176
Improves Thin wall detection causes miniature loops to be added, and emits empty G1 commands #3058
2021-11-02 12:11:53 +01:00
Vojtech Bubnik a0ee41770d Fix of Print::apply() creating hierarchy of regions for complex scenarios:
Unnecessary regions were created for a modifier over a volume or a modifier,
where the modifier did not modify any of its parent's properties.
This lead to an explosion of regions for this particular 3MF.
Fixes Non Responsive & Memory Leak when opening or changing this 3MF project #7220
2021-11-01 13:48:45 +01:00
Vojtech Bubnik a94f1b332a Fixing the GCC/clang builds. MSVC is again non-conformant. 2021-10-30 14:00:23 +02:00
Vojtech Bubnik d78a5acba9 Numerical improvements to Welzel minimum enclosing circle algorithm 2021-10-30 11:18:36 +02:00
Vojtech Bubnik 5f84c504fc Support generator: Regression wrt. PrusaSlicer 2.3.3:
"with sheath" now again uses the lighweight zig-zag algorithm
for the sparse support columns, while PrusaSlicer 2.4.0-alpha1
to PrusaSlicer 2.4.0-beta1 used the new "stable" zig-zag
algorithm for both the non-sheathed and sheathed sparse support columns
creating unnecessarily thick support column perimeters.
2021-10-29 16:53:03 +02:00
Vojtech Bubnik 1ddd060982 New placeholder parser values for output file name template;
{num_objects} - number of printable objects on the plater.
{num_instances} - number of printable instances on the plater, adding up
  	all printable instances of all objects.
Implements #2735 #3339 #4607
2021-10-29 14:27:36 +02:00
Vojtech Bubnik 3216448bbc PlaceholderParser: implemented round(), digits() and zdigits() macros.
round() rounds to an integer.
This is a popular request, for example #3472

digits(value, num_digits, num_decimals) rounds to num_digits and
	num_decimals, left filled with spaces.
digits(value, num_digits) the same as digits(value, num_digits, 0)
    Neither decimal separator nor any decimals after decimal separator
    are emitted.
zdigits(...) is the same as digits(...) only left filled with zeros.
If the result does not fit num_digits, the result is never trimmed.
2021-10-29 13:36:26 +02:00
Vojtech Bubnik 0f145920d9 Fixed conditional G-code int(...), which did not accept an expression,
just a variable, constant or an expression enclosed in double braces (())
Mentioned for example in #3472
2021-10-29 10:45:33 +02:00
Vojtech Bubnik b6c4e94d81 Fixing projection of bottom surfaces in MM segmentation and for
support blockers / enforcers.

All slicing functions shall produce consistent results with the same mesh, same transformation matrix and slicing parameters.
Namely, slice_mesh_slabs() shall produce consistent results with slice_mesh() and slice_mesh_ex() in the sense, that projections made by
slice_mesh_slabs() shall fall onto slicing planes produced by slice_mesh().

Before this commit, slice_mesh_slabs() projected bottom facing faces upwards to its coplanar slicing plane,
which is different from how slice_mesh() or slice_mesh_ex() work, leading to ignored support enforcer / blocker strokes.
2021-10-28 15:07:29 +02:00
Vojtech Bubnik 93e91bcacb Fixing compilation on GCC 2021-10-27 17:36:47 +02:00
Vojtech Bubnik bc1737c0da Yet another bugfix for gcc where MSVC was happy with non-conformant code 2021-10-27 16:16:49 +02:00
Vojtech Bubnik ad2dfe345d Fixed typo in an unused template code, where MSVC does not complain,
but GCC does.
2021-10-27 16:07:23 +02:00
Vojtech Bubnik e87f90af9f Fixed typo in CMake 2021-10-27 16:04:58 +02:00
Vojtech Bubnik cf7b6fb19a Extracted MedialAxis code from Geometry.cpp/hpp, moved to its own
files to Geometry/
Moved other Voronoi files to Geometry/
2021-10-27 16:03:04 +02:00
Vojtech Bubnik 497905406b New code for minimum enclosing circle by randomized Welzl algorithm.
Split the circle code from Geometry.cpp/hpp to Geometry/Circle.cpp,hpp
2021-10-27 15:12:29 +02:00
Vojtech Bubnik ea56f00a31 Fixing handling of project "saved" timestamp on Undo / Redo stack. 2021-10-26 16:30:41 +02:00
Vojtech Bubnik cd13af59f4 Follow-up to 79eb59b9f2
Fix of #7168: Crash when layer count exceeds 4095
This time the crash was fixed for top / bottom propagation of
multi-material segmentation.
2021-10-26 16:21:07 +02:00
Vojtech Bubnik 28de7f5504 Support generator: Merging of bottom contacts with top contacts and
interface layers if possible. This should always be possible with
soluble supports and it should have been done long time ago.
For non-soluble supports, it may or may not be possible to merge
these layers: They will only be merged if they are extruded without
bridging and with the same layer height.
Fixes Support enforcer interfaces not generated as needed. #6784
or at least some of the issues reported.

Experimental: Added experimental filtering of propagated support columns
to two extrusions, overlapping by maximum 20%.
This filtering step will remove spurious columns that do not support
anything, but the filtering step may remove supports supporting tiny
islands. Those supports would likely not be printable anyways without
the user intervention (extending the supported area by painting).
2021-10-26 12:09:46 +02:00
Vojtech Bubnik 4d2017188d Updated GLEW to 2.2.0 2021-10-26 10:03:41 +02:00
Vojtech Bubnik 00c444f8c8 Tiny optimization of slice_mesh_slabs() with mirrored objects. 2021-10-26 10:03:41 +02:00
Vojtech Bubnik 743b99d22c Unit tests to the new optimized implementation of
Line::parallel_to() a Line::perpendicular_to().
2021-10-25 12:03:44 +02:00
Vojtech Bubnik 9651ff19ef Fix of [prusa3d/PrusaSlicer] Typo in Keyboard Shortcuts (Issue #7161) 2021-10-24 11:12:15 +02:00
Vojtech Bubnik ae62801250 Implemented "Details" section enclosing OpenGL extensions when copying
sysinfo to clipboard for inserting into github issue.
Fix of [Feature Request] Help => System Info => Copy to Clipboard: wrap list of extensions with <details> tag #6830
2021-10-23 20:13:25 +02:00
Vojtech Bubnik 0bc2448e22 Documented the new print bed collision detection algorithm requirements:
Only convex print bed is supported.
Optimization of collision detection by precomputing the print bed shape type.
2021-10-23 15:29:18 +02:00
Vojtech Bubnik 36baae05f1 Commented out unused and expensive printbed_collision_state() 2021-10-23 15:29:18 +02:00
Vojtech Bubnik be236eda85 Renamed Geometry::intersect() to Geometry::convex_polygons_intersect()
to convey its true meaning.
2021-10-23 15:29:18 +02:00
Vojtech Bubnik 5ccf7e9e47 Updated version and config location to beta. 2021-10-22 17:10:09 +02:00
Vojtech Bubnik 7e780380ee Fix of d43ae66eca
reduced copy / paste redudancy by extracting a new function
    to produce convex hull: its_convex_hull()
2021-10-22 16:54:21 +02:00
Vojtech Bubnik 3021a6f57f Fixing previous commit for QHull configured for doubles, not floats. 2021-10-22 15:20:40 +02:00
Vojtech Bubnik b15db6fdb7 Fixed previous commit, which broke debug compilation. 2021-10-22 15:11:51 +02:00
Vojtech Bubnik d43ae66eca reduced copy / paste redudancy by extracting a new function
to produce convex hull: its_convex_hull()
2021-10-22 14:02:53 +02:00
Vojtech Bubnik 48e89e0b0d const replaced with satic constexpr const 2021-10-22 14:02:53 +02:00
Vojtech Bubnik f9e3e1d9fd Fixed spelling error get_standart_duration -> get_standard_duration 2021-10-22 14:02:53 +02:00
Vojtech Bubnik 767f401ada Brim generator: Using pftNonZero instead of pftEvenOdd for intersection / difference. 2021-10-21 13:35:29 +02:00
Vojtech Bubnik 1f4f8ff3ad Fixed visualization of the "sinking contours" for complex objects. 2021-10-19 09:19:53 +02:00
Vojtech Bubnik 5e735a59d0 Fixed planning of support interface layers with rafts and
larger Z gap for supports than for the raft.
2021-10-19 09:19:53 +02:00
Vojtech Bubnik c313e6793a Follow-up to 1ca24f0bd0
Fixed visualization of G-code in G-code viewer after 07e7e11590
The line end positions were not extracted correctly from G-code
imported into a stand-alone G-code viewer.
2021-10-18 15:46:23 +02:00
Vojtech Bubnik 32ebfa66e9 Fix of M106 on every new layer #7094
after parallelization of CoolingBuffer:
Remember the last fan speed emitted at the previous layer.
2021-10-18 14:56:02 +02:00
Vojtech Bubnik 556e0c53c7 Some more refactoring of ClipperLib / closing() / opening() 2021-10-18 14:51:30 +02:00
Vojtech Bubnik bec140b4bc "only_retract_when_crossing_perimeters" disabled by default
to reduce stringing for "custom" printers based on "defaults".
2021-10-15 16:35:16 +02:00
Vojtech Bubnik 1ca24f0bd0 Fixed visualization of G-code in G-code viewer after 07e7e11590
Fix of prusa-gcodeviewer changes modification time of the viewed gcode file #7005
2021-10-15 14:31:57 +02:00
Vojtech Bubnik a6f4b9b71f Snug supports: Extrude interface layers 45 degrees from the base layer,
flip direction of the infill layer with each interface layer.
Unfortunately the flipping of support interface directions may not work
reliably due to base support layer heights growing at different rate
from the interface layers.
2021-10-14 13:56:04 +02:00
Vojtech Bubnik 64a3866ad5 Making GCC happy. 2021-10-14 09:33:39 +02:00
Vojtech Bubnik 0222533273 Fixed compilation on non MS systems 2021-10-14 09:31:53 +02:00
Vojtech Bubnik 7ff76d0768 New ClipperUtils functions: opening(), closing() as an alternative
for offset2() with clear meaning.
New ClipperUtils functions: expand(), shrink() as an alternative
for offset() with clear meaning.
All offset values for the new functions are positive.

Various offsetting ClipperUtils (offset, offset2, offset2_ex) working
over Polygons were marked as unsafe, sometimes producing invalid output
if called for more than one polygon. These functions were reworked
to offset polygons one by one. The new functions working over Polygons
shall work the same way as the old safe ones working over ExPolygons,
but working with Polygons shall be computationally more efficient.

Improvements in FDM support generator:
1) For both grid and snug supports: Don't filter out supports for which
   the contacts are completely reduced by support / object XY separation.
2) Rounding / merging of supports using the closing radius parameter is
   now smoother, it does not produce sharp corners.
3) Snug supports: When calculating support interfaces, expand the projected
   support contact areas to produce wider, printable and more stable interfaces.
4) Don't reduce support interfaces for snug supports for steep overhangs,
   that would normally not need them. Snug supports often produce very
   narrow support interface regions and turning them off makes the support
   interfaces disappear.
2021-10-14 09:11:31 +02:00
Vojtech Bubnik 7b0d90f489 Reworded "Shape Gallery" menu and dialog title 2021-10-07 15:40:28 +02:00
Vojtech Bubnik 5de143f04f Follow-up to 96b88f5b29
Fixed crash with zero support base spacing.
The bug fix was not correct and it disabled the new "zig-zag" sparse
infill generator, leading to GH issue #7014

Somehow improved missing interface layers for snug supports
by propagating full overhangs when generating interface layers.

Fixed generation of soluble interfaces for support enforcers,
where base support was used for steeper overhangs.

Disabled filtering out thin regions from the lower layer, that will
not be covered by perimeters, thus they are not supporting the current layer.
However this may lead to a situation where regions at the current layer
that are narrow thus not extrudable will generate unnecessary supports.
For example, see GH issue #3094
2021-10-07 15:39:44 +02:00
Vojtech Bubnik e185bf58b7 Replaced "Simple shorthands for smart pointers" shptr, uqptr, wkptr
with their original names. Using weird shorthands makes the code
unreadable for anyone but the original author.

template<class T> using shptr = std::shared_ptr<T>;
template<class T> using uqptr = std::unique_ptr<T>;
template<class T> using wkptr = std::weak_ptr<T>;
2021-10-04 16:56:26 +02:00
Vojtech Bubnik b028e169c8 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-10-04 16:33:33 +02:00
Vojtech Bubnik 6192c57368 Fix of support missing under horizontal overhang #6058
There was a bug for more than 4 years, which likely triggers now more
often with the introduction of raft_contact_distance parameter,
which is usually significantly smaller than support_material_contact_distance.
There were no support towers built at the raft for contact layers
below the print_z of the first object layer.
2021-10-04 16:33:25 +02:00
Vojtech Bubnik e533d237f9 Manifold mesh may contain self-intersections, so we want to always allow fixing the mesh.
This is a fix of a regression wrt. https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.4.0-alpha2
2021-10-04 10:39:58 +02:00
Vojtech Bubnik c7d6a95cb3 Slightly reworded error messages for
Cannot import .sl1 files into PrusaSlicer
2021-10-01 15:07:09 +02:00
Vojtech Bubnik 68de2a49a3 Fixed update of mesh volume after applying a transformation.
Fixes flipped normals when importing some 3MFs.
2021-10-01 14:28:45 +02:00
Vojtech Bubnik afbbb36fa4 Fixed import of multi-material AMF files, broken due to admesh eradication. 2021-10-01 13:34:22 +02:00
Vojtech Bubnik 66d4462724 Fixed spelling error preffered / preferred 2021-09-30 14:44:11 +02:00
Vojtech Bubnik 96f4d71c71 Fixed 1st layer support expansion if printed without raft.
This is a regression to PrusaSlicer 2.3.3
2021-09-30 14:01:31 +02:00
Vojtech Bubnik b76f66d2d2 Follow-up to 3ee259b602
1) Added parsing of 3MF PrusaSlicer generator semantic version
2) For 3MFs generated by >= "2.4.0-alpha1" and < "2.4.0-alpha3",
   remove unreferenced vertices on loading. This should shrink the incorrectly
   generated 3MFs back.
3) Added check for an empty mesh, which could have crashed PrusaSlicer on 3MF parsing.
2021-09-30 12:18:43 +02:00
Vojtech Bubnik aeb18e729d New preferences key "clear_undo_redo_stack_on_new_project", set to "1"
by default: Clear Undo / Redo stack on new project or load project.
Fixes Clear undo chain #2812
2021-09-30 12:17:52 +02:00