2013-07-16 18:09:53 +00:00
|
|
|
%module{Slic3r::XS};
|
|
|
|
|
|
|
|
%{
|
2015-12-07 23:39:54 +00:00
|
|
|
#include <xsinit.h>
|
2014-08-03 17:42:29 +00:00
|
|
|
#include "libslic3r/ClipperUtils.hpp"
|
2013-07-16 18:09:53 +00:00
|
|
|
%}
|
|
|
|
|
|
|
|
%package{Slic3r::Geometry::Clipper};
|
|
|
|
|
|
|
|
%{
|
|
|
|
|
2013-08-26 23:26:44 +00:00
|
|
|
IV
|
|
|
|
_constant()
|
|
|
|
ALIAS:
|
|
|
|
JT_MITER = jtMiter
|
|
|
|
JT_ROUND = jtRound
|
|
|
|
JT_SQUARE = jtSquare
|
|
|
|
CODE:
|
|
|
|
RETVAL = ix;
|
|
|
|
OUTPUT: RETVAL
|
|
|
|
|
2013-07-16 22:48:29 +00:00
|
|
|
Polygons
|
2021-04-23 09:02:16 +00:00
|
|
|
offset(polygons, delta, joinType = Slic3r::ClipperLib::jtMiter, miterLimit = 3)
|
2013-07-16 22:48:29 +00:00
|
|
|
Polygons polygons
|
|
|
|
const float delta
|
2021-04-23 09:02:16 +00:00
|
|
|
Slic3r::ClipperLib::JoinType joinType
|
2013-07-16 22:48:29 +00:00
|
|
|
double miterLimit
|
|
|
|
CODE:
|
2016-12-13 18:22:23 +00:00
|
|
|
RETVAL = offset(polygons, delta, joinType, miterLimit);
|
2013-07-16 22:48:29 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 18:09:53 +00:00
|
|
|
ExPolygons
|
2021-04-23 09:02:16 +00:00
|
|
|
offset2_ex(polygons, delta1, delta2, joinType = Slic3r::ClipperLib::jtMiter, miterLimit = 3)
|
2013-07-16 18:09:53 +00:00
|
|
|
Polygons polygons
|
|
|
|
const float delta1
|
|
|
|
const float delta2
|
2021-04-23 09:02:16 +00:00
|
|
|
Slic3r::ClipperLib::JoinType joinType
|
2013-07-16 18:09:53 +00:00
|
|
|
double miterLimit
|
|
|
|
CODE:
|
New ClipperUtils functions: opening(), closing() as an alternative
for offset2() with clear meaning.
New ClipperUtils functions: expand(), shrink() as an alternative
for offset() with clear meaning.
All offset values for the new functions are positive.
Various offsetting ClipperUtils (offset, offset2, offset2_ex) working
over Polygons were marked as unsafe, sometimes producing invalid output
if called for more than one polygon. These functions were reworked
to offset polygons one by one. The new functions working over Polygons
shall work the same way as the old safe ones working over ExPolygons,
but working with Polygons shall be computationally more efficient.
Improvements in FDM support generator:
1) For both grid and snug supports: Don't filter out supports for which
the contacts are completely reduced by support / object XY separation.
2) Rounding / merging of supports using the closing radius parameter is
now smoother, it does not produce sharp corners.
3) Snug supports: When calculating support interfaces, expand the projected
support contact areas to produce wider, printable and more stable interfaces.
4) Don't reduce support interfaces for snug supports for steep overhangs,
that would normally not need them. Snug supports often produce very
narrow support interface regions and turning them off makes the support
interfaces disappear.
2021-10-14 07:11:19 +00:00
|
|
|
RETVAL = offset2_ex(union_ex(polygons), delta1, delta2, joinType, miterLimit);
|
2013-07-16 18:09:53 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 23:21:30 +00:00
|
|
|
Polygons
|
|
|
|
diff(subject, clip, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
Polygons clip
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = diff(subject, clip, safety_offset ? ApplySafetyOffset::Yes : ApplySafetyOffset::No);
|
2013-07-16 23:21:30 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 18:29:15 +00:00
|
|
|
ExPolygons
|
|
|
|
diff_ex(subject, clip, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
Polygons clip
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = diff_ex(subject, clip, safety_offset ? ApplySafetyOffset::Yes : ApplySafetyOffset::No);
|
2013-07-16 23:21:30 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-11-21 13:15:38 +00:00
|
|
|
Polylines
|
|
|
|
diff_pl(subject, clip)
|
|
|
|
Polylines subject
|
|
|
|
Polygons clip
|
|
|
|
CODE:
|
2016-12-13 18:22:23 +00:00
|
|
|
RETVAL = diff_pl(subject, clip);
|
2014-05-08 09:07:37 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 23:21:30 +00:00
|
|
|
Polygons
|
|
|
|
intersection(subject, clip, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
Polygons clip
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = intersection(subject, clip, safety_offset ? ApplySafetyOffset::Yes : ApplySafetyOffset::No);
|
2013-07-16 18:29:15 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 22:29:09 +00:00
|
|
|
ExPolygons
|
|
|
|
intersection_ex(subject, clip, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
Polygons clip
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = intersection_ex(subject, clip, safety_offset ? ApplySafetyOffset::Yes : ApplySafetyOffset::No);
|
2013-07-16 22:29:09 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-08-17 10:24:04 +00:00
|
|
|
Polygons
|
|
|
|
union(subject, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = safety_offset ? union_safety_offset(subject) : union_(subject);
|
2013-08-17 10:24:04 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 22:29:09 +00:00
|
|
|
ExPolygons
|
|
|
|
union_ex(subject, safety_offset = false)
|
|
|
|
Polygons subject
|
|
|
|
bool safety_offset
|
|
|
|
CODE:
|
2021-05-05 11:27:00 +00:00
|
|
|
RETVAL = safety_offset ? union_safety_offset_ex(subject) : union_ex(subject);
|
2013-08-26 16:37:19 +00:00
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2013-07-16 18:09:53 +00:00
|
|
|
%}
|