Commit Graph
100 Commits
Author SHA1 Message Date
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
Vojtech Bubnik 1f3b272d77 Redo of the project state, implementation of Undo/Redo stack compression 2021-09-30 12:17:39 +02:00
Vojtech Bubnik 85c760d9b6 Touch-up to some comments, removed commented-out code 2021-09-27 15:00:58 +02:00
Vojtech Bubnik 8f4f02f84c Merge remote-tracking branch 'remotes/origin/vb_project_state' 2021-09-27 14:36:22 +02:00
Vojtech Bubnik 9c4494637c WIP Undo / Redo and project state: Marking Undo / Redo snapshots
with their purpose.
Follow-up to 41dc265a45
2021-09-27 14:32:09 +02:00
Vojtech Bubnik 41dc265a45 WIP Undo / Redo and project state: Marking Undo / Redo snapshots
with their purpose.
2021-09-27 14:10:53 +02:00
Vojtech Bubnik 43470af0c6 Fix of "About" screen still shows 2020 at the copyright notice (#7018) 2021-09-27 10:07:29 +02:00
Vojtech Bubnik 07e7e11590 Fix of prusa-gcodeviewer changes modification time of the viewed gcode file #7005
This is a regression wrt. PrusaSlicer 2.4.0-alpha1 due to the G-code
processing optimization and parallelization.
Related to GCode Viewer changes files modified date in windows #5079
2021-09-27 10:02:54 +02:00
Vojtech Bubnik fec5d92bc8 Added various has_duplicate_points() checks, to be used by asserts.
Removed some "extern" function modifiers, they have no meaning in C++.
2021-09-24 14:07:46 +02:00
Vojtech Bubnik 6c37955d75 Moved a commented out test for DynamicPrintConfig serialization
/ deserialization into a living unit test.
2021-09-24 11:32:15 +02:00
Vojtech Bubnik 3872524dc4 Follow-up to b6d7601ead
Fixing the FDM raft generator.
2021-09-24 10:13:26 +02:00
Vojtech Bubnik 0c0c37b76c Fix of [2.4.0a] version placeholder doesn't work for output filename format #7002 2021-09-24 09:36:14 +02:00
Vojtech Bubnik 04e4aee246 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-09-23 18:46:15 +02:00
Vojtech Bubnik b6d7601ead Fixed endless loop in support raft generator. 2021-09-23 18:46:11 +02:00
Vojtech Bubnik 96b88f5b29 Fixed crash with zero support base spacing.
Zero support base spacing is newly allowed, switching from
the "support base" infill pattern to rectilinar infill pattern.
Why someone would want to use a solid infill for support base eludes me,
but it is simpler to support it instead of working out some rules on
minimum support base density.

Fixes Support patern spacing set to zero causing crash #6989
2021-09-22 10:50:12 +02:00
Vojtech Bubnik a5a7f64db0 Mesh statistics for imported STLs: Added backwards_edges to open_edges,
so that a mesh with incorrectly oriented faces will not be considered
a manifold.

Added assert for 3D convex hulls constructed by QHull. They shall be
manifold (however sometimes they are not).
2021-09-21 16:04:04 +02:00
Vojtech Bubnik ac7674b85a Fixed visualization of G-code lines in G-code viewer (3D view).
Improved speed of parsing external G-code.
2021-09-21 15:30:37 +02:00
Vojtech Bubnik 116fd0526b Enabling PrusaLink in physcal printers dialog for MINI. 2021-09-21 12:49:25 +02:00
Vojtech Bubnik 7e3306c68f Fixed triangulation of meshes split by the cut tool. 2021-09-21 11:07:40 +02:00
Vojtech Bubnik 8a2a9dba2f Eradicated admesh from TriangleMesh:
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.

Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.

Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.

Reworked QHull integration into TriangleMesh:
    1) Face normals were not right.
    2) Indexed triangle set is newly emitted instead of duplicating
       vertices for each face.

