Commit Graph

1083 Commits

Author SHA1 Message Date
bubnikv
29b986fa76 Improvement of the move semantics on various objects:
The source object will be empty after the move operation.
2017-01-20 14:39:44 +01:00
bubnikv
d5f9db76b3 Fix of an inconsistent bottom contact layer thickness
in case two and more bottom contact layers overlap after their extension.

New method modulate_extrusion_by_overlapping_layers() reduces thickness
of an extrusion path where it overlaps in Z with some other paths.

The same trick has yet to be applied to the layers overlapping in Z with
top contact surfaces.
2017-01-19 13:47:06 +01:00
bubnikv
0b90ebd74e Move semantics on MultiPoint, Polygon, Polyline.
Append methods on Polyline.
squared length function on point->DistanceTo
2017-01-19 13:43:29 +01:00
bubnikv
50cdf8e6d1 Move semantics for ExtrusionEntityCollection 2017-01-19 13:37:15 +01:00
bubnikv
e016c4e423 New extrusion class: ExtrusionMultiPath
This is similar to an ExtrusionLoop, but it is open.
It may contain multiple chained paths with differing parameters.
This allows one to have a hierarchy of paths, where the ExtrusionEntityCollection
will be chained by the G-code generator, but ExtrusionMultiPath will not.
2017-01-19 13:35:55 +01:00
bubnikv
e6b441eea4 Merge branch 'master' of https://github.com/prusa3d/Slic3r 2017-01-16 10:57:06 +01:00
bubnikv
4eed07bbab Fix of the 1st support layer. 2017-01-16 10:56:40 +01:00
Eyal Soha
b851e04c17 Change char to int
char might be signed or unsigned but int is definitely signed.  This fixes prusa3d/Slic3r#93 .
2017-01-12 11:30:14 +02:00
Eyal Soha
0db4be56a5 use int instead of char 2017-01-12 10:05:59 +02:00
bubnikv
41fbec9063 Only synchronize intermediate layers if explicitely asked for. 2017-01-11 18:05:03 +01:00
bubnikv
f0cf7adf84 Bugfix of a new support - first layer thickness of the support. 2017-01-11 17:22:28 +01:00
bubnikv
c2ba5901e4 Copy / move assign operators for ExPolygon. 2017-01-11 14:38:24 +01:00
bubnikv
c632d08550 Only compile debug output functions for SupportGenerator if SLIC3R_DEBUG is enabled. 2017-01-11 14:37:53 +01:00
bubnikv
87964eb57a Move semantics for the ExPolygon constructor. 2017-01-11 13:44:11 +01:00
bubnikv
bd3daeed5a Slightly more efficient PrintObject Layer destruction. 2017-01-11 13:43:33 +01:00
bubnikv
fa1506c833 Bugfix of duplicate support print paths. 2017-01-11 13:42:41 +01:00
bubnikv
d9ea3df85f Another step to make the new C++ supports working.
Added support_material_xy_spacing configuration.
2017-01-05 09:14:59 +01:00
bubnikv
1ba03af2da Made the config value support_material_xy_spacing relative
to the external perimeter width.
2017-01-05 09:12:24 +01:00
bubnikv
bbdaa44acb Const version of a PrintObject::get_region(). Made get_region() inline. 2017-01-05 09:11:36 +01:00
bubnikv
b42c5d6dfa Extended the SVG exporting class with export_expolygons()
calculating the contour bounds internally.
2017-01-05 09:10:16 +01:00
bubnikv
aad3d4107f Improved debugging of the EdgeGrid distance field function. 2017-01-05 09:09:26 +01:00
slicer-builder
bb22f1dc8a prototyping tweakable XY supports;
option should be present now in advanced support menu.
Can't figure out what's going on atm; support should be moving but isn't
2017-01-03 11:46:52 +01:00
bubnikv
07dd06c53c Merge remote-tracking branch 'origin/supports-synchronize-layers' 2017-01-03 10:51:23 +01:00
bubnikv
7a2572a0fb Improved debugging of "ensure vertical wall thickness" feature. 2017-01-03 10:51:19 +01:00
bubnikv
17db5bff8d Fix of
Number of solid top/bottom layers ignored,
Ensure Vertical Shell Thickness interferes with solid top layer count
https://github.com/prusa3d/Slic3r/issues/79
https://github.com/prusa3d/Slic3r/issues/60
2017-01-02 16:51:43 +01:00
bubnikv
479f716625 Improvements in the manual layer width editor. 2016-12-21 16:00:41 +01:00
bubnikv
955bc957ba New supports now do rafts at least to the extent the test cases run through.
New supports enabled, old supports will go away soon.
2016-12-20 12:19:13 +01:00
bubnikv
6400cec7ae Merge branch 'master' into dev 2016-12-15 12:54:34 +01:00
bubnikv
c1f4d06be2 define -DBOOST_LOG_DYN_LINK for boost::log 2016-12-15 09:46:41 +01:00
bubnikv
56e87e3bdb Set BOOST_LOG_DYN_LINK symbol when linking with dynamic boost libraries. 2016-12-14 16:51:27 +01:00
bubnikv
a870b69733 Fixed static linking against boost. 2016-12-14 15:43:26 +01:00
bubnikv
ae2e37b4bd Added diagnostics of @LIBS, @INCS to the Build.PL
Extended MANIFEST with new files.
2016-12-13 22:46:28 +01:00
bubnikv
2cd96cabcd Another take to get rid of the templates from the ClipperUtil.hpp
to compile cleanly on OSX.
2016-12-13 22:13:02 +01:00
bubnikv
852b542913 Had troubles with the template instantiation on OSX, so I reverted
them to overloaded functions. This is certainly easier to read and
work with anyway.
2016-12-13 21:30:56 +01:00
bubnikv
ddea33d93a Fixed compilation of ClipperUtils on GCC, which is more strict
than VS2013 compiler.
2016-12-13 19:52:28 +01:00
bubnikv
e64dcf5e59 VS2013 could compile this, let's hope GCC will as well. 2016-12-13 19:39:20 +01:00
bubnikv
6582182e0c Adapted to the new ClipperUtils.hpp interface by @alexrj 2016-12-13 19:22:23 +01:00
bubnikv
b2a5a1d22f Added a move constructor / assignment operator to the old Clipper library
PolyTree class.
2016-12-13 18:59:18 +01:00
bubnikv
e22d007ab7 Fixed typo, missing class name. 2016-12-12 23:46:50 +01:00
bubnikv
06540f73f7 Try to fix compilation problems due to Perl crazy macros. 2016-12-12 19:13:33 +01:00
bubnikv
ce7717e450 Fix compilation on Linux. 2016-12-12 18:59:35 +01:00
bubnikv
e5b77e08de Perl crazy macros strike again, they collide with boost threads. 2016-12-12 18:55:04 +01:00
bubnikv
1ea958158a Support for user definable variable layer thickness, the C++ backend. 2016-12-12 17:53:38 +01:00
bubnikv
2ab86a4895 ConfigOptionVector::get_at(idx)
Avoid using exceptons for normal work flow. Assert if the vector is empty.
2016-12-12 15:56:42 +01:00
bubnikv
d775c6c14c Added methods set/add to SurfaceCollection. 2016-12-12 15:54:37 +01:00
bubnikv
333a0b1c0e Shortcuts for zero mesh transformations. 2016-12-12 15:52:04 +01:00
bubnikv
933a0db9ed Minor fix of bridging flow, see @alexrj 3a3b24ec7c803c58919a5401e5804261999875b4 2016-12-12 15:33:14 +01:00
bubnikv
126126cc78 Fixes after the merge of changes by @alexrj. 2016-12-08 19:02:16 +01:00
bubnikv
5d18657ac5 Don't be lazy, use fully qualified Slic3r::Polygon/ExPolygon/Point/Line names 2016-12-08 15:16:09 +01:00
Alessandro Ranellucci
24e0b568b5 Fix compilation, cherry picked from @alexrj fde6e2e61deabd097a3bf565d4948077147b25ab 2016-12-08 15:01:36 +01:00
Alessandro Ranellucci
a26330a292 Try to fix compilation problem with Boost 1.54. #3595 2016-12-08 14:56:13 +01:00
Joseph Lenox
a8930f12cd Fix perl redefining multiple functions also defined/used by boostlib through the include chain. (#3593)
Resolved ordering dependency (thanks win32 perl!)
2016-12-08 14:53:52 +01:00
Alessandro Ranellucci
5dc8a0808e Maybe the Travis CI server has more than 16 cores? 2016-12-08 14:52:42 +01:00
Alessandro Ranellucci
d8082b9db4 Try to fix compilation error about the new threads default 2016-12-08 14:52:15 +01:00
Alessandro Ranellucci
9e8dae817d Fixes and improvements to the view selection menu, cherry picked from @alexrj a7693c4719c0e0e0129aea7461706d2ed53a52cc 2016-12-08 14:51:35 +01:00
Alessandro Ranellucci
d628764da6 Minor fixes to parallelize code, cherry picked from @alexrj 5242b3e03ab2b195ba9c7c53fba705a8ed1c7abd 2016-12-08 14:44:03 +01:00
Alessandro Ranellucci
73ddd3b438 Refactored parallelization code, cherry picked from @alexrj 36789774471a0bf9a66bb33cc3ab6984f8ede8c6 2016-12-08 14:40:47 +01:00
Alessandro Ranellucci
9fbd135f14 Automatically detect the number of cores and use that as a default for threads number 2016-12-08 14:28:36 +01:00
Alessandro Ranellucci
70a9de085b Parallelize TriangleMeshSlicer::slice(), cherry picked from @alexrj 83ad123d951c6ee663d2f3b02e095c203ca794e7 2016-12-08 14:28:09 +01:00
Alessandro Ranellucci
e9290252d6 Fixed regression in the _make_perimeters port 2016-12-08 14:25:05 +01:00
Alessandro Ranellucci
86c8207d31 Ported make_perimeters() and infill() to C++/XS, use pure C++ threads, cherry picked from @alexrj 66591bcc556c01572ec7519b1f8cb4ee2d430685 2016-12-08 14:24:40 +01:00
bubnikv
3e8cafa857 Fix of ASCII STL parser. Accept a model even with invalid normals. 2016-12-05 11:39:17 +01:00
bubnikv
26a8017e99 Made the support interface contact loops configurable. 2016-11-30 17:33:55 +01:00
bubnikv
556204fddc support_material_synchronize_layers configuration value
for synchronization of object layers with print layers.
2016-11-30 16:04:15 +01:00
bubnikv
946b36bb4d Supports using the EdgeGrid simplify_contour 2016-11-29 19:30:59 +01:00
bubnikv
1d44e92a6e Point dot operator and PointHash object for std unique_xxx functions. 2016-11-29 19:29:24 +01:00
bubnikv
5c23ee504c EdgeGrid::contours_simplified for supports 2016-11-29 19:28:33 +01:00
bubnikv
ca5ad58ad2 logging of slicing process 2016-11-29 19:27:23 +01:00
bubnikv
85aa802d4b Fix of the last clipperutil safety_offset modification. Handle safety
offset of holes separately, don't forget to reverse them before / after.
2016-11-29 19:26:26 +01:00
bubnikv
792856a505 Bounding Box - new method align_to_grid 2016-11-29 19:25:10 +01:00
Bill Waggoner
50fe691604 Squashed commit of the following:
commit 7fc66514bf3fbcc2c2709a4eb94856fa9b3ba523
Author: Bill Waggoner <ctgreybeard@gmail.com>
Date:   Mon Nov 28 14:09:09 2016 -0500

    Build.pl fails to find boost libraries

commit 3fa66c4970eb2235aa57041a5a318ddcb1910219
Author: Bill Waggoner <ctgreybeard@gmail.com>
Date:   Mon Nov 28 14:00:07 2016 -0500

    Build.pl fails to find boost correctly

Signed-off-by: Bill Waggoner <ctgreybeard@gmail.com>
2016-11-28 14:28:50 -05:00
bubnikv
bde2ee6a7e Step forward in the C++ supports. 2016-11-28 17:36:50 +01:00
bubnikv
8b0784f26c Added a free "cross product" function to Pointf (thinking the Pointf is
really a vector in this case).

Made the == operator inline.
2016-11-28 17:34:52 +01:00
bubnikv
695c92fb00 CLIPPER_OFFSET_SCALE was made a power of two, the scaling functions
inside ClipperUtils are now using bit shifts instead of multiplication
by doubles, which makes the scaling precise.

Removed the scale parameter from all offset functions.

Modified the safety offset to calculate offset per polygon instead
of over all polygons at once. The old way was not safe and very slow,
sometimes this meant a kiss of death for supports for example.
2016-11-28 17:33:17 +01:00
bubnikv
e93253e270 Extended tracing of Support generator 2016-11-24 15:38:19 +01:00
bubnikv
a5b04d5cf3 Support calculation optimized. 2016-11-24 15:05:05 +01:00
bubnikv
e02755632e new Utils.hpp 2016-11-24 14:05:06 +01:00
bubnikv
0d20a81354 Log support through boost::log 2016-11-24 13:44:51 +01:00
bubnikv
e67e37c772 Supports: Disabled debugging,fix of bottom surface over print. 2016-11-24 11:29:31 +01:00
bubnikv
14df0717ca Fix of new suports. 2016-11-24 10:43:47 +01:00
bubnikv
d8be4de6cf One step further to the C++ Supports. 2016-11-23 15:51:47 +01:00
bubnikv
1a1eaa0810 increased version number. 2016-11-20 23:06:56 +01:00
bubnikv
39679f9518 Missed this one at the last check-in. 2016-11-20 12:59:29 +01:00
bubnikv
ef69474636 Optimized Layer::merge_slices()
Don't merge classified pieces of layerm->slices, but use the non-split
islands of a layer. For a single region print, these shall be equal.

Added Slic3r-console.ico windows icon for the console Slic3r.
This is a copy of the big icon, with the big images stripped off.
2016-11-20 12:38:59 +01:00
bubnikv
79f5a16536 Reverted the perimeter generator to not save the perimeter areas.
These could be calculated from the fill areas if needed.
On the other side, the non-classified (non-split) fill areas are stored
now for use in the "ensure vertical wall thickness" feature,
also the non-split fill areas are re-used when recalculating the infills.
This is safer than trying to stitch the fill region together from the
classified fragments.

Modified the "ensure vertical wall thickness" feature to use the non-split
fill areas instead of perimeter areas for the calculation
of non-supported regions. This is cheaper as the fill areas contain
roughly half the edges.
2016-11-17 23:22:59 +01:00
bubnikv
2085a482c7 admesh: Fixed a problem in loading an STL when compiled with
Visual Studio 2013. Added multiple compile time checks for data
sizes and alignment. The library STL import is not big endian safe, so
added a test for endianity, modified STL export to a faster little endian only.
2016-11-17 16:57:58 +01:00
bubnikv
9772584d78 Tame the Shiny profiler. Make it switchable with define SLIC3R_PROFILE. 2016-11-16 23:11:51 +01:00
bubnikv
3d47c52b47 In "ensure vertical wall thickness", the union_ is called each time
a new layer is added to the shell. This is faster than calling union_
over all collected polygons. Also security offset has been disabled.
2016-11-16 22:16:20 +01:00
bubnikv
6a3bdf43dc ClipperUtils extended with intrusive profiling macros.
offset2() was exteded with a shortcut, if both offset directions
are of the same direction.
2016-11-16 22:12:58 +01:00
bubnikv
bcda69c1e5 Extended the Build.PL to understand an environment variable
SLIC3R_PROFILE to set the C++ symbol of the same name to enable
Shiny profiler.
2016-11-16 22:10:04 +01:00
bubnikv
c3af189045 Reduced some compiler warnings. 2016-11-16 22:09:00 +01:00
bubnikv
901ec0ad37 Disable includes inside Shiny sources when SLIC3R_PROFILE symbol is not defined. 2016-11-16 22:04:38 +01:00
bubnikv
bfbe85b5c2 Some optimization of the "ensure vertical wall thickness" feature. 2016-11-16 18:04:47 +01:00
bubnikv
e857833a91 Undef seed macro because of crazy perl macro substitutions. 2016-11-16 13:19:48 +01:00
bubnikv
a36cc6491c Fixed compilation of XS modules by undefinig the "seed" macro
redefined crazily by Perl.
2016-11-16 13:14:42 +01:00
bubnikv
1589ffb224 Fix for compilation on Strawberry Perl with C++11 enabled. 2016-11-16 13:06:51 +01:00
bubnikv
68e9ec0d41 Set the C++ version to C++11 for all compilers but Visual Studio C++. 2016-11-16 13:00:36 +01:00
bubnikv
4c407c8a59 Optimization of Model bounding box routines (avoids copying the mesh),
optimization of the admesh rotate function (also made numerically more robust).
2016-11-16 11:53:29 +01:00
bubnikv
52de3940fe Improvements of admesh robustness when loading and fixing STLs.
https://github.com/prusa3d/Slic3r/issues/33
2016-11-16 10:33:23 +01:00
bubnikv
d1d6e907c5 Positive and negative zeros are possible in the floats, which are considered equal by the FP unit.
When using a memcmp on raw floats, those numbers report to be different.
Unify all +0 and -0 to +0 to make the floats equal under memcmp.
2016-11-16 09:31:18 +01:00