19d38f8498
Cherry-pick of 2e55898d78
Fix of an extremely slow bridging calculation, caused by an extremely
slow bridged area detection function, of which the results were never used.
Fixes "slicing fails or takes too long #5974"
119 lines
4.0 KiB
Plaintext
119 lines
4.0 KiB
Plaintext
%module{Slic3r::XS};
|
|
|
|
%{
|
|
#include <xsinit.h>
|
|
#include "libslic3r/Layer.hpp"
|
|
#include "libslic3r/ExPolygonCollection.hpp"
|
|
%}
|
|
|
|
%name{Slic3r::Layer::Region} class LayerRegion {
|
|
// owned by Layer, no constructor/destructor
|
|
|
|
Ref<Layer> layer();
|
|
Ref<PrintRegion> region();
|
|
|
|
Ref<SurfaceCollection> slices()
|
|
%code%{ RETVAL = &THIS->slices; %};
|
|
Ref<ExtrusionEntityCollection> thin_fills()
|
|
%code%{ RETVAL = &THIS->thin_fills; %};
|
|
Ref<SurfaceCollection> fill_surfaces()
|
|
%code%{ RETVAL = &THIS->fill_surfaces; %};
|
|
Ref<ExtrusionEntityCollection> perimeters()
|
|
%code%{ RETVAL = &THIS->perimeters; %};
|
|
Ref<ExtrusionEntityCollection> fills()
|
|
%code%{ RETVAL = &THIS->fills; %};
|
|
|
|
Clone<Flow> flow(FlowRole role, bool bridge = false, double width = -1)
|
|
%code%{ RETVAL = THIS->flow(role, bridge, width); %};
|
|
void prepare_fill_surfaces();
|
|
void make_perimeters(SurfaceCollection* slices, SurfaceCollection* fill_surfaces)
|
|
%code%{ THIS->make_perimeters(*slices, fill_surfaces); %};
|
|
double infill_area_threshold();
|
|
|
|
void export_region_slices_to_svg(const char *path) const;
|
|
void export_region_fill_surfaces_to_svg(const char *path) const;
|
|
void export_region_slices_to_svg_debug(const char *name) const;
|
|
void export_region_fill_surfaces_to_svg_debug(const char *name) const;
|
|
};
|
|
|
|
%name{Slic3r::Layer} class Layer {
|
|
// owned by PrintObject, no constructor/destructor
|
|
|
|
Ref<Layer> as_layer()
|
|
%code%{ RETVAL = THIS; %};
|
|
|
|
int id();
|
|
void set_id(int id);
|
|
Ref<PrintObject> object();
|
|
bool slicing_errors()
|
|
%code%{ RETVAL = THIS->slicing_errors; %};
|
|
coordf_t slice_z()
|
|
%code%{ RETVAL = THIS->slice_z; %};
|
|
coordf_t print_z()
|
|
%code%{ RETVAL = THIS->print_z; %};
|
|
coordf_t height()
|
|
%code%{ RETVAL = THIS->height; %};
|
|
|
|
size_t region_count();
|
|
Ref<LayerRegion> get_region(int idx);
|
|
Ref<LayerRegion> add_region(PrintRegion* print_region);
|
|
|
|
ExPolygonCollection* slices()
|
|
%code%{ RETVAL = new ExPolygonCollection(THIS->lslices); %};
|
|
|
|
int ptr()
|
|
%code%{ RETVAL = (int)(intptr_t)THIS; %};
|
|
|
|
Ref<SupportLayer> as_support_layer()
|
|
%code%{ RETVAL = dynamic_cast<SupportLayer*>(THIS); %};
|
|
|
|
void make_slices();
|
|
void backup_untyped_slices();
|
|
void restore_untyped_slices();
|
|
void make_perimeters();
|
|
void make_fills();
|
|
|
|
void export_region_slices_to_svg(const char *path);
|
|
void export_region_fill_surfaces_to_svg(const char *path);
|
|
void export_region_slices_to_svg_debug(const char *name);
|
|
void export_region_fill_surfaces_to_svg_debug(const char *name);
|
|
};
|
|
|
|
%name{Slic3r::Layer::Support} class SupportLayer {
|
|
// owned by PrintObject, no constructor/destructor
|
|
|
|
Ref<Layer> as_layer()
|
|
%code%{ RETVAL = THIS; %};
|
|
|
|
Ref<ExPolygonCollection> support_islands()
|
|
%code%{ RETVAL = &THIS->support_islands; %};
|
|
Ref<ExtrusionEntityCollection> support_fills()
|
|
%code%{ RETVAL = &THIS->support_fills; %};
|
|
|
|
// copies of some Layer methods, because the parameter wrapper code
|
|
// gets confused about getting a Layer::Support instead of a Layer
|
|
int id();
|
|
void set_id(int id);
|
|
Ref<PrintObject> object();
|
|
bool slicing_errors()
|
|
%code%{ RETVAL = THIS->slicing_errors; %};
|
|
coordf_t slice_z()
|
|
%code%{ RETVAL = THIS->slice_z; %};
|
|
coordf_t print_z()
|
|
%code%{ RETVAL = THIS->print_z; %};
|
|
coordf_t height()
|
|
%code%{ RETVAL = THIS->height; %};
|
|
|
|
size_t region_count();
|
|
Ref<LayerRegion> get_region(int idx);
|
|
Ref<LayerRegion> add_region(PrintRegion* print_region);
|
|
|
|
ExPolygonCollection* slices()
|
|
%code%{ RETVAL = new ExPolygonCollection(THIS->lslices); %};
|
|
|
|
void export_region_slices_to_svg(const char *path);
|
|
void export_region_fill_surfaces_to_svg(const char *path);
|
|
void export_region_slices_to_svg_debug(const char *name);
|
|
void export_region_fill_surfaces_to_svg_debug(const char *name);
|
|
};
|