1300 {
1301
1303 {
1304
1306
1307 0.5f *
float(
scale_(print_config.nozzle_diameter.get_at(layerm.
region().
config().outer_wall_filament_id-1))),
1309
1310
1311 #if 0
1313
1314 for (
Polyline &polyline : overhang_perimeters)
1315 polyline.points[0].x += 1;
1316
1317 overhang_perimeters =
diff_pl(overhang_perimeters, lower_grown_slices);
1318 #else
1320 #endif
1321
1322
1323
1324
1325
1326
1327
1328
1331
1332
1333
1335 for (
Polyline &polyline : overhang_perimeters)
1336 if (polyline.is_straight()) {
1337
1338 polyline.extend_start(fw);
1339 polyline.extend_end(fw);
1340
1341 Point pts[2] = { polyline.first_point(), polyline.last_point() };
1342 bool supported[2] = { false, false };
1343 for (
size_t i = 0; i < lower_layer.
lslices.size() && ! (supported[0] && supported[1]); ++ i)
1344 for (int j = 0; j < 2; ++ j)
1345 if (! supported[j] && lower_layer.
lslices_bboxes[i].contains(pts[j]) && lower_layer.
lslices[i].contains(pts[j]))
1346 supported[j] = true;
1347 if (supported[0] && supported[1])
1348
1350 }
1351 bridges =
union_(bridges);
1352 }
1353
1354
1356 if (surface.surface_type ==
stBottomBridge && surface.bridge_angle >= 0.0)
1358
1359
1360
1361 bridges =
diff(bridges,
1362
1364
1366
1367 #ifdef SLIC3R_DEBUG
1368 static int iRun = 0;
1371 { {
union_ex(contact_polygons) }, {
"contact_polygons",
"blue", 0.5f } },
1373 #endif
1374 }
#define SUPPORT_MATERIAL_MARGIN
Definition PrintObject.cpp:5149
virtual Polylines as_polylines() const
Definition ExtrusionEntity.hpp:155
coord_t scaled_width() const
Definition Flow.hpp:64
coord_t scaled_spacing() const
Definition Flow.hpp:71
Flow bridging_flow(FlowRole role, bool thick_bridge=false) const
Definition LayerRegion.cpp:58
ExtrusionEntityCollection perimeters
Definition Layer.hpp:86
const PrintRegion & region() const
Definition Layer.hpp:52
SurfaceCollection fill_surfaces
Definition Layer.hpp:73
Layer * layer()
Definition Layer.hpp:50
Polylines unsupported_bridge_edges
Definition Layer.hpp:82
ExPolygons lslices
Definition Layer.hpp:170
std::vector< BoundingBox > lslices_bboxes
Definition Layer.hpp:172
PrintObject * object()
Definition Layer.hpp:143
Definition Polyline.hpp:25
const PrintObjectConfig & config() const
Definition Print.hpp:372
const PrintRegionConfig & config() const
Definition Print.hpp:154
static void export_expolygons(const char *path, const BoundingBox &bbox, const Slic3r::ExPolygons &expolygons, std::string stroke_outer="black", std::string stroke_holes="blue", coordf_t stroke_width=0)
Definition SVG.cpp:381
Surfaces surfaces
Definition SurfaceCollection.hpp:17
Slic3r::Polygons union_(const Slic3r::Polygons &subject)
Definition ClipperUtils.cpp:801
std::string debug_out_path(const char *name,...)
Definition utils.cpp:382
BoundingBox scaled(const BoundingBoxf &bb)
Definition BoundingBox.hpp:284
Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::Polygons &clip)
Definition ClipperUtils.cpp:1099
Slic3r::Polygons expand(const Slic3r::Polygon &polygon, const float delta, JoinType joinType=DefaultJoinType, double miterLimit=DefaultMiterLimit)
Definition ClipperUtils.hpp:397
std::vector< Polyline > Polylines
Definition Polyline.hpp:22
@ frPerimeter
Definition Flow.hpp:20
zaa_minimize_perimeter_height PrintObjectConfig
Definition PrintConfig.hpp:2183
Slic3r::ExPolygons union_ex(const Slic3r::Polygons &subject, PolyFillType fill_type)
Definition ClipperUtils.cpp:1011
@ Yes
Definition ClipperUtils.hpp:51
Slic3r::Polygons diff(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset)
Definition ClipperUtils.cpp:731