Commit Graph
100 Commits
Author SHA1 Message Date
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
bubnikv 3e8cafa857 Fix of ASCII STL parser. Accept a model even with invalid normals. 2016-12-05 11:39:17 +01:00
bubnikv 330ffed87e Adjusted copyright header of the Perl GLShader module. 2016-12-02 11:19:27 +01:00
bubnikv 7e1af658b6 Initial experiments with vertex / fragment shaders,
prototype to visualize layer thickness.
2016-12-02 11:14:24 +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
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 a069c41b20 On Windows, load the icon either from the exe, or fron the ico file. 2016-11-20 14:22:26 +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
bubnikv 50f06a0fe8 Increased the gimbal lock threshold to 170 degrees from 150 degrees.
This makes it possible to look at the bottom of an object.
2016-11-16 09:24:27 +01:00
bubnikv e6d802a5ff Fixed a 64bit compatiblity in admesh, fixed a typo in TriangleMesh::swap() 2016-11-15 17:22:00 +01:00
bubnikv 7f1704b2ac Disabled live preview by default as it is not stable and/or the calculation takes too long for interactive usage. 2016-11-13 23:35:56 +01:00
bubnikv 9abe07852e Fixed https://github.com/prusa3d/Slic3r/issues/32 2016-11-12 23:20:49 +01:00
bubnikv 7ebc3b0884 Merge branch 'master' of https://github.com/prusa3d/Slic3r 2016-11-12 19:05:12 +01:00
bubnikv b116fe287c Fixes https://github.com/prusa3d/Slic3r/issues/32#issuecomment-260135542
Reverts an inadverent bug introduced in https://github.com/prusa3d/Slic3r/commit/4460b5ce50c7160cd922972a190c27bf4381ffbd
2016-11-12 19:04:40 +01:00
bubnikv c1af9bda0a Merge pull request #30 from hroncok/patch-1
Update the version
2016-11-11 15:51:58 +00:00
bubnikv 1070f0c0af New feature: Propose to enable "detect bridging perimeters"
when the supports are first enabled. Don't check keep asking,
if the user does not want the bridging perimeters to be enabled.
2016-11-11 15:05:39 +01:00
bubnikv f4ee87ba24 Fixed https://github.com/prusa3d/Slic3r/issues/27 2016-11-11 12:00:40 +01:00
bubnikv c2d5b32ee2 Changed the logic of the "ensure vertical wall thickness" feature
slightly by inflating the projected top/bottom/bottom bridge surfaces
before they are added into a surface. This ensures, that the possible
projected infill areas merge with the perimeter supporting areas,
but the perimeter supporting areas will not be inflated on their own,
if there is no touching projection of a top/bottom/bottom bridge
surface.
2016-11-11 11:13:36 +01:00
bubnikv 4460b5ce50 re-wrote PrintObject::detect_surfaces_type() to C++,
Fixed some cracks in the fill surfaces created by rounding all surfaces inside detect_surface_type().

Fixed https://github.com/prusa3d/Slic3r/issues/12
Bridging-Angle not optimal

Extended the "Ensure veritcal wall thickness" mode (merged with the original discover_horizontal_shells function), but this a work in progress. Already Slic3r with "ensure vertical wall thickness" produces less spurious infills inside solids.
2016-11-10 19:23:01 +01:00
bubnikv 317e9131e8 New sparse infill: "stars" - David's star shaped infill.
This is very similar to a "triangles" infill, but maximum two lines
intersect at a single point.

added utility function get_extents_vector()
2016-11-09 15:39:12 +01:00
bubnikv eb0ab38618 Fixes https://github.com/prusa3d/Slic3r/issues/26
Strange behavior of Extra perimeters and ensure wall thickness
Old behavior is re-enabled when ensure vertical wall thickness is off.
2016-11-09 10:24:45 +01:00
bubnikv e15b5f4587 Fix of https://github.com/prusa3d/Slic3r/issues/16
Crashes while switching in preview through layers with arrow keys

Also added a check box to visualize a single layer only
in the 3D path view. The check box may be toggled with a 'S' key.

