56 Commits

Author SHA1 Message Date
supermerill
088b92917c Add filament_max_overlap, to control the line spacing via filament setting
It allows to control the spacing vs width (10%% fill vs a bit less)
The 'enforce 100% fill volume' is also adjusted to take that into account
Note that if you're using multiple extruders/filament everywhere (and spacing setting for width setting),
  the result may be a bit unexpected, as the gui can't display all the interactions,
  also some features (like support) may revert to default overlap value, if printed with multiple filaments.
supermerill/SuperSlicer#1590
2021-09-26 13:51:05 +02:00
remi durand
519bcaf1a2 #922 Infill bridge issues 2021-03-19 12:36:38 +01:00
supermerill
8d5688a751 Merge remote-tracking branch 'remotes/prusa/master' : Opengl crash 2020-11-28 18:18:32 +01:00
supermerill
9f7f558816 #718 fix ironing post-process double the fills. 2020-11-26 20:52:01 +01:00
Vojtech Bubnik
62bdc192d8 Fix of [2.3.0-alpha4] Crash - several models cause crash when slicing #5208
Fixed some issues in internal anchors of the Adaptive Cubic infill.
The ugly and dangerous implicit casting operators in Line, MultiPoint,
Polyline and Polygon were made explicit.
2020-11-24 16:01:08 +01:00
supermerill
7a10e8220c Fill "connect" update
* re-add the 2.2 algo
 * allow to choose connection method also for solid/top/bottom
2020-11-23 23:26:47 +01:00
supermerill
1a19b023f0 Merge remote-tracking branch 'remotes/prusa/master'
note: new infill connect, maybe a good idea to get the previous one in case it's better (no useless lines)
note2: fillline overextrude, tofix
2020-11-23 00:28:47 +01:00
Vojtech Bubnik
8d1e13fccd Anchoring of sparse infills can now be disabled. 2020-11-20 13:36:58 +01:00
Vojtech Bubnik
db05f00860 Fixing compilation issues. 2020-11-16 13:11:58 +01:00
Vojtech Bubnik
e9fa36ea7d Fillers: Removal of old FillRectilinear, using of "override" instead
of "virtual" where applicable.
2020-11-16 11:16:44 +01:00
Vojtech Bubnik
4280fdb5f2 Reworked connection of infill lines to perimeter lines.
Added a new "infill_anchor" parameter.
2020-11-16 10:54:00 +01:00
supermerill
a9675a3f0b fix compile 2020-11-08 23:49:02 +01:00
supermerill
e3dde4b384 change monotonic from monotonous 2020-11-08 17:09:29 +01:00
supermerill
c3dcf9864a Merge remote-tracking branch 'remotes/remi/master' into dev 2020-11-06 02:29:30 +01:00
supermerill
27196d34ea #414 #591 overhang speed separate from bridge speed
And separate speed for "inner bridge" (the ones over sparse infill)
2020-11-05 19:08:46 +01:00
Vojtech Bubnik
239d588c5d 1) Implemented anchoring of infill lines to perimeters with length
limited anchors, while before a full perimeter segment was always
   taken if possible.
2) Adapted the line infills (grid, stars, triangles, cubic) to 1).
   This also solves a long standing issue of these infills producing
   anchors for each sweep direction independently, thus possibly
   overlapping and overextruding, which was quite detrimental
   in narrow areas.
3) Refactored cubic adaptive infill anchroing algorithm
   for performance and clarity.
2020-11-05 17:32:40 +01:00
Vojtech Bubnik
414fdaefc5 Merge remote-tracking branch 'remotes/origin/master' into lh_adaptive_infill_hooks 2020-11-03 15:07:38 +01:00
supermerill
7560c7d955 fix fill
also protect spacing in case of.
2020-10-26 15:47:21 +01:00
supermerill
6fdd615b6e Merge remote-tracking branch 'remotes/prusa/master' into dev 2020-10-18 00:27:32 +02:00
Vojtech Bubnik
7fbdda9080 Renamed monotonous infill to monotonic. 2020-10-05 16:38:28 +02:00
Lukáš Hejl
7a9aec2b0b Connect infill with perimeters using hooks 2020-10-02 11:15:55 +02:00
supermerill
89ec89e682 #393 don't connect now differentiate with holes & outer perimeters
but it works only for half of rectilinear2: because it go over a new polyline start always from the same direction.
So it needs a difficult to do change to rectilinear2. (TODO)
2020-09-21 23:12:02 +02:00
Vojtech Bubnik
7e756b20e6 Adaptive infill: Reshuffled the namespaces. 2020-09-18 10:53:50 +02:00
Vojtech Bubnik
37c5fe9923 Refactoring of adaptive cubic / support cubic:
1) Octree is built directly from the triangle mesh by checking
   overlap of a triangle with an octree cell. This shall produce
   a tighter octree with less dense cells.
2) The same method is used for both the adaptive / support cubic infill,
   where for the support cubic infill the non-overhang triangles are
   ignored.
