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

[RFC] Wall layers interlock #5261

Closed
wants to merge 1 commit into from

Conversation

buzzhuzz
Copy link
Contributor

@buzzhuzz buzzhuzz commented May 4, 2024

Description

This PR is a Request For Comments and not intended to me merged as is. Intention is to get community response to see if (a) community is interested in this change and (b) what could be improved in feature design.

Background: I mostly print engineering parts and often use more than 3 walls. Having more than 3 walls I often see 3rd and subsequent walls (counting from outer inwards) may have bad adhesion or even came completely separated while printing vertical walls.

It may look like this:

  1. Test cube with no infill, top or bottom layers at 5 perimeters (sliced with OrcaSlicer).
    PXL_20240503_230754770
    PXL_20240503_232911575
    PXL_20240503_232931415
  2. Actual part (sliced with PrusaSlicer)
    PXL_20240224_010905357

I tried to fix this by adjusting existing set of parameters, but with no success. My flow rate looks OK since layer fill comes out completely flat with no gaps.

I also heard from colleague who use Cura that he also see this kind of artifacts.

So I've decided to do a patch which makes cross-section of wall layers to look like bricklayer pattern:
Untitled Diagram drawio(2)

New parameter called "Outer wall line width variance" is added which defines a difference of outer wall line width for two consecutive layers.

Screenshots/Recordings/Graphs

Here are cross-section for 5 perimeters printed with 0, 25 and 50 outer wall width variance:
PXL_20240503_233407005(1)

  • 0% variance has distinctive vertical lines formed by gaps between inner walls (2, 3, 4, 5).
  • 25% has less distinctive lines
  • 50% does not have vertical lines.

Also, setting non-zero variance makes internal wall no longer smooth. That side effect may also increase part strength by making stronger internal fill bond just like "Alternate extra wall" feature, but in this case there are no extra wall added.

Downside of current implementation

Since two adjacent layers of outside perimeter being squished to a different width, outside wall looks slightly less smooth. Outside dimensions are kept the same though.

Testing

If you going to try test build, new parameter called "Outer wall width variance" is added to the "Strength" setting page. Enable advanced parameters to see it.
Screenshot from 2024-05-04 08-41-01

@buzzhuzz buzzhuzz marked this pull request as draft May 4, 2024 03:51
@vgdh
Copy link
Contributor

vgdh commented May 4, 2024

it has some potential. Sometimes I have similar issue when use more than 3 walls and get a gap between walls (I think due to temperature shrinking).
Have you tried to start change line width not for the surface wall but for the second one?

@buzzhuzz
Copy link
Contributor Author

buzzhuzz commented May 4, 2024

Have you tried to start change line width not for the surface wall but for the second one?
Good idea I didn't thought of.

However, that'll make implementation more tricky since all internal walls has the same path type within slicer while outer perimeter is a different one. But I'll look if that is something I could implement.

@igiannakas
Copy link
Contributor

Isn't the issue you are seeing a consequence of under extrusion in the inner layers? Usually these are printed faster which means that the extrusion rate is slightly lower which if you're borderline under extruding will result in perimeter separation.

An alternative approach to improve perimeter binding may be to increase the overlap between inner and inner-inner perimeters similarly to what the precise outer wall does (in reverse and for the internal walls only).

Or another way may be to create a separate flow rate parameter for external and internal walls, which would allow you to tweak the volume of plastic extruded and over extrude slightly the internal perimeters while maintaining dimensional accuracy for the external ones.

However, what you're proposing is interesting for a different reason - it may increase part strength as the perimeters are overlapping with each other. CNC kitchen had done a similar video but their overlapping perimeters test was on the vertical plane (not the horizontal plane)

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.

I agree with @igiannakas here regard the pictures. The print looks like an underextrusion issue to me.
But I like the idea

@buzzhuzz
Copy link
Contributor Author

buzzhuzz commented May 9, 2024

@SoftFever, @igiannakas,

Thanks for the suggestion on the nature of this defect. I took some time to make more experiments and even compare gcode output to one produced by the CrealityPrint. It turned out to be under extrusion during acceleration. Somehow, machine profile cached within .config/OrcaSlicer/system/ got machine_max_acceleration_extruding set to 500. I've recreated config dir from scratch using upstream configurations and now there are no splits between perimeters. Cross section looks uniform along whole run:
PXL_20240509_030958089

However, it is still possible to split walls using flat screwdriver with some small force applied.

@vgdh
Copy link
Contributor

vgdh commented May 9, 2024

It may be it temperature issue. Some times they just read a wrong temp or the sensor is damaged. If you can check the temperature with a separate tool do it.

@buzzhuzz
Copy link
Contributor Author

buzzhuzz commented May 24, 2024

@vgdh, I've looked into the code once more following your suggestion to push walls starting from the second priemeter and got another working POC: front-light-bracket_PETG_35m55s.gcode.zip

Screenshot from 2024-05-24 06-41-22
Screenshot from 2024-05-24 06-41-15

I have not printed it yet (gonna do it during weekend), but looking at gcode l expect visual appearance will not be changed/degraded.

This new approach currently implemented for Arachne perimeter generator only.

Add option to produce interlocked perimeters.
"Internal wall interlock" parameter defines percentage of internal wall
width by which every other layer pushed inwards starting from 2nd
perimeter. This produces bricklayer-like crossection pattern:

Regular cross-section:

  +-----+------+------+
  | ext | int0 | int1 |
  +-----+------+------+
  |     |      |      |
  +-----+------+------+
  |     |      |      |
  +-----+------+------+

25% interlock:
  +-----+------+------+
  | ext | int0 | int1 |
  +-----+------+-+----+-+
  |     |        |      |
  +-----+------+-+----+-+
  |     |      |      |
  +-----+------+-+----+-+
  |     |        |      |
  +-----+------+-+----+-+

50% interlock:
  +-----+------+------+
  | ext | int0 | int1 |
  +-----+------+--+----+-+
  |     |         |      |
  +-----+------+--+----+-+
  |     |      |      |
  +-----+------+--+----+-+
  |     |         |      |
  +-----+------+--+----+-+

Besides of inter-locking layers there are side-effect similar to the
"Alternate extra wall" feature
@buzzhuzz
Copy link
Contributor Author

buzzhuzz commented May 24, 2024

Perimeter interlock reworked to internal wall interlock which now works as follows:

interlock-rework drawio

Current implementation is for Arachne only simply because it was easier to implement.

Test prints:

  1. Cross-section
    PXL_20240524_122728935
  2. Outer wall finish. Difference in outer wall finish is less apparent, but still noticeable under specific lightning.
    PXL_20240524_122907177

@buzzhuzz
Copy link
Contributor Author

I'm closing this PR so far. Implementation needs to be refined in order to take care of all use-cases.

@buzzhuzz buzzhuzz closed this May 27, 2024
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.

4 participants