Added shift+U / shift+D buttons in the 3D path view to show a single
layer only.
2016-11-08 17:13:16 +01:00
bubnikv e92501e51e Use a less aggressive positive offset for top/bottom/bridge surfaces,
when enlarging them for better anchoring.
2016-11-08 15:35:08 +01:00
bubnikv b8590180d8 Fix of https://github.com/prusa3d/Slic3r/issues/20
Slicing preview incorrect in terms of visible solid layers
2016-11-08 15:33:13 +01:00
bubnikv 443e900e07 Fixed compilation on Strawberry 2016-11-08 11:23:08 +01:00
bubnikv 5aacc6b015 Extended exit report when catching an exception under a broken
Strawberry Perl.
2016-11-08 11:15:09 +01:00
bubnikv 2e53c06159 Finished the SLIC3R_HAS_BROKEN_CROAK magic. 2016-11-08 10:59:43 +01:00
bubnikv eb61373b69 Compilation with an environment variable SLIC3R_HAS_BROKEN_CROAK set
will force the perl confess / croak called from a C++ code to
print an error message and exit. There is a bug in some Strawberry
Perl instalations leading to an interpreter hang up and an exit
with a reasonable message is better than that.
2016-11-08 10:49:32 +01:00
bubnikv 22ca927f12 Reworked the bridge detector to allow searching a single bridging
direction over multiple regions. This allows a single bridge to be
drawn over holes, which are too close to each other to allow
for separate bridges.
Fixes Bridging-Angle not optimal
https://github.com/prusa3d/Slic3r/issues/12

Re-allowed adaptive infill line width for solid infills. The adaptive
infill line width works in some circumstances, see Issue #15,
but the original implementation often changed the line width too
aggressively. The current implementation limits the line width change
to 20%.
Fixes Gaps between infill and perimeter leads to errors in laydown on following layer
https://github.com/prusa3d/Slic3r/issues/15
2016-11-08 09:59:25 +01:00
bubnikv 5a81731577 Implemented utility functions to operate over lines, polylines, polygons,
surfaces.
2016-11-07 22:49:11 +01:00
bubnikv aac968162b Unit test to verify whether Slic3r would hang when croaking from
a C++ exception handler. This is an unfortunate error in some
Strawberry Perl distributions.
2016-11-06 17:42:36 +01:00
bubnikv e9e55e7ac3 Fix missing cubic infill line, thanks @KoKuToru for pointing out the problem
and proposing a fix.
https://github.com/prusa3d/Slic3r/pull/18

Fixed a slight bug, where the infill did not take the complete area.
2016-11-06 16:03:13 +01:00
bubnikv bfb336df0c Refactored Print::validate() method to not throw an exception, but
to return a string with an error message instead. This was necessary
to avoid a hang-up on some Strawberry Perl distributions, when
a perl "croak" function is called after a C++ exception is caught.
2016-11-05 02:23:46 +01:00
bubnikv dfa3f8d597 Perl OpenGL 0.7 package causes crashes on many platforms.
Constrain compilation to Perl OpenGL version lower than 0.7.
https://github.com/alexrj/Slic3r/pull/3552/commits/897ca52654dd380d07de9f87cb36043cdc59db87
2016-11-04 23:23:01 +01:00
bubnikv 89cf29080b Fix of https://github.com/prusa3d/Slic3r/issues/14
A to_polygons(SurfacePtrs &&) method does not make sense as
the ownership of the Surfaces stored in the pointer array is not known.
Thanks to @flannelhead for precisely pinpointing this issue.
2016-11-04 17:20:32 +01:00
bubnikv 96a1c74d45 Let's hope to fix compilation on gcc. 2016-11-04 17:09:01 +01:00
bubnikv a10e9c6573 Fix of https://github.com/prusa3d/Slic3r/issues/13
The BoundingBox::defined flag was not set in constructor,
if initialized from min/max corners.
2016-11-04 16:49:08 +01:00
bubnikv 6217622865 Hopefully a fix of https://github.com/prusa3d/Slic3r/issues/11
Replaced eval { die } construct with a bool return value indicating
success or failure of an automatic arrangement of parts on the print bed.

Don't know exactly what is happening here, but throwing a "die" inside
a XS function and then catching it inside an eval {} block is suspcious.
2016-11-04 15:03:51 +01:00
bubnikv 3fc57ba8d8 Fixed compilation of the XS module with SLIC3R_GUI compilation flag
enabled, leading to a linkage of GL and GLU libraries.
https://github.com/prusa3d/Slic3r/issues/8
2016-11-04 01:06:26 +01:00
bubnikv 61d82b02b5 Improves https://github.com/prusa3d/Slic3r/issues/3
Limits the length of an infill connecting segment of a solid infill
to 3x the solid infill spacing.
2016-11-04 00:55:43 +01:00
bubnikv 483a658144 Method ExtrusionEntity::polygons_covered() and derived were split
into polygons_covered_by_width() and polygons_covered_by_spacing().

