diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index 40295574e..a59d65e41 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -289,7 +289,9 @@ std::string ExtrusionEntity::role_to_string(ExtrusionRole role) ss << "ExtrusionPath{"; for (int i = 0; i < path.polyline.points.size(); i++) { if (i != 0) ss << ","; - ss << "{"<<(int)(100 * unscale_(path.polyline.points[i].x())) << "," << (int)(100 * unscale_(path.polyline.points[i].y()))<<"}"; + double x = (mult * (path.polyline.points[i].x())); + double y = (mult * (path.polyline.points[i].y())); + ss << std::fixed << "{"<<(trunc?(int)x:x) << "," << (trunc ? (int)y : y) <<"}"; } ss << "}"; } @@ -297,7 +299,10 @@ void ExtrusionPrinter::use(const ExtrusionPath3D &path3D) { ss << "ExtrusionPath3D{"; for (int i = 0; i < path3D.polyline.points.size();i++){ if (i != 0) ss << ","; - ss << "{"<<(int)(100 * unscale_(path3D.polyline.points[i].x())) << "," << (int)(100 * unscale_(path3D.polyline.points[i].y())) << ":" << (path3D.z_offsets.size()>i ? unscale_(path3D.z_offsets[i]) : -1) <<"}"; + double x = (mult * (path3D.polyline.points[i].x())); + double y = (mult * (path3D.polyline.points[i].y())); + double z = (path3D.z_offsets.size() > i ? mult * (path3D.z_offsets[i]) : -1); + ss << std::fixed << "{" << (trunc ? (int)x : x) << "," << (trunc ? (int)y : y) << "," << (trunc ? (int)z : z) << "}"; } ss << "}"; } diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 97ade53b7..c487ea27f 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -535,7 +535,10 @@ inline void extrusion_entities_append_loops(ExtrusionEntitiesPtr &dst, Polygons class ExtrusionPrinter : public ExtrusionVisitorConst { std::stringstream ss; + double mult; + bool trunc; public: + ExtrusionPrinter(double mult = 0.0001, bool trunc = false) : mult(mult), trunc(trunc) { } virtual void use(const ExtrusionPath &path) override; virtual void use(const ExtrusionPath3D &path3D) override; virtual void use(const ExtrusionMultiPath &multipath) override;