Commit Graph
100 Commits
Author SHA1 Message Date
Vojtech Bubnik 8d0950ce12 Convincing ClipperLib to use Slic3r's own Point type internally. 2021-04-21 20:15:49 +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
Vojtech Bubnik c1179fc2c7 Marked the unsafe ClipperUtils offset functions with CLIPPERUTILS_UNSAFE_OFFSET
Replaced some of the unsafe offset functions with safe variants.
Please test the
1) print bed from STL function
2) concentric infill
2021-04-13 13:28:37 +02:00
Vojtech Bubnik e8643125d8 Clipper / ClipperUtils:
1) Let Clipper use int32_t for representing its coordinates. This
   reduces memory and allows to skip conversion between Slic3r Polygon
   and Clipper polygon.
2) Disable additional offset before executing the Clipper Offset algorithm.
   We don't see any reason for that and it required 64bit Clipper coordinates,
   which were disabled with 1).
2021-04-13 11:31:54 +02:00
Vojtech Bubnik dbd1c09523 FDM snug supports: New parameter "closing radius", inspired by Cura's
support_join_distance
2021-04-12 14:56:36 +02:00
Vojtech Bubnik 558deca789 Configs should point to PrusaSlicer-alpha, not beta in alpha stage. 2021-04-09 08:11:40 +02:00
Vojtech Bubnik ef6ce8792d Fix of brim under supports 2021-04-08 16:36:52 +02:00
Vojtech Bubnik 8fd731f7a0 New FDM support sparse infill zig-zag algorithm.
Fixed some old support and infill issues.

Fixes support problem #4295
Fixes Parts of interface layer extends beyond supports and cannot be printed
Fixes support missing under horizontal overhang #6058
Fixes Slicer double-traces small sections of Rectilinear Supports, causes
Fixes plastic buildup and nozzle crashes #4951
Fixes Add "Angle Interface layers" #2969
2021-04-08 15:29:40 +02:00
Vojtech Bubnik e94a4da954 Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2021-03-29 14:15:27 +02:00
Vojtech Bubnik acce99f29b Fixed some compilation warnings in MutablePolygon.cpp 2021-03-29 14:15:18 +02:00
Vojtech Bubnik 13c178b7f7 Enabling ASAN on MSVC 2021-03-25 10:12:02 +01:00
Vojtech Bubnik 10c3e82917 Updated version number,
alpha stores configs in alpha directory.
2021-03-23 13:50:53 +01:00
Vojtech Bubnik af9c7c967f Implementing a new switch for the shape of support towers:
expanded to a grid (the old way) vs.
snug (like the upstream Slic3r, Cura or Ideamaker).

Snug supports suffered from the degeneracies when merging overhang islands
over a large number of layers when projecting the support towers down.
We borrowed the idea & a bit of code from Cura by simplifying the support
polygons by closing the concave cracks, see the smooth_outward() function
and the MutablePolygon class.

Fixes Support problems with models with hole in the walls. #555
Fixes Support in the Air #740
Fixes [Bug] Supports generated beyond bed edges (X<0 and X>250) and where none are needed. #902
Fixes Unable to remove support material/can't change support "inflation distance" #2708
Fixes FR: support inflation and support conform to boundary #4783
Fixes Support blocker not working on this model #1346
Fixes Unnecessary support material #1993
Fixes support blocker enforcer issue #6240
2021-03-23 11:06:45 +01:00
Vojtech Bubnik 00295919bf Fixes of MutablePolygon 2021-03-23 11:06:45 +01:00
Vojtech Bubnik 6f3f3624c5 Fixing FDM support bottom zero interface layers, where one dense
interface layer was errorneously created.