Fixed cut_mesh(): Orient the triangulated faces correctly.
2021-09-20 17:12:22 +02:00
Vojtech Bubnik f484953a5a Fix of Print setting changes not applied to all copies if one copy rotated #6971 2021-09-20 14:41:19 +02:00
Vojtech Bubnik 9d29eddf16 WIP: admesh eradication
follow-up to 58d8ab3dea
2021-09-14 14:51:40 +02:00
Vojtech Bubnik d749baf6bc Fix of 58d8ab3dea 2021-09-14 13:11:21 +02:00
Vojtech Bubnik 58d8ab3dea Removed the PRUS format parser. WIP: admesh eradication:
stl_stats are newly only accessed by TriangleMesh::stats(),
most of the direct access to TriangleMesh::stl is gone with the exception
of parsing input files (3MF, AMF, obj).
2021-09-14 11:58:14 +02:00
Vojtech Bubnik ec976cbe05 Fixed unit tests after cab71073a1 2021-09-13 15:45:33 +02:00
Vojtech Bubnik 0a51afa3e6 Fix of Can't convert polyline with more than two points to a line (#6933)
Sometimes Clipper produces a polyline with more than 2 points when
clipping a line with a polygon or a set of polygons. We hope the intermediate
points are collinear with the line, so we may just ignore them.
2021-09-13 15:40:56 +02:00
Vojtech Bubnik cab71073a1 Some reduction of unnecessary conversions when calling ClipperUtils. 2021-09-13 15:13:10 +02:00
Vojtech Bubnik f9a5ee725d Follow-up to ae7d6db1d9
Exporting G-code on a worker thread did not work correctly as the worker
threads were using user's locale, not "C" locale.
The "C" locale is newly enforced to TBB worker threads by
name_tbb_thread_pool_threads_set_locale()
2021-09-13 13:04:12 +02:00
Vojtech Bubnik e78d647cc2 Follow-up to e7591e6aa6
GCodeFormatter default copy constructor / copy operators were not safe
and they were used in debug mode.
2021-09-13 12:51:50 +02:00
Vojtech Bubnik e7591e6aa6 GCodeWriter: published GCodeFormatter, made it more generic, so
it could be used outside of GCodeWriter.
Ported the GCodeWriter::retract/deretract to GCodeFormatter.
2021-09-13 11:55:44 +02:00
Vojtech Bubnik 880feb3a3d GCodeViewer slight opitmization: reuse (move) G-code line indices
in G-code viewer.
2021-09-13 10:41:28 +02:00
Vojtech Bubnik ae7d6db1d9 Parallelization of the G-code export.
Follow-up to
03b6048684
beee18f229
b5a007a683
etc
2021-09-13 10:04:21 +02:00
Vojtech Bubnik 34c4b74af4 Fixed Perl unit tests 2021-09-10 12:28:52 +02:00
Vojtech Bubnik dc4b783e9e Pimping up SpiralVase code, fix of 03b6048684 2021-09-10 12:10:00 +02:00
Vojtech Bubnik 03b6048684 Follow-up to beee18f229
WIP to G-code export parallelization through pipelining:
Decoupled CoolingBuffer from GCode / GCodeWriter, ready to be
pipelined on a different thread.
2021-09-10 11:43:59 +02:00
Vojtech Bubnik beee18f229 Follow-up to b5a007a683
WIP to G-code export parallelization through pipelining:
GCodeProcessor is called during the G-code export,
the G-code is no more reopened and re-read, but it is pipelined
from the G-code generator.
2021-09-08 15:06:12 +02:00
Vojtech Bubnik 0da0a7b2a0 Fix of recent GCode / GCodeProcessor refactoring: Don't close a FILE
twice.
2021-09-07 17:58:06 +02:00
Vojtech Bubnik 152e236dda Trying to fix the windows build 2021-09-07 17:31:36 +02:00
Vojtech Bubnik b5a007a683 WIP to G-code export parallelization through pipelining:
New class GCodeOutputStream as a G-code consumer.
In the following steps the GCodeOutputStream will be pipelined with
GCodeProcessor.
2021-09-07 16:23:43 +02:00
Vojtech Bubnik 32733b7db9 GCodeProcessor collects positions of line ends for GCodeViewer,
GCodeViewer no more parses G-code just to extract line end positions.
Removed start_mapping_gcode_window(), void stop_mapping_gcode_window(),
they are no more needed.
2021-09-07 15:42:56 +02:00
Vojtech Bubnik e30ff22b8a GCodePostProcessor - use C files instead of C++ streams, C files are faster.
Also fixed a regression - crashes on undefined cancellation callback.
2021-09-07 14:20:21 +02:00
Vojtech Bubnik 771a892776 Optimization of GCodeProcessor for speed. 2021-09-07 11:18:12 +02:00
Vojtech Bubnik 428509ac00 Pimped up GCodeProcessor::TimeProcessor::post_process():
replaced implicit lambda capture with explicit listing of captured
context for readability and code correctness. Captured this as const.
2021-09-06 18:08:13 +02:00
Vojtech Bubnik 86d06b0be9 G-code processor tiny change: In place initialization 2021-09-03 17:22:53 +02:00
Vojtech Bubnik 97d1fe35ad G-code writer optimization: Don't use std::strstream, it is slow! 2021-09-03 17:22:28 +02:00
Vojtech Bubnik dc72723911 Optimization of GCodeReader:
1) Use std::from_chars() instead of strtod()
2) Own implementation of buffered readline()
2021-09-03 16:21:45 +02:00
Vojtech Bubnik d154752c38 Commenting out untested and unused Polyline::simplify_by_visibility() 2021-09-03 16:21:44 +02:00
Vojtech Bubnik 2e250c1463 Speed-up in GCodeViewer vertex buffer generator 2021-09-03 16:21:44 +02:00
Vojtech Bubnik 79784d1a2e Fix of "Support on build plate only" no longer overridden by support painting (#6863)
This is a regression to a late PrusaSlicer 2.4.0-alpha0 change
	8dfc0422a8
    Faster and hopefully more reliable projection of paint-on support
    blockers and enforcers on a sliced mesh.
    Previous d89f01c717 did not fix it.
2021-09-03 11:45:08 +02:00
Vojtech Bubnik d89f01c717 Fix of "Support on build plate only" no longer overridden by support painting (#6863)
This is a regression to a late PrusaSlicer 2.4.0-alpha0 change
	8dfc0422a8
    Faster and hopefully more reliable projection of paint-on support
    blockers and enforcers on a sliced mesh.
2021-09-02 16:29:21 +02:00
Vojtech Bubnik c25ca3015a Bumped up version number 2021-09-01 15:15:32 +02:00
Vojtech Bubnik 950c216239 Commented out AMF export. The format never took off, we don't want to
keep supporting it. Let's wait for user feedback.
2021-09-01 15:11:26 +02:00
Vojtech Bubnik 6158347379 Follow-up to #6817
1) Activate installed filament or SLA material profile after update_compatible(),
so that the compatiblity and visibility flags of presets are updated.
2) Only activate the first newly installed filament / SLA material profile
if the active printer did not change. This also means that if no filament
profile was active before Wizard was open or it became incompatible with
the newly installed Printer profile, the default filament profile assigned
to the activated Printer is activated preferably, which may or may not
be one of the newly installed filament profiles.
2021-09-01 14:37:20 +02:00
Vojtech Bubnik ab84da6c56 Fix for #6803 - Illegal character in filename when STL opened direct from CAD app
Follow-up to ea4e9b35a3
Win32 specific: Substitute slashes to back slashes in file paths
when loading model files (STLs, 3MFS ...)
2021-09-01 11:08:08 +02:00
Vojtech Bubnik b0c4a13ebd Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-09-01 09:55:35 +02:00
Vojtech Bubnik b29c0ead7d Implemented configurable speed and acceleration settings for the first
object layer over raft interface:
"first_layer_speed_over_raft", "first_layer_acceleration_over_raft".
Fixes I have a question about the speed of the first layer after the raft. #6623
Fixes Layer After Raft Is Not Considered First Layer! #6166
2021-08-31 16:03:14 +02:00
Vojtech Bubnik 5f26bfd397 Brim separation from object, follow up to 82373334bc
1) Changed the name of the variable "brim_offset" to "brim_separation"
   for clarity.
