Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve ExtrusionLine::simplify, eliminating many very-short extrusion segments which led to blemishes in thin-wall models sliced with Arachne #3014

Merged
merged 4 commits into from
Dec 15, 2023

Conversation

sethml
Copy link
Contributor

@sethml sethml commented Dec 5, 2023

This change makes ExtrusionLine::simplify() able to remove more very-short segments, which arachne seems to tend to produce frequently on thin-walled models with curvature. Interestingly, Cura does not seem to have this problem. From what I can see, when Arachne was ported over from Cura, a significant amount of logic was added to polyline simplification, but some of that logic was flawed. In particular, the simplification code in Cura seems to be in PolygonRef::simplify(), but during porting logic was added to avoid removing a point prior to a long segment and instead replace the two prior points with the intersection of the prior and next segments, but only if that intersection does not move the points too much. Unfortunately that test compared the intersection to the point at the other end of the long segment, thus the length test would always fail and the point would never be removed.

I made the following changes:

  • When considering replacing two points with the intersection of the adjoining segments, test the distance between the intersection and the two points prev and current, rather than prev and next. This change removes most extrusion blemishes around the perimeter.
  • For a closed polygon, allow removing the first/last point (which are the same). This can remove a single extrusion blemish per perimeter. In order to do so, we consider removing the last point, and pull the next and next_next points from the second and third points of the newly-filtered path.

While working with this code I noticed a few potential issues/future improvements:

  • As points are removed or replaced, their width is not updated. In most cases this probably results in negligible errors. However, I could imagine that if a point is removed between two nearly-collinear long segments and the segments have different widths, significant error could be introduced. Consider either not merging segments with significant width differences, and/or updating widths with a length-weighted average when merging segments.
  • Why is arachne generating so many nearly-zero-length segments in the first place? Consider changing it to no longer do so. Given that the nearly-zero-length segments seem to have a slightly different width than neighboring segments, I suspect that whatever heuristics arachne uses to determine width are generating these.
  • The logic in ExtrusionLine::simplify is pretty complex and challenging to reason about. Perhaps going back to simpler simplification logic such as Cura uses would produce more consistent results.

I believe this fixes #2840. Here's a photo of the model from that issue with this change:
PXL_20231205_231056828

@sethml
Copy link
Contributor Author

sethml commented Dec 5, 2023

Note: I submitted a pull request upstream as well: prusa3d/PrusaSlicer#11811

