Commit Graph

39 Commits

Author SHA1 Message Date
Vojtech Bubnik
576c167bd5 Ported "avoid crossing perimeters" and bridging unit tests from Perl
to C++.
Further reduced Perl bindings.
Got rid of the ExPolygonCollection wrapper, replaced with ExPolygons.
2022-05-04 18:21:08 +02:00
bubnikv
e90279c513 Ported the G-code generator from Perl to C++.
Removed GCode.pm
Removed the Perl bindigns for AvoidCrossingPerimeters, OozePrevention, SpiralVase, Wipe
Changed the std::set of extruder IDs to vector of IDs.
Removed some MSVC compiler warnings, removed obnoxious compiler warnings when compiling the Perl bindings.
2017-05-03 18:28:22 +02:00
bubnikv
ed2ee2f6f3 Merged support_fills with support_interface_fills.
When extruding supports, the support is interleaved with interface
if possible (when extruded with the same extruder).
Otherwise the base is extruded first.
2017-04-07 17:37:30 +02: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
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
Alessandro Ranellucci
4913e90e10 Remove any Perl related code from libslic3r 2015-12-08 00:39:54 +01:00
Alessandro Ranellucci
9a17efc480 Use GCodeWriter for path segments (refactoring) 2015-07-02 19:14:55 +02:00
Alessandro Ranellucci
b14290b9f6 Make tests happy 2015-07-02 14:29:20 +02:00
Alessandro Ranellucci
e0a3d2577c Initial work for 3D rendering of toolpaths 2015-01-15 20:06:30 +01:00
Alessandro Ranellucci
e79aa2e81c New --solid-infill-extruder option. Includes a refactoring of the strategy used to order layer extrusions according to their extruder and island; toolchanges and travel moves should be more optimized now. #618 2014-12-17 00:34:00 +01:00
Alessandro Ranellucci
6adc3477c9 Moved C++ code into new libslic3r directory 2014-08-03 19:42:29 +02:00
Alessandro Ranellucci
59f0e76da1 Distinct extrusion role for support material interface 2014-05-12 22:59:49 +02:00
Alessandro Ranellucci
69002b8ea2 No tests were covering randomize-start, which was not working anymore after recent ExtrusionLoop refactoring. #2028 2014-05-12 21:49:17 +02:00
Alessandro Ranellucci
76a8ec3d9e Replace to_SV_ref() and to_SV_clone_ref() with templated glue functions 2014-05-08 14:52:48 +02:00
Alessandro Ranellucci
c37ef2f18b New semantics for ExtrusionLoop objects. Early processing of perimeter overhangs for paralellizing such work and making G-code export lighter. Lots of refactoring. This should fix a number of minor bugs, including reversals of perimeter overhangs. 2014-05-08 11:07:37 +02:00
Petr Ledvina
028ef3a868 Add missing perlglue.hpp to xsp files
perlglue was missing in some xsp files. If file ordering ib XS.c is changed, header file could be missing. Maybe solves #2000
2014-05-02 14:08:44 +02:00
Alessandro Ranellucci
98e40d3fe4 Store width and height in ExtrusionEntity objects for debugging purposes 2014-04-29 23:16:16 +02:00
Y. Sapir
04fad70cbf Make C++ gcode generator use C++ Extruder object directly. 2014-04-27 23:43:43 +03:00
Petr Ledvina
115aa6885f Implement type checking for XS objects
Type handling is mainly done using templates.
Template Slic3r::ClassTraits is used to store info about exported types (perl class name). Currently only perl class name and refference name is used.
Template values are initialized by REGISTER_CLASS macro. This macro is used in .cpp file of class ( it needs to be used exactly for each type).

Ref<type> class is used to return value as perl reference. Operator overloading is used to make c++ and XSpp happy, only pointer value should be possible to return.

Clone<type> class is used to return copy of value ( using new and copy constructor). Copy is created on assigment, this should be probably improved (memory leak on multiple assignments).
It is overloaded to be able to return type, type* and type&.

Typechecking in ExtrusionEntityCollection updated to check all passed types.
2014-04-27 19:38:56 +02:00
Alessandro Ranellucci
ca4d4211c9 Refactored signatures of many C++ methods for more efficient and safer style. Includes a bugfix for Point::nearest_point() which was returning a pointer to freed memory. #1961 2014-04-24 16:40:10 +02:00
Y. Sapir
4deeff995a Move extrusion path gcode generation to C++ for speed. 2014-04-01 21:11:43 +03:00
Alessandro Ranellucci
7f5442265e Include thin walls in general top-level perimeter sorting to get more efficient paths 2014-03-09 20:19:30 +01:00
Alessandro Ranellucci
8ed738d3f7 More incomplete work for Flow/Extruder refactoring 2014-01-03 18:27:46 +01:00
Alessandro Ranellucci
518798beb3 Incomplete work for porting simplify() to XS 2013-11-21 20:25:24 +01:00
Alessandro Ranellucci
ac88fbcbb0 Ported clip_end(), length(), is_perimeter(), is_fill(), is_bridge() to XS 2013-11-21 18:03:40 +01:00
Alessandro Ranellucci
761f261a68 Ported intersect_expolygons() and subtract_expolygons() to XS 2013-11-21 17:53:50 +01:00
Alessandro Ranellucci
4dce461aaf Minor optimizations 2013-09-13 15:19:15 +02:00
Alessandro Ranellucci
27e7c6b9f7 Finished implementation of TriangleMesh->split 2013-09-09 22:27:58 +02:00
Alessandro Ranellucci
a49dc603cc Many changes and fixes to remove leaks and return objects by reference 2013-09-03 19:26:58 +02:00
Alessandro Ranellucci
c0789506e4 Return objects by reference instead of always cloning 2013-09-02 20:22:20 +02:00
Alessandro Ranellucci
dd70f6be2f Return ExtrusionPath->polyline and ExtrusionLoop->polygon by reference 2013-08-31 00:50:03 +02:00
Alessandro Ranellucci
5d6fd7f4d9 Optimizations for better usage of XS code 2013-08-29 01:36:42 +02:00
Alessandro Ranellucci
9fb14f2119 Ported (and used) ExtrusionPath->first_point 2013-08-26 23:42:00 +02:00
Alessandro Ranellucci
9458c7db97 Fix integration of XS containers 2013-07-16 17:13:01 +02:00
Alessandro Ranellucci
9b582a11ff Adopt XS containers everywhere (incomplete work) 2013-07-16 09:49:34 +02:00
Alessandro Ranellucci
ab6b3d41a7 XS interface completed, including new Line class 2013-07-15 22:57:22 +02:00
Alessandro Ranellucci
9af2a1c007 Use XS Point everywhere 2013-07-15 20:31:43 +02:00
Alessandro Ranellucci
d0701cdcd4 Implemented Slic3r::ExtrusionLoop 2013-07-15 16:21:09 +02:00
Alessandro Ranellucci
f612d4c64e Ported ExtrusionPath to XS. Failing test for Surface 2013-07-15 12:14:22 +02:00