Jump to content

inner perimeters


Jabbery

Recommended Posts

Posted · inner perimeters

Hello,

 

 I have been doing some testing of 3D printer in respect to modeling in a less expensive material first and once perfected using more expensive materials like Aluminium or steel on a milling machine.

 

 I have found that a model made in F360 needs to be different for a 3D printer and I'm not sure if there is a correction factor to allow the same dimentionally correct model to be used for 3D print or milling.

 

 In a very simple test, I made a coupling for steel square tubing that is 31.7 mm outside size tubing, I modeled 31.75 mm inside with a 3 mm wall thickness and the coupling would not go on the tubing. I found the inner perimeter size to be the nozzle size smaller than the actual draw model (0.4 mm) suggesting inner perimeters are printed with the center of the nozzle. Thus forcing the model to be adjusted for 3D print and not usable for machining (or at the very least more complicated). Note the outer perimeter is exact suggesting the nozzle path is adjusted for extrusion width.

 

 Any suggestions on what to do?

 

Thanks

  • Link to post
    Share on other sites

    Posted (edited) · inner perimeters

    I suggest you use FreeCAD to build your STL files

     

    As a parametric drawing software you can write all of your inner perimeter with a diameter like d+delta

     

    When you want a stl file for 3D printing set delta to +0.4mm and then export your stlfile in Cura

    All the diameter using delta will be automatically updated by FreeCAD at once

     

    Otherwise set it to 0 and export your stl file for your other technique

     

    The difference between the 2 techniques maybe due to the fact that 3D printing is an add material process and milling is a remove mateiral process (with the size of the tools)

     

     

    Edited by JCD
    error in the sign +0.4 and not -0.4
  • Link to post
    Share on other sites

    Posted · inner perimeters

    Thanks for the idea, we just started doing this in F360 using a user perimeter to offset inner perimeters so we can set it to zero for other processes but it is no where near as simple as that in the modeling stage.

     

     It does seem like a lot of extra work that can get very complicated with many variable slicer settings making this impossible to do outside of the slicer.

     

    It seems a little odd to me that the slicer does not reproduce dimentional accuracy and it has to be manually adjusted causing all types of issues with items like adaptive layers that will then throw any manual adjustment out of wack. The slicer is the only program that knows all the parameters at the layer like nozzle size, layer height and there the actual inner perimeter is. As a modeler I have no idea what layer height, nozzle size is going to be.

     

     As an example, if I draw a square hole in an object that is 10mm x 10mm I would expect it to be that size no matter what the slicer settings are changed to (nozzle size, layer height, adaptive layer etc). On all CNC machines I have worked on this is true.

     

     In another example, if I am modeling a part to be machined out of steel and do all prototypes in plastic I would likely use a huge nozzle for high speed in prototyping. Once the prototype passes I would run it with a smaller nozzle in 0.1 layer height for proof and acceptance of the client prior to cutting it out of a expensive piece of steel. Adjusting the model constantly gets very complicated and introduces opportunities for errors negating using 3D printers as viable prototyping devices.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    I have not  experience the two techniques on the same pieces so I do some 'crafstman work on my stl file if there is a dimensional problem ...

     

    Your opinion is quite relevant anyway

     

    I do'nt know F360 but I think in FreeCAD you can make two macros to automatically do the stuff, including a suffix in the STL filename to recognize which technique is it for

     

    For example I did a macro to make polar function curbs like epicycloid

  • Link to post
    Share on other sites

    Posted · inner perimeters
    4 hours ago, Jabbery said:

    suggesting inner perimeters are printed with the center of the nozzle.

    But they aren't.  If you print a cube that is exactly 100mm on a side and look at the gcode it will print inwards by half the line width (which is usually the nozzle width).

     

    What's happening is that PLA shrinks in the first milliseconds as it comes out of the nozzle and is like a liquid rubber band and so vertical holes are smaller than desired because of these forces.  Typically I add .5mm to all vertical holes in CAD.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    This is true it is the inner perimeters that I am having a problem with. Outer perimeters seem to be compensated.

     

     To test

    Draw a box 100mm x 100 mm (larger is easier to see the error)

    Draw a box inside (offset) 90mm x 90mm

    This will leave you with a 5mm wide path around the perimeter

    Extrude this 5mm path 3mm (for fast print)

     

    Measure the X and Y outer perimeter. If your printer is tuned it will be exactly 100 x 100.

    Measure the inner space, it should be 90mm but it is not! It is out 1 filament line width (1/2 width on each perimeter wall).

     

    Print this part in different line widths, we are only dealing with X and Y so far.

     

     Second test: - now adding Z to the test.

    Draw a solid block say 20mm x 20mm and extrude it 20mm so you now have a solid cube.

    Cut away on X and Y axis a 10mm x 10 mm box centered. Again you now have external and internal perimeters you will find the internal perimeters are off by 1 line width on X & Y and 1 layer height on Z. Your hole will if you are using 0.4mm line width be 9.6mm not 10. 

     

     Print it in different layer heights. i.e. draft at 0.3mm height for speed then 0.1mm for final version. What use to fit no longer fits.

     

    That is fairly easily correctable assuming you always print with a 0.4mm nozzle with a 0.4mm line width and say 0.15mm layer height well assuming you have nothing that is diagonal. Change your nozzle, layer height or line width, your modeled correction factors for 0.4mm (0.2mm on each inner perimeter) are now wrong again your back to not having a 10mm x 10mm hole.

     

     Now add Z axis.... vary the layer height, set adaptive layers where you have nooooo idea how to corect for layer height.

     

     Using the CNC example, if you slice (cam to generate gcode) use a 12mm endmill to cut a hole that is 50mm x 50mm in size, you get a 50mm hole, if you slice again with a 25mm you still get a 50mm x 50mm hole. The tool size is compensated for by the slicer (cam software). Ignore the issues with the corners on a CNC since larger tools will create larger radius. We talking about inner perimeter compensation for the tool (line width/layer height)

     

     Now lets get slightly more complicated,

    Draw a post that is 10mm in dia and extrude it 20 mm solid. Our goal is to insert this post into the next part.

    Draw a hollow tube 15mm in dia with a 10.1mm (some wiggle space) hole, the post will not fit.

    The post has an outer perimeter so it will be 10mm in dia, the tube will have an inner perimeter so it will have a 10.1 - 0.4=9.7mm hole, no fitty.

    Now lay it down so your dealing with X/Z axis, both layer height and line width. On the X/Y axis inner perimeter you are out on each perimeter by the line width / 2 and on the Z axis it seems (not fully tested) you are out by 1/2 the layer height on each side of the perimeter.

     

      Now build an object that has 20 different faces that connect with other parts crossing multiple axis.

     

     And to get really twisted with how to compensate, draw a diagonal channel like a cylinder and a key-way through an object, Z/Y and Z will be inaccurate and basically impossible to compensate, guessing starts and many model re-prints to get it right.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    I think the problem (besides flowrate values) is due to the added technique of 3D printing.

     

    1) look at the theorical movement in Cura :

    I sliced a 20mm cube with a cubic hole in xy plane of 10mm

     

    Below is the Gcode for the outside outer wall

    We see that the movement is correct the center of the nozzle(here 0.4mm) is 0.2 mm inside the square perimeter

     

    OuterWall.thumb.gif.9d66047a227fd00fc50f1abef0035fe0.gif

     

    Now for the inside square hole

    Here also the movement is correct, 0.2 mm outside the square perimeter

     

    OuterWallHole.thumb.gif.1852c9c1823443932cd4a411d27a1e9b.gif

     

    2) Now what is maybe happening

    When you are printing a perimeter (either a square, a circle )you can look at the filament of 2 sides, the interior side of the perimeter, and the exterior one. Between the 2 sides there is a length difference the interior side is smaller (2PI x nozzleDiameter for a circle, for a square the diference is concentrated in the corners). So the plastic in excess will tend to move toward the inside.

    Furthemore, every change of direction will have a slight dragging effect on the filament toward the interior, adding to the former phenomenon (the higher the speed, the higher the drag)

     

    I think this explain the problem of the hole dimensions

    • Like 1
    Link to post
    Share on other sites

    Posted · inner perimeters

    Thanks, excellent explanation and great area to explore. It does not look like that is the case in my cura gcode file.

     

     I verified the cura 4 settings and it is 0.4mm line width,2 perimeters,100% initial layer line width. Filament feeder is calibrated with 100mm of filament feed. No visible over extrusion. 

     

    this is a 100mm x 100mm as I mentioned above box that is 3.2mm wide and 3mm high. Basically a hollow box. 100mm with 93.6mm empty space.

     

    ;TYPE:WALL-OUTER
    G1 F3000 E160.37867
    G1 F1800 X103 Y197 E164.97456
    G1 X197 Y197 E169.57044
    G1 X197 Y103 E174.16633 ; - 94mm wide
    G1 X103 Y103 E178.76222
    G0 F3600 X103 Y103.2
    G0 X102.5 Y103.2
    G0 X102.572 Y197.428
    G0 X199.33 Y199.33
    G0 X199.8 Y199.8
    G1 F1800 X100.2 Y199.8 E183.6319 - outer perimeter is 99.6mm which is correct compensation for 0.4mm line
    G1 X100.2 Y100.2 E188.50158
    G1 X199.8 Y100.2 E193.37126
    G1 X199.8 Y199.8 E198.24095
    G0 F3600 X199.6 Y199.8
    G0 X199.4 Y199.4

     

    ;TYPE:WALL-INNER
    G1 F1800 X100.6 Y199.4 E203.07152
    G1 X100.6 Y100.6 E207.90208 ;- 98.8
    G1 X199.4 Y100.6 E212.73265
    G1 X199.4 Y199.4 E217.56322
    G0 F3600 X199.33 Y199.33
    G0 X102.572 Y197.428
    G0 X102.53 Y102.53
    G0 X102.6 Y102.6
    G1 F1800 X102.6 Y197.4 E222.19822
    G1 X197.4 Y197.4 E226.83322
    G1 X197.4 Y102.6 E231.46822 ; - 94.8 - incorrect should be 100 - 3.2 * 2 + 0.4 = 94
    G1 X102.6 Y102.6 E236.10322
    G0 F3600 X102.21 Y102.21
     

     This is where I got the idea inner perimeters was not compensated. 

    Outside measurement = 100mm

    Inside measurement = 100 - 3.2 - 3.2 = 93.6 but with tool path compensation it needs an extra 0.4mm  = 94.0

     

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Using an example like above (100mm square with 90mm square cutout) and 0.5mm wide lines, Cura produces gcode with the expected coordinates.

     

    Inside wall...

     

    Screenshot_2019-05-12_10-50-58.thumb.png.c25b1064824f8d9a5d2abfb1f082208e.png

     

    Outside wall...

     

    Screenshot_2019-05-12_10-51-22.thumb.png.e55e61c90e86f94b7ea9c272ed54c61a.png

     

    No problems there.

     

  • Link to post
    Share on other sites

    Posted (edited) · inner perimeters

    In Cura INNER WALL means the wall which is behind the OUTER WALL, and this is true for the exterior wall of the box and the interior wall (the hole in the box)

     

    On this line :

    G1 X197.4 Y102.6 E231.46822 ; - 94.8 - incorrect should be 100 - 3.2 * 2 + 0.4 = 94

     you are on the INNERWALL, which is 0.4 inside the OUTER WALL (on any side of the hole, hence the 2 x 0.4 difference with your calculation)

    The corresponding line on the OUTER WALL is

    G1 X197 Y103 E174.16633 ; - 94mm wide

    and we see the 0.4 difference for the X and Y with the INNER WALL

    So Cura is correct (but it does not take care of the effects I told before)

     

    For the Cura Team

    Maybe you can when slicing, track if you are in a convex  or concave wall shape .

    The concave wall shape is when if you have 2 following printing segments, (A>B then B>C, the middle of AC is outside the shape

    For instance in the sample above

    ;TYPE:WALL-OUTER
    G1 F3000 E160.37867
    G1 F1800 X103 Y197 E164.97456
    G1 X197 Y197 E169.57044

     

    in this case, modify the lines, to not extrude on the tiny travel before the corner (the histeresis make this unecessary after)

    ;TYPE:WALL-OUTER
    G1 F3000 E160.37867
    G1 F1800 X103 Y196.8 E164.9 (I have not calculate the exact amount of extrusion)

    G0 X103 Y197  (no extrusion here)

    G1 X197 Y197 E169,5  (same difference as in the line above e.g 169.57044-(164.97456-164.9)

     

    Edited by JCD
  • Link to post
    Share on other sites

    Posted · inner perimeters

    Oops I should have seen that since I even calculated it. I was following the same order as the outer wall I suppose.

     

    I'm not sure I follow the thought of extrusion seeping into the open space. If the amount of space to fill is calculated and the feeder is calibrated the overflow should be minimized (assuming exactly 1.75mm filament). Seeping by 0.2 mm or half the line width would mean the seeping causes the extruded line to be 0.6+mm wide without losing the layer height. The actual measured inner space is 92.75 mm measured on both X & Y in the corners and in the center. It should be 93.6 which makes the overflow 0.85mm which is an full line width on each side.

    I will do a test print later today with the flow rate set to 90% to see how this changes the inner space, 90% should under extrude.

     

     Looking at the gcode correctly now I clearly see the inner perimeter is compensated.

  • Link to post
    Share on other sites

    Posted (edited) · inner perimeters

    I ran 3 test prints of the 100mm x 100mm box with a cutout of 93.6mm. I used 93.6 because the remaining border is 3.2mm is 8 lines exactly at .4mm line width, with offsetting inner and outer tool paths of 0.2mm there is 7 lines exactly remaining.

    Measurements should be outer 100mm, inner 93.6mm

    Note: The initial test at 100% flow the outer measurement was 100mm, filament feeder is calibrated at 100mm of feed with calipers.

     

    Gcode was generated twice for each infill pattern, flow rate was adjusted at the printer.

     

    Cura Settings:

    Layer Height 0.2

    Initial Layer Height 0.3

    Line Width 0.4

    Nozzle 0.4

    Wall line count 2

    Top/Bottom pattern Lines

    Infill Density 20%

    Infill Pattern ZigZag

    Retract on 4.0mm

    Build Plate Adhesion Brim

    Material ABS

    Flow Rate 90%

    Model outer perimeter measurement 99.47 mm, inner perimeter 92.45 mm

     

    Changed Settings

    Top/Bottom Pattern Concentric

    Infill Pattern Concentric

    Same Everything else

    Model outer perimeter measurement 99.6 mm, inner perimeter 92.8 mm

     

    Changed Settings

    Top/Bottom Pattern Concentric

    Infill Pattern Concentric

    Flow Rate 85%

    Model outer perimeter measurement 99.4 mm, inner perimeter 92.9 mm

     

     In all flow rate adjusted prints 1 corner (start/stop) did not correctly form. Inner perimeter still maintaining a 0.8 - 1.15mm undersized. A flow of 85% showed clear signs of under extrusion, 90% flow only showed under extrusion on the start/stop corners.

     

     

    Edited by Jabbery
    Added note
  • Link to post
    Share on other sites

    Posted · inner perimeters

    Just a point of interest and who knows it could be a trick.

     

     The latest Makerbot commercial in Youtube they focus on their printers/software do not have this problem.

     They show a part printed on their printer and a competitors printer that a large bearing fits into the part, the bearing fits in their model and not in the competitors.

     

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Jabbery,

     

    Have you tried in PLA, as ABS is a pain with retraction ?

  • Link to post
    Share on other sites

    Posted · inner perimeters

    On this project no. I have had the same difficulty with PLA on other projects, they were also more simplistic like simple mounting plates so it was no problem and low risk of error to re-draw the model for printing or machining.

     

     This project has multiple items that mount on X, Y and Z axis (no diagonals thank god). The final part will be both printed in ABS and machined from Aluminium. They want both. So we thought we would just work with the end material to fine tune settings.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Jabbery,

     

    Is it possible to put in the post the 3mf file by saving the project, for us to see what's your complete environment?

     

    You have a brim on your model, is it only on the outside or everywhere?

     

    If only on the outside, I suppose the wall printing on the interior will be alone on the bed, with a lot more opportunities to retract than if it was 'sustained' by the brim

  • Link to post
    Share on other sites

    Posted · inner perimeters

    CFFFP_100x100x3mm test.3mf

     

    Here is the latest copy I was messing with.

    I have a brim 8mm outside to make the ABS stick

     

     Measurements I took were on the top 2mm to eliminate any 1st level/brim errors.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    My suggestions :

     

    1) uncheck brim only on the outside

    2) change Infill pattern from concentric to grid (you have no infill on your part)

    3) uncheck infill before walls (to have less visual impact of the infill)

     

    furthermore isn't it dangerous (retraction) to have the cooling fan at 30% with ABS?

  • Link to post
    Share on other sites

    Posted · inner perimeters

    That was the latest test version I just hit save on for you. Originally the infill was the default as per a previous message of settings.

     

     Concentric was tested to see if there was an issue with the diagonal lines causing extra filament flow buildup pushing out the perimeter. I had noticed on a print or 2 that infill often has a bit of buildup at the start of the path.

     

    On the cooling fan I actually have no idea on ABS but I have had the best success with that setting. I basically searched the internet for settings for ABS and found 30-100%.

     

     What setting for cooling and retract would you use?

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Jabbery,

     

    I suggest to modify the infill AFTER the wall specially as it prevents the push on the wall

    and put the infill as grid as the infill is necessary also to give the wall a strength

     

    I use only PLA on an Anet A8 but as I have protected the hot end, I put only 50% (and not 100 as usual for PLA)

     

    For ABS I read that usually there is no need for cooling

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Hi JCD,

     

     I configured as you suggested, with the flow back to 100% the outside perimeter is exactly 100mm.

     The inside perimeter has some variation of 92.3 - 92.66, back to the 0.94 - 1.3 mm off.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    As the children tell in France when they have not discover the solution to a problem another child has asked for :

    'Je donne ma langue au chat'   (I give my tongue to the cat)

     

    I hope you'll succeed !!

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Jabbery,

     

    I'm back !!!!

     

    I have seen a parameter in the Skin section called horizontal expansion.

    In the description that appears when the mouse is over it UM tells that it may compensate for too big or too small holes

     

    I have not tried, but for you, it's worth it

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Thanks JCD,

     

    I seen that item and its information is not clear as to exactly what it does, I will test it when I have a moment. I had to complete that project and move on by doing 2 different models in F360.

     

     I did however run a number of other tests that are all inconclusive as per the cause of the problem. I attempted to eliminate something about the printer as well as the slicer. In testing multiple slicers there was variation in the inner perimeters but none were correct. I also tested multiple speeds as a possibility it was caused by too much acceleration causing deceleration and tool direction change to magically overshoot predictably. Was only a guess since I do not exactly know how acceleration and jerk completely work. My assumption is acceleration is both acceleration and deceleration ramp speed and jerk is an added factor to maybe deceleration on a sharp direction change to not jolt a weak frame.

  • Link to post
    Share on other sites

    Posted · inner perimeters

    Ah Jerk is a misleading term it is actually instantaneous speed change but that does not really explain it either.

    Weird term, I see it is actually a minimum target speed to decelerate to before a direction change to reduce stand still time and offload the amount of side energy on the frame/structure during a path change..

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...