Comparar commits

..

1 Commits

3 arquivos alterados com 57 adições e 47 exclusões
+55 -47
Ver Arquivo
@@ -25,7 +25,8 @@ private:
GCodePathConfig skirtConfig;
GCodePathConfig inset0Config;
GCodePathConfig insetXConfig;
GCodePathConfig fillConfig;
GCodePathConfig infillConfig;
GCodePathConfig skinConfig;
GCodePathConfig supportConfig;
public:
fffProcessor(ConfigSettings& config)
@@ -98,7 +99,8 @@ private:
skirtConfig.setData(config.printSpeed, config.extrusionWidth, "SKIRT");
inset0Config.setData(config.inset0Speed, config.extrusionWidth, "WALL-OUTER");
insetXConfig.setData(config.insetXSpeed, config.extrusionWidth, "WALL-INNER");
fillConfig.setData(config.infillSpeed, config.extrusionWidth, "FILL");
infillConfig.setData(config.infillSpeed, config.extrusionWidth, "FILL");
skinConfig.setData(config.skinSpeed, config.extrusionWidth, "FILL");
supportConfig.setData(config.printSpeed, config.extrusionWidth, "SUPPORT");
for(unsigned int n=1; n<MAX_EXTRUDERS;n++)
@@ -441,14 +443,16 @@ private:
skirtConfig.setData(SPEED_SMOOTH(config.printSpeed), extrusionWidth, "SKIRT");
inset0Config.setData(SPEED_SMOOTH(config.inset0Speed), extrusionWidth, "WALL-OUTER");
insetXConfig.setData(SPEED_SMOOTH(config.insetXSpeed), extrusionWidth, "WALL-INNER");
fillConfig.setData(SPEED_SMOOTH(config.infillSpeed), extrusionWidth, "FILL");
infillConfig.setData(SPEED_SMOOTH(config.infillSpeed), extrusionWidth, "FILL");
skinConfig.setData(SPEED_SMOOTH(config.skinSpeed), extrusionWidth, "SKIN");
supportConfig.setData(SPEED_SMOOTH(config.printSpeed), extrusionWidth, "SUPPORT");
#undef SPEED_SMOOTH
}else{
skirtConfig.setData(config.printSpeed, extrusionWidth, "SKIRT");
inset0Config.setData(config.inset0Speed, extrusionWidth, "WALL-OUTER");
insetXConfig.setData(config.insetXSpeed, extrusionWidth, "WALL-INNER");
fillConfig.setData(config.infillSpeed, extrusionWidth, "FILL");
infillConfig.setData(config.infillSpeed, extrusionWidth, "FILL");
skinConfig.setData(config.skinSpeed, extrusionWidth, "SKIN");
supportConfig.setData(config.printSpeed, extrusionWidth, "SUPPORT");
}
@@ -596,6 +600,49 @@ private:
else
gcodeLayer.setAlwaysRetract(true);
Polygons infillPolygons;
int fillAngle = 45;
if (layerNr & 1)
fillAngle += 90;
int extrusionWidth = config.extrusionWidth;
if (layerNr == 0)
extrusionWidth = config.layer0extrusionWidth;
if (config.sparseInfillLineDistance > 0)
{
switch (config.infillPattern)
{
case INFILL_AUTOMATIC:
generateAutomaticInfill(
part->sparseOutline, infillPolygons, extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
case INFILL_GRID:
generateGridInfill(part->sparseOutline, infillPolygons,
extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
case INFILL_LINES:
generateLineInfill(part->sparseOutline, infillPolygons,
extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
case INFILL_CONCENTRIC:
generateConcentricInfill(
part->sparseOutline, infillPolygons,
config.sparseInfillLineDistance);
break;
}
}
gcodeLayer.addPolygonsByOptimizer(infillPolygons, &infillConfig);
//sendPolygonsToGui("infill", layerNr, layer->z, fillPolygons);
if (config.insetCount > 0)
{
if (config.spiralizeMode)
@@ -613,56 +660,17 @@ private:
gcodeLayer.addPolygonsByOptimizer(part->insets[insetNr], &insetXConfig);
}
}
Polygons fillPolygons;
int fillAngle = 45;
if (layerNr & 1)
fillAngle += 90;
int extrusionWidth = config.extrusionWidth;
if (layerNr == 0)
extrusionWidth = config.layer0extrusionWidth;
Polygons skinPolygons;
for(Polygons outline : part->skinOutline.splitIntoParts())
{
int bridge = -1;
if (layerNr > 0)
bridge = bridgeAngle(outline, &storage.volumes[volumeIdx].layers[layerNr-1]);
generateLineInfill(outline, fillPolygons, extrusionWidth, extrusionWidth, config.infillOverlap, (bridge > -1) ? bridge : fillAngle);
generateLineInfill(outline, skinPolygons, extrusionWidth, extrusionWidth, config.infillOverlap, (bridge > -1) ? bridge : fillAngle);
}
if (config.sparseInfillLineDistance > 0)
{
switch (config.infillPattern)
{
case INFILL_AUTOMATIC:
generateAutomaticInfill(
part->sparseOutline, fillPolygons, extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
gcodeLayer.addPolygonsByOptimizer(skinPolygons, &skinConfig);
case INFILL_GRID:
generateGridInfill(part->sparseOutline, fillPolygons,
extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
case INFILL_LINES:
generateLineInfill(part->sparseOutline, fillPolygons,
extrusionWidth,
config.sparseInfillLineDistance,
config.infillOverlap, fillAngle);
break;
case INFILL_CONCENTRIC:
generateConcentricInfill(
part->sparseOutline, fillPolygons,
config.sparseInfillLineDistance);
break;
}
}
gcodeLayer.addPolygonsByOptimizer(fillPolygons, &fillConfig);
//sendPolygonsToGui("infill", layerNr, layer->z, fillPolygons);
//After a layer part, make sure the nozzle is inside the comb boundary, so we do not retract on the perimeter.
if (!config.spiralizeMode || static_cast<int>(layerNr) < config.downSkinCount)
+1
Ver Arquivo
@@ -43,6 +43,7 @@ ConfigSettings::ConfigSettings()
SETTING(infillOverlap, 15);
SETTING(infillSpeed, 50);
SETTING(infillPattern, INFILL_AUTOMATIC);
SETTING(skinSpeed, 50);
SETTING(supportType, SUPPORT_TYPE_GRID);
SETTING(supportAngle, -1);
+1
Ver Arquivo
@@ -156,6 +156,7 @@ public:
int infillOverlap;
int infillSpeed;
int infillPattern;
int skinSpeed;
//Support material
int supportType;