2) Added legacy conversion after loading an old 3MF that does not define
   then new "brim_separation" variable: The "brim_separation" is being
   filled in with the "elefant_foot_compensation" value to produce
   equal brim separation to the old PrusaSlicer that saved that 3MF file.
2021-08-31 12:22:44 +02:00
Vojtech Bubnik f92312b597 Fixed parsing of Config from AMF / 3MF if it started with an empty line.
This bug was introduced with e947a29fc8
2021-08-30 17:57:04 +02:00
Vojtech Bubnik 87b542597e Referenced https://github.com/prusa3d/PrusaSlicer/wiki/PrusaSlicer-on-Linux---binary-distributions 2021-08-30 14:52:53 +02:00
Vojtech Bubnik 1c76df89ea Fix of paint on supports don't work for object that has been scaled up #6718
The triangle-ray intersection function used a hard coded epsilon,
which did not work for triangle meshes, that were either too small
or too large. Newly the epsilon may be provided to the AABBTreeIndirect
search functions externally and IndexedMesh calculates a suitable
epsilon on demand from an average triangle mesh edge length.
2021-08-27 21:04:18 +02:00
Vojtech Bubnik 8dfc0422a8 Faster and hopefully more reliable projection of paint-on support
blockers and enforcers on a sliced mesh.
2021-08-27 15:05:18 +02:00
Vojtech Bubnik 306bd0a198 Fixed leakage of paint-on supports through thin objects. This is a bug
introduced during 2.4.0 refactoring.
Fixes To much support #6067
2021-08-27 15:05:18 +02:00
Vojtech Bubnik 03fce23570 Fixed Perl bindings 2021-08-27 15:05:18 +02:00
Vojtech Bubnik fbe4695958 Slight optimization of GLGizmoSimplify::process():
Moved a static variable from inside a lambda outside as the static
inner variable initialization & access has to be made thread safe.
2021-08-27 11:30:37 +02:00
Vojtech Bubnik ae8e0311d7 debugging function debug_output_path() moved to utils.cpp/hpp
and it now prints to console the default path when called for the first time.
Fixed compilation of debugging output in SupportMaterial.
2021-08-27 11:25:50 +02:00
Vojtech Bubnik 783c9cf202 Fix of d3f11a6ab7 2021-08-25 09:34:43 +02:00
Vojtech Bubnik d3f11a6ab7 Follow-up to OctoPrint upload: ignore certificate revocation checks
6b03b66167