Point intersection_point;
bool has_intersection = Line(previous_previous.p, previous.p).intersection_infinite(Line(current.p, next.p), &intersection_point);
if (!has_intersection
|| Line::distance_to_infinite_squared(intersection_point, previous.p, current.p) > double(allowed_error_distance_squared)
|| (intersection_point - previous.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared // The intersection point is way too far from the 'previous'
|| (intersection_point - next.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared) // and 'next' points, so it shouldn't replace 'current'
|| (intersection_point - current.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared) // and 'current' points, so it shouldn't replace 'current'
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change makes sense to me.

@SoftFever
Copy link
Owner

it looks like the closed loop is still causing troubles:

image

@sethml
Copy link
Contributor Author

sethml commented Dec 8, 2023

it looks like the closed loop is still causing troubles:

Can you provide your .3mf for that?

There are still cases when the intersection distance test on line 139 decides not to discard points and leaves short segments, just many fewer than before. I could investigate more under what conditions that happens and see if we can fix them.

@SoftFever
Copy link
Owner

it looks like the closed loop is still causing troubles:

Can you provide your .3mf for that?

There are still cases when the intersection distance test on line 139 decides not to discard points and leaves short segments, just many fewer than before. I could investigate more under what conditions that happens and see if we can fix them.

I'm using the project you attached.Sphere-Shell.3mf.zip
At layer 60. It looks like a edge case where the first line segment is tiny segment.
Screenshot 2023-12-09 at 10 18 08 AM

@sethml
Copy link
Contributor Author

sethml commented Dec 9, 2023

it looks like the closed loop is still causing troubles:

Can you provide your .3mf for that?
There are still cases when the intersection distance test on line 139 decides not to discard points and leaves short segments, just many fewer than before. I could investigate more under what conditions that happens and see if we can fix them.

I'm using the project you attached.Sphere-Shell.3mf.zip

Oh, oops, I confused myself about which .3mf I uploaded with the bug report!

At layer 60. It looks like a edge case where the first line segment is tiny segment.

Hmm, I ran this with some debugging output, and I see the tiny segment in the gcode for layer 60, but the perimeter data for the layer doesn't seem to contain it. Here's my debugging data for layer 60:

BEFORE ExtrusionLine::simplify on 109 points:
  0: -48.172, 0.000, w 0.369, len 0.000
  1: -48.171, 0.016, w 0.368, len 0.016
  2: -47.442, 8.349, w 0.368, len 8.365
  3: -47.440, 8.365, w 0.369, len 0.016
  4: -47.436, 8.381, w 0.368, len 0.016
  5: -45.271, 16.460, w 0.368, len 8.365
  6: -45.267, 16.476, w 0.369, len 0.016
  7: -45.260, 16.490, w 0.368, len 0.016
  8: -41.725, 24.071, w 0.368, len 8.365
  9: -41.718, 24.086, w 0.369, len 0.016
  10: -41.709, 24.099, w 0.368, len 0.016
  11: -36.911, 30.951, w 0.368, len 8.365
  12: -36.902, 30.964, w 0.369, len 0.016
  13: -36.890, 30.976, w 0.368, len 0.016
  14: -30.976, 36.890, w 0.368, len 8.365
  15: -30.964, 36.902, w 0.369, len 0.016
  16: -30.951, 36.911, w 0.368, len 0.016
  17: -24.099, 41.709, w 0.368, len 8.365
  18: -24.086, 41.718, w 0.369, len 0.016
  19: -24.071, 41.725, w 0.368, len 0.016
  20: -16.490, 45.260, w 0.368, len 8.365
  21: -16.476, 45.267, w 0.369, len 0.016
  22: -16.460, 45.271, w 0.368, len 0.016
  23: -8.381, 47.436, w 0.368, len 8.365
  24: -8.365, 47.440, w 0.369, len 0.016
  25: -8.349, 47.442, w 0.368, len 0.016
  26: -0.016, 48.171, w 0.368, len 8.365
  27: 0.000, 48.172, w 0.369, len 0.016
  28: 0.016, 48.171, w 0.368, len 0.016
  29: 8.349, 47.442, w 0.368, len 8.365
  30: 8.365, 47.440, w 0.369, len 0.016
  31: 8.381, 47.436, w 0.368, len 0.016
  32: 16.460, 45.271, w 0.368, len 8.365
  33: 16.476, 45.267, w 0.369, len 0.016
  34: 16.490, 45.260, w 0.368, len 0.016
  35: 24.071, 41.725, w 0.368, len 8.365
  36: 24.086, 41.718, w 0.369, len 0.016
  37: 24.099, 41.709, w 0.368, len 0.016
  38: 30.951, 36.911, w 0.368, len 8.365
  39: 30.964, 36.902, w 0.369, len 0.016
  40: 30.976, 36.890, w 0.368, len 0.016
  41: 36.890, 30.976, w 0.368, len 8.365
  42: 36.902, 30.964, w 0.369, len 0.016
  43: 36.911, 30.951, w 0.368, len 0.016
  44: 41.709, 24.099, w 0.368, len 8.365
  45: 41.718, 24.086, w 0.369, len 0.016
  46: 41.725, 24.071, w 0.368, len 0.016
  47: 45.260, 16.490, w 0.368, len 8.365
  48: 45.267, 16.476, w 0.369, len 0.016
  49: 45.271, 16.460, w 0.368, len 0.016
  50: 47.436, 8.381, w 0.368, len 8.365
  51: 47.440, 8.365, w 0.369, len 0.016
  52: 47.442, 8.349, w 0.368, len 0.016
  53: 48.171, 0.016, w 0.368, len 8.365
  54: 48.172, 0.000, w 0.369, len 0.016
  55: 48.171, -0.016, w 0.368, len 0.016
  56: 47.442, -8.349, w 0.368, len 8.365
  57: 47.440, -8.365, w 0.369, len 0.016
  58: 47.436, -8.381, w 0.368, len 0.016
  59: 45.271, -16.460, w 0.368, len 8.365
  60: 45.267, -16.476, w 0.369, len 0.016
  61: 45.260, -16.490, w 0.368, len 0.016
  62: 41.725, -24.071, w 0.368, len 8.365
  63: 41.718, -24.086, w 0.369, len 0.016
  64: 41.709, -24.099, w 0.368, len 0.016
  65: 36.911, -30.951, w 0.368, len 8.365
  66: 36.902, -30.964, w 0.369, len 0.016
  67: 36.890, -30.976, w 0.368, len 0.016
  68: 30.976, -36.890, w 0.368, len 8.365
  69: 30.964, -36.902, w 0.369, len 0.016
  70: 30.951, -36.911, w 0.368, len 0.016
  71: 24.099, -41.709, w 0.368, len 8.365
  72: 24.086, -41.718, w 0.369, len 0.016
  73: 24.071, -41.725, w 0.368, len 0.016
  74: 16.490, -45.260, w 0.368, len 8.365
  75: 16.476, -45.267, w 0.369, len 0.016
  76: 16.460, -45.271, w 0.368, len 0.016
  77: 8.381, -47.436, w 0.368, len 8.365
  78: 8.365, -47.440, w 0.369, len 0.016
  79: 8.349, -47.442, w 0.368, len 0.016
  80: 0.016, -48.171, w 0.368, len 8.365
  81: 0.000, -48.172, w 0.369, len 0.016
  82: -0.016, -48.171, w 0.368, len 0.016
  83: -8.349, -47.442, w 0.368, len 8.365
  84: -8.365, -47.440, w 0.369, len 0.016
  85: -8.381, -47.436, w 0.368, len 0.016
  86: -16.460, -45.271, w 0.368, len 8.365
  87: -16.476, -45.267, w 0.369, len 0.016
  88: -16.490, -45.260, w 0.368, len 0.016
  89: -24.071, -41.725, w 0.368, len 8.365
  90: -24.086, -41.718, w 0.369, len 0.016
  91: -24.099, -41.709, w 0.368, len 0.016
  92: -30.951, -36.911, w 0.368, len 8.365
  93: -30.964, -36.902, w 0.369, len 0.016
  94: -30.976, -36.890, w 0.368, len 0.016
  95: -36.890, -30.976, w 0.368, len 8.365
  96: -36.902, -30.964, w 0.369, len 0.016
  97: -36.911, -30.951, w 0.368, len 0.016
  98: -41.709, -24.099, w 0.368, len 8.365
  99: -41.718, -24.086, w 0.369, len 0.016
  100: -41.725, -24.071, w 0.368, len 0.016
  101: -45.260, -16.490, w 0.368, len 8.365
  102: -45.267, -16.476, w 0.369, len 0.016
  103: -45.271, -16.460, w 0.368, len 0.016
  104: -47.436, -8.381, w 0.368, len 8.365
  105: -47.440, -8.365, w 0.369, len 0.016
  106: -47.442, -8.349, w 0.368, len 0.016
  107: -48.171, -0.016, w 0.368, len 8.365
  108: -48.172, 0.000, w 0.369, len 0.016
SIMPLIFYING:
  Replaced 0 with: 1, at -48.172, 0.002
  2 => 1
  Next segment small: 3, next 0.016 < 1.000
  Replaced 1 with: 4, at -47.440, 8.365
  5 => 2
  Next segment small: 6, next 0.016 < 1.000
  Replaced 2 with: 7, at -45.267, 16.476
  8 => 3
  Next segment small: 9, next 0.016 < 1.000
  Replaced 3 with: 10, at -41.718, 24.086
  11 => 4
  Next segment small: 12, next 0.016 < 1.000
  Replaced 4 with: 13, at -36.902, 30.964
  14 => 5
  Next segment small: 15, next 0.016 < 1.000
  Replaced 5 with: 16, at -30.964, 36.902
  17 => 6
  Next segment small: 18, next 0.016 < 1.000
  Replaced 6 with: 19, at -24.086, 41.718
  20 => 7
  Next segment small: 21, next 0.016 < 1.000
  Replaced 7 with: 22, at -16.476, 45.267
  23 => 8
  Next segment small: 24, next 0.016 < 1.000
  Replaced 8 with: 25, at -8.365, 47.440
  26 => 9
  Next segment small: 27, next 0.016 < 1.000
  Replaced 9 with: 28, at 0.000, 48.172
  29 => 10
  Next segment small: 30, next 0.016 < 1.000
  Replaced 10 with: 31, at 8.365, 47.440
  32 => 11
  Next segment small: 33, next 0.016 < 1.000
  Replaced 11 with: 34, at 16.476, 45.267
  35 => 12
  Next segment small: 36, next 0.016 < 1.000
  Replaced 12 with: 37, at 24.086, 41.718
  38 => 13
  Next segment small: 39, next 0.016 < 1.000
  Replaced 13 with: 40, at 30.964, 36.902
  41 => 14
  Next segment small: 42, next 0.016 < 1.000
  Replaced 14 with: 43, at 36.902, 30.964
  44 => 15
  Next segment small: 45, next 0.016 < 1.000
  Replaced 15 with: 46, at 41.718, 24.086
  47 => 16
  Next segment small: 48, next 0.016 < 1.000
  Replaced 16 with: 49, at 45.267, 16.476
  50 => 17
  Next segment small: 51, next 0.016 < 1.000
  Replaced 17 with: 52, at 47.440, 8.365
  53 => 18
  Next segment small: 54, next 0.016 < 1.000
  Replaced 18 with: 55, at 48.172, 0.000
  56 => 19
  Next segment small: 57, next 0.016 < 1.000
  Replaced 19 with: 58, at 47.440, -8.365
  59 => 20
  Next segment small: 60, next 0.016 < 1.000
  Replaced 20 with: 61, at 45.267, -16.476
  62 => 21
  Next segment small: 63, next 0.016 < 1.000
  Replaced 21 with: 64, at 41.718, -24.086
  65 => 22
  Next segment small: 66, next 0.016 < 1.000
  Replaced 22 with: 67, at 36.902, -30.964
  68 => 23
  Next segment small: 69, next 0.016 < 1.000
  Replaced 23 with: 70, at 30.964, -36.902
  71 => 24
  Next segment small: 72, next 0.016 < 1.000
  Replaced 24 with: 73, at 24.086, -41.718
  74 => 25
  Next segment small: 75, next 0.016 < 1.000
  Replaced 25 with: 76, at 16.476, -45.267
  77 => 26
  Next segment small: 78, next 0.016 < 1.000
  Replaced 26 with: 79, at 8.365, -47.440
  80 => 27
  Next segment small: 81, next 0.016 < 1.000
  Replaced 27 with: 82, at 0.000, -48.172
  83 => 28
  Next segment small: 84, next 0.016 < 1.000
  Replaced 28 with: 85, at -8.365, -47.440
  86 => 29
  Next segment small: 87, next 0.016 < 1.000
  Replaced 29 with: 88, at -16.476, -45.267
  89 => 30
  Next segment small: 90, next 0.016 < 1.000
  Replaced 30 with: 91, at -24.086, -41.718
  92 => 31
  Next segment small: 93, next 0.016 < 1.000
  Replaced 31 with: 94, at -30.964, -36.902
  95 => 32
  Next segment small: 96, next 0.016 < 1.000
  Replaced 32 with: 97, at -36.902, -30.964
  98 => 33
  Next segment small: 99, next 0.016 < 1.000
  Replaced 33 with: 100, at -41.718, -24.086
  101 => 34
  Next segment small: 102, next 0.016 < 1.000
  Replaced 34 with: 103, at -45.267, -16.476
  104 => 35
  Next segment small: 105, next 0.016 < 1.000
  Replaced 35 with: 106, at -47.440, -8.365
  107 => 36
  Replaced 36 with: 108, at -48.172, -0.000
AFTER ExtrusionLine::simplify on 37 points:
  0: -48.172, -0.000, w 0.368, len 0.000
  1: -47.440, 8.365, w 0.368, len 8.397
  2: -45.267, 16.476, w 0.368, len 8.397
  3: -41.718, 24.086, w 0.368, len 8.397
  4: -36.902, 30.964, w 0.368, len 8.397
  5: -30.964, 36.902, w 0.368, len 8.397
  6: -24.086, 41.718, w 0.368, len 8.397
  7: -16.476, 45.267, w 0.368, len 8.397
  8: -8.365, 47.440, w 0.368, len 8.397
  9: 0.000, 48.172, w 0.368, len 8.397
  10: 8.365, 47.440, w 0.368, len 8.397
  11: 16.476, 45.267, w 0.368, len 8.397
  12: 24.086, 41.718, w 0.368, len 8.397
  13: 30.964, 36.902, w 0.368, len 8.397
  14: 36.902, 30.964, w 0.368, len 8.397
  15: 41.718, 24.086, w 0.368, len 8.397
  16: 45.267, 16.476, w 0.368, len 8.397
  17: 47.440, 8.365, w 0.368, len 8.397
  18: 48.172, 0.000, w 0.368, len 8.397
  19: 47.440, -8.365, w 0.368, len 8.397
  20: 45.267, -16.476, w 0.368, len 8.397
  21: 41.718, -24.086, w 0.368, len 8.397
  22: 36.902, -30.964, w 0.368, len 8.397
  23: 30.964, -36.902, w 0.368, len 8.397
  24: 24.086, -41.718, w 0.368, len 8.397
  25: 16.476, -45.267, w 0.368, len 8.397
  26: 8.365, -47.440, w 0.368, len 8.397
  27: 0.000, -48.172, w 0.368, len 8.397
  28: -8.365, -47.440, w 0.368, len 8.397
  29: -16.476, -45.267, w 0.368, len 8.397
  30: -24.086, -41.718, w 0.368, len 8.397
  31: -30.964, -36.902, w 0.368, len 8.397
  32: -36.902, -30.964, w 0.368, len 8.397
  33: -41.718, -24.086, w 0.368, len 8.397
  34: -45.267, -16.476, w 0.368, len 8.397
  35: -47.440, -8.365, w 0.368, len 8.397
  36: -48.172, -0.000, w 0.368, len 8.397

For each point 'len' is the distance to the previous point. The first point just says 'len 0' since there is no previous point. In any case, I see no tiny segment on this perimeter, so I suspect it comes from some later processing stage. It probably does make the seam slightly worse on that layer.

@SoftFever
Copy link
Owner

it looks like the closed loop is still causing troubles:

Can you provide your .3mf for that?
There are still cases when the intersection distance test on line 139 decides not to discard points and leaves short segments, just many fewer than before. I could investigate more under what conditions that happens and see if we can fix them.

I'm using the project you attached.Sphere-Shell.3mf.zip

Oh, oops, I confused myself about which .3mf I uploaded with the bug report!

At layer 60. It looks like a edge case where the first line segment is tiny segment.

Hmm, I ran this with some debugging output, and I see the tiny segment in the gcode for layer 60, but the perimeter data for the layer doesn't seem to contain it. Here's my debugging data for layer 60:

BEFORE ExtrusionLine::simplify on 109 points:
  0: -48.172, 0.000, w 0.369, len 0.000
  1: -48.171, 0.016, w 0.368, len 0.016
  2: -47.442, 8.349, w 0.368, len 8.365
  3: -47.440, 8.365, w 0.369, len 0.016
  4: -47.436, 8.381, w 0.368, len 0.016
  5: -45.271, 16.460, w 0.368, len 8.365
  6: -45.267, 16.476, w 0.369, len 0.016
  7: -45.260, 16.490, w 0.368, len 0.016
  8: -41.725, 24.071, w 0.368, len 8.365
  9: -41.718, 24.086, w 0.369, len 0.016
  10: -41.709, 24.099, w 0.368, len 0.016
  11: -36.911, 30.951, w 0.368, len 8.365
  12: -36.902, 30.964, w 0.369, len 0.016
  13: -36.890, 30.976, w 0.368, len 0.016
  14: -30.976, 36.890, w 0.368, len 8.365
  15: -30.964, 36.902, w 0.369, len 0.016
  16: -30.951, 36.911, w 0.368, len 0.016
  17: -24.099, 41.709, w 0.368, len 8.365
  18: -24.086, 41.718, w 0.369, len 0.016
  19: -24.071, 41.725, w 0.368, len 0.016
  20: -16.490, 45.260, w 0.368, len 8.365
  21: -16.476, 45.267, w 0.369, len 0.016
  22: -16.460, 45.271, w 0.368, len 0.016
  23: -8.381, 47.436, w 0.368, len 8.365
  24: -8.365, 47.440, w 0.369, len 0.016
  25: -8.349, 47.442, w 0.368, len 0.016
  26: -0.016, 48.171, w 0.368, len 8.365
  27: 0.000, 48.172, w 0.369, len 0.016
  28: 0.016, 48.171, w 0.368, len 0.016
  29: 8.349, 47.442, w 0.368, len 8.365
  30: 8.365, 47.440, w 0.369, len 0.016
  31: 8.381, 47.436, w 0.368, len 0.016
  32: 16.460, 45.271, w 0.368, len 8.365
  33: 16.476, 45.267, w 0.369, len 0.016
  34: 16.490, 45.260, w 0.368, len 0.016
  35: 24.071, 41.725, w 0.368, len 8.365
  36: 24.086, 41.718, w 0.369, len 0.016
  37: 24.099, 41.709, w 0.368, len 0.016
  38: 30.951, 36.911, w 0.368, len 8.365
  39: 30.964, 36.902, w 0.369, len 0.016
  40: 30.976, 36.890, w 0.368, len 0.016
  41: 36.890, 30.976, w 0.368, len 8.365
  42: 36.902, 30.964, w 0.369, len 0.016
  43: 36.911, 30.951, w 0.368, len 0.016
  44: 41.709, 24.099, w 0.368, len 8.365
  45: 41.718, 24.086, w 0.369, len 0.016
  46: 41.725, 24.071, w 0.368, len 0.016
  47: 45.260, 16.490, w 0.368, len 8.365
  48: 45.267, 16.476, w 0.369, len 0.016
  49: 45.271, 16.460, w 0.368, len 0.016
  50: 47.436, 8.381, w 0.368, len 8.365
  51: 47.440, 8.365, w 0.369, len 0.016
  52: 47.442, 8.349, w 0.368, len 0.016
  53: 48.171, 0.016, w 0.368, len 8.365
  54: 48.172, 0.000, w 0.369, len 0.016
  55: 48.171, -0.016, w 0.368, len 0.016
  56: 47.442, -8.349, w 0.368, len 8.365
  57: 47.440, -8.365, w 0.369, len 0.016
  58: 47.436, -8.381, w 0.368, len 0.016
  59: 45.271, -16.460, w 0.368, len 8.365
  60: 45.267, -16.476, w 0.369, len 0.016
  61: 45.260, -16.490, w 0.368, len 0.016
  62: 41.725, -24.071, w 0.368, len 8.365
  63: 41.718, -24.086, w 0.369, len 0.016
  64: 41.709, -24.099, w 0.368, len 0.016
  65: 36.911, -30.951, w 0.368, len 8.365
  66: 36.902, -30.964, w 0.369, len 0.016
  67: 36.890, -30.976, w 0.368, len 0.016
  68: 30.976, -36.890, w 0.368, len 8.365
  69: 30.964, -36.902, w 0.369, len 0.016
  70: 30.951, -36.911, w 0.368, len 0.016
  71: 24.099, -41.709, w 0.368, len 8.365
  72: 24.086, -41.718, w 0.369, len 0.016
  73: 24.071, -41.725, w 0.368, len 0.016
  74: 16.490, -45.260, w 0.368, len 8.365
  75: 16.476, -45.267, w 0.369, len 0.016
  76: 16.460, -45.271, w 0.368, len 0.016
  77: 8.381, -47.436, w 0.368, len 8.365
  78: 8.365, -47.440, w 0.369, len 0.016
  79: 8.349, -47.442, w 0.368, len 0.016
  80: 0.016, -48.171, w 0.368, len 8.365
  81: 0.000, -48.172, w 0.369, len 0.016
  82: -0.016, -48.171, w 0.368, len 0.016
  83: -8.349, -47.442, w 0.368, len 8.365
  84: -8.365, -47.440, w 0.369, len 0.016
  85: -8.381, -47.436, w 0.368, len 0.016
  86: -16.460, -45.271, w 0.368, len 8.365
  87: -16.476, -45.267, w 0.369, len 0.016
  88: -16.490, -45.260, w 0.368, len 0.016
  89: -24.071, -41.725, w 0.368, len 8.365
  90: -24.086, -41.718, w 0.369, len 0.016
  91: -24.099, -41.709, w 0.368, len 0.016
  92: -30.951, -36.911, w 0.368, len 8.365
  93: -30.964, -36.902, w 0.369, len 0.016
  94: -30.976, -36.890, w 0.368, len 0.016
  95: -36.890, -30.976, w 0.368, len 8.365
  96: -36.902, -30.964, w 0.369, len 0.016
  97: -36.911, -30.951, w 0.368, len 0.016
  98: -41.709, -24.099, w 0.368, len 8.365
  99: -41.718, -24.086, w 0.369, len 0.016
  100: -41.725, -24.071, w 0.368, len 0.016
  101: -45.260, -16.490, w 0.368, len 8.365
  102: -45.267, -16.476, w 0.369, len 0.016
  103: -45.271, -16.460, w 0.368, len 0.016
  104: -47.436, -8.381, w 0.368, len 8.365
  105: -47.440, -8.365, w 0.369, len 0.016
  106: -47.442, -8.349, w 0.368, len 0.016
  107: -48.171, -0.016, w 0.368, len 8.365
  108: -48.172, 0.000, w 0.369, len 0.016
SIMPLIFYING:
  Replaced 0 with: 1, at -48.172, 0.002
  2 => 1
  Next segment small: 3, next 0.016 < 1.000
  Replaced 1 with: 4, at -47.440, 8.365
  5 => 2
  Next segment small: 6, next 0.016 < 1.000
  Replaced 2 with: 7, at -45.267, 16.476
  8 => 3
  Next segment small: 9, next 0.016 < 1.000
  Replaced 3 with: 10, at -41.718, 24.086
  11 => 4
  Next segment small: 12, next 0.016 < 1.000
  Replaced 4 with: 13, at -36.902, 30.964
  14 => 5
  Next segment small: 15, next 0.016 < 1.000
  Replaced 5 with: 16, at -30.964, 36.902
  17 => 6
  Next segment small: 18, next 0.016 < 1.000
  Replaced 6 with: 19, at -24.086, 41.718
  20 => 7
  Next segment small: 21, next 0.016 < 1.000
  Replaced 7 with: 22, at -16.476, 45.267
  23 => 8
  Next segment small: 24, next 0.016 < 1.000
  Replaced 8 with: 25, at -8.365, 47.440
  26 => 9
  Next segment small: 27, next 0.016 < 1.000
  Replaced 9 with: 28, at 0.000, 48.172
  29 => 10
  Next segment small: 30, next 0.016 < 1.000
  Replaced 10 with: 31, at 8.365, 47.440
  32 => 11
  Next segment small: 33, next 0.016 < 1.000
  Replaced 11 with: 34, at 16.476, 45.267
  35 => 12
  Next segment small: 36, next 0.016 < 1.000
  Replaced 12 with: 37, at 24.086, 41.718
  38 => 13
  Next segment small: 39, next 0.016 < 1.000
  Replaced 13 with: 40, at 30.964, 36.902
  41 => 14
  Next segment small: 42, next 0.016 < 1.000
  Replaced 14 with: 43, at 36.902, 30.964
  44 => 15
  Next segment small: 45, next 0.016 < 1.000
  Replaced 15 with: 46, at 41.718, 24.086
  47 => 16
  Next segment small: 48, next 0.016 < 1.000
  Replaced 16 with: 49, at 45.267, 16.476
  50 => 17
  Next segment small: 51, next 0.016 < 1.000
  Replaced 17 with: 52, at 47.440, 8.365
  53 => 18
  Next segment small: 54, next 0.016 < 1.000
  Replaced 18 with: 55, at 48.172, 0.000
  56 => 19
  Next segment small: 57, next 0.016 < 1.000
  Replaced 19 with: 58, at 47.440, -8.365
  59 => 20
  Next segment small: 60, next 0.016 < 1.000
  Replaced 20 with: 61, at 45.267, -16.476
  62 => 21
  Next segment small: 63, next 0.016 < 1.000
  Replaced 21 with: 64, at 41.718, -24.086
  65 => 22
  Next segment small: 66, next 0.016 < 1.000
  Replaced 22 with: 67, at 36.902, -30.964
  68 => 23
  Next segment small: 69, next 0.016 < 1.000
  Replaced 23 with: 70, at 30.964, -36.902
  71 => 24
  Next segment small: 72, next 0.016 < 1.000
  Replaced 24 with: 73, at 24.086, -41.718
  74 => 25
  Next segment small: 75, next 0.016 < 1.000
  Replaced 25 with: 76, at 16.476, -45.267
  77 => 26
  Next segment small: 78, next 0.016 < 1.000
  Replaced 26 with: 79, at 8.365, -47.440
  80 => 27
  Next segment small: 81, next 0.016 < 1.000
  Replaced 27 with: 82, at 0.000, -48.172
  83 => 28
  Next segment small: 84, next 0.016 < 1.000
  Replaced 28 with: 85, at -8.365, -47.440
  86 => 29
  Next segment small: 87, next 0.016 < 1.000
  Replaced 29 with: 88, at -16.476, -45.267
  89 => 30
  Next segment small: 90, next 0.016 < 1.000
  Replaced 30 with: 91, at -24.086, -41.718
  92 => 31
  Next segment small: 93, next 0.016 < 1.000
  Replaced 31 with: 94, at -30.964, -36.902
  95 => 32
  Next segment small: 96, next 0.016 < 1.000
  Replaced 32 with: 97, at -36.902, -30.964
  98 => 33
  Next segment small: 99, next 0.016 < 1.000
  Replaced 33 with: 100, at -41.718, -24.086
  101 => 34
  Next segment small: 102, next 0.016 < 1.000
  Replaced 34 with: 103, at -45.267, -16.476
  104 => 35
  Next segment small: 105, next 0.016 < 1.000
  Replaced 35 with: 106, at -47.440, -8.365
  107 => 36
  Replaced 36 with: 108, at -48.172, -0.000
AFTER ExtrusionLine::simplify on 37 points:
  0: -48.172, -0.000, w 0.368, len 0.000
  1: -47.440, 8.365, w 0.368, len 8.397
  2: -45.267, 16.476, w 0.368, len 8.397
  3: -41.718, 24.086, w 0.368, len 8.397
  4: -36.902, 30.964, w 0.368, len 8.397
  5: -30.964, 36.902, w 0.368, len 8.397
  6: -24.086, 41.718, w 0.368, len 8.397
  7: -16.476, 45.267, w 0.368, len 8.397
  8: -8.365, 47.440, w 0.368, len 8.397
  9: 0.000, 48.172, w 0.368, len 8.397
  10: 8.365, 47.440, w 0.368, len 8.397
  11: 16.476, 45.267, w 0.368, len 8.397
  12: 24.086, 41.718, w 0.368, len 8.397
  13: 30.964, 36.902, w 0.368, len 8.397
  14: 36.902, 30.964, w 0.368, len 8.397
  15: 41.718, 24.086, w 0.368, len 8.397
  16: 45.267, 16.476, w 0.368, len 8.397
  17: 47.440, 8.365, w 0.368, len 8.397
  18: 48.172, 0.000, w 0.368, len 8.397
  19: 47.440, -8.365, w 0.368, len 8.397
  20: 45.267, -16.476, w 0.368, len 8.397
  21: 41.718, -24.086, w 0.368, len 8.397
  22: 36.902, -30.964, w 0.368, len 8.397
  23: 30.964, -36.902, w 0.368, len 8.397
  24: 24.086, -41.718, w 0.368, len 8.397
  25: 16.476, -45.267, w 0.368, len 8.397
  26: 8.365, -47.440, w 0.368, len 8.397
  27: 0.000, -48.172, w 0.368, len 8.397
  28: -8.365, -47.440, w 0.368, len 8.397
  29: -16.476, -45.267, w 0.368, len 8.397
  30: -24.086, -41.718, w 0.368, len 8.397
  31: -30.964, -36.902, w 0.368, len 8.397
  32: -36.902, -30.964, w 0.368, len 8.397
  33: -41.718, -24.086, w 0.368, len 8.397
  34: -45.267, -16.476, w 0.368, len 8.397
  35: -47.440, -8.365, w 0.368, len 8.397
  36: -48.172, -0.000, w 0.368, len 8.397

For each point 'len' is the distance to the previous point. The first point just says 'len 0' since there is no previous point. In any case, I see no tiny segment on this perimeter, so I suspect it comes from some later processing stage. It probably does make the seam slightly worse on that layer.

I agree.
Looks like this is a unrelated issue

Copy link
Owner

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.
Thank you very much

@SoftFever SoftFever merged commit 3ca290d into SoftFever:main Dec 15, 2023
12 checks passed
@sethml sethml deleted the bug/arachne-blemishes branch December 18, 2023 19:41
SoftFever added a commit that referenced this pull request Jan 1, 2024
…extrusion segments which led to blemishes in thin-wall models sliced with Arachne (#3014)"

This reverts commit 3ca290d.

Fixed #3340 #3375
@SoftFever
Copy link
Owner

Hi @sethml
Just a quick heads up.
I have temporarily reverted this change due to multiple reported crashes caused by the changes.
A brief investigation indicates that the issue arose because, after simplification, a loop was degraded to a single line.

SoftFever added a commit that referenced this pull request Jan 1, 2024
…extrusion segments which led to blemishes in thin-wall models sliced with Arachne (#3014)"

This reverts commit 3ca290d.

Fixed #3340 #3375

(cherry picked from commit a36df66)
PilotMatt added a commit to printago/OrcaSlicer-PrintagoEdition that referenced this pull request Jan 11, 2024
commit 51cd5a2
Author: SoftFever <[email protected]>
Date:   Fri Jan 5 07:58:39 2024 +0800

    bump version profile version to "01.09.00.02"

commit 0ca6822
Author: SoftFever <[email protected]>
Date:   Fri Jan 5 07:57:09 2024 +0800

    Fixed an issue that some profiles has ironings enabled by default

commit cf0d5de
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 23:12:36 2024 +0800

    Added an option to enable multiple bed type support for printers

commit 6902098
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 19:30:07 2024 +0800

    Fixed crashes when send gcode to BBL printers

commit ea76043
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 18:38:53 2024 +0800

    update gitignore

commit cb537a4
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 18:38:43 2024 +0800

    fix object exclusion regression on BBL printers

commit 65ac5ce
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 18:37:06 2024 +0800

    skip writting object info for BBL printers

commit 002208f
Author: Noisyfox <[email protected]>
Date:   Thu Jan 4 19:28:19 2024 +0800

    QoL: Keyboard shortcuts updates & fixes (SoftFever#3457)

    * Bring back the shortcut to zoom in & out

    * Update keyboard shortcut info

    * Update keyboard shortcut info

    * Different handling of shortcut 'T' for emboss text

    Cherry-picked from prusa3d/PrusaSlicer@58e3143

    Co-authored-by: Filip Sykala - NTB T15p <[email protected]>

    ---------

    Co-authored-by: Filip Sykala - NTB T15p <[email protected]>

commit 77b6225
Author: SoftFever <[email protected]>
Date:   Thu Jan 4 06:50:11 2024 +0800

    Feature/update deps (SoftFever#3445)

    * update deps

    * fix win build errors

    * fix mac build

    * update linux

commit 08d938b
Author: Noisyfox <[email protected]>
Date:   Tue Jan 2 20:48:25 2024 +0800

    Fix NaN when adding negative part (SoftFever#3423) (SoftFever#3431)

    (cherry picked from commit 1ea33f0)

commit 54ab738
Author: SoftFever <[email protected]>
Date:   Tue Jan 2 20:41:41 2024 +0800

    some profile changes based on feedbacks

    (cherry picked from commit 8e3f7e7)

commit b2ce4c1
Author: SoftFever <[email protected]>
Date:   Tue Jan 2 16:25:08 2024 +0800

    Fix boost download server issue

commit 6b1c1a6
Author: SoftFever <[email protected]>
Date:   Tue Jan 2 16:03:58 2024 +0800

    bump to 1.9.0 official version

commit b624aa0
Author: Noisyfox <[email protected]>
Date:   Tue Jan 2 16:01:05 2024 +0800

    Fix issue that "Per-glyph" option not working when UI is in Chinese (SoftFever#3425)

    (cherry picked from commit 712478c)

commit cc593f9
Author: SoftFever <[email protected]>
Date:   Tue Jan 2 13:13:22 2024 +0800

    Improve rendering quality when model color is pure black

    (cherry picked from commit 9e443ba)

commit 1e0b5b5
Author: SoftFever <[email protected]>
Date:   Tue Jan 2 13:13:22 2024 +0800

    Set CMAKE_OSX_DEPLOYMENT_TARGET properly on dev machine when calling build_release_mac.sh

    (cherry picked from commit 8d5bb6c)

commit 9d26cbf
Author: SoftFever <[email protected]>
Date:   Mon Jan 1 20:14:28 2024 +0800

    bump version to 1.9.0 rc

commit 89f23b7
Author: Thomas <[email protected]>
Date:   Mon Jan 1 13:01:30 2024 +0100

    Added PAUSE command for change_filament_gcode on Elegoo Neptune 4 series (SoftFever#3411)

    Added PAUSE command for change_filament_gcode

    on-behalf-of: @tomsbasement <[email protected]>
    (cherry picked from commit 9701ab1)

commit 38087db
Author: SufficentMuffin <[email protected]>
Date:   Mon Jan 1 12:42:53 2024 +0100

    Update 0.48mm Standard @bbl X1C 0.8 nozzle.json (SoftFever#3379)

    * Update 0.48mm Standard @bbl X1C 0.8 nozzle.json

    Removed P1S 0.6mm nozzle from process profile.

    * fix

    ---------

    Co-authored-by: SoftFever <[email protected]>
    (cherry picked from commit f99394b)

commit d165b6b
Author: Thomas <[email protected]>
Date:   Mon Jan 1 12:35:16 2024 +0100

    Updated French translations. (SoftFever#3410)

    on-behalf-of: @tomsbasement [email protected]
    (cherry picked from commit 2cfcd0d)

commit 766d1a4
Author: SoftFever <[email protected]>
Date:   Mon Jan 1 19:30:55 2024 +0800

    fix intermittent crashes caused by detect_overhang_wall

    (cherry picked from commit 4d1885e)

commit b62ce60
Author: SoftFever <[email protected]>
Date:   Mon Jan 1 18:21:19 2024 +0800

    Fxied a regression that wall order can't be set in height modifier

    (cherry picked from commit 5683729)

commit 7b43991
Author: SoftFever <[email protected]>
Date:   Mon Jan 1 17:05:40 2024 +0800

    Fixed crashes caused by pressure eq when support is used (SoftFever#3407)

    Fixed crashed caused by pressure eq when support is used

    (cherry picked from commit 2f916f5)

commit 90c88a4
Author: Thomas <[email protected]>
Date:   Mon Jan 1 08:08:56 2024 +0100

    Creality K1/K1 Max, Ender 3 V3 Series and Ender 5 S1 baseplates (SoftFever#3365)

    * Fixed retraction speed and added missing parameters.

    * Fixes for manual filament change

    * More tunings and fixes.

    * Fixes and tunings

    * Formatting

    * Decrease z-hop for K1

    * K1/K1 Max, Ender 3 V3 and Ender 5 S1 correct build platforms (Thanks Henlor !)

    (cherry picked from commit 967dc3d)

commit 0a223c5
Author: SoftFever <[email protected]>
Date:   Mon Jan 1 14:20:11 2024 +0800

    Revert "Improve ExtrusionLine::simplify, eliminating many very-short extrusion segments which led to blemishes in thin-wall models sliced with Arachne (SoftFever#3014)"

    This reverts commit 3ca290d.

    Fixed SoftFever#3340 SoftFever#3375

    (cherry picked from commit a36df66)

commit 2f45494
Author: Olcay ÖREN <[email protected]>
Date:   Mon Jan 1 08:47:25 2024 +0300

    Update OrcaSlicer_tr.po - TURKISH translation update (SoftFever#3396)

    * Update OrcaSlicer_tr.po - TURKISH translation update

    * Update OrcaSlicer_tr.po - TURKISH translation update

    ---------

    Co-authored-by: SoftFever <[email protected]>
    (cherry picked from commit 1dfaef3)

commit bf8deb9
Author: Vitalii Kutia <[email protected]>
Date:   Mon Jan 1 06:47:04 2024 +0100

    edit Ukrainian translation (SoftFever#3403)

    (cherry picked from commit c623070)

commit bd23b9c
Author: Lee Jong Mun <[email protected]>
Date:   Mon Jan 1 14:46:53 2024 +0900

    kor translation update (SoftFever#3406)

    (cherry picked from commit 52c08ca)

commit 7ddaa8d
Author: Noisyfox <[email protected]>
Date:   Mon Jan 1 13:45:53 2024 +0800

    Fix crash when click the color paint gizmo when object part is selected (SoftFever#3405)

    Fix crash when click the color paint gizmo when object part is selected (SoftFever#3404)

    Cherry-picked from bambulab/BambuStudio@1e99ce9

    Co-authored-by: liz.li <[email protected]>
    (cherry picked from commit 8fd4477)

commit 2511360
Author: Silence <[email protected]>
Date:   Sun Dec 31 06:05:23 2023 -0500

    Update README.md to provide alternative download links of webview2 runtimes (SoftFever#3384)

    Improve install and build instructions slightly.

    (cherry picked from commit 60ab79c)

commit ef8e4e4
Author: Thomas <[email protected]>
Date:   Sun Dec 31 11:36:32 2023 +0100

    Creality Ender 3 V3/KE important fixes and some fine-tunings (SoftFever#3362)

    * Fixed retraction speed and added missing parameters.

    * Fixes for manual filament change

    * More tunings and fixes.

    * Fixes and tunings

    * Formatting

    * Decrease z-hop for K1

    * Updated thumbnails sizes to the same as Creality Print has.

    (cherry picked from commit 98a9bf6)

commit 2ca195f
Author: Thomas <[email protected]>
Date:   Sun Dec 31 07:46:18 2023 +0100

    Fr translations (SoftFever#3361)

    * Updated French translations.

    * Reword "strength"

    * Updated translations

    * Added missing translations.

    * Fixed place on face translation

    * Fixed strings.

    * Updated locales

    * Better translation for "Brim ears"

    * Other round of fixes

    * Added missing strings

    * Renaming studio to Orca.

    * Rewording "Arc fitting"

    * Flush means purge and not "rinçage"

    (cherry picked from commit 8afb675)

commit f8de589
Author: Heiko Liebscher <[email protected]>
Date:   Sun Dec 31 12:11:16 2023 +0100

    Fix de for 1.9 release (SoftFever#3387)

    fix some typos and new msgids

commit 3da54f3
Author: SoftFever <[email protected]>
Date:   Sun Dec 31 13:28:19 2023 +0800

    fixed a crash bug when switching to Bambu device page too fast

commit 0857742
Author: Noisyfox <[email protected]>
Date:   Sat Dec 30 22:02:32 2023 +0800

    Fix preview legend window size (SoftFever#3363)

    Fix issue that the legend window expands to all available horizontal space if scrollbar is displayed

    (cherry picked from commit a8ade15)

commit 5a14fa2
Author: SoftFever <[email protected]>
Date:   Sat Dec 30 15:22:18 2023 +0800

    remove P1P-P1S warning

    (cherry picked from commit 1d8cdf0)

commit b4633dc
Author: SoftFever <[email protected]>
Date:   Sat Dec 30 10:32:05 2023 +0800

    bump version to 1.9.0 beta

commit fbea207
Author: SoftFever <[email protected]>
Date:   Sat Dec 30 10:29:32 2023 +0800

    preset export small tweak

commit 0d49816
Author: kpishere <[email protected]>
Date:   Fri Dec 29 20:12:06 2023 -0500

    Feature/build target 10.15 (SoftFever#3252)

    * Set target to 10.15, make porter templates explicit

    * CMAKE_OSX_DEPLOYMENT_TARGET refactor

    * Update build_release_macos.sh

    fix typo

    ---------

    Co-authored-by: SoftFever <[email protected]>

commit 696778e
Author: Olcay ÖREN <[email protected]>
Date:   Sat Dec 30 03:52:26 2023 +0300

    Update OrcaSlicer_tr.po - TURKISH translation update (SoftFever#3354)

    Co-authored-by: SoftFever <[email protected]>

commit 9b1f7ed
Author: SoftFever <[email protected]>
Date:   Sat Dec 30 08:50:27 2023 +0800

    fix po errors

commit 3364fc4
Author: SoftFever <[email protected]>
Date:   Fri Dec 29 23:36:28 2023 +0800

    Rename '.bbscfg/bbsflmt' to 'orca_printer/orca_filament' for clarity and to reduce user errors. Note: Configs may no longer be compatible with BS hence the change

commit a5f1bf7
Author: SoftFever <[email protected]>
Date:   Fri Dec 29 22:49:45 2023 +0800

    create datadir folder if not exist

commit 781b187
Author: Fabio Forcina <[email protected]>
Date:   Fri Dec 29 14:52:30 2023 +0100

    Updated Italian translation (SoftFever#3347)

commit 8e49fa1
Author: Heiko Liebscher <[email protected]>
Date:   Fri Dec 29 13:20:21 2023 +0100

    Update German translation for 1.9 (SoftFever#3343)

commit 3607d80
Author: Thomas <[email protected]>
Date:   Fri Dec 29 13:18:46 2023 +0100

    Changed Slic3r mentions (SoftFever#3344)

commit b46f46f
Author: SoftFever <[email protected]>
Date:   Fri Dec 29 12:08:45 2023 +0800

    update locale

commit 08b1447
Author: SoftFever <[email protected]>
Date:   Fri Dec 29 12:04:40 2023 +0800

    check for new version rework, support "check for stable updates only" mode

commit bd70007
Author: SoftFever <[email protected]>
Date:   Fri Dec 29 09:21:49 2023 +0800

    make `exclude_object` off by default

commit 9208767
Author: just-trey <[email protected]>
Date:   Thu Dec 28 11:04:45 2023 -0500

    Profile: Anker M5/C first layer consistency improvements (SoftFever#3321)

    first layer consistency improvments

commit 3537bd2
Author: Thomas <[email protected]>
Date:   Thu Dec 28 17:02:45 2023 +0100

    Fixed typo (SoftFever#3331)

    * Fixed typo

    * An other swtitch

    * Main-i-fold(tm)

commit 90aa9b1
Author: Thomas <[email protected]>
Date:   Thu Dec 28 17:02:01 2023 +0100

    Fixes and simplification of some Creality profiles. (SoftFever#3315)

    * Fixes and simplification of some Creality profiles.

    * Set correct support_air_filtration for K1 Max

commit 7101f5b
Author: SoftFever <[email protected]>
Date:   Thu Dec 28 00:21:18 2023 +0800

    fix/update locale

commit f92cce4
Author: SoftFever <[email protected]>
Date:   Wed Dec 27 21:38:48 2023 +0800

    add more hints

commit a9c0e3a
Author: SoftFever <[email protected]>
Date:   Wed Dec 27 20:13:33 2023 +0800

    Fixed a regression bug that --datadir was broken
    fixed SoftFever#3191

commit 6060777
Author: Ioannis Giannakas <[email protected]>
Date:   Wed Dec 27 11:21:33 2023 +0000

    ENH: Port of "wipe inside before extruding an external perimeter" feature from super slicer (SoftFever#3287)

    * Wipe Inside at Start of perimeter

    Co-Authored-By: Merill <[email protected]>

    * Cleaned up code and linked it to the wipe on loop parameter

    * Trigger build

    * Introduced wipe before external loop parameter.

    * Removed redundant functions

    ---------

    Co-authored-by: Merill <[email protected]>
    Co-authored-by: SoftFever <[email protected]>

commit 08ba3af
Author: Thomas <[email protected]>
Date:   Wed Dec 27 10:31:19 2023 +0100

    Update OrcaSlicer_fr.po (SoftFever#3295)

    * Update OrcaSlicer_fr.po

    Added missing translations.

    * Update OrcaSlicer_fr.po

    * Update OrcaSlicer_fr.po

    * Update OrcaSlicer_fr.po

    * Update OrcaSlicer_fr.po

commit 1a9332f
Author: Hukete <[email protected]>
Date:   Wed Dec 27 17:16:45 2023 +0800

    QIDI: Add two new filaments (SoftFever#3304)

    * 10-25

    Add TPU-95A HF

    * 1030

    Adding Introduction of Chamber Temperature Control Macros(M191) to Notes

    * 1102

    Add ABS-GF10 profile,
    Remove a extra "s" from the "0.36mm Standard @Qidi XPlus3 0.6 nozzle.json" file

    * 1106

    Add the PA value to some genetic filament profiles

    * Add new filaments profiles

    Add new filaments profiles

    * 1

    1

    * Add two new filaments

    Add two new filaments

commit 3f9fa08
Author: SoftFever <[email protected]>
Date:   Tue Dec 26 23:41:32 2023 +0800

    Fixed a bug that spiral_mode_max_xy_smoothing was not hiden when vase is not enabled

commit bc76677
Author: SoftFever <[email protected]>
Date:   Tue Dec 26 23:37:50 2023 +0800

    Fixed a regression that Turkish lang option was missing

    Fixed SoftFever#3278

commit cd029a3
Author: SoftFever <[email protected]>
Date:   Tue Dec 26 23:14:53 2023 +0800

    Layer height can't be zero. Fixed SoftFever#3268

commit f82b50f
Author: Lee Jong Mun <[email protected]>
Date:   Tue Dec 26 22:00:10 2023 +0900

    kor translation update (SoftFever#3288)

    fix typo

commit 8396fc0
Author: Ikko Eltociear Ashimine <[email protected]>
Date:   Tue Dec 26 21:19:41 2023 +0900

    Update README.md (SoftFever#3281)

    bellow -> below

commit e1c9915
Author: Lee Jong Mun <[email protected]>
Date:   Mon Dec 25 13:10:18 2023 +0900

    kor translation update (SoftFever#3272)

    fix type

    다리 -> 브릿지
    프리셋 -> 사전설정
    퇴출 -> 후퇴
    갭 -> 간격
    인쇄 -> 출력

commit 0de3b03
Author: Olcay ÖREN <[email protected]>
Date:   Mon Dec 25 07:09:09 2023 +0300

    Update Turkish translation (SoftFever#3270)

    * Update OrcaSlicer_tr.po

    New English terms were translated into Turkish.

    * Update OrcaSlicer_tr.po

    * Turkish language sentences were added.

    * Turkish words were edited.

    * Turkish words were edited.

    * Turkish words were edited.

    * Turkish words were edited.

    * Turkish words were edited.

    * Turkish translation update

    * Update Turkish translation

commit 5b3b064
Author: SoftFever <[email protected]>
Date:   Mon Dec 25 12:00:08 2023 +0800

    Don't hide exclude_object option for Marlin/RRF firmwares as Orca now support these firmwares
    Fixed SoftFever#3267

commit 485e1cc
Author: SoftFever <[email protected]>
Date:   Wed Dec 27 15:43:05 2023 +0800

    workaround to solve unwanted zstd dependency on runner (SoftFever#3298)

    * trigger build

    * Remove zstd only for dep build

    * reinstall zstd after building completed

commit fedd2bd
Author: SoftFever <[email protected]>
Date:   Tue Dec 26 21:09:58 2023 +0800

    downgrade to macos-12 as there are not many macos-13 runner instances availble yet

commit 2436988
Author: SoftFever <[email protected]>
Date:   Tue Dec 26 19:39:24 2023 +0800

    upgrade to macos 13 (SoftFever#3289)
    brew uninstall --ignore-dependencies zstd
    Use local curl
    remove brew/macport dependency

commit 38b22fc
Author: SoftFever <[email protected]>
Date:   Mon Dec 25 18:31:12 2023 +0800

    upgrade libjpeg-turbo to 3.0.1 to properly suppor cross compile

commit 0b0fd2f
Author: SoftFever <[email protected]>
Date:   Mon Dec 25 18:30:30 2023 +0800

    force to use own glew even if the system has installed one(brew)

commit 0fa5100
Author: SoftFever <[email protected]>
Date:   Mon Dec 25 18:29:18 2023 +0800

    Move DL_CACHE into deps folder. Make cross compile easier
PilotMatt added a commit to printago/OrcaSlicer-PrintagoEdition that referenced this pull request Feb 27, 2024
* Fix purging not working for BBL printers (SoftFever#2912)

* Fix crash when closing application  (SoftFever#2904)

* Update GUI_ObjectList.cpp

* Update GUI_ObjectList.cpp

(cherry picked from commit d71eaf9)

* Flashforge: Machine G-code Fix (SoftFever#2922)

Machine G-code Fix

(cherry picked from commit 930eac0)

* T500 profile fixes and optimizations (SoftFever#2848)

Corrected corrupted buildplate texture, corrected too high accelerations that made printing 0.4mm impossible, optimized T500 print and filament profiles with testing

(cherry picked from commit 10a0f58)

* Russian translation update OrcaSlicer V1.8.0 Release. (SoftFever#2873)

* Russian translation update

Russian translation update

* Russian translation update

Russian translation update

(cherry picked from commit 48c9143)

* Adding new nozzle profiles for the Creality Ender-5 Pro (2019) (SoftFever#2817)

* Add 0.6mm Nozzle Configurations for CE5Pro

* Add 0.5mm Nozzle Configurations for CE5Pro

* Add Nozzle Size Printer Variants 0.2-1.0mm

* Add 0.3mm Printer Variant

* Add 0.5mm Printer Variant

* Fix: 0.6mm Printer Variant

* Add Remaining Printer Variants

* Add CE5Pro Nozzles to list of Compatible Filament

* Add Generic FDM Process for Creality 0.3 Nozzle

* Update Generic FDM Process for Creality 0.6 Nozzle

* Add FDM Process for Remaining Creality Nozzle

* Add Processes For CE5Pro 0.8mm Nozzle

* Add Processes For CE5Pro 1.0mm Nozzle

* Add Processes For CE5Pro 0.2mm Nozzle

* Fix Initial Layer Settings

* Add Processes For CE5Pro 0.25mm Nozzle

* Add Processes For CE5Pro 0.3mm Nozzle

* Remove Profiles Outside their Min/Max Layer Height

* Update CE5Pro 0.4 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.2 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.25 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.3 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.5 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.6 Nozzle Naming Scheme to PR1100

* Update CE5Pro 0.8 Nozzle Naming Scheme to PR1100

* Update CE5Pro 1.0 Nozzle Naming Scheme to PR1100

* Incl. Remaining Base Config That Diff Is Based On

* Remove whitespace

(cherry picked from commit eab8139)

* Revert "Adding new nozzle profiles for the Creality Ender-5 Pro (2019) (SoftFever#2817)"

This reverts commit 09a8fa3.

* Merge pull request SoftFever#2780 from Noisyfox:bugfix/amd-png

Fix PNG build plate texture not rendering on AMD GPUs

(cherry picked from commit 93f62a4)

* Internal Bridge Flow rate parameter introduction

Updated internal bridging flow change and reverted bridge PR (SoftFever#2943)

Updated internal bridging flow change & reverted bridge PR

(cherry picked from commit ae9a2d5)
Internal Bridge Flow rate parameter introduction (SoftFever#2859)

* Internal Bridge Flow rate parameter introduction

* updated incorrect capitalisation

* Updated parameter ordering

(cherry picked from commit ce9a8d7)

* thick internal bridges (SoftFever#2954)

* Improve arc fitting when new overhang slowdown is used (SoftFever#2942)

(cherry picked from commit 3923b9c)

* disable misleading 3mf version warning

* bump version to V1.8.1

* Build release branches

* Update locale

* Improve PA calibration Line method so it works for bed origin not in (0,0)

* Fix precise wall for Arachne wall generator (SoftFever#2966)

Update WIKI for it

* Fix mac notary

* functional build - untested auto fire

* needs work, but working.

* small changes

* few small changes from Mac attack

* fix thread issue w/ WebView

* intermediate checkin.
- everything works; no intermediate messaging.

* sweeping changes to cleanup.  Build works.  Send/Recieve Commands and prints.
check-in prior to implementing eventing for messaging back to the client, and attempting events for slicing complete (again).

* reliable and functional for STL, uses current Dynamic Settings (whatever the UI is set to) for slicing.

* 3MF files (somewhat working) - assume 3MF saved from BBS/Orca.

* syntax updates for MacOS build + added windows build file for RelWithDebInfo

* events working up to slice complete / start send print.

* working; stupid events can go event themselves.

* sending messages again.

* let's go

* wtf checkin

* functioning well on slow poll.  dialog issuess.

* working every 5 secs.

* revert progress yield, remove m_info

* FUNCTIONING GREAT

* slight refactor for validating commands before processing.

* alpha build:
Missing: - config/download/load
              - gcode printing.

* round/cast float values to ints

* [#] - trim originalCommand in responses
[#] - ditch interstitial blocking push messages.
[#] - round numbers in status.

* configs cehckpoint

* fetch cofig working

* fixed leading /

* [#] - Attempt to delete file.ext.download and file.ext before downloading them].
 [#] - Move the download folder (it's in default user Download folder; user can easily manipulate transient files).

* fix job progress bug; not setting to 0 on SetProcessJob(true)

* Move DL_CACHE into deps folder. Make cross compile easier

* force to use own glew even if the system has installed one(brew)

* upgrade libjpeg-turbo to 3.0.1 to properly suppor cross compile

* upgrade to macos 13 (SoftFever#3289)
brew uninstall --ignore-dependencies zstd
Use local curl
remove brew/macport dependency

* downgrade to macos-12 as there are not many macos-13 runner instances availble yet

* fix for server timeout; prototype Confg

* workaround to solve unwanted zstd dependency on runner (SoftFever#3298)

* trigger build

* Remove zstd only for dep build

* reinstall zstd after building completed

* able to change printer config via UI

* Don't hide exclude_object option for Marlin/RRF firmwares as Orca now support these firmwares
Fixed SoftFever#3267

* Update Turkish translation (SoftFever#3270)

* Update OrcaSlicer_tr.po

New English terms were translated into Turkish.

* Update OrcaSlicer_tr.po

* Turkish language sentences were added.

* Turkish words were edited.

* Turkish words were edited.

* Turkish words were edited.

* Turkish words were edited.

* Turkish words were edited.

* Turkish translation update

* Update Turkish translation

* kor translation update (SoftFever#3272)

fix type

다리 -> 브릿지
프리셋 -> 사전설정
퇴출 -> 후퇴
갭 -> 간격
인쇄 -> 출력

* Update README.md (SoftFever#3281)

bellow -> below

* kor translation update (SoftFever#3288)

fix typo

* Layer height can't be zero. Fixed SoftFever#3268

* Fixed a regression that Turkish lang option was missing

Fixed SoftFever#3278

* Fixed a bug that spiral_mode_max_xy_smoothing was not hiden when vase is not enabled

* QIDI: Add two new filaments (SoftFever#3304)

* 10-25

Add TPU-95A HF

* 1030

Adding Introduction of Chamber Temperature Control Macros(M191) to Notes

* 1102

Add ABS-GF10 profile,
Remove a extra "s" from the "0.36mm Standard @Qidi XPlus3 0.6 nozzle.json" file

* 1106

Add the PA value to some genetic filament profiles

* Add new filaments profiles

Add new filaments profiles

* 1

1

* Add two new filaments

Add two new filaments

* Update OrcaSlicer_fr.po (SoftFever#3295)

* Update OrcaSlicer_fr.po

Added missing translations.

* Update OrcaSlicer_fr.po

* Update OrcaSlicer_fr.po

* Update OrcaSlicer_fr.po

* Update OrcaSlicer_fr.po

* ENH: Port of "wipe inside before extruding an external perimeter" feature from super slicer (SoftFever#3287)

* Wipe Inside at Start of perimeter

Co-Authored-By: Merill <[email protected]>

* Cleaned up code and linked it to the wipe on loop parameter

* Trigger build

* Introduced wipe before external loop parameter.

* Removed redundant functions

---------

Co-authored-by: Merill <[email protected]>
Co-authored-by: SoftFever <[email protected]>

* Fixed a regression bug that --datadir was broken
fixed SoftFever#3191

* add more hints

* fix/update locale

* Fixes and simplification of some Creality profiles. (SoftFever#3315)

* Fixes and simplification of some Creality profiles.

* Set correct support_air_filtration for K1 Max

* Fixed typo (SoftFever#3331)

* Fixed typo

* An other swtitch

* Main-i-fold(tm)

* Profile: Anker M5/C first layer consistency improvements (SoftFever#3321)

first layer consistency improvments

* make `exclude_object` off by default

* check for new version rework, support "check for stable updates only" mode

* update locale

* Changed Slic3r mentions (SoftFever#3344)

* Update German translation for 1.9 (SoftFever#3343)

* Updated Italian translation (SoftFever#3347)

* create datadir folder if not exist

* Rename '.bbscfg/bbsflmt' to 'orca_printer/orca_filament' for clarity and to reduce user errors. Note: Configs may no longer be compatible with BS hence the change

* fix po errors

* Update OrcaSlicer_tr.po - TURKISH translation update (SoftFever#3354)

Co-authored-by: SoftFever <[email protected]>

* Feature/build target 10.15 (SoftFever#3252)

* Set target to 10.15, make porter templates explicit

* CMAKE_OSX_DEPLOYMENT_TARGET refactor

* Update build_release_macos.sh

fix typo

---------

Co-authored-by: SoftFever <[email protected]>

* preset export small tweak

* bump version to 1.9.0 beta

* remove P1P-P1S warning

(cherry picked from commit 1d8cdf0)

* Fix preview legend window size (SoftFever#3363)

Fix issue that the legend window expands to all available horizontal space if scrollbar is displayed

(cherry picked from commit a8ade15)

* fixed a crash bug when switching to Bambu device page too fast

* Fix de for 1.9 release (SoftFever#3387)

fix some typos and new msgids

* Fr translations (SoftFever#3361)

* Updated French translations.

* Reword "strength"

* Updated translations

* Added missing translations.

* Fixed place on face translation

* Fixed strings.

* Updated locales

* Better translation for "Brim ears"

* Other round of fixes

* Added missing strings

* Renaming studio to Orca.

* Rewording "Arc fitting"

* Flush means purge and not "rinçage"

(cherry picked from commit 8afb675)

* Creality Ender 3 V3/KE important fixes and some fine-tunings (SoftFever#3362)

* Fixed retraction speed and added missing parameters.

* Fixes for manual filament change

* More tunings and fixes.

* Fixes and tunings

* Formatting

* Decrease z-hop for K1

* Updated thumbnails sizes to the same as Creality Print has.

(cherry picked from commit 98a9bf6)

* Update README.md to provide alternative download links of webview2 runtimes (SoftFever#3384)

Improve install and build instructions slightly.

(cherry picked from commit 60ab79c)

* Fix crash when click the color paint gizmo when object part is selected (SoftFever#3405)

Fix crash when click the color paint gizmo when object part is selected (SoftFever#3404)

Cherry-picked from bambulab/BambuStudio@1e99ce9

Co-authored-by: liz.li <[email protected]>
(cherry picked from commit 8fd4477)

* kor translation update (SoftFever#3406)

(cherry picked from commit 52c08ca)

* edit Ukrainian translation (SoftFever#3403)

(cherry picked from commit c623070)

* Update OrcaSlicer_tr.po - TURKISH translation update (SoftFever#3396)

* Update OrcaSlicer_tr.po - TURKISH translation update

* Update OrcaSlicer_tr.po - TURKISH translation update

---------

Co-authored-by: SoftFever <[email protected]>
(cherry picked from commit 1dfaef3)

* Revert "Improve ExtrusionLine::simplify, eliminating many very-short extrusion segments which led to blemishes in thin-wall models sliced with Arachne (SoftFever#3014)"

This reverts commit 3ca290d.

Fixed SoftFever#3340 SoftFever#3375

(cherry picked from commit a36df66)

* Creality K1/K1 Max, Ender 3 V3 Series and Ender 5 S1 baseplates (SoftFever#3365)

* Fixed retraction speed and added missing parameters.

* Fixes for manual filament change

* More tunings and fixes.

* Fixes and tunings

* Formatting

* Decrease z-hop for K1

* K1/K1 Max, Ender 3 V3 and Ender 5 S1 correct build platforms (Thanks Henlor !)

(cherry picked from commit 967dc3d)

* Fixed crashes caused by pressure eq when support is used (SoftFever#3407)

Fixed crashed caused by pressure eq when support is used

(cherry picked from commit 2f916f5)

* Fxied a regression that wall order can't be set in height modifier

(cherry picked from commit 5683729)

* fix intermittent crashes caused by detect_overhang_wall

(cherry picked from commit 4d1885e)

* Updated French translations. (SoftFever#3410)

on-behalf-of: @tomsbasement [email protected]
(cherry picked from commit 2cfcd0d)

* Update 0.48mm Standard @bbl X1C 0.8 nozzle.json (SoftFever#3379)

* Update 0.48mm Standard @bbl X1C 0.8 nozzle.json

Removed P1S 0.6mm nozzle from process profile.

* fix

---------

Co-authored-by: SoftFever <[email protected]>
(cherry picked from commit f99394b)

* Added PAUSE command for change_filament_gcode on Elegoo Neptune 4 series (SoftFever#3411)

Added PAUSE command for change_filament_gcode

on-behalf-of: @tomsbasement <[email protected]>
(cherry picked from commit 9701ab1)

* bump version to 1.9.0 rc

* Set CMAKE_OSX_DEPLOYMENT_TARGET properly on dev machine when calling build_release_mac.sh

(cherry picked from commit 8d5bb6c)

* Improve rendering quality when model color is pure black

(cherry picked from commit 9e443ba)

* Fix issue that "Per-glyph" option not working when UI is in Chinese (SoftFever#3425)

(cherry picked from commit 712478c)

* bump to 1.9.0 official version

* Fix boost download server issue

* some profile changes based on feedbacks

(cherry picked from commit 8e3f7e7)

* Fix NaN when adding negative part (SoftFever#3423) (SoftFever#3431)

(cherry picked from commit 1ea33f0)

* Feature/update deps (SoftFever#3445)

* update deps

* fix win build errors

* fix mac build

* update linux

* QoL: Keyboard shortcuts updates & fixes (SoftFever#3457)

* Bring back the shortcut to zoom in & out

* Update keyboard shortcut info

* Update keyboard shortcut info

* Different handling of shortcut 'T' for emboss text

Cherry-picked from prusa3d/PrusaSlicer@58e3143

Co-authored-by: Filip Sykala - NTB T15p <[email protected]>

---------

Co-authored-by: Filip Sykala - NTB T15p <[email protected]>

* skip writting object info for BBL printers

* fix object exclusion regression on BBL printers

* update gitignore

* Fixed crashes when send gcode to BBL printers

* Added an option to enable multiple bed type support for printers

* Fixed an issue that some profiles has ironings enabled by default

* bump version profile version to "01.09.00.02"

* reliably downloading, setting configs.

* reliably import, load, and set configs from Printago.

* end-to-end

* [#] - get list of printers based on input of printer;
Compatible Printer Config names will be returned with the machine status/machine_list calls.

* [#] - add compat filament/print configs to printer config reply.
when retrieving a "print" config, it also list names of compatible filament and print configs that will work.

* mac build error. FilePath requires non-WxString.

* disable PrintagoPanel right-click/context menu

* switch temp dir to match BBL download style using filesystem::temp_directory_path() - TBD test on MacOS for fix.

* mac bug with string format

* thread pool test - build success; non-functional.

* swtich printer logic.

* [#] - Disable UI - m_tabPanel and mTopBar are disabled/enabled by SetCanProcessJob

* remove version check dialog.

* dont forget...to...run...this...

* [#] - JobID (from Printago):
 [#] - File System: append PrintagoJobID to the folder structure when downloading/creating models/configs.
 [#] - set in blocking job info (CanProcessJob stuff)

* FEATURE COMPLETE FOR E2E TESTING

* Ready for re-branding

* cosmetic changes (Orca PE)

* small thing.

* Dev/feature/mqtt proxy (#4)

* web socket connection replace GUI thread WebView.
* added bbl "checkbox" print options. (+ chekcbox checked req'd stuff)
* added support for plate_type incoming variable
* interstitial blocking job process updates
* remove PrintagoPanel reference and files
* change to PBJob server state / messaging.
* remove legacy PrintagoPanel files.

* json message format done (#5)

* Dev/ws auth check (#6)

* formattting mostly.

* refactored parameters to be json.
added authorization flow for web socket commands.

* priortize auth errors over bad command errors.

* dingle pointers.

* ParseJson

Made this more robust for parameters object, passed input command from stream as value; pass by ref may have been causing segfault as it went out of scope from the calling function.

* memory leaks

"new" leak from PrintagoReponse.  Switched to unique_ptr

* Dev/all off UI thread when able (#7)

* private machine_dialog

and further memory savings

* small memory savings

* single connection (#8)

* small fix to success message

* Mac Bug: crash after print send success message (#9)

Bad reference; fix w/ copy + CallAfter

* mistake from refactor (#10)

unblock UI *only* when erroring from within a blocking operation.

* checking (#11)

* Remove Dialogs ;  (#14)

9 classes derived from the MsgDialog class. These messages are now, sent to the printago websocket. The dialogs are not shown.
For instances where ShowModal() was used to open the dialog, I return the most falsy one. The buttons are dynamic, but from a fixed set. We send back to caller whatever is availabe in the dialog, in this order: ["Cancel", "No", "OK", "Yes"].
These message are more like notifications. They are feedback more than they are anything for the user to action.

Separately, there are the classes that derive from the parent class of MsgDialog. Most we can ignore:

InputIpAddressDialog - sending to printer error, cancels blocking job
UpdateVersionDialog - lambda that creates it was previously commented.
SecondaryCheckDialog - "Are you sure" messages, cancels blocking job
ConfirmBeforeSendDialog - slicing error messages, cancels blocking job.
ReleaseNoteDialog - called in one place, commented out.
UpdatePluginDialog - called once at startup; commented out.

* Squashed commit of the following:

commit ca3b071
Author: PilotMatt <[email protected]>
Date:   Mon Feb 26 12:29:40 2024 -0500

    override tested and funcitonign

commit a79dcfe
Author: PilotMatt <[email protected]>
Date:   Mon Feb 26 00:25:34 2024 -0500

    working

commit a857816
Author: PilotMatt <[email protected]>
Date:   Sun Feb 25 00:12:26 2024 -0500

    done

    download the configs you pass.  If there's a override file,
    open both into json objects, and replace the values in the override value for all keys, except those excluded.
    for layer-height fields, we open the printer config, read the min/max and clamp the override value as needed.
    if the printer config doens't specify the max layer height (=0), then the max_layer_height is 75% of the nozzle_diameter.
    save  the merged config file with a new file name.
    update the filename to pooint to the merged one.
    load configs into Orca as previously.

commit 84db29b
Author: PilotMatt <[email protected]>
Date:   Sat Feb 24 23:41:43 2024 -0500

    cvhanges

* status/sync_profiles command complete. (#17)

Command will fetch profiles from BBL account into Orca.  Async command.  Replies:
{
  "client_type": "bambu",
  "command": {
    "action": "sync_profiles",
    "command": "status"
  },
  "data": {
    "local_command": "sync_profiles",
    "local_command_detail": "syncing profiles: async start",
    "success": true
  },
  "printer_id": "[email protected]",
  "timestamp": "2024-02-26T21:43:59Z",
  "type": "success"
}

{
  "client_type": "bambu",
  "command": "sync_profiles",
  "data": {
    "local_command": "sync_profiles",
    "local_command_detail": "syncing profiles: complete",
    "success": true
  },
  "printer_id": "[email protected]",
  "timestamp": "2024-02-26T21:44:04Z",
  "type": "success"
}

* fix for logging success/failure of profile sync

---------

Co-authored-by: Ioannis Giannakas <[email protected]>
Co-authored-by: FlashforgeOfficial <[email protected]>
Co-authored-by: Trist0ne <[email protected]>
Co-authored-by: Andy <[email protected]>
Co-authored-by: Paul <[email protected]>
Co-authored-by: SoftFever <[email protected]>
Co-authored-by: Olcay ÖREN <[email protected]>
Co-authored-by: Lee Jong Mun <[email protected]>
Co-authored-by: Ikko Eltociear Ashimine <[email protected]>
Co-authored-by: Hukete <[email protected]>
Co-authored-by: Thomas <[email protected]>
Co-authored-by: Merill <[email protected]>
Co-authored-by: just-trey <[email protected]>
Co-authored-by: Heiko Liebscher <[email protected]>
Co-authored-by: Fabio Forcina <[email protected]>
Co-authored-by: kpishere <[email protected]>
Co-authored-by: Noisyfox <[email protected]>
Co-authored-by: Silence <[email protected]>
Co-authored-by: Vitalii Kutia <[email protected]>
Co-authored-by: SufficentMuffin <[email protected]>
Co-authored-by: Filip Sykala - NTB T15p <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Thin walls with arachne have tiny moves causing blemishes
2 participants