Commit Graph

476 Commits

Author SHA1 Message Date
Alessandro Ranellucci
c62b49d1af Optimization of extra perimeters detection 2013-05-31 14:30:07 +02:00
Alessandro Ranellucci
917915d68e Bugfix: superfluous extra perimeters were generated. #1170 2013-05-31 14:23:42 +02:00
Alessandro Ranellucci
bbb190dc68 Generate infill using each object's bounding_box instead of full print. #1177 2013-05-19 11:35:41 +02:00
Alessandro Ranellucci
08a0bbd7f0 Optimization: split meshes automatically when avoid_crossing_perimeters is enabled, so that we reduce the complexity of the MotionPlanner graphs. This commit includes a very large refactoring of the Model class which is now responsible for duplication and arrangement 2013-05-18 16:48:26 +02:00
Alessandro Ranellucci
c2301c5796 Don't extend solid layers when fill density is 0 2013-04-29 15:55:50 +02:00
Mark Hindess
407de02fe4 Use binary search for get_layer_range.
Gives a 13% speed up on Teethy_Tiki.stl (thing:49334) with default settings
on my laptop.
When $self->layers->[0]->slice_z == $min_z the returned $min_layer value is
0 rather than the (incorrect?) -1 returned by the old code.
2013-04-18 19:29:05 +01:00
Alessandro Ranellucci
e088d9b3f7 Cache Slic3r::Fill object 2013-04-18 18:40:59 +02:00
Alessandro Ranellucci
430c825918 Align rectilinear and line infill across layers (new implementation). #712 2013-04-18 17:34:21 +02:00
Alessandro Ranellucci
04d2231901 Bugfix: is_printable() wasn't discarding narrow ring-shaped top/bottom surfaces because it was only considering the contour. This caused extra shell material even in hollow prints. #1049 2013-03-30 11:22:12 +01:00
Alessandro Ranellucci
1b79b1cb20 Refactoring: use the clone() method for inflating Surface objects 2013-03-29 19:18:06 +01:00
Alessandro Ranellucci
6bc5de0b5d Allow custom ranges with layer_height = 0 2013-03-24 15:26:55 +01:00
Alessandro Ranellucci
0b81911cff Bugfix: artifacts near walls. #1049 2013-03-18 17:55:16 +01:00
Alessandro Ranellucci
8ce31c2a2b Don't exclude any infill under internal bridges; revert infill pattern to rectilinear for internal bridges. #240 2013-03-18 13:32:19 +01:00
Alessandro Ranellucci
1064c9bb2a Merge branch 'master' into grow-narrow
Conflicts:
	lib/Slic3r/Fill.pm
	lib/Slic3r/Print/Object.pm
