Commit Graph
100 Commits
Author SHA1 Message Date
Vojtech Bubnik d6bb8eead9 Fixed 3mf unit tests to pass on ARM 64bit 2021-12-06 14:20:52 +01:00
Vojtech Bubnik 2ed57d1ba5 Further optimization of G-code viewer: Replaced std::set<RenderPaths>
with std::vector.
2021-12-06 13:21:34 +01:00
Vojtech Bubnik c37090a64d Optimization of G-code rendering, may improve speed issues mentioned in #7415 2021-12-06 11:52:27 +01:00
Vojtech Bubnik 68d5a47121 Caching of shader program attribute and uniform IDs from strings. 2021-12-06 11:52:27 +01:00
Vojtech Bubnik d4d558ebee Fix of GCodeViewer crashes when opening app preferences #7430 2021-12-06 08:23:19 +01:00
Vojtech Bubnik bfce4f6901 Follow-up to 3622f06bed
Work around 3D scene focus after de-activation of the main
window without having to resort to CallAfter(), which breaks
on Linux with some window managers that follow mouser cursor.
Fixes #5620 #6870 #6992

3622f06bed was not a correct solution,
it broke focus for non-modal windows.
Fixes #7419

The actual issue seems to be caused by wxProgressDialog not playing
well with modal dialogs closed just before wxProgressDialog opens.
If wxProgressDialog parent was not a main frame, keyboard focus
was not restored correctly after the wxProgressDialog closed.
2021-12-05 09:09:34 +01:00
Vojtech Bubnik d44525d916 Fix of Upload and simulate wrong label (Issue #7424) 2021-12-05 08:45:31 +01:00
Vojtech Bubnik 8ee8b915a4 Bumped up version to 2.4.0-beta3 2021-12-04 10:12:59 +01:00
bubnikv 6122f630d4 Fixing broken scrolling with a touch pad on some Windows laptops.
This issue #2750 is old, it was fixed and broken again.
Now it is being fixed differently.
2021-12-04 09:37:09 +01:00
Vojtech Bubnik 303de63a90 Localization:
Renamed PrusaSlicer_pt_br.po to pt_BR.po
Added one libslic3r file to lists.txt
2021-12-04 06:05:13 +01:00
bubnikv 3622f06bed Trying to work around 3D scene focus after de-activation of the main
window without having to resort to CallAfter(), which breaks
on Linux with some window managers that follow mouser cursor.
May fix #5620 #6870 #6992
2021-12-03 16:20:01 +01:00
Vojtech Bubnik 7837070d29 Follow-up to c6de3e84eb
Fixed typos in option labels.
2021-12-03 09:40:00 +01:00
Vojtech Bubnik 50da39d30b Windows specific: Only start the 3rd party updater application
if enabled in PrusaSlicer preferences.
2021-12-03 09:26:44 +01:00
Vojtech Bubnik 45d9e6bddd Follow-up to 7828964f8c
Fixed no way of leaving the "export G-code" dialog loop.
Improved the error message by explaining that some characters
are not allowed by a FAT file system.
2021-12-03 09:05:14 +01:00
Vojtech Bubnik 4d1ce89c22 Follow-up to f4dfbb69e2
Now that libcurl is used for URL host substitution,
we want to make sure that the new code compiles on Windows only
because that is where we need to do the URL host substitution
due to Windows 10/11 mDNS resolve issues and
because we have a control on the libcurl version statically linked
on Windows, so we are sure the URL API is available.
2021-12-03 08:12:47 +01:00
Vojtech Bubnik f4dfbb69e2 Replaced the code to substitute host address part in URL
with libcurl library calls. This solution should be more robust
than a homebrew URL parser solution.
2021-12-03 08:02:16 +01:00
Vojtech Bubnik 26a6cb2129 Fixed ironing over areas with modifier meshes:
1) Areas inside modifier meshes were ironed multiple times.
2) Ironing areas were not properly merged.

Layer::lslices were not always properly merged with modifier meshes
applied, which lead to the ironed surface being split and not fully
ironed, as there were artificial gaps created between regions as if
they were covered by perimeters (we don't iron over perimeters).
2021-12-02 18:19:35 +01:00
Vojtech Bubnik a6202c8f16 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-12-02 16:40:26 +01:00
Vojtech Bubnik 21e5481a58 Fix of fan control for raft layers.
Fixes Fan starts at first layer, even though disabled for first layer. #7232
This is a regression due to cooling refactoring, which cooled
support layers independently from object layers. The bug here was that
all the raft layers were cooled together with the first object layer.
2021-12-02 16:40:18 +01:00
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