Follow-up to 00db3dc419
73b88e6ce0
referencing the issues fixed by the above commits:
Fixes Allow to disable raft under support structures. #3772
Fixes Separate counts for floor and roof support interface layers #4288
2021-03-19 13:39:20 +01:00
Vojtech Bubnik 4745948b84 Fixed compilation on Linux 2021-03-19 11:35:09 +01:00
Vojtech Bubnik 9f09f03228 Refactoring of FDM support generator:
1) If "support on build plate only" is enabled, the support columns are
   newly trimmed to not land on top of an object. However this may make
   the column too small to be stable.
2) Support enforcers newly take precedence over "supports on build plate only"
   and over "don't support bridges".
3) Some refactoring of the support generator code for clarity: Reduced
   some of the worst spagetti offenders.

Fixes Support generated even if support on build only activated #915
Fixes Bug: supports on build plate only #1340
Fixes Bottom interface layer is not generated , support on build plate only. (long open defect) #4199
Fixes option "supports on build plate only" does not work #3980

Fixes No support interface layers generated #1997
Fixes Feature Request: Option to combine results of 'support from build plate only' and 'support enforcers only' #2801
Fixes Support interface isn't generated: build plate only + blocked by model + support enforcer #3831
Fixes Support Enforcer don't create interface layers #5748
Fixes Support Enforcers Don't Have Top Loops/Raft #1870
Fixes Don't cancel support enforcers with "don't support bridges" #5105
2021-03-19 11:21:35 +01:00
Vojtech Bubnik a95607d7bf Fixing an FDM support generator bug, where some of the support columns
were missing abruptly when going down.
The issue was caused by extracting support areas from a grid and
filtering the extracted islands by intersection with the input islands.
Sometimes the input islands were a bit bigger than the extracted contour,
thus some of the samples of the input islands did not fall into
the extracted contour.
2021-03-17 12:25:49 +01:00
Vojtech Bubnik d0febbec32 Disable the new Toggle fullscreen menu item on OSX, it adds its own. 2021-03-16 08:54:46 +01:00
Vojtech Bubnik fc0e2d578f Checking for removable media on Chrome OS. 2021-03-15 17:42:18 +01:00
Vojtech Bubnik d695e090ef Changing the Fullscreen hotkey to Ctrl+Cmd+F for OSX 2021-03-15 17:11:36 +01:00
Vojtech Bubnik b9c4d29fe9 call detect_platform() after SLIC3R_LOGLEVEL env variable is read 2021-03-15 17:00:49 +01:00
Vojtech Bubnik 01406fd521 Worked around some quirky Linux file system issues. Namely
the Chromebooks share their file system to Linux using the 9p file
system, which does not support setting file ownership. Newly PrusaSlicer
will detect platform and it will not panick if copy_file() cannot set
file ownership after copying. It just logs the incident, and on
chromebooks the loglevel for that incident is "Info", not "Error".