2013-03-17 02:30:20 +01:00
Alessandro Ranellucci
83065b0789 Bugfix: wrong flow and bad pattern rotation when infill-every-layers was set to an arbitrary high value 2013-03-17 01:10:40 +01:00
Alessandro Ranellucci
04c0caad0b Fix honeycomb infill overlap with perimeters 2013-03-17 00:57:58 +01:00
Alessandro Ranellucci
35bd5a3423 New --solid-infill-extrusion-width option 2013-03-17 00:02:31 +01:00
Alessandro Ranellucci
c13d9e9fb3 Don't collapse overhangs too early 2013-03-16 21:51:38 +01:00
Alessandro Ranellucci
0f5064dd32 Untested fix for incomplete honeycomb support material. #1032 2013-03-16 21:10:12 +01:00
Alessandro Ranellucci
25554a345f Reorder object copies using a nearest neighbor search 2013-03-16 20:56:14 +01:00
Alessandro Ranellucci
10b6bc9d15 Removed keep_meshes 2013-03-16 19:39:00 +01:00
Alessandro Ranellucci
f4b8185698 Fixed typo preventing support material to work with new simplify() syntax 2013-03-16 19:11:49 +01:00
Alessandro Ranellucci
33b40eda18 Always fix self-intersecting polygons that Douglas-Peucker might return 2013-03-16 18:42:56 +01:00
Alessandro Ranellucci
0f8ca6191a Merge branch 'master' into grow-narrow 2013-03-16 16:22:03 +01:00
Alessandro Ranellucci
dc0f706789 Bugfix: simplification of support areas could lead to complex polygons with bad orientation, thus causing wrong pattern clipping. #1032 2013-03-14 14:27:08 +01:00
Alessandro Ranellucci
d9b82c79da Grow narrow infill regions into void - to be tested more 2013-03-13 01:03:54 +01:00
Alessandro Ranellucci
6058384978 Fixed regression causing crash when support material threshold angle was defined. #1048 2013-03-12 19:39:43 +01:00
Alessandro Ranellucci
999af84c54 Don't make internal bridges when fill_density == 1. #1045 2013-03-11 18:41:12 +01:00
Alessandro Ranellucci
0eecf33198 Bugfix: narrow solid shells were collapsed when spacing was added before generating infill, so we grow them 2013-03-11 18:37:01 +01:00
Alessandro Ranellucci
b7945ac790 Finished new extra perimeters implementation 2013-03-11 14:23:16 +01:00
Alessandro Ranellucci
74e21d7a04 New implementation of extra perimeters - to test 2013-03-10 19:08:36 +01:00
Alessandro Ranellucci
f670acb4b1 Slice a single object with multiple layer heights. :-) 2013-03-10 14:58:49 +01:00
Alessandro Ranellucci
17cbca5e06 Factor out layer height in support material generation 2013-03-10 12:22:40 +01:00
Alessandro Ranellucci
2ab5fa9c72 Factor out layer height from combine_infill() 2013-03-10 12:08:18 +01:00
Alessandro Ranellucci
2275de9f0d Factored out the layer height logic 2013-03-10 11:37:16 +01:00
Alessandro Ranellucci
36d24ccb0b Infill refactoring and cleanup complete 2013-03-07 15:47:32 +01:00
Alessandro Ranellucci
a9df56670f Bugfix: internal-bridge regions were not touching perimeters 2013-03-05 19:33:06 +01:00
Alessandro Ranellucci
a9090688f9 Refactor bridge flow to Slic3r::Flow::Bridge class 2013-02-27 10:43:50 +01:00
Alessandro Ranellucci
d00c2882c4 Remove debug line slipped into last commit 2013-02-27 10:30:05 +01:00
Alessandro Ranellucci
37be4f7319 Some cleanup for detect_surfaces_type() 2013-02-26 20:52:13 +01:00
Alessandro Ranellucci
f4e8cdbf36 Better logic for extra perimeters 2013-02-26 20:00:05 +01:00
Alessandro Ranellucci
bd76e7677c Adjust extra perimeters 2013-02-24 17:04:19 +01:00
Alessandro Ranellucci
c3dde74776 Fix brim and extra perimeters after recent changes to ->slices 2013-02-24 16:40:14 +01:00
Alessandro Ranellucci
de0c2febd9 Remove useless lines 2013-02-23 23:50:46 +01:00
Alessandro Ranellucci
08a72c0824 Use bridge math for the first solid infill layer above sparse infill. #240 2013-02-23 21:39:13 +01:00
Alessandro Ranellucci
5eade0f9e1 Don't validate the number of layers for infill combination, just limit it automatically. #993 2013-02-22 16:24:24 +01:00
Alessandro Ranellucci
91bcfc8a74 Remove $Slic3r::flow and $Slic3r::first_layer_flow 2013-02-22 16:08:11 +01:00
Alessandro Ranellucci
b9c84490b8 Get rid of most calls to $Slic3r::flow 2013-02-19 12:37:26 +01:00
Alessandro Ranellucci
6dc62d3cf2 Disable extra perimeters if fill density is zero as they wouldn't be supported by anything and would just float inside the object. infill_only_where_needed should be the method of choice for hollow objects 2013-02-19 12:37:26 +01:00
Mike Sheldrake
c2f04f2861 avoid overlap of single layer and multilayer fill
A single-layer rectilinear or honeycomb fill under a low slope
wall/ceiling or extra perimeter will stick out from under the
overhang, because those fills get extended beyond their fill_surface
boundaries to purposely overlap perimeters. This causes interference
with multil-layer fills. This commit clips the single layer fill
boundaries a bit more where they interface with multi-layer fill
boundaries, to avoid overlap.
2013-02-18 07:26:19 -08:00
Mike Sheldrake
9a86edc70c account for extrusion width when clearing layers for combined infill
Otherwise you get extraneous fill up against sloped walls in regions
of layers that should not have fill, like in #834.
2013-02-16 07:53:47 -08:00
Alessandro Ranellucci
c9b506fa02 New simpler and more robust implementation of infill every 'n' layers 2013-02-10 12:40:43 +01:00
Alessandro Ranellucci
cac79c0575 New option to only infill where strictly needed for supporting ceilings 2013-02-09 23:36:32 +01:00
Alessandro Ranellucci
cf8cfc1380 Bugfix: angle threshold was considered even when enforcing support 2013-02-09 21:49:00 +01:00
Alessandro Ranellucci
e593a30fc7 Skip support material for one-layer objects 2013-02-06 10:40:08 +01:00
Alessandro Ranellucci
4f91bed904 Optimize cycling in get_layer_range() 2013-02-05 21:59:18 +01:00
Alessandro Ranellucci
8efe46e58d New option to enforce support material on a given number of layers to improve adhesion of objects with poor footprint 2013-02-04 15:48:57 +01:00
Alessandro Ranellucci
9222526e03 Customizable number of interface layers for support material and raft 2013-02-03 17:23:50 +01:00
Alessandro Ranellucci
acada05068 Merge branch 'raft' 2013-02-02 16:17:05 +01:00
Alessandro Ranellucci
c7b4d99d7e Generate raft automatically even when support material is disabled 2013-02-02 16:16:43 +01:00
Alessandro Ranellucci
02c0f3658f Use 50% density for support base flange 2013-02-02 15:37:09 +01:00
Alessandro Ranellucci
d3727a1699 Add ability to have cross-hatched rectilinear support material. #509 2013-02-02 00:14:45 +01:00
Alessandro Ranellucci
547dfb857d Workaround for Boost clipping not being idempotent and causing lack of support material 2013-02-01 23:45:46 +01:00
Alessandro Ranellucci
eae1e7adc2 Make a solid base below support material on first layer 2013-02-01 22:13:12 +01:00
Alessandro Ranellucci
1de0169910 Multithreaded perimeter generation. #154 2013-01-31 15:44:55 +01:00
Alessandro Ranellucci
177f1a9bf0 New raft_layers option. #123 2013-01-28 14:12:01 +01:00
Alessandro Ranellucci
92feebf5fe Fixed regression introduced in 4d8757bf5d causing crash during support material generation 2013-01-17 12:32:57 +01:00
Alessandro Ranellucci
4d8757bf5d Interface support layers were clipped badly. Also, reduce simplification of the clipping boundaries. #583 2013-01-17 11:59:14 +01:00
Mike Sheldrake
f3a1221039 per-thread clipper object for parallel support generation #888 2013-01-16 06:00:04 -08:00
Mike Sheldrake
85934e1738 use infill flow spacing, not perimeter, for combine_infill() clip offsets 2013-01-15 22:13:11 -08:00
Mike Sheldrake
bce3e96210 extraneous fill against sloped walls with fill every N layers #834
Polygons used for N x depth fill surfaces need to be offset
by flow spacing before they are reused to clip lower fill surfaces.
Otherwise thin fill sections remain on clipped layers against sloping
walls, and the N x depth fill collides with them.
2013-01-14 21:18:31 -08:00
Alessandro Ranellucci
34e047205a Automatic detection of support material threshold angle 2013-01-02 19:40:48 +01:00
Alessandro Ranellucci
30d9b2e508 Refactoring: initialize all layers at once and avoid duplication of slicing height math. #637 2013-01-01 23:28:48 +01:00
Alessandro Ranellucci
0da71dbdfa Fix regression causing wrong number of solid shells when using fill_density = 0 (includes regression test) 2012-12-23 20:20:17 +01:00
Alessandro Ranellucci
15f07197d8 Don't store ->surfaces anymore. Save memory, save time 2012-12-22 23:57:39 +01:00
Alessandro Ranellucci
5930267de9 Bugfix: some top/bottom solid shells are not treated as solid. #689 2012-12-21 20:25:48 +01:00
Alessandro Ranellucci
d5537e7797 Enable retraction for support material too, but only when moving away from support islands. #831 2012-12-20 18:47:40 +01:00
Alessandro Ranellucci
d6d96391a9 Avoid overextrusion when support material spacing is configured to < the extrusion spacing. #821 2012-11-23 17:15:52 +01:00
Alessandro Ranellucci
cb4ede7f9e Do not pass the Print object to SVG::output anymore 2012-11-01 11:34:53 +01:00
Alessandro Ranellucci
44d91774a6 Get rid of useless Slic3r::Fill instances 2012-10-30 15:38:17 +01:00
Alessandro Ranellucci
709cbc1c15 Fixed regression causing support material generation to fail under threaded perls 2012-10-29 19:38:40 +01:00
Alessandro Ranellucci
ccb49a8439 Do a slightly thinner interface layer at the top of support material structures by taking into account the diameter of bridge extrudates (nophead's idea) 2012-10-28 16:59:20 +01:00
Alessandro Ranellucci
b5bd216f5c Do not combine infill for bottom layer 2012-10-28 14:23:47 +01:00
Alessandro Ranellucci
f35cdef2aa Renamed ExtrusionPath->depth_layers to height 2012-10-28 14:22:51 +01:00
Alessandro Ranellucci
2796041a6c Bugfix: --top-solid-layers was ignored. #769 2012-10-28 12:52:53 +01:00
Alessandro Ranellucci
cee3864fc9 Independently set number of top/bottom solid layers. #676 2012-10-25 12:21:04 +02:00
Alessandro Ranellucci
3c7785aaf3 Useless extra perimeters were generated sometimes. #444 #732 2012-10-22 13:21:11 +02:00
Alessandro Ranellucci
c68862582c Fix fatal error on empty layers caused by recent large refactorings 2012-09-28 15:48:32 +02:00
Alessandro Ranellucci
ab7697ec1c New option to force a solid layer every given number of layers. #617 2012-09-28 15:46:29 +02:00
Alessandro Ranellucci
bbe0a45b58 Optimization: cache scaled flow width and spacing 2012-09-23 03:03:08 +02:00
Alessandro Ranellucci
ec0d3987db Rename materials to regions 2012-09-23 02:52:31 +02:00
Alessandro Ranellucci
e696764af8 Assign extruders and flows to materials 2012-09-23 02:40:25 +02:00
Alessandro Ranellucci
e2ab340edb Fix positioning and other things 2012-09-22 21:03:57 +02:00
Alessandro Ranellucci
d488afd243 More work (breaks centering and internal surfaces detection) 2012-09-22 19:38:25 +02:00
Alessandro Ranellucci
02356fd613 Large refactoring to allow processing multimaterial files 2012-09-22 19:04:36 +02:00
Alessandro Ranellucci
04be94023b Refactoring: move the 'copies' property to each Print::Object 2012-09-22 16:19:24 +02:00
Alessandro Ranellucci
9bd1b0f6ba Revert "Refactoring: initialize all layers at once and avoid duplication of slicing height math". #637
This reverts commit 08270022dd.
2012-08-26 17:47:00 +02:00
Alessandro Ranellucci
08270022dd Refactoring: initialize all layers at once and avoid duplication of slicing height math 2012-08-25 20:40:44 +02:00
Alessandro Ranellucci
a1ac866b84 Refactoring: turn x_length and y_length in size 2012-08-25 20:14:01 +02:00
Alessandro Ranellucci
7e34244b05 Refactored configuration handling.
Slic3r::Config is now an object. Multiple partial config objects are used throughout the codebase as local repositories, then merged and serialized when necessary.
2012-07-27 21:16:11 +02:00
Alessandro Ranellucci
1d04e15b63 Refactor/clean up. Merge remove_small_surfaces() into prepare_fill_surfaces(), rename infill_every_layers() to combine_infill(), remove $layer->fill_boundaries, initialize layer properties explicitely for clarity. 2012-07-22 21:00:02 +02:00
Alessandro Ranellucci
1697cb24a6 Memory optimization and code cleanup. Don't keep deserialized paths 2012-07-20 14:39:56 +02:00
Mark Hindess
b4a21bea40 Fix for #499. 2012-06-29 17:02:37 +01:00
Alessandro Ranellucci
80501d5b3c New option to customize support material extrusion width 2012-06-28 16:33:07 +02:00
Alessandro Ranellucci
a6dca1d82a New option for support material pattern spacing; also, fixes and speedups to the overhang detection 2012-06-24 14:39:35 +02:00
Alessandro Ranellucci
36753d85b7 New option to define the overhang threshold angle for support material generation 2012-06-23 23:54:39 +02:00
Alessandro Ranellucci
1fb44474a9 Connect support material paths 2012-06-23 22:58:12 +02:00
Alessandro Ranellucci
bf1aba3d08 New --support-material-pattern and --support-material-angle options 2012-06-23 22:43:23 +02:00
Alessandro Ranellucci
410279823c New separate option to control the addition of automatic extra perimeters. Also, add none if perimeters are set to 0. #459 2012-06-23 17:10:30 +02:00
Alessandro Ranellucci
a578af9d28 Fix support material 2012-06-21 11:51:24 +02:00
Alessandro Ranellucci
82dd3c7a3e New --perimeters-extrusion-width and --infill-extrusion-width options. #302 2012-06-06 18:05:03 +02:00
Alessandro Ranellucci
8a031fe501 New --first-layer-extrusion-width option. #385 2012-06-06 17:29:12 +02:00
Alessandro Ranellucci
34e3dfdb08 Large memory savings (down to about 50%) for high-res input files 2012-05-28 19:58:27 +02:00
Alessandro Ranellucci
d550f3fb5f Fixed regression preventing top solid shells to be computed 2012-05-20 13:03:34 +02:00
Alessandro Ranellucci
0bb487fe9f Recent memory optimizations broke support material generation 2012-05-19 22:53:30 +02:00
Alessandro Ranellucci
882a022e3a Even more constants, less memory, more speed 2012-05-19 16:04:33 +02:00
Alessandro Ranellucci
aa9563f00b More constants, less strings => ess memory usage 2012-05-19 15:40:11 +02:00
Alessandro Ranellucci
edbdc5ec55 New automatic detection of additional required perimeters for better quality with domes and sloping walls. #198 2012-05-05 16:36:10 +02:00
Alessandro Ranellucci
abe048686b More distance between object and support material. #343 2012-05-04 20:37:51 +02:00
Alessandro Ranellucci
847cf3c5b8 Bugfix: when slicing the same plate multiple times, the results contained old and duplicate data 2012-05-02 15:20:05 +02:00
Alessandro Ranellucci
d59d4a2c55 Bugfix: infill every N layers was consuming large amounts of memory when used with models having sloping walls. #259 2012-05-01 18:51:47 +02:00
Alessandro Ranellucci
b457089a1e Bugfix: fatal error when using --debug 2012-05-01 12:09:46 +02:00
Alessandro Ranellucci
91d1b21c40 Use honeycomb pattern for support material 2012-04-30 23:50:38 +02:00
Alessandro Ranellucci
54e1d934a7 Fixed regression with support material 2012-04-30 23:36:49 +02:00
Alessandro Ranellucci
d03925a18d New GUI with plating facilities 2012-04-30 14:56:01 +02:00
Alessandro Ranellucci
ed4a5739f6 Multiple objects autoplating (--merge, from command line only) 2012-04-29 12:51:20 +02:00