Commit Graph
100 Commits
Author SHA1 Message Date
Vojtech Bubnik 409e1c5cc8 Some fixes after preceding merge. Moved mmu_segmented_region_max_width
from PrintConfig to PrintObjectConfig.
2021-05-26 16:14:52 +02:00
Vojtech Bubnik 980ca195f5 Merge remote-tracking branch 'remotes/origin/lh_multi_material_segmentation' into vb_print_regions 2021-05-26 15:23:35 +02:00
Vojtech Bubnik 0d081c90f0 Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-26 14:38:34 +02:00
Vojtech Bubnik 7f1f0d29d0 Will gcc accept this? 2021-05-26 14:33:24 +02:00
Vojtech Bubnik cba1950a4e Fixing compilation on gcc. 2021-05-26 14:30:25 +02:00
Vojtech Bubnik e24026bfa5 Making the "Default" extruder transparent for modifier meshes and layer
range modifiers.
2021-05-26 14:25:33 +02:00
Vojtech Bubnik b3195614cf WIP PrintRegion refactoring: Another round of bug fixing, negative volumes
seem to work.
2021-05-26 12:41:06 +02:00
Vojtech Bubnik 8ab6a615d0 Fixed another compiler warning 2021-05-25 21:17:07 +02:00
Vojtech Bubnik dd79a2b832 Fixing some compiler warnings 2021-05-25 20:46:31 +02:00
Vojtech Bubnik 8a297be74e Fixing another clang complaint 2021-05-25 20:03:05 +02:00
Vojtech Bubnik c3cd2c7f55 Fixing an OSX clang quirk. 2021-05-25 19:27:20 +02:00
Vojtech Bubnik 9b9354a2aa WIP: Rework of PrintRegions, bunch of bug fixes. 2021-05-25 18:12:38 +02:00
Vojtech Bubnik 701a0c9576 Two more bugs squished. 2021-05-24 18:07:12 +02:00
Vojtech Bubnik 72d1faa03e WIP PrintRegion refactoring: Squashed some bugs. 2021-05-24 16:55:34 +02:00
Vojtech Bubnik c8bdc62af4 Fixing compilation on Linux 2021-05-24 15:12:04 +02:00
Vojtech Bubnik 04014db136 Fixing compilation on Linux 2021-05-24 15:08:07 +02:00
Vojtech Bubnik 92b4f0542a Another compilation fix. 2021-05-24 15:00:08 +02:00
Vojtech Bubnik fd97a49ccc Fixing the previous commit. 2021-05-24 14:36:27 +02:00
Vojtech Bubnik e658fe0698 WIP: PrintRegion refactoring, it finally compiles!
Config/PrintConfig refactoring to support operator< for StaticPrintConfig
derived containers.
2021-05-24 14:10:04 +02:00
Vojtech Bubnik 740773db85 WIP: Refactoring of PrintRegions. It nearly compiles! 2021-05-21 17:57:37 +02:00
Vojtech Bubnik ef9004cee4 Fix of its_collect_mesh_projection_points_above()
Fix of perl integration tests after introduction of not using the mesh
below the print bed.
2021-05-20 13:58:27 +02:00
Vojtech Bubnik ff6623b0f4 Fixing 2021-05-19 16:51:25 +02:00
Vojtech Bubnik 116e2b2112 Fixing the slice_mesh() after recent refactoring. 2021-05-19 16:09:45 +02:00
Vojtech Bubnik 68b0d92183 Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-19 14:00:21 +02:00
Vojtech Bubnik 31942e03db Optimization of its_collect_mesh_projection_points_above(): Reserve points. 2021-05-19 13:59:34 +02:00
Vojtech Bubnik e952aded78 cut_mesh(): new parameter to optionally not triangulate the caps. 2021-05-19 13:52:47 +02:00
Vojtech Bubnik 66cf7ea9d3 Extracting its_collect_mesh_projection_points_above() out of
its_convex_hull_2d_above(), so that the projected points may get
collected over multiple volumes before applying Geometry::convex_hull()
2021-05-19 13:39:56 +02:00
Vojtech Bubnik 5644b98d3b Factored out convex hull calculation from ModelObject::convex_hull_2d()
to Geometry::convex_hull().
Update Geometry::convex_hull() to handle duplicate points.
2021-05-19 13:23:19 +02:00
Vojtech Bubnik 8db2d96c75 Point::ccw() optimization: Calculate with int64, not doubles. 2021-05-19 12:01:30 +02:00
Vojtech Bubnik 6b54f34ce1 New functions: its_convex_hull_2d_above() 2021-05-19 11:35:42 +02:00
Vojtech Bubnik 682c405fc2 Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-19 09:40:24 +02:00
Vojtech Bubnik f5f912e6e9 WIP: Refactoring of PrintRegions 2021-05-19 09:38:51 +02:00
Vojtech Bubnik c28cd957d5 New utility function its_merge_vertices().
Implemented contour simplification inside slice_mesh_ex().
2021-05-18 17:57:55 +02:00
Vojtech Bubnik 3481898d4d Fixed missing include 2021-05-18 16:15:54 +02:00
Vojtech Bubnik 78c0199523 TriangleMeshSlicer: Optimized out unnecessary transformations. 2021-05-18 16:12:49 +02:00
Vojtech Bubnik 70b4915f9c TriangleMeshSlicer: Got rid of admesh! 2021-05-18 15:05:30 +02:00
Vojtech Bubnik 308d6b7809 WIP: Reworked slicing
1) Slicing code moved to TriangleMeshSlicer.cpp,hpp from TriangleMesh.cpp,hpp
2) Refactored to use as little as possible of admesh.
2021-05-17 20:25:59 +02:00
Vojtech Bubnik 2b9e41e695 Fix of a special case in auto color print feature, which crashed with
single layer PrintObjects.
Fixes Segmentation fault (GLib-GObject null pointer) #6516
2021-05-14 14:57:41 +02:00
Vojtech Bubnik 221af991c2 Fixed update of PrintRegions after removing an object.
The bug has been introduced during recent PrintRegion refactoring.
2021-05-14 11:52:33 +02:00
Vojtech Bubnik 5828decfc7 Fixing multi-material printing after recent refactoring (d21b9aa to 1c6333e) 2021-05-10 09:32:24 +02:00
Vojtech Bubnik 5c35fa4539 Commenting source of Polygon::centroid() algorithm 2021-05-07 11:54:25 +02:00
Vojtech Bubnik 52b3c655ff Fixed Polygon::centroid()
Ported Polygon unit tests from Perl to C++.
2021-05-07 11:42:21 +02:00
Vojtech Bubnik 1c26367ba1 Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2021-05-07 09:45:33 +02:00
Vojtech Bubnik 68fabfea62 Fix of Polygon::area(). 2021-05-07 09:45:27 +02:00
Vojtech Bubnik feefbc575a Refactored PrintObject::m_region_volumes for extensibility.
WIP for multi-material painting.
2021-05-06 15:48:38 +02:00
Vojtech Bubnik dd72016159 FDM backend refactoring for const correctness, clarity ... 2021-05-06 15:08:57 +02:00
Vojtech Bubnik b5573f959b Refactoring for code clarity: Replaced this->m_xxx with m_xxx
as the m_ prefix already signifies a class local variable.
2021-05-06 14:43:36 +02:00
Vojtech Bubnik f16d4953be Removing offset2 from Perl bindings and other minor cleanup. 2021-05-06 14:29:20 +02:00
Vojtech Bubnik 1c6333e557 Fixing Perl integration 2021-05-06 13:58:37 +02:00
Vojtech Bubnik 0ca6b12da1 Print/PrintObject/PrintRegion refactoring:
Newly the PrintObjects own PrintRegions and Print contains references
to PrintRegions owned by PrintObjects, so that a PrintRegion of the same
content is referenced by Print only once.

