Comparar commits
4 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 2e5b72cfef | |||
| 3aa638ea42 | |||
| edf2f897d1 | |||
| cacffadc61 |
@@ -190,7 +190,7 @@ private:
|
||||
{
|
||||
//Reporting the outline here slows down the engine quite a bit, so only do so when debugging.
|
||||
//sendPolygonsToGui("outline", layerNr, slicer->layers[layerNr].z, slicer->layers[layerNr].polygonList);
|
||||
sendPolygonsToGui("openoutline", layerNr, slicer->layers[layerNr].z, slicer->layers[layerNr].openPolygonList);
|
||||
sendPolygonsToGui("openoutline", layerNr, slicer->layers[layerNr].z, slicer->layers[layerNr].openPolygons);
|
||||
}
|
||||
}
|
||||
cura::log("Sliced model in %5.3fs\n", timeKeeper.restart());
|
||||
@@ -471,6 +471,7 @@ private:
|
||||
}
|
||||
}
|
||||
gcode.setZ(z);
|
||||
gcode.resetStartPosition();
|
||||
|
||||
bool printSupportFirst = (storage.support.generated && config.supportExtruder > 0 && config.supportExtruder == gcodeLayer.getExtruder());
|
||||
if (printSupportFirst)
|
||||
@@ -579,7 +580,7 @@ private:
|
||||
}
|
||||
|
||||
|
||||
PathOrderOptimizer partOrderOptimizer(gcode.getPositionXY());
|
||||
PathOrderOptimizer partOrderOptimizer(gcode.getStartPositionXY());
|
||||
for(unsigned int partNr=0; partNr<layer->parts.size(); partNr++)
|
||||
{
|
||||
partOrderOptimizer.addPolygon(layer->parts[partNr].insets[0][0]);
|
||||
|
||||
+13
-1
@@ -11,7 +11,7 @@
|
||||
namespace cura {
|
||||
|
||||
GCodeExport::GCodeExport()
|
||||
: currentPosition(0,0,0)
|
||||
: currentPosition(0,0,0), startPosition(INT32_MIN,INT32_MIN,0)
|
||||
{
|
||||
extrusionAmount = 0;
|
||||
extrusionPerMM = 0;
|
||||
@@ -129,6 +129,17 @@ Point GCodeExport::getPositionXY()
|
||||
return Point(currentPosition.x, currentPosition.y);
|
||||
}
|
||||
|
||||
void GCodeExport::resetStartPosition()
|
||||
{
|
||||
startPosition.x = INT32_MIN;
|
||||
startPosition.y = INT32_MIN;
|
||||
}
|
||||
|
||||
Point GCodeExport::getStartPositionXY()
|
||||
{
|
||||
return Point(startPosition.x, startPosition.y);
|
||||
}
|
||||
|
||||
int GCodeExport::getPositionZ()
|
||||
{
|
||||
return currentPosition.z;
|
||||
@@ -284,6 +295,7 @@ void GCodeExport::writeMove(Point p, int speed, int lineWidth)
|
||||
}
|
||||
|
||||
currentPosition = Point3(p.X, p.Y, zPos);
|
||||
startPosition = currentPosition;
|
||||
estimateCalculator.plan(TimeEstimateCalculator::Position(INT2MM(currentPosition.x), INT2MM(currentPosition.y), INT2MM(currentPosition.z), extrusionAmount), speed);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ private:
|
||||
double minimalExtrusionBeforeRetraction;
|
||||
double extrusionAmountAtPreviousRetraction;
|
||||
Point3 currentPosition;
|
||||
Point3 startPosition;
|
||||
Point extruderOffset[MAX_EXTRUDERS];
|
||||
char extruderCharacter[MAX_EXTRUDERS];
|
||||
int currentSpeed, retractionSpeed;
|
||||
@@ -67,6 +68,10 @@ public:
|
||||
|
||||
Point getPositionXY();
|
||||
|
||||
void resetStartPosition();
|
||||
|
||||
Point getStartPositionXY();
|
||||
|
||||
int getPositionZ();
|
||||
|
||||
int getExtruderNr();
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ namespace cura {
|
||||
|
||||
void createLayerWithParts(SliceLayer& storageLayer, SlicerLayer* layer, int unionAllType)
|
||||
{
|
||||
storageLayer.openLines = layer->openPolygonList;
|
||||
storageLayer.openLines = layer->openPolygons;
|
||||
|
||||
if (unionAllType & FIX_HORRIBLE_UNION_ALL_TYPE_B)
|
||||
{
|
||||
|
||||
@@ -44,6 +44,7 @@ OptimizedVolume::OptimizedVolume(SimpleVolume* volume, OptimizedModel* model)
|
||||
}
|
||||
if (f.index[0] != f.index[1] && f.index[0] != f.index[2] && f.index[1] != f.index[2])
|
||||
{
|
||||
/*
|
||||
//Check if there is a face with the same points
|
||||
bool duplicate = false;
|
||||
for(unsigned int _idx0 = 0; _idx0 < points[f.index[0]].faceIndexList.size(); _idx0++)
|
||||
@@ -59,11 +60,12 @@ OptimizedVolume::OptimizedVolume(SimpleVolume* volume, OptimizedModel* model)
|
||||
}
|
||||
if (!duplicate)
|
||||
{
|
||||
points[f.index[0]].faceIndexList.push_back(faces.size());
|
||||
points[f.index[1]].faceIndexList.push_back(faces.size());
|
||||
points[f.index[2]].faceIndexList.push_back(faces.size());
|
||||
faces.push_back(f);
|
||||
}
|
||||
*/
|
||||
points[f.index[0]].faceIndexList.push_back(faces.size());
|
||||
points[f.index[1]].faceIndexList.push_back(faces.size());
|
||||
points[f.index[2]].faceIndexList.push_back(faces.size());
|
||||
faces.push_back(f);
|
||||
//}
|
||||
}
|
||||
}
|
||||
//fprintf(stdout, "\rAll faces are optimized in %5.1fs.\n",timeElapsed(t));
|
||||
|
||||
+9
-18
@@ -11,6 +11,8 @@ namespace cura {
|
||||
|
||||
void SlicerLayer::makePolygons(OptimizedVolume* ov, bool keepNoneClosed, bool extensiveStitching)
|
||||
{
|
||||
Polygons openPolygonList;
|
||||
|
||||
for(unsigned int startSegment=0; startSegment < segmentList.size(); startSegment++)
|
||||
{
|
||||
if (segmentList[startSegment].addedToPolygon)
|
||||
@@ -261,19 +263,6 @@ void SlicerLayer::makePolygons(OptimizedVolume* ov, bool keepNoneClosed, bool ex
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
int q=0;
|
||||
for(unsigned int i=0;i<openPolygonList.size();i++)
|
||||
{
|
||||
if (openPolygonList[i].size() < 2) continue;
|
||||
if (!q) log("***\n");
|
||||
log("S: %f %f\n", float(openPolygonList[i][0].X), float(openPolygonList[i][0].Y));
|
||||
log("E: %f %f\n", float(openPolygonList[i][openPolygonList[i].size()-1].X), float(openPolygonList[i][openPolygonList[i].size()-1].Y));
|
||||
q = 1;
|
||||
}
|
||||
*/
|
||||
//if (q) exit(1);
|
||||
|
||||
if (keepNoneClosed)
|
||||
{
|
||||
for(unsigned int n=0; n<openPolygonList.size(); n++)
|
||||
@@ -282,8 +271,11 @@ void SlicerLayer::makePolygons(OptimizedVolume* ov, bool keepNoneClosed, bool ex
|
||||
polygonList.add(openPolygonList[n]);
|
||||
}
|
||||
}
|
||||
//Clear the openPolygonList to save memory, the only reason to keep it after this is for debugging.
|
||||
//openPolygonList.clear();
|
||||
for(unsigned int i=0;i<openPolygonList.size();i++)
|
||||
{
|
||||
if (openPolygonList[i].size() > 0)
|
||||
openPolygons.newPoly() = openPolygonList[i];
|
||||
}
|
||||
|
||||
//Remove all the tiny polygons, or polygons that are not closed. As they do not contribute to the actual print.
|
||||
int snapDistance = MM2INT(1.0);
|
||||
@@ -403,10 +395,9 @@ void Slicer::dumpSegmentsToHTML(const char* filename)
|
||||
}
|
||||
fprintf(f, "\"/>");
|
||||
fprintf(f, "</g>\n");
|
||||
for(unsigned int j=0; j<layers[i].openPolygonList.size(); j++)
|
||||
for(unsigned int j=0; j<layers[i].openPolygons.size(); j++)
|
||||
{
|
||||
PolygonRef p = layers[i].openPolygonList[j];
|
||||
if (p.size() < 1) continue;
|
||||
PolygonRef p = layers[i].openPolygons[j];
|
||||
fprintf(f, "<polyline marker-mid='url(#MidMarker)' points=\"");
|
||||
for(unsigned int n=0; n<p.size(); n++)
|
||||
{
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ public:
|
||||
|
||||
int z;
|
||||
Polygons polygonList;
|
||||
Polygons openPolygonList;
|
||||
Polygons openPolygons;
|
||||
|
||||
void makePolygons(OptimizedVolume* ov, bool keepNoneClosed, bool extensiveStitching);
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário