New option for forcing the generation of interface shells. #1847

This commit is contained in:
Alessandro Ranellucci 2014-03-25 01:11:28 +01:00
parent 6feff7fe53
commit 432a87e73d
10 changed files with 72 additions and 19 deletions

View file

@ -433,6 +433,12 @@ class PrintConfigDef
Options["infill_speed"].aliases.push_back("print_feed_rate");
Options["infill_speed"].aliases.push_back("infill_feed_rate");
Options["interface_shells"].type = coBool;
Options["interface_shells"].label = "Interface shells";
Options["interface_shells"].tooltip = "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material.";
Options["interface_shells"].cli = "interface-shells!";
Options["interface_shells"].category = "Layers and Perimeters";
Options["layer_gcode"].type = coString;
Options["layer_gcode"].label = "Layer change G-code";
Options["layer_gcode"].tooltip = "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings.";
@ -934,6 +940,7 @@ class PrintObjectConfig : public virtual StaticConfig
ConfigOptionFloatOrPercent extrusion_width;
ConfigOptionFloatOrPercent first_layer_height;
ConfigOptionBool infill_only_where_needed;
ConfigOptionBool interface_shells;
ConfigOptionFloat layer_height;
ConfigOptionInt raft_layers;
ConfigOptionBool support_material;
@ -957,6 +964,7 @@ class PrintObjectConfig : public virtual StaticConfig
this->first_layer_height.value = 0.35;
this->first_layer_height.percent = false;
this->infill_only_where_needed.value = false;
this->interface_shells.value = false;
this->layer_height.value = 0.4;
this->raft_layers.value = 0;
this->support_material.value = false;
@ -978,6 +986,7 @@ class PrintObjectConfig : public virtual StaticConfig
if (opt_key == "extrusion_width") return &this->extrusion_width;
if (opt_key == "first_layer_height") return &this->first_layer_height;
if (opt_key == "infill_only_where_needed") return &this->infill_only_where_needed;
if (opt_key == "interface_shells") return &this->interface_shells;
if (opt_key == "layer_height") return &this->layer_height;
if (opt_key == "raft_layers") return &this->raft_layers;
if (opt_key == "support_material") return &this->support_material;

View file

@ -13,6 +13,7 @@ Surface::is_solid() const
{
return this->surface_type == stTop
|| this->surface_type == stBottom
|| this->surface_type == stBottomBridge
|| this->surface_type == stInternalSolid;
}
@ -20,13 +21,21 @@ bool
Surface::is_external() const
{
return this->surface_type == stTop
|| this->surface_type == stBottom;
|| this->surface_type == stBottom
|| this->surface_type == stBottomBridge;
}
bool
Surface::is_bottom() const
{
return this->surface_type == stBottom
|| this->surface_type == stBottomBridge;
}
bool
Surface::is_bridge() const
{
return this->surface_type == stBottom
return this->surface_type == stBottomBridge
|| this->surface_type == stInternalBridge;
}

View file

@ -5,7 +5,7 @@
namespace Slic3r {
enum SurfaceType { stTop, stBottom, stInternal, stInternalSolid, stInternalBridge, stInternalVoid };
enum SurfaceType { stTop, stBottom, stBottomBridge, stInternal, stInternalSolid, stInternalBridge, stInternalVoid };
class Surface
{
@ -19,6 +19,7 @@ class Surface
double area() const;
bool is_solid() const;
bool is_external() const;
bool is_bottom() const;
bool is_bridge() const;
#ifdef SLIC3RXS

View file

@ -17,6 +17,7 @@
double area();
bool is_solid() const;
bool is_external() const;
bool is_bottom() const;
bool is_bridge() const;
%{
@ -104,6 +105,7 @@ _constant()
ALIAS:
S_TYPE_TOP = stTop
S_TYPE_BOTTOM = stBottom
S_TYPE_BOTTOMBRIDGE = stBottomBridge
S_TYPE_INTERNAL = stInternal
S_TYPE_INTERNALSOLID = stInternalSolid
S_TYPE_INTERNALBRIDGE = stInternalBridge