The refactoring is a WIP to support multi-material painting.
2021-05-06 13:01:09 +02:00
Vojtech Bubnik ee15f00574 FDM backend refactoring: Return PrintRegion by reference, not by pointer.
Added PrintRegion hashing.
2021-05-05 18:13:58 +02:00
Vojtech Bubnik b8db1922f7 Fixing perl bindings 2021-05-05 17:03:11 +02:00
Vojtech Bubnik 714149dab2 WIP: Moving ownership of PrintRegions to PrintObjects. 2021-05-05 16:21:55 +02:00
Vojtech Bubnik d21b9aa089 Fixing perl integration 2021-05-05 15:05:52 +02:00
Vojtech Bubnik a7c67415c7 Another try of fixing compilation on gcc. 2021-05-05 14:34:54 +02:00
Vojtech Bubnik 18001fbb4e Fixing compilation on gcc 2021-05-05 14:32:19 +02:00
Vojtech Bubnik d6c5961eb0 Factored out the Print::apply() method and its dependending free functions
into PrintApply.cpp module.
2021-05-05 14:30:09 +02:00
Vojtech Bubnik 72ce8cb28d PrintRegion refactoring: Getting rid of the Print pointer. 2021-05-05 14:17:36 +02:00
Vojtech Bubnik 9537c4e8d0 Fixed a perl test that was mistkanely adjusted after ClipperLib refactoring. 2021-05-05 13:30:19 +02:00
Vojtech Bubnik 5764d8984c Fixed perl unit tests 2021-05-05 13:27:00 +02:00
Vojtech Bubnik a2de09e11e Fixing unit tests. 2021-05-05 13:19:01 +02:00
Vojtech Bubnik 7d4b3f2992 Fix of safety_offset() after ClipperUtils refactoring.
Fixes Solid infill where there should be none #6482
Also the safety offsetting was revised to be enabled only where needed,
the "do safety offset" is now easy to discover by
a new ApplySafetyOffset::Yes enum, and safety offset over union, which
is better done by offset() / offset_ex() has been replaced with
new union_safety_offset() / union_safety_offset_ex() functions, which
better convey their meaning and which could be better optimized than
union() with the safety offset applied.
2021-05-05 12:16:47 +02:00
Vojtech Bubnik fd3dd1611c Fixed alignment of sparse infill over multiple layers of the same region,
which was broken with 68666de521b1cb15e41ac6728c0e8d3b4b0d4ed0
"Reworked the "new" bridging to respect the bridge_flow_ratio
by maintaining extrusion spacing, but modifying the extrusion width
and / or height."
2021-05-04 18:27:53 +02:00
Vojtech Bubnik 00835c7367 Fixing compilation on clang in debug mode. 2021-05-04 16:13:40 +02:00
Vojtech Bubnik 1aef86f650 Implemented generic mechanism for executing tasks on UI thread synchronously
from the background slicing thread, that supports cancellation.
The generic mechanism is used for generating thumbnails into G-code and
Fixes Fix deadlock when canceling the slicing while gcode is creating thumbnails #6476
Thanks @supermerill for pointing out the issue.
2021-05-04 16:07:32 +02:00
Vojtech Bubnik 5cc6dc59dc Fixed compilation with GCC 2021-05-04 11:22:38 +02:00
Vojtech Bubnik a7368b9deb Fixing thread-safe StaticConfig creations #6477
fix un-threadsafe code for creating config enum hashtable. #6475
2021-05-04 11:03:26 +02:00
Vojtech Bubnik ab74ea5c90 One more fix after merge. 2021-05-03 15:30:10 +02:00
Vojtech Bubnik 2aadc1cefa Fixing after merge. 2021-05-03 15:28:03 +02:00
Vojtech Bubnik eb66111eda Merge branch 'vb_clipper_optimization' 2021-05-03 15:24:04 +02:00
Vojtech Bubnik ef07644bf2 Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2021-05-03 15:23:57 +02:00
Vojtech Bubnik 7563c885a1 Fixing compiler warnings 2021-05-03 15:00:23 +02:00
Vojtech Bubnik 0e6e60705d Fixing one unit test, which seems to indicate that the refactoring
fixed one issue (hopefully it was not that a newly introduced bug
hides an old one).
2021-05-03 14:12:08 +02:00
Vojtech Bubnik 96f8744e05 Another fix for C++ conformant compilers 2021-05-03 11:55:23 +02:00
Vojtech Bubnik c7c7983e77 Fixing compilation on C++ conforming compilers 2021-05-03 11:50:05 +02:00
Vojtech Bubnik 09a80d954c Further rework of ClipperUtils: Replaced many to_polygons() /
to_expolygons() calls with templated ClipperUtils variants to avoid
memory allocation and copying.
2021-05-03 11:39:53 +02:00
Vojtech Bubnik 9fbba855ef Clipper optimization:
1) Removed the already commented-out scaling / unscaling when doing
   "safe offsetting"
