Commit Graph
100 Commits
Author SHA1 Message Date
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
bubnikv c7691ec95e Forward compatibility - config substitutions:
1) Verify whether a value looks like an enum
2) Always report substitution of an enum with a boolean.
2021-08-13 13:43:33 +02:00
bubnikv 4fa651456d Support for CurWa CW1S firmware updater. 2021-08-13 13:41:49 +02:00
Vojtech Bubnik cfc0ae7ef3 Ammended the previous commit (SL1 / SL1S in file picker) 2021-08-13 13:40:25 +02:00
Vojtech Bubnik a25d2d1de4 Support for SL1S printer:
Where SL1 is mentioned, mention it as SL1 / SL1S.
Support loading / saving of SL1S files in addition to SL1.
2021-08-13 13:40:13 +02:00
Vojtech Bubnik 965c2f2c55 Improved error reporting when importing various configuration files:
1) Slic3r::RuntimeError was replaced with ConfigurationError,
   all exceptions thrown by the configuration layer are derived
   from ConfigurationError.
2) When parsing configuration files, ConfigurationError is catched and
   rethrown extended with the file name being parsed.
2021-08-13 13:37:24 +02:00
Vojtech Bubnik 5dac5a2ca5 Fixed missing include 2021-08-13 13:35:06 +02:00
Vojtech Bubnik 856da036eb Fixed loading of system presets with incompatible system profile keys
before the "reconfigure" dialog is shown.

Replaced boost::filesystem::copy_file() with Slic3r::copy_file()
in config snapshot loading code.
2021-08-13 13:34:40 +02:00
Vojtech Bubnik 8e28ca6f4a Fixed reading of configuration from 3MF broken
with e947a29fc8
2021-08-13 10:52:54 +02:00
Vojtech Bubnik e947a29fc8 Follow-up to 7c01ddf996
1) Starting with this commit, configuration block exported into G-code
   is delimited by "; prusaslicer_config = begin" and "; prusaslicer_config = end".
   These delimiters look like any other key / value configuration pairs
   on purpose to be compatible with older PrusaSlicer config parsing from G-code.
2) Config parser from G-code newly searches for "; generated by ..."
   comment over the complete G-code, thus it is compatible with various
   post processing scripts extending the G-code at the start.
3) Config parser from G-code parses PrusaSlicer version from
   the "; generated by PrusaSlicer ...." header and if the G-code was
   generated by PrusaSlicer 2.4.0-alpha0 and newer, it expects that
   the G-code already contains the "; prusaslicer_config = begin / end"
   tags and it relies on these tags to extract configuration.
4) A new simple and robust parser was written for reading project configuration
   from 3MF / AMF, while a heuristic parser to read config from G-code located
   at the end of the G-code file was used before.
2021-08-12 15:27:46 +02:00
Vojtech Bubnik 7a60e8cb3a Follow-up to 215ee293ae:
More robust CLI parser.
2021-08-11 09:49:23 +02:00
Vojtech Bubnik cf32b56454 Implemented extension of the G-code post-processor framework:
1) New environment variable SLIC3R_PP_HOST contains one of
   "File", "PrusaLink", "Repetier", "SL1Host", "OctoPrint", "FlashAir", "Duet", "AstroBox" ...
2) New environment variable SLIC3R_PP_OUTPUT_NAME contains the name
   of the G-code file including path (for SLIC3R_PP_HOST == "File")
   or a name of the file after upload to the host (PrusaLink, Octoprint ...)
3) The post-processing script may suggest a new output file name
   (likely based on SLIC3R_PP_OUTPUT_NAME) by saving it as a single line
   into a new "output name" temp file. The "output name" file name is
   created by suffixing the input G-code file name with ".output_name".

Please note that the G-code viewer visualizes G-code before post-processing.