Renamed the new "printhost_ignore_check" option to "printhost_ssl_ignore_revoke"

Improved the Physical Printers dialog in regard to the new option checkbox
(added tooltip to the checkbox, moved it to the end of options).

Disabled the host_xxx options at the command line interface, they no
more work after these options were separated to Physical Printers profiles.

Little refactoring of Http.cpp/hpp, OctoPrint.cpp/hpp
Private local variables prefixed with m_, some renaming for clarity.
2021-08-24 13:57:52 +02:00
Vojtech Bubnik c029cd44a4 Initialization of various Preset list of config options was made
thread safe.
2021-08-24 13:10:43 +02:00
Vojtech Bubnik 6b03b66167 OctoPrint upload: ignore certificate revocation checks
Fixes Hostname incorrect While test is positive (Bonjour discovery not
supported for the address field) #1781
(partial fix of #1781)
2021-08-24 11:24:48 +02:00
Vojtech Bubnik fefc20dbbb Slight refactoring of the project state. 2021-08-24 09:34:31 +02:00
Vojtech Bubnik 1d6ade1d9c Optimization of ConfigBase::equals() to not create intermediate
list of modified options.

Optimization of DynamicConfig::equals(), ::diff(), ::equal()
to iterate over the two compared std::map trees instead of
first generating a list of keys and then searching for each key
in the respective map.

Optimization of PresetCollection::current_is_dirty() and ::saved_is_dirty()
to call DynamicConfig::equals() instead of ::diff().
2021-08-23 10:47:47 +02:00
Vojtech Bubnik 30bca80cc5 Fix of Top solid infill settings cannot be changed in Vase mode #4241 2021-08-23 08:50:10 +02:00
Vojtech Bubnik f9af9aa907 Improved wording of "reserved words in G-code" error message. 2021-08-20 16:47:43 +02:00
Vojtech Bubnik 07186dac99 Improved wording of "does not look like a sign" notification. 2021-08-20 16:47:01 +02:00
Vojtech Bubnik 9a54c21c19 Disabled "expensive checks" in debug mode, TriangleSelector 2021-08-20 16:46:38 +02:00
Vojtech Bubnik 2a7f204859 Fixed update of slicing back-end with MMU-painted objects after change
of a printer from MMU to non-MMU (when number of extruders changes).
Also slightly optimized in case a MMU-painted object is sliced in
single extruder mode.
2021-08-20 16:19:00 +02:00
Vojtech Bubnik 8ce36fb8f1 Improved wording of message boxes popping up on
looks_like_saved_in_meters() and looks_like_saved_in_inches()
2021-08-20 16:19:00 +02:00
Vojtech Bubnik c821b0a3ad Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-08-20 14:21:33 +02:00
Vojtech Bubnik f98f7ba3e8 Fixed unreliable application of filament overrides to PlaceholderParser.
Sometimes the PlaceholderParser used main config instead of filament
overrides and vice versa.
Follow-up to #3649
2021-08-20 14:21:22 +02:00
Vojtech Bubnik d569789285 Fixes after merging 2.3.2/2.3.3 changes from stable to master. 2021-08-13 14:53:13 +02:00
Vojtech Bubnik add67d769a Fix of 2.3.2 regression in configuration layer (reading of nullable
boolean vectors)
Fix of Filament overrides on saved 3MF MMU profiles are broken #6711
2021-08-13 13:53:09 +02:00
Vojtech Bubnik b8531b86e4 Changed one line in CZ dictionary for the Configuration Substitutions
dialog.
Fixed one bug in the preceding commit.
2021-08-13 13:52:49 +02:00
Vojtech Bubnik 1c078b1f47 Improved error handling when installing configuration updates:
In case the configuration snapshot cannot be taken before installing
configuration updates (because the current configuration state
is invalid), ask user whether to continue or abort.
2021-08-13 13:51:29 +02:00
Vojtech Bubnik 5ca4848980 Adjusted wording of the config substitution dialog. 2021-08-13 13:50:08 +02:00
bubnikv 16104587ac Improvement in the subtitution information dialog. 2021-08-13 13:49:43 +02:00
bubnikv 14330b02b3 Workaround for OSX file picker. Saving SL1S files did not work, the file
picker replaced the SL1S extension with SL1.
2021-08-13 13:48:55 +02:00
bubnikv 26822347ed Forward compatibility, parameter susbtitution: Substitute vector values
(extruder specific) with their default, if the default
is a single value vector.
Show the "Physical Printers" label in the substitution window.
2021-08-13 13:48:28 +02:00
bubnikv 3a0b71deed Configuration compatibility - implemented substitution and reporting for vectors
of bools (including the nullable bools).
2021-08-13 13:48:12 +02:00
bubnikv 5b843aa291 Fix of the previous commit. 2021-08-13 13:47:07 +02:00
bubnikv bd159f4e52 Fixed typo in SL1S file mask template. 2021-08-13 13:46:59 +02:00