2) Removed some of the "safe offsetting" at calls where it never was used.
3) Reworked Clipper & ClipperUtils to pass Polygons / ExPolygons / Surfaces
   as input parameters without conversion to ClipperLib::Paths. This
   should save a lot of memory allocation and copying.
4) Reworked conversions from ClipperLib::Paths & PolyTree to Polygons /
   ExPolygons to use the move operator to avoid many unnecessary allocations.
5) Reworked some "union with safe ofsetting" to "offset_ex", which should
   be cheaper.
2021-04-30 11:49:57 +02:00
Vojtech Bubnik b327314b02 Layer::make_perimeters() - when merging regions, use OffsetEx instead
of safety offset of UnionEx, which may not be robust.
2021-04-29 11:05:11 +02:00
Vojtech Bubnik d1cfdcb49e Refactoring of StaticPrintConfig & derived classes:
1) Using boost::preprocessor to reduce code duplicities when defining
   new configuration values.
2) Implemented static hash() and operator== on StaticPrintConfig derived
   classes to support hash tables of instances thereof.
2021-04-26 18:37:10 +02:00
Vojtech Bubnik 9f4e9da5c6 Merge branch 'tm_vb_clipper_eigen' 2021-04-23 11:44:25 +02:00
Vojtech Bubnik 1d588dad90 Fixed Perl bindings of Clipper after Clipper was adapted to Slic3r::Point 2021-04-23 11:02:16 +02:00
Vojtech Bubnik 38bb7d2950 1) New methods PrintObject::num_regions() and ::has_region() to make
the code more readable and to highlight where PrintObject::region_volumes
   are actually set and consumed.