Fixes Broken PostProcessing when script changes out-filename #6042
2021-08-10 15:22:01 +02:00
Vojtech Bubnik 04d6b17c57 Fix of Some FDM supports fail to generate due to wrongly-translated enforcer polygons. #6739
Thanks @n8bot for finding the bug.
Also removed some dead code in MM segmentation.
2021-08-10 09:41:28 +02:00
Vojtech Bubnik 9f9cbb46f9 Suppor of "No extrusion" firmware flavor by not emitting the E axis.
Fix of https://github.com/prusa3d/PrusaSlicer/issues/6023
The fix is partial: No extrusions are shown by the final G-code preview.
2021-08-09 17:37:35 +02:00
Vojtech Bubnik deda13ffc7 Fixed previous commit 2021-08-05 17:34:04 +02:00
Vojtech Bubnik 54897aeac0 Fixed previous commit 2021-08-05 17:33:41 +02:00
Vojtech Bubnik ea5a90f08c Merge remote-tracking branch 'remotes/origin/master' into fs_QuadricEdgeCollapse 2021-08-05 17:17:18 +02:00
Vojtech Bubnik 49fdf3da7b follow-up to a86e7107a5:
Make is_converted_from_meters / is_converted_from_inches exclusive-or.
Maybe it would be better to make a single enum from the two booleans,
if they are exclusive-or?
2021-08-05 15:35:44 +02:00
Vojtech Bubnik 2f6f1f0e55 WIN32 specific Blacklisted libraries check:
1) Polished up wording of the error messages.
2) Made some messages in the SysInfo dialog localized.
3) Renamed LibraryCheck.cpp/hpp to BlacklistedLibraryCheck.cpp/hpp
4) CPPized the BlacklistedLibraryCheck WIN32 C code.
2021-07-30 15:52:52 +02:00
Vojtech Bubnik 654cd753e2 Changed the label of "Marlin Firmware" to "Marlin 2" 2021-07-29 16:21:09 +02:00
Vojtech Bubnik 1659e4c77f Fixed splitting of triangle meshes, where the splitting function
may produce a single triangle, which is then removed by the repair function.
2021-07-29 15:02:50 +02:00
Vojtech Bubnik eb6392dccd New slice_mesh() variant slicing with a single plane only, running
on a single thread only (not parallelized).
The new slice_mesh() is used to calculate contour of objects sunken
below the print bed.
2021-07-26 17:02:56 +02:00
Vojtech Bubnik d7205c9461 Let's hope that the std::exception::what() returns either a 7-bit
string or an UTF-8 string. Let's convert it to wxString before
showing an error message box.
boost::system shall return UTF-8 localized error messages as long
as we set -DBOOST_SYSTEM_USE_UTF8 in the top most CMakeFiles.txt,
which we do.
2021-07-15 08:34:02 +02:00
Vojtech Bubnik 47f265f77f Fixed R-Pi build 2021-07-13 14:08:44 +02:00
Vojtech Bubnik 106d9f7ca0 MMU segmentation: Implemented filtering of unprintable regions in
top/bottom propagation.
2021-07-13 14:00:21 +02:00
Vojtech Bubnik 28219142c5 Tracing MMU top / bottom segmentation open lines at "trace" level. 2021-07-13 11:19:20 +02:00
Vojtech Bubnik 19e3998bd0 Merge branch 'vb_mmu_top_bottom' 2021-07-13 11:08:52 +02:00
Vojtech Bubnik 25fa3eddf0 Fixed slab slicing for special cases (slicing plane intersects object
plane).
2021-07-13 11:06:59 +02:00
Vojtech Bubnik d0a4161f47 Follow up (bugfix) of 0d70a2be69
GLIndexedVertexArray newly uses Eigen::AlignedBox<float, 3>
for efficiency instead of our double based BoundingBoxf3.
2021-07-12 10:53:09 +02:00
Vojtech Bubnik 3a9857e493 Our friendly GCC does not consider std::pair<int, int> trivially
copiable either, while everybody else does. Shame on GCC.
2021-07-09 14:05:30 +02:00
Vojtech Bubnik d8a0b11157 GCC does not consider std::pair<std::pair<...>, ...> to be trivially
copiable, thus fixing the unit tests with a custom trivially
copyable type.
2021-07-09 13:58:54 +02:00
Vojtech Bubnik 5bbe76003e MutablePriorityQueue: Added is_trivially_copyable test for queue value
types, added [] accessors.
2021-07-09 13:25:41 +02:00