144 Commits

Author SHA1 Message Date
supermerill
f1fdcf4243 #280 new setting: fill_angle_increment. rotate every infill by this angle, multiplied by the layer id. 2020-08-18 01:14:07 +02:00
supermerill
2c33dc9cc8 Change 4-digit after dot for fields to 8, useful for z-step
also a little refresh fix for z-step
2020-07-30 21:34:13 +02:00
supermerill
eaca18d628 #327 #317 Fix xy compensation issues
- better shrink (do not do all polygons in one go but per expolygon), now can be used for growth & shrink
 - with multi-region, apply growths even if no hole growth
 - stop pre-clip growth, it's a mess.
Next step is to do all that in one pass to avoid some problem with big growth/shrink
2020-07-03 13:24:06 +02:00
supermerill
94a4772549 use first_layer_size_compasation for the lslices, so the brims are printed against the real lines. 2020-06-21 21:57:28 +02:00
supermerill
b284b2b19a fix XY rework crashing bug. 2020-06-06 16:07:18 +02:00
supermerill
7738e2a33c #240 little rework of XY compensation.
better import of 'elephant foot' (spelled elefant in prusa) that is now first_layer_size_compensation, using 'legacy to amke the convert.
advantage: it reverse the sign now.
drawback : no easy export to prusa.
2020-06-05 23:08:28 +02:00
supermerill
1afaa6ef49 create little hierarchy of config to better use ratio_over
fixes on ratio_over
fix Flow::extrusion_width (bad computation of first_layer_height)
fix enum visibility
moving test classes to prusaslicer test directory (wip)
all that because i was trying to write a test class for a modification in min_object_distance (and i didn't even start)
2020-05-31 03:54:58 +02:00
supermerill
9b60be0c1a Initial working prototype for the milling post-process 2020-05-29 21:01:30 +02:00
supermerill
3d5ddd60b4 #206 reverse direction on overhang overhaul:
- now has a setting & a threshold
 - when reverse_direction trigger on the external loop, it also trigger for all other loops on this side (so, no more U-turn)
 - do not depends on extra_perimeter anymore
 - now extra_perimeters split into extra_perimeters (the old useless one) and extra_perimeters_overhangs
 - reordering settings in the tab.
2020-05-13 01:39:30 +02:00
supermerill
4151e8fab0 #186 brim settings on the object instead of the print. 2020-05-03 00:14:16 +02:00
supermerill
046210b0d5 #180 xy first layer compensation fix. 2020-04-20 17:18:26 +02:00
supermerill
a6c011fbef fix curve_smoothing return value. 2020-04-17 19:25:41 +02:00
supermerill
4b84ab835a fix gcc compile 2020-03-28 20:10:10 +01:00
supermerill
f087cf1239 Merge remote-tracking branch 'remotes/prusa/master'
seems to work
need to update profiles & ui
2020-03-26 12:10:30 +01:00
supermerill
1984df6d49 Many fixes to "no seam" option for external perimeter first.
Also some option to only apply to hole (or others)
Also some fixes to some loops options in the codepath.
also a test to thin walls, suspected a bug but can't find it.
2020-03-22 15:25:21 +01:00
supermerill
5cc2fb72c9 improve smooth_curve (using remove_colinear) 2020-03-18 01:31:31 +01:00
bubnikv
7f376fa927 Fix of infill type update with vase mode enabled after change
of the number of bottom layers.
related to [2.2.1-RC] Vase mode prints base no matter what #3823
2020-03-14 11:59:50 +01:00
bubnikv
b47246f69b Fixed a bug, where the top or bottom solid layers were created even
if the number of top / bottom solid layers was set to zero while
the top / bottom minimum shell thickess was set nonzero.

With this commit, if the top / bottom solid layers is set to zero,
there are no top / bottom solid layers generated independent from
the minimum top / bottom shell thickness.
2020-02-18 15:44:01 +01:00
bubnikv
5eb1e7e886 Fixed a bug in the update of the backend when the Spiral Vase option
is enabled / disabled.

Spiral Vase forces different kind of slicing than the normal model:
In Spiral Vase mode, holes are closed and only the largest area contour is kept at each layer.
Therefore toggling the Spiral Vase on / off requires complete reslicing.

This commit moves the update to the correct location.
2020-02-09 13:56:42 +01:00
bubnikv
e7d2fcf0be Fixed unit tests broken with the previous commit (Spiral Vase fix).
Fixed a crash in the previous commit.
2020-02-09 09:43:15 +01:00
bubnikv
4e11552da9 Spiral vase improvements and bugfixes.
Fixes Connecting / expanding Bottom Layers to Vase Perimeter #253
Fixes Slicing error in vase mode #452
Fixes Slicing Issue (Vase Mode, 0.6mm dmr nozzle) #1887
Fixes Top fill pattern isn't used in spiral vase mode #2533
Fixes Cisar's vase doesn't slice correctly, creates artefacts #3595

When the model is sliced, all the contours are newly oriented
counter-clockwise (even holes), merged and then only the largest area
contour is retained. In perimeter generator, if the largest contour
splits into multiple perimeters, newly only the largest area perimeter
is retained in spiral vase mode. These two changes solve #3595 and similar.

The infill is newly calculated only for the bottom solid layers
if the spiral vase mode is active (removes various unwanted infill
along the vase walls), and the last bottom solid layer is switched
to a top solid pattern (solves #2533).

The thin walls are newly enforced to be disabled in spiral vase mode,
and the "ensure vertical shell wall" is enforced in spiral vase mode
to extend the bottom of the vase to the vase hull (fixes #253).
2020-02-08 21:36:43 +01:00
bubnikv
b8c898bf40 Fixed a bug in validation of the FDM Print to check for extruder
collisions against already printed objects: Rotation of an object
was not being taken into account.
Fixes #2450 PrusaSlicer 2.0 Sequential printing vs rotate object
Fixes #3585 Always Sequential Printing Error (Regardless of setting, placement or object size)

Fixed some collisions in sequential print just after arrangement by
making the validation using a slightly lower extruder radius value
than the arrangement.

Refactored PrintObject coordinate system so that the PrintObject's
coordinate system is always centered in respect to its ModelObject's
geometries. This refactoring may improve path planning a bit and
it may lower the requirements on bits representing Clipper coordinates
by 1 bit.
2020-02-07 14:10:27 +01:00
bubnikv
495a71ed00 Implemented top_solid_min_thickness / bottom_solid_min_thickness.
The two new config keys define a minimum vertical shell thickness.
The top shell thickness is calculated as a maximum of sum over
top_solid_layers * layer heights and top_solid_min_thickness,
the bottom shell thickness is calculated as a maximum of sum over
bottom_solid_layers * layer heights and bottom_solid_min_thickness.

The results of the formula above are shown at the Print parameter page
below the two new values to hint the user about the interaction
of the old versus new config values.

top_solid_min_thickness has no meaning if top_solid_layers is zero,
bottom_solid_min_thickness has no meaning if bottom_solid_layers is zero.
2020-02-05 16:53:48 +01:00
bubnikv
c5fa400208 Fixed regression of 71fa41110049a79ec1d5c3052d22647a38d01bed
where the PrintObject bounding box was not invalidated correctly
when the transformation matrices of instances changed.

Also refactored PrintObject::size() for const correctness.
2020-01-30 12:22:30 +01:00
bubnikv
dced3ce783 Fix of 2.2.0-A3: Sequential Printing: Wrong location after slicing #3570
This is a regression from 71fa411
2020-01-24 17:11:14 +01:00
bubnikv
71fa411100 Refactored PrintObject::m_copies to PrintInstances,
so that the ordering code at G-code export may work directly with
pointers to PrintInstances instead of with pair of <PrintObject, copy idx>.
Also the PrintInstance knows its source ModelInstance, which allows
sorting of PrintInstances for sequential printing in the order
they appear in Plater's object list.
2020-01-23 09:53:06 +01:00
supermerill
705edaa7fb up version to 47.1
fix macos/linux build
2020-01-15 18:04:23 +01:00
supermerill
eecf28c00c nearest is now near (Nearest), hidden is now hidden (Corners).
Seam position default to corners (hidden) from "nearest", to avoid confusion when migrating from a prusaslicer config.
fix for modifiers with no_perimeter_unsupported_algo
npuaBridges surface fix
2020-01-15 17:23:54 +01:00
supermerill
64915b10fc fix XY compensation #141 (all 3)
fix smoothing when modifiers are present.
2020-01-14 14:36:54 +01:00
supermerill
c5fbfae095 remove layer_height_adaptive, because prusa has created a new one.
bugfix "move inwards before travel" when extruding perimeter clockwise
bugfix too thin overhang detection
bugfix basic ini (duplicate key)
2020-01-09 15:04:30 +01:00
bubnikv
3d17543d40 Fix of "Don't use bridging perimeters on top of elephant-foot compensation #3011"
If the Elephant foot compensation is applied to the 1st object's layer,
the uncompensated 1st object's slice is newly used for calculation
of bridges, overhans, skirt, brim, raft and supports.

Layer::slices were renamed to Layer::lslices to simplify reading
of the code, to differentiate from LayerRegion::slices.
2020-01-03 14:07:31 +01:00
supermerill
7c6fac781a add bridge_overlap #131 2019-12-18 19:12:40 +01:00
supermerill
e0a5bbdcc5 Merge remote-tracking branch 'remotes/supermerill/master' 2019-12-07 16:37:54 +01:00
supermerill
38f1f0da49 bugfix only_one_perimeter_top & solid margin 'anchor" 2019-12-07 16:36:15 +01:00
supermerill
dda438c74b Merge commit '5e3e5492487690fb48cd7c4bb0b7e0e019e30a5c' (wip) 2019-12-05 20:53:02 +01:00
supermerill
027b744ea3 re-enable the option for adaptive quality (auto layer height)
tested on a cube with a round horizontal hole, the result is not good.
2019-11-26 18:17:56 +01:00
supermerill
351d7d437a new option: Overlapping perimeters, for when you don't care and don't want to use MedialAxis algo
#116
2019-11-16 08:16:21 +01:00
supermerill
9ae142ef3e add "vase mode / no seam" option for external perimeters. 2019-11-16 08:15:02 +01:00
Enrico Turri
b77ba32bb2 Adaptive layer height profile -> Added Adaptive button to imgui dialog 2019-11-12 14:18:43 +01:00
Enrico Turri
6e4060569a 1) Added new tech ENABLE_ADAPTIVE_LAYER_HEIGHT_PROFILE
2) Imgui dialog replaces texture for reset button and tooltip when layer editing is active
2019-11-07 15:55:45 +01:00
bubnikv
2399570950 Only enable Elphant foot compensation if printing directly
on the print bed (raft is disabled).
2019-11-04 11:34:33 +01:00
bubnikv
4c735192ef Bugfixes of the new adaptive elephant foot compensation. 2019-11-04 11:26:36 +01:00
supermerill
a43b2b123d Polyholes!
slic3r/Sliç3r#3323
slic3r/Sliç3r#2438
prusa3d/PrusaSlicer#515
2019-11-02 00:43:23 +01:00
bubnikv
a72ac57fab adaptive elpehant foot compensation, fixing
GH issues #1757 #2085 #2132 #2423 #2502 #2156 #2773 #2828 #2998 #3001
2019-11-01 19:59:09 +01:00
supermerill
004ec5480d alternate extra wall: on odd layers
#89
2019-10-29 19:12:54 +01:00
supermerill
86fbd247b7 #101 add ratio /distribution for the smoothing flow in ironing (see tooltip) 2019-10-29 16:44:00 +01:00
supermerill
81dc1e19d3 bugfix #93
clean a bit some methods with newer c++
add more const to surfacecollection & create surfaceconstptr & a slice() method in layerregion that return const surfacecollection.
2019-10-14 16:08:07 +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
bubnikv
564eddd99d FDM Print refactoring:
Layer newly remembers bounding boxes of slices,
the bounding boxes are used by G-code generator & newly the support
generator.
Slices are stored as ExPolygons, not ExPolygonCollection.
2019-10-01 17:17:08 +02:00
bubnikv
6a07b231e1 Fixed a crash with a layer range modifier containing no slicing layer. 2019-10-01 13:41:22 +02:00