2) Replaced Slic3r::clamp() with std::clamp(). They differ in the order
   of their parameters, thus hopefully no new bugs were introduced.
3) Some refactoring of MultiMaterialSegmentation for efficiency.
2021-04-22 11:41:26 +02:00
Vojtech Bubnik 3b86cb3a3c Added missing files 2021-04-22 09:26:07 +02:00
Vojtech Bubnik 8d0950ce12 Convincing ClipperLib to use Slic3r's own Point type internally. 2021-04-21 20:15:49 +02:00
Vojtech Bubnik bb8112f099 and the final Perl unit test fix 2021-04-21 15:47:28 +02:00
Vojtech Bubnik dcfa1d10cf Yet another Perl test 2021-04-21 15:46:47 +02:00
Vojtech Bubnik ee53894c40 Another last perl unit test fix 2021-04-21 15:43:41 +02:00
Vojtech Bubnik 39deffdf5b One more perl unit test fix 2021-04-21 15:40:43 +02:00
Vojtech Bubnik c013b73308 Fixing perl unit tests 2021-04-21 15:38:00 +02:00
Vojtech Bubnik 542d95a593 Fixing unit tests 2021-04-21 15:31:06 +02:00
Vojtech Bubnik 0c1953a929 Further fixes of the first_layer_height refactoring. 2021-04-21 14:34:49 +02:00
Vojtech Bubnik ba94fa4867 Fixed unit tests. 2021-04-21 13:30:32 +02:00
Vojtech Bubnik d9ed9149ae 1) Moved first_layer_heigth frrom PrintObjectConfig to PrintConfig.
Thus the first_layer_height is no more object specific. That makes
   a lot of sense due to the brim calculation being performed over
   all layers at once and due to future merging of supports of
   different objects at first layer.
2) Because now first_layer_height is print specific, the relative
   first layer height derived from the object layer height was partially
   disabled: First the relative first layer height is converted to
   an absolute value when importing config, second the side text
   was changed from "mm or %" to "mm". Still the UI allows entering %.

Both changes may be controversial, let's wait for user feedback.
2021-04-21 12:09:43 +02:00
Vojtech Bubnik 4f950343c8 MMU segmentation refactoring: Most of the MMU segmentation code
was extracted to its own file.
2021-04-20 15:07:05 +02:00
Vojtech Bubnik 48a93e40fb After issuing the color change custom G-code, which is most likely
just M600, reset the internal retract counter, so that a retract
will happen after the firmware returns from M600 to the initial position.

Fixes "Blobs on print after manual color change #6362"
2021-04-15 16:29:30 +02:00
Vojtech Bubnik eb428d48fc Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2021-04-15 13:48:29 +02:00
Vojtech Bubnik d5ddf8b00e RemovableManager on OSX: Testing for dictionary values for nullness.
Hopefully it fixes Can not start slicer on mac Bigsur #5719
2021-04-15 13:48:20 +02:00
Vojtech Bubnik 0625788583 Fixed obvious bug in move operator, discovered by clang lint ran by Tamas. 2021-04-14 14:25:30 +02:00
Vojtech Bubnik 7112ac61b6 Replacing ClipperLib::IntPoint with Eigen point as a first step to
make the ClipperLib paths and polygons compatible with Slic3r paths
and polygons without conversions and memory allocations.
2021-04-14 09:22:51 +02:00
Vojtech Bubnik 29cd8aac26 WIP: Fix of arrangement after reducing ClipperLib::cInt
from int64_t to int32_t
2021-04-13 16:35:46 +02:00