Page 1 of 1

Offset perimeters with infill for strength?

Posted: Fri Sep 30, 2016 5:04 pm
by PHYKER
I was thinking about a feature that would offset every other layer's perimeters.
Say you have 4 perimeters.
1st layer would print 4 perimeters.
2nd would print 3.
3rd would print 4.

It could be 5 and 3/ 4 and 2/ 6 and 3/ however you set it up.

This would potentially make the print stronger by weaving the infill into the perimeter and would make it easier to use with printers that make the small gaps where infill meets the perimeters. It would be the same as "extra inflation" for bridging but adding this to every other layer could make prints much stronger by adding the weaved perimeters/ infill.

Thanks everyone for making such a great product and keep the updates coming! =-D

Re: Offset perimeters with infill for strength?

Posted: Mon Oct 03, 2016 2:31 pm
by zemlin
That's an interesting idea, but for it to make the difference you're looking for you'd have to ensure that your perimeter -> perimeter bonds are better than your infill -> perimeter bonds. I'm not sure that's the case at all. You can specify an overlap percentage on the infill and if you push that up a bit you are probably getting stronger bonds between the infill and your innermost perimeter than between perimeter beads. If that's the case, I don't see how the weaving will improve the part integrity.

Re: Offset perimeters with infill for strength?

Posted: Mon Oct 03, 2016 5:44 pm
by PHYKER
It would act like a "space frame" built in. That and it would reduce a part's weight/ material use.
Just thought it would be a good exipramental option.

Re: Offset perimeters with infill for strength?

Posted: Thu Oct 06, 2016 1:58 pm
by dorsai3d
I've been meaning to write a quick script that would do this. You can use two similar processes to print the same model and interleave them by postprocessing the code to delete every other layer. This is a total messy hack, but you could definitely use this to test the interleaved perimeters (or interleaved infill percentages, or anything,really). I'm going to test it on an actual print sometime layer, I've got some other things going right now.

Usage:
interleave.py <FILE> <PROCESS COUNT>

Example Simplify3D postprocessing line:
./Users/dorsai3d/bin/interleave.py "[output_filepath]" 2

Code: Select all

#!/usr/bin/env python

"""
Interleave overlapping process gcode generated by Simplify3D
interleave.py <FILE> <PROCESS COUNT>
v0.1 by dorsai3d
"""

import os
import re
import sys
import string
import time

if __name__ == '__main__':
   if len(sys.argv) < 3:
      sys.exit('usage: interleave.py <FILE> <PROCESS COUNT>')
   infilename = sys.argv[1]
   outfilename = '{}_interleaved{}'.format(os.path.splitext(infilename)[0],os.path.splitext(infilename)[1])
   
   processCount = int(sys.argv[2])
   currentLayer = 0
   
   #Wait until Simplify3D is done writing the gcode file
   targetLastModifiedTime = os.path.getmtime(infilename)
   while (time.time() - targetLastModifiedTime) < 0.5:
      sleep(0.25)
      targetLastModifiedTime = os.path.getmtime(infilename)
   
   with open(infilename) as infile:
      with open(outfilename,"w") as outfile:
         for line in infile:
            code = string.split(line)
            if len(code)>1:
               if code[1]=='layer':
                  if code[2] != 'end':
                     currentLayer = currentLayer + 1
                  elif code[2] == 'end':
                     currentLayer = 0
                  outfile.write(line)
               
               elif currentLayer == 0:
                  outfile.write(line)
                  
               elif currentLayer % processCount != 1:
                  pass
               
               else:
                  outfile.write(line)