Adjusted the full screen mode to contain menu bar.
Moved Platform.cpp/hpp to libslic3r
2021-03-15 16:19:22 +01:00
Vojtech Bubnik fb9d537b58 Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2021-03-15 10:36:22 +01:00
Vojtech Bubnik ba5e8860cb Fixing some compilation warnings 2021-03-15 10:36:03 +01:00
Vojtech Bubnik 95c5763b83 Fixed typo in previous commit. 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 932336612c Full screen toggle 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 75ad7f262e Linux with precompiled headers wants Config.hpp header in PrintConfig.cpp 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 33b63b35a2 Added detection of Microsoft WSL/WSL2 Linux flavors.
Added tracing of the platform detection.
2021-03-15 09:55:57 +01:00
Vojtech Bubnik 2c76c42baa Linux/OSX don't like an "BSD" symbol? 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 8b4b6afd7b Fix of previous commit. 2021-03-15 09:55:57 +01:00
Vojtech Bubnik a9c3d270e6 ConfigOptions: GUI type as enum, not string.
Fixing compilation error in the new Platform code.
Fixing one issue in FDM support after splitting the top/bottom
interface layers.
2021-03-15 09:55:57 +01:00
Vojtech Bubnik 051ba0e6f4 New files missing from the previous commit. 2021-03-15 09:55:57 +01:00
Vojtech Bubnik ca8cf0a9f1 Detecting platform, namely reading /proc/version to detect Chromium OS.
Disabling Eject on Chromium, detecting removable media the Chromium way.
2021-03-15 09:55:57 +01:00
Vojtech Bubnik 2b19708720 Further ChromeOS support: Detect removable media mounted through ChromeOS 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 9c80c6a4af Disable multi-sampling with virgl (VirtualGL) on Linux.
Namely, on ChromeOS virgl flips red/blue channels at least on some computers with multi-sampling enabled.
It seems it is sufficient to disable multi-sampling after the OpenGL context is created.
2021-03-15 09:55:57 +01:00
Vojtech Bubnik 2494a8f384 Allowing ints with open enums in combo boxes. 2021-03-15 09:55:57 +01:00
Vojtech Bubnik 73b88e6ce0 Splitting FDM support gap to top / bottom, introducing
support_material_bottom_contact_distance
Fixing Crash in support generation after fcb714c (repro attached) #6195
2021-03-15 09:55:57 +01:00
Vojtech Bubnik f3f10ff002 Follow up on https://github.com/prusa3d/PrusaSlicer/pull/5219#issuecomment-794515454
Initializing random generator in PlacholderParser from system clock.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik 00db3dc419 WIP: Splitting the number of top / bottom support interface layers.
If the new support_material_bottom_interface_layers is left at default -1,
then support_material_interface_layers is used for both top and bottom
interface layers.
If support_material_interface_layers == 0, then neither top nor bottom
interface layers are being extruded.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik adcbe4347c Fixed unit tests. 2021-03-15 09:55:56 +01:00
Vojtech Bubnik f01f02154c Reworked the "new" bridging to respect the bridge_flow_ratio
by maintaining extrusion spacing, but modifying the extrusion width
and / or height.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik 8e27e355c2 Fixing unit tests. 2021-03-15 09:55:56 +01:00
Vojtech Bubnik ceea9de8b8 WIP: Refactored bridging flow from normal flow, new config value
'thick_bridges' to switch between the Slic3r vs. S3D/Cura/Ideamaker
way of printing 1st object layer over supports.
Simplified the PresetHints.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik 8adb495e7d Fix of 589d2be442 2021-03-08 11:29:52 +01:00
Vojtech Bubnik ed7be17bf1 Detection of Win10 3D printing API from the default Visual Studio env
variables.
2021-03-08 09:38:14 +01:00
Vojtech Bubnik 589d2be442 Fix of Repair with Netfabb does not work on builds after 2.3.0 release (Windows 10) #6193
This is more a workaround than a fix: Windows 10 3D model fixing API refuses
to load a zip64 encoded 3MF. We need to get in touch with Microsoft on that
issue, for now the 3MFs generated for the Windows 10 3D model fixing API
will be limited to 4GB. Saving a bigger 3MF will fail.
2021-03-08 09:36:21 +01:00
Vojtech Bubnik 5f5de1c812 Follow-up to 5276bd98d7:
WIP: MutablePolygon - linked list based polygon implementation
allowing rapid insertion and removal of points.
WIP: porting smooth_outward() from Cura.
2021-03-03 15:04:26 +01:00
Vojtech Bubnik 5276bd98d7 WIP: MutablePolygon - linked list based polygon implementation
allowing rapid insertion and removal of points.
WIP: porting smooth_outward() from Cura.
2021-03-01 18:41:46 +01:00
Vojtech Bubnik 224f3e506c Fix of Custom G-code for color change does not process macro #5782
Added macro processing of color_change_gcode, pause_print_gcode
and template_custom_gcode custom G-codes when emitting them into
the output G-code.
2021-03-01 12:52:40 +01:00
Vojtech Bubnik d7a786e8c8 Bumping up wxWidgets to 3.1.4-patched on all platforms. 2021-03-01 11:36:11 +01:00
Vojtech Bubnik 750cfdd099 Fix of support generator after merging
Base type interfaces for soluble interface supports #6017
2021-02-25 14:50:44 +01:00
Vojtech Bubnik 6e73ddab8e Support generator: Debugging visualization of "don't support bridges".
Fixed a bug in raft generator - 1st layer did not respect the 1st layer
density.
2021-02-25 12:29:08 +01:00
Vojtech Bubnik 43c05d35ea Fix of crash when using raft with modified Shape-Box with height 0.5mm #5652
Reworked skirt generator to only generate skirt at non-empty layers
(layers that actually extruder object or support) and to respect minimum
layer height. Skirt generator stops at the first layer where those both
conditions cannot be met.
2021-02-25 12:18:11 +01:00
Vojtech Bubnik 6f5bf71f11 Fixing some compiler warnings 2021-02-24 19:53:50 +01:00
Vojtech Bubnik 539e80e890 Fix of supports create overkill material that actually sopports nothing above it. #2245
When expanding the 1st layer support layer, do it by small steps while
trimming with object to avoid supports to leak through object walls.
2021-02-24 19:49:38 +01:00
Vojtech Bubnik 34417574f5 Fix of Perl combine infill unit test after a change in raft:
1st object layer over raft is no more printed with bridging infill.
2021-02-24 18:48:55 +01:00
Vojtech Bubnik e9875f57a9 Fix of Unnecessary raft on models with large perimeter but nothing inside. #430
Don't fill in the holes in 1st layer of the raft.
The user may apply a higher raft_expansion if one wants a better 1st layer adhesion.
2021-02-24 18:08:32 +01:00
Vojtech Bubnik 6bdd42b1cf Fix of Support interface is generated across whole print layer regardless if it's needed or not #4570
Disabled a suspicious piece of legacy code inherited from Slic3r,
which tries to fill in spots inside support interfaces. The code was
too aggressive and it was doing more harm than good.
2021-02-24 17:34:51 +01:00
Vojtech Bubnik 61a5b43ac3 Fix of Add option to change support interface pattern #1197
New config field for switching the support interface pattern between
default (rectilinear for non-soluble interface, concentric for soluble interface),
explicit rectilinear and explicit concentric.

Also the config layer was reworked a bit to reduce some switch statements
on ConfigOptionEnum<> templates.
2021-02-24 15:59:18 +01:00
Vojtech Bubnik aee136cedd Squash merge of pull request Raft enhancements #6003
thanks @nemart69
2021-02-24 11:59:22 +01:00
Vojtech Bubnik fcb714cd24 Added a single perimeter to the first layer of support or raft.
Fixes [Request] Add optional perimeter to raft #756
Fixes First support layer does not stick to bed #2101

New parameters raft_first_layer_density and raft_first_layer_expansion
to influence the 1st layer of raft or support.
Fixes Allow to disable raft under support structures. #3772
Fixes raft is larger than necessary #2568
Fixes Supports on the build plate should have a solid bottom interface for better adhesion #1165

Changed the 1st layer infill to rectilinear even for soluble materials.
Fixes first layer of support for multi filament support oddly spaced #1445
Fixes Full Soluble Materials interfacing into Models + Soluble material noise on Bed #684
2021-02-24 08:48:40 +01:00
Vojtech Bubnik d2c46025c7 Fix of Enforce support for first N layers has no effect #470 2021-02-23 15:31:21 +01:00
Vojtech Bubnik 055d2321e7 Trimming support base layer with brim.
Fixes Brim destroyed by support aka. Enable supports on top of brim #1156
Fixes Brim Priority/Support on Brim #713
Fixes Phantom Support columns interfere with brim #3396
Fixes false generation of brim when supports are used #3395