The AABB tree is no more used.
3) Optimized extraction of continuous infill lines in O(1) instead of O(n^2)
2020-09-17 18:39:28 +02:00
Vojtech Bubnik
067cde85f1 WIP Refactoring of exceptions:
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.
2020-09-14 18:03:22 +02:00
Lukáš Hejl
f49144a9ef Move support cubic infill to separate class.
Support infill is enabled in the GUI.
2020-09-10 16:53:08 +02:00
Lukáš Hejl
0d26df3cf6 Preparation for new infill 2020-09-09 14:34:04 +02:00
supermerill
f48ed5091c Add monotonous infill thanks to @bubnikv and @wavexx
also the rectilinear2.cpp rework that go along
use of monotonous in ironing
use of monotonous instead of rectilinear of "filled" in top & bottom
reduce gap fill area from rectilinearWGapFill to the area with no overlap
fix flatten(): don't put everything in a no_sort collection but correctly recreate the hierarchy of no_sort, sort, no_sort of collections.
2020-09-06 16:02:58 +02:00
Lukas Matena
48c186331a Includes cleanup:
GUI_App.hpp      (should not include) MainFrame.hpp
MainFrame.hpp    Plater.hpp
ModelArrange.hpp Model.hpp
Slicing.hpp      PrintConfig.hpp
FillBase.hpp     PrintConfig.hpp
GUI_App.hpp      PrintConfig.hpp
OptionsGroup.hpp GUI_App.hpp
2020-05-27 14:01:47 +02:00
bubnikv
033548a568 Introduction of Monotonous infill type. Fill no-sort only for monotonous
and ironing infills.
2020-04-25 08:15:04 +02:00
bubnikv
03eb5ffcd5 WIP: Reworking of FillRectilinear2 to support monotonous infill
with ant colony optimization and 3-opt flips.
2020-04-22 10:54:11 +02:00
bubnikv
10110ed307 WIP: Ironing over top surfaces. 2020-04-14 11:53:28 +02:00
supermerill
9e2b819880 fix fill (override keyword added to avoid this bug in the future) 2019-12-12 14:31:40 +01:00
supermerill
dda438c74b Merge commit '5e3e5492487690fb48cd7c4bb0b7e0e019e30a5c' (wip) 2019-12-05 20:53:02 +01:00
bubnikv
afa72da9d1 Fix of infill connecting along perimeter lines,
new 3-opt iterative improvement of infill path (currently disabled,
it is extremely slow)
2019-12-02 15:01:52 +01:00
supermerill
9c6008e5e0 Review of spacing & volume compute, add a test for that.
Change a bit the fill api, to allow a bit safer spacing init and ensure nothing erase a parameter in mid-compute.
2019-11-16 08:16:01 +01:00
bubnikv
f2dd49a905 Merged pull request "Gyroid improvements" #2730
by @supermerill and @wavexx

WIP: The function Fill::connect_infill() is being rewritten
to utilize spatial structures wherever possible for lower CPU load
and less dynamic memory allocation.
2019-11-07 14:28:30 +01:00
supermerill
51bcae96ea #110 remove use_bridge from infills
force bridge on "denser infill" layer (as it's removed from the infill now)
2019-10-29 17:00:45 +01:00
bubnikv
76c4eaf19a Ported test_fill from upstream Slic3r, thanks @lordofhyphens 2019-10-16 17:43:43 +02:00
supermerill
89b2e62381 add parameters: fill_top_flow_ratio & fill_smooth_width
bugfix flow inaccuracies in FillSmooth.
TODO: do something about surface too small to be printed, particularly when 'only one perimeter top' -> don't extract them or use gapfill
2019-10-07 18:55:11 +02:00
supermerill
2f042e030c Merge remote-tracking branch 'remotes/prusa/master'
not merged: fill.cpp, perimeter_generator, because they ahve been reworked and need to be understand fully before adding my extensive modifications.
To verify: glcanvas: maybe filament color selection is deleted (or the other one i added?)
2019-09-26 13:14:01 +02:00
bubnikv
d146a0237e WIP: Reworked the infill generator to merge areas with the same
properties.

Note for Vojtech:
Review src/libslic3r/Fill/Fill.cpp once again,
add test for G-code generator properties (extrusion speed, cooling?)

Fixes Modifier slice/move efficiency #1005
2019-09-04 16:11:16 +02:00
supermerill
b6936a46e3 bugfix "connected lines" for gyroid & 3Dhoney 2019-08-07 16:45:52 +02:00
supermerill
86fbb9a095 gyroid & 3Dhoneycomb: now 'connected lines' follow the perimeters 2019-08-07 16:45:22 +02:00
supermerill
7b71d74b38 new solid infill pattern : rectilinear with gapfill.
* it replace rectilinear fill by gapfill when width < spacing * 1.6
 * it permit to fill spaces too thin to be filled by infill (if it's not already filled by the perimeter gapfill)
 * it print the gapfill after the rectilinear infill.
 * the exact volume option only do his thing on the rectilinear area, not the gapfill one (as it's already done in the medial axis).
2019-04-23 13:17:45 +02:00
supermerill
7146471c28 bugfix "connected lines" for gyroid & 3Dhoney 2019-03-08 18:30:38 +01:00
supermerill
9454415e6d Flags for surface_type
simplify the dense_infill algo. TODO: use a flag instead of the field.

TODO: use the flags (without creating bugs)
2019-02-25 18:42:37 +01:00
supermerill
fb0fe3ac39 ironing: cleaning code (remove duplication), streamline arguments & config struct for fill_surface_extrusion. 2019-02-11 14:42:25 +01:00
supermerill
1999974f7a Merge remote-tracking branch 'remotes/prusa/master' into masterPE 2019-01-25 19:45:50 +01:00
supermerill
162132eb35 gyroid & 3Dhoneycomb: now 'connected lines' follow the perimeters 2019-01-24 11:54:48 +01:00