Bugfix of ExtrusionLoop::split_at(const Point &point),
where the split ExtrusionPaths were not initialised correctly.
2016-11-04 00:10:35 +01:00
bubnikv f278fa454e Merge pull request #10 from flannelhead/cpp11-fix
Fix compilation with C++11 and above
2016-11-03 19:10:45 +00:00
bubnikv 7b6b609df1 ExtrusionEntity and derived classes: Documented, short methods made
inline for efficiency and readability, grow() renamed to polygons_covered().
2016-11-03 10:24:32 +01:00
bubnikv 12b7818caa Only call wxWidgets method wxApp::SetAppDisplayName for wxWidgets 3.0
and newer.
2016-11-03 09:15:30 +01:00
bubnikv d530bdba67 Test of a 100% coverage by the FillRectilinear2 has been disabled before,
now also the expected number of tests executed has been adjusted accordingly.
2016-11-02 17:15:05 +01:00
bubnikv 28ccb51f9b Fixed a crash when accessing a non-existing config value from C++ infill.
Disabled a test case of 100% infill coverage. This needs to be
yet improved.
2016-11-02 16:55:56 +01:00
bubnikv a6cf6afb49 Missing #include <memory> 2016-11-02 11:13:13 +01:00
bubnikv 95ede7c4b8 Rewrote Fill2.pm to C++, deleted Perl infills for good.
Removed dependency on Perl Math::PlanePath module.
Fixed compilation with Visual Studio and SLIC3R_DEBUG: Visual Studio older than 2015 does not support the prinf type specifier %zu. Use %Iu instead.
C++11 move semantics enabled.
2016-11-02 10:47:00 +01:00
bubnikv 3a31d37d35 Fix of https://github.com/prusa3d/Slic3r/issues/5 :
missing #include <assert.h> in FillBase.hpp

Also disabled the automatic width adjustment in all the infills
by default for now.
2016-11-02 09:00:26 +01:00
bubnikv 36f51ff2bf Fixed a return value in the Config multi-string parser. 2016-11-01 14:52:44 +01:00
bubnikv 0264381f79 Missing include for memcpy for Linux. 2016-11-01 13:53:28 +01:00
bubnikv 3d3654707b Added "Notes" page to the filament configuration.
Added "filament_max_volumetric_speed", a cap on the maximum volumetric
extrusion role, filament specific. This is very useful when mixing
rigid filament with a soft filament.

Extended the import / export of multi-string values into configuration
values, including the test cases. Multi-line strings will be enclosed
into quotes, quotes escaped using a C-style escape sequences. Single
word strings could still be stored without quotes.
2016-11-01 13:41:24 +01:00
bubnikv 4e66ed81d2 Fixed the fill density for rectilinear, triangular and cubic infills.
Initial implementation of the "infill link maximum distance" feature.
Parts of the perimeter connecting two infill lines will be dropped,
if longer than a given threshold.
2016-10-27 17:03:57 +02:00
bubnikv 34fab1566f "Background slice now" function, initial implementation by @lordofhyphens
https://github.com/alexrj/Slic3r/pull/3501
2016-10-25 13:24:42 +02:00
bubnikv 34248c2fbf On Windows use the Slic3r.ico instead of the PNG file
for the application icon.
2016-10-24 18:05:26 +02:00
bubnikv 51c8d73b11 Fixed a division by zero in 3D scene, if there is nothing to show.
Improved Prusa3D icon.
2016-10-24 17:32:22 +02:00
bubnikv 741a85187c Suppress the '- default -' selection of Print/Filament/Printer settings
if there is any valid option available. This feature has been asked for
by the Prusa3D customers as the '- default -' option has nothing to do
with the actual printer and when selected accidentally, it could even
lead to a printer damage.
2016-10-24 16:07:36 +02:00
bubnikv 4524ecf66b by alexrj: Always convert strings to UTF-8 before passing them to XS 2016-10-24 14:08:22 +02:00
bubnikv 250ff451ba by alexrj: Fixes in GCodeSender to reset the connection after it breaks.
by alexrj: Fix in mouse handling of 2DBed.
by alexrj: ClipperUtils for ExPolygon vs. ExPolygon
2016-10-24 14:07:38 +02:00
bubnikv cc8b7390ee Make sure the shells for the "ensure verticall wall thickness" feature
are thick enough to be actually filled by the rectilinear fill.
Otherwise gaps would be left in the sparse infill, causing missing
bond to the perimeters.
2016-10-22 22:25:00 +02:00
bubnikv b28d31d0fe Fixes gaps created around the 3D honeycomb infill. The bug has been
introduced during the C++ porting of the original Perl code.
2016-10-22 21:31:39 +02:00
bubnikv 67c98eca5f Cleaned up the PNG headers of the icon files:
libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
2016-10-22 17:31:41 +02:00
bubnikv 3574d68465 Changed the icons to indicate this is not the alexrj build. 2016-10-22 17:15:42 +02:00
bubnikv 20cd34a3a5 Cubic infill. 2016-10-21 18:56:55 +02:00
bubnikv 1fb57e439e Defined the +-* operators on Pointf.
Removed the deprecated VibrationLimit feature.
Added triangle infill.
The Prusa3D fork of Slic3r has been marked as "Slic3r Prusa Edition"
with menus pointing to the prusa3d/slic3r github release page
and Prusa3D drivers downloads page.
2016-10-21 16:53:42 +02:00