This is a work in progress, as the brim generator currently produces
different brim areas from what the support generator expects.
2021-02-23 14:43:47 +01:00
Vojtech Bubnik 8ba230db9f Fix of Paint on support ignores some paints. #5948
When projecting the horizontal or nearly horizontal support enforcers or blockers
into object layers, the projection may fall on a layer above or below the layer
where it should in case the nearly horizontal support enforcer or blocker
triangles are intersecting the slicing plane of one of the object layers.
Due to numerical issues, projection of the support blocker or
enforcer triangles may not fall to the same side of the slicing plane
as when slicing the object. To make the projection robust, horizontal triangles
are newly projected to both the layer below and above if they are close
to the object slicing plane.
2021-02-23 12:30:15 +01:00
Vojtech Bubnik 7b52dc2324 Fixing build on gcc/clang 2021-02-22 19:43:18 +01:00
Vojtech Bubnik 032df7f18f PNGReadWrite: png::write_gray_to_file(), png::write_gray_to_file_scaled() 2021-02-22 18:07:27 +01:00
Vojtech Bubnik 3985d7bb81 Fixes Support Interface printed on air #2903
Fixes Supports generated loose in space #4874
Fixes Support Interface layers in midair #5016
2021-02-22 18:07:27 +01:00
Vojtech Bubnik d2ca4563e8 Extended SVG::export_expolygons() with legend. 2021-02-22 18:07:27 +01:00
Vojtech Bubnik ac97572cfe Fixed compiler warnings 2021-02-19 20:09:57 +01:00
Vojtech Bubnik 12d14eaa2f Fixing a constness issue of the preceding commit. 2021-02-19 19:00:43 +01:00
Vojtech Bubnik cceaae84fb Silencing compiler warning in AGGRaster on Visual Studio 2021-02-19 18:57:45 +01:00
Vojtech Bubnik fb7b995050 Improvements in FDM support generator:
Projection into a grid has been reworked to use the AGG rasterizer.
This fixes #5209 and #6067.
Also the raster is now being oversampled by maximum 8x8 samples
and the supports are only allowed to expand inside the cell.
This significantly reduces leakage of supports through object walls,
which fixes #5054.
2021-02-19 18:50:44 +01:00
Vojtech Bubnik 65f5ac4f8a The perl binding is killing Vojtech 2021-02-18 11:47:06 +01:00
Vojtech Bubnik b03c318ed7 Fixing the Perl bindings for the last time 2021-02-18 11:42:35 +01:00
Vojtech Bubnik 0b45b312f9 Finally the Perl binding fix arrived! 2021-02-18 10:39:46 +01:00
Vojtech Bubnik ce8986348c Cooling buffer - fix of Perl bindings 2021-02-18 10:31:15 +01:00
Vojtech Bubnik 31bc52a5cb Fix of Perl integration after cooling buffer rework 2021-02-18 10:16:56 +01:00
Vojtech Bubnik 6ea5781709 Fix of Supports printed too slowly. #984
Processing of CoolingBuffer is newly staggered for support layers
until the 1st object layer above supports is received by CoolingBuffer.
2021-02-16 11:30:57 +01:00
Vojtech Bubnik 32db22b77c Fix of Improve Support material adhesion by base type interface layers
under soluble supports. #5823
Implemented as a pull request #5903 by @spiky2021
and reworked.

commit c7993e619225553a2c4078787907b9ebbd9ac759
Author: spiky2021 <77010315+spiky2021@users.noreply.github.com>
Date:   Thu Feb 11 12:39:25 2021 +0100

    Base type interfaces for soluble interface supports

    At the moment soluble support material adhesion is weak due to sparse support layers under soluble support layers. I reported as issue #5823 with pictures, as well.
    I modified two methods to the SupportMaterial Class including their headers.
    The new methods add two base type interface layers to the support structure, in case the extruders are different and soluble support is choosen.
    Since it is conditionally activated, it in general doesn't need a GUI input. But a GUI option number of base interface layers may enabled users to adapt this feature to their needs.
    This is my second try to provide a pull request on this topic. Reset my fromer repository, because first I merged this and all other changes to my master and couldn't provide separate pull request anymore.
2021-02-15 18:07:44 +01:00
Vojtech Bubnik a6bd2d7664 Fix of 3DBed Regression #6029 2021-02-15 09:31:19 +01:00
Vojtech Bubnik 9c568a543c Improving 3MF import: checking for invalid data. 2021-02-12 16:46:49 +01:00
Vojtech Bubnik f5b0f844f2 Commented on the unsigned/signed char CMake changes 2021-02-11 18:02:10 +01:00
Vojtech Bubnik 92d0bc2cfd Fixing EdgeGrid after recent refactoring. 2021-02-11 13:40:15 +01:00
Vojtech Bubnik bdd6685566 Reduction of dead code in FDM infill. 2021-02-11 12:24:10 +01:00
Vojtech Bubnik 9d479fcfb9 Make clang happy about the indentation 2021-02-11 12:06:12 +01:00
Vojtech Bubnik 7f95b280f0 FDM synchronization of front end with back end:
Fixed unnecessary invalidation of already calculated perimeters
if the infill density changes.
Fixed a race condition in invalidation of FDM regions.
2021-02-11 12:03:29 +01:00
Vojtech Bubnik e026ed8718 Experimental: Switching all solid infills from Rectilinear to Monotonic
for regions with Monotonic top infill type.
This should likely implement Monotonic of last layer before ironing #4939
2021-02-11 11:15:14 +01:00
Vojtech Bubnik 039cf8f423 Fix of unnecessary splitting of solid fill surfaces.
This is a regression issue introduced in PrusaSlicer 2.3.0 with
the configurable anchoring.
2021-02-11 10:42:05 +01:00
Vojtech Bubnik d39fd54e4f Fixing one more Win32 warning 2021-02-11 08:42:52 +01:00
Vojtech Bubnik 8049dd1f72 Trying to fix the remaining OSX warnings 2021-02-10 19:07:09 +01:00
Vojtech Bubnik 05a6cfeaea Some more reduction of compiler warnings on MSVC 2021-02-10 18:04:16 +01:00
Vojtech Bubnik db2d78ff21 Reduction on compiler warnings, mainly on MSVC.
Fix of the new gap_fill_enable flag: Take it into account when comparing
regions.
2021-02-10 17:29:07 +01:00
Vojtech Bubnik 6555b32f5c Squashed commit of the following:
commit 61b3ca0b4b4a0b4cfbbc706ede94ef7ccec4c91f
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 15:42:27 2021 +0100

    Fix of fuzzy skin

commit d971ed51a5bb65e8bdfd326bc41b9d7ab2e20834
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:51 2021 +0100

    CMake adjustment of MINIMUM_BOOST_VERSION

commit 5d8aa2c59ecf7e32456f2e43e07dedc7d24eb21c
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:33 2021 +0100

    Fix of debug compilation after warning removal.

commit 5e339b3078f0c9d75b6fac28ed3c295ae9fbbef5
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:11:34 2021 +0100

    Fuzzy Skin changes:
    1) Moved the parameters to region
    2) Removed experimental code.
    3) Allowed fuzzyfication of both outer perimeter and holes.
2021-02-10 16:02:43 +01:00
Vojtech Bubnik 32b8a59fa5 Enabling /utf-8 on MSVC.
Hopefully a fix of fix some msvc compile error under Chinese Windows system. #5583
Hopefully it will not break any localization.
2021-02-10 11:05:02 +01:00
Vojtech Bubnik a5972e64fa Fixing compiler warnings: Fixed broken Linux build. 2021-02-09 20:06:08 +01:00
Vojtech Bubnik f61119e02f Yet another clang compiler warning suppressed. 2021-02-09 20:04:11 +01:00
Vojtech Bubnik 2393d64a5a Fixed some OSX Objective C warnings. 2021-02-09 19:51:56 +01:00
Vojtech Bubnik 20456b45e5 Fix of the previous commit (fixing warnings) 2021-02-09 19:46:09 +01:00