Jump to content

Recommended Posts

Posted · Designing For Cura

I'm sure this has been posted before, but I thought I'd ask anyways...maybe get a fresh perspective.

I Always design with my printer in mind. I use multiples of the nozzle diameter for x and y dimensions, and layer heights for Z dimensions. (when I can anyways)

So if I'm making a hollow rectangle that needs fairly sturdy walls, I usually go with 1.6mm or 2mm (2.4 if I'm really being anal and want an even # of passes). If I'm printing with .16mm layer heights, I might go with a 1.6mm bottom thickness on the part (and lose the .1mm because the first print layer is .2mm)

The problem is, that even though my walls are 1.6mm exactly, I can't use a 1.6mm shell all the time. I often have to back it down to 1.55mm shell to "Trick" Cura into laying down whole lines and no fill.

Notice the picture here. 1.6mm walls, 1.6mm shell

1.6 shell

It makes 4 passes to get the 1.6mm result, yet leaves voids that need to be filled.

So....I change the shell settings to 1.55 and voila, nice even lines.

1.55 shell

Notice the time difference just by changing the shell by .05mm

Same thing goes for cylinders. This is a 1.6mm thick cylinder shell set to 1.6mm

1.6 Cyl

This is the same cylinder at 1.55 shell

1.55 Cyl

Nice even lines, no fill.

My question is, what is going on here? And what are some "Best Practices" for design intent to avoid having to tweak Cura. Do I need to make my walls 1.55mm, and not 1.6mm? Is there another setting in Cura that is causing this such as infill overlap?--> (just spit balling here guys)

I understand that what comes out of a .4mm nozzle is not .4mm exactly, once it is compressed against the underlying layer. Does Cura take this into account?

On the same subject of Design intent for Cura, would anyone like to share what they use for tolerances when designing?

I use

+.35mm if it needs to be snug

+.25mm if it needs to be tight

+.5mm if it needs to be a slide fit

For instance, if I have a hole in my design that needs a 4mm rod to fit through snug, I'll model it with a 4.35mm hole. Snug is a relative term :p (Technically it would be around an IT of H7 or H8)

When making custom supports, I use .42mm walls (although Cura just makes 2 passes anyways...I can't seem to get it to ever make 1 pass) This does not include cylinder-style supports.

When making custom support, I us .22mm (for my average 1.4mm layer height, this puts down 2 layers of brim, which I find very useful since adding the custom brim is usually for large parts where I don't want brim on the inside holes or features. It still breaks away very nice, better in some cases because there's more "meat" for it to tear off in a single sheet.

Well, I've shared what little I know, maybe someone will ring in with some good tips?

 

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    That's quite an article you wrote... pfffff. :-P .

    In general, designing with your printer in mind should everybody do. But let cura do the work. design the thing as you want it and let cura do the thinking. Did you compare some cura times, with real printing time. that's a difference sometimes.

    I normally take a cut of the (in my opinion) trickiest part. And give that a try on the printer, see what really happens.

    I think the kind of printing we use is not yet (will never be) ready for the things you want. Tolerances like H7 or H8 are out of reach. Just because the fact of external influences, Like room temperature's, wich roll of Pla, wich color.

    A hole near to the heated bed will be smaller than higher up in the print.

    I might be easier to design the print as a cast Iron mold, and machine the tolerances. use a drill or something

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Isn't this some kind of "overlap" coming into play? as in 1.6 is not exactly 4 passes because it needs to overlap a bit for good adhesion. The setting is definitely there for infill vs wall, perhaps this is something for "wall vs wall" as well?

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I observed the same issue. Having a part .8mm thick you have to sometimes trick cura to make 2 passes. Sometimes it is 1 and sometimes you get this time consuming infill pattern. If you make long parts this infill increase your print time significant. I usually end up with .38mm wall size.

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    @3dCase - That was actually SHORT considering I'm trying to talk about the huge realm of design and how it relates to Cura in few paragraphs :) Thanks for the input but nothing new there. I guess I'm looking for advanced design input from anybody, and I'm sure other people could benefit from some advanced techniques as well.

    I would disagree with this statement however -->

    -------------------------------------------------------------------------

    " I think the kind of printing we use is not yet (will never be) ready for the things you want. Tolerances like H7 or H8 are out of reach. Just because the fact of external influences, Like room temperature's, which roll of Pla, which color.

    A hole near to the heated bed will be smaller than higher up in the print. "

    ---------------------------------------------------------------------------

    I regularly design parts with many holes and sliding interferences that never need any modifications or drilling because I model in the correct tolerances and what I know the end result will actually be into the model. Sometimes, it is necessary to close a hole up by .1mm (that's .004" !) to get a better fit. Other times, like these 2 prints I did this month, needed ZERO drilling, milling, filing or grinding.

    safe product 3

    mag3

    The safe and rifle are fully functioning and there are a lot of tight tolerances in play,so it is possible to design these tolerances in. Not to mention, There are 30 of theses safes and adding time to drill and file would not be cool.

    Yes, I commonly Use slices from a model mid-design to throw into Cura and see how it's behaving. What would be nice is to KNOW what Cura is going to do without having to do that....Is it going to print that 1.6mm wall in 4 passes? or is it going to add fill?

    @Blizz - Yeah that's what I though. There's definitely some overlap in real world printing, but I don't know what the numbers are and how they relate to how Cura handles the slicing. This may be valuable information to a designer. For now, I just tweak the shell and setting to get it to slice right, instead of designing it in.

    @Zoev89 - Yeah, I've ditched the 1 pass method for now. Some slices show a support wall one line wide going up, then skips half the layers, and resumes... don't know what that's all about, so I model in walls at .42mm so Cura just makes 2 passes. I'm sure there are settings to get the walls to print in one line (like making a loop instead of dead end wall), but the the model has priority, so settings are set for it rather than getting supports to print just right.

    That's it for now. Long enough response ? :p

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Oke okeehj, point taken... :-P

    I follow this topic, sure I read about it when a solution is found

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Quick tip about what 3dcase was saying about holes being smaller at the base.

    If you have a problem with your holes closing up a little at the base (especially on hot glass and long prints), add a little chamfer to the holes that make contact with the glass. The chamfer will take up the sag or "elephant foot".

    If my initial height is .2mm, and my layer height set to .1mm, I'd probably go with a .4mm chamfer. It all depends on the print though. A long ABS print on 100 C bed acts different than a slow PLA print on a 60 C Bed, so you'd have to adjust accordingly.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    If we could somehow document when and how to make corrections in CAD it would be a great source to share ..... but personally I'm not that good in documenting though :shock:

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Following this topic closely... I'm writing stuff again :p

    Interesting thoughts on the infill overlap, I hadn't thought about that before. I did a quick test just now with a 50mm cylinder with 0.8mm walls. Wall thickness set to 0.8mm caused a few "blips" of infill to appear. Changing the infill overlap changed the size of these blips and caused them to disappear completely once going beneath 8%. Going up to a huge amount like 50% caused them to bleed through to the outer surface as well. Very interesting indeed, I'll have to add a note about this in the document.

    Now, time for lunch :)

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    So thinking about this a bit more during lunch it seems the reason is pretty simple, unless I'm completely off?

    Since we're using short segments of straight lines to represent a circle there will be teensy tiny holes all around the circle where the lines do not match up perfectly. With an overlap percentage high enough, cura will think that it should fill in those spots since the overlap percentage gives it room to "draw outside the lines" so to speak.

    When you change the wall thickness to something smaller cura will make the lines slightly thinner to fit and I guess those little left over holes then get small enough that the infill can no longer fit?

    Or am I just talking crazy?

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    @Robert

    That makes sense. Would be cool to get a high resolution slicing view in Cura so you can zoom all the way in and see how it handles that.

    I still see the problem on rectangular walls though... I know the image I posted was of a spiral rectangle (it's what I was working on at the time) but I have seen the same thing happen with perfectly straight walls that run on the x and y axis.

    It's not really a "problem", but it does add unnecessary combing operations to the print that really add up when the object is 400 layers tall.

    @Arjan

    Could you elaborate? Not sure I understand what exactly you are wanting to document. When you say "How to make corrections in CAD", are you thinking of a ,tutorial, if you will, on how to make those corrections in CAD?

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I think there are two perspectives we have to distinguish here.

    One is related to "design for print", understanding you keep considering both the printer and the slicer, when you create a part. This is taking info from the printing technology and from the slicer manufacturer and take them into account as "design rules".

    On this side, a 1.6 mm wall, printed with a 0.4 printer, using the Gcode produced by a slicer that uses nozzle diameter as the width of the final printed extrusion should be guaranteed to produce 4 perimeters with no infill. There could be another parameter for the extrusion width, as in case of Slic3r which almost ignores nozzle diameter in calculation (well, not completely). However, it seems that there are numerous situations that developers should consider in the routing module, and trying to accommodate all sometimes produces peculiar effects.

    So, we are coming to the other perspective. If strange behavior is observed, it has to be sent to developers and they have to come with arguments and/or to review the routines.

    If we leave aside for a while the "square spiral", a cylinder with a 1.6 mm wall, sliced in a way (no matter which) that should "guarantee" a 0.4 mm per printed track, must have 4 "synchronized" shells (perimeters). This kind of synchronization might be tricky, but is obviously required if printing is to be optimized (i.e. the slicer to be considered of... high performance).

    To me it appears that lack of "synchronization" between segments, which should be otherwise parallel and of "proportional" length, so that they will produce "concentric" shells, is what produces the "need" for infilling. And this probably apply to any shape that has round parts (I doubt that the problem appear on a "pure" cube).

    To resume this otherwise short post :) I think that if no other parameter in Cura configuration is to be used in "controlling" the ratio between shell thickness and extrusion width, then the issue mentioned in the first post has to be addressed by Cura developers. And if such a parameter exists (e.g. any applicable overlap factor), it's influence should be documented somewhere.

    Finaly ;) I don't think overlaping apply for perimeters (shells). By the very nature of FFF technology, adjacent extrusions "expand" when printed so that they will "fuse" together, while infills may need some additional overlapping to compensate for the more reduced contact area with the shell.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    The part about anything with round features got me thinking, so I threw this rectangle together to see how a 1.6mm rectangle would behave if one of its corners were rounded.

    It's completely backwards from the 1.55mm shell trick!

    opposite 2

    The 1.55mm trick induces fill with the rounded corner being added.

     

    And now we're back to 1.6 shell

    opposite 1

    Just as it should be. Again notice the time difference of 27%!

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    With curves or lines that are not parallel to the the axes, there is going to be some amount of rounding errors which are going to cause slightly less than optimal things to happen.

    Firstly, note that if you have a part that is designed with a wall that is 1.6mm thick in the STL, then you should really set the shell to 0.8mm, since Cura is going to try and print a shell on both sides of your wall. Or alternatively, just make the part solid in the STL, and print it with zero infill, and a 1.6mm shell to get four concentric passes by definition. I'm not sure that some of what you're seeing isn't due to Cura trying to figure out how to fit twice as much shell as will fit into the available space.

    Overlap isn't used for the shell passes, but it might affect where Cura thinks it has space to put some infill in what is left after the shell parts are done, I'm not sure. (Also note that the overlap is calculated parallel to the direction of travel of the infill line, and relative to the centerpoint of the nozzle location when starting/ending the infill line. This means that the infill actually overlaps more than the expected amount, because if the infill line ends with the center of the nozzle, say, 15% past the edge of the concentric shell pass, there's a further semi-circle of infill beyond that center point, overlapping the shell even more). Depending on the angle between the edge and the infill, the effect of this extra overlap can be more or less pronounced.)

    Additionally, Cura internally requires that the shell thickness is an exact multiple of the nozzle (i.e., extrusion) width. If it isn't, it will pretend that the nozzle is a different size from what it really is, to get that exact multiple. In the first cases above, changing the shell width is changing the nozzle width, and so allowing the slicer to exactly fit four passes into a space that it thinks is fractionally too tight.

    Here's a write up I did a long time ago about how cura handles this. The infill spacing bug that I identified then is no longer present, and quickprint is now a bit saner, but the basic way in which it adjusts the extrusion width is still valid:

    http://www.extrudable.me/2013/04/08/walls-and-nozzles-and-cura-oh-my-or-quickprint-is-broken/

    (Shell thickness used to be called 'wall thickness', which is what that article calls it).

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Also, yes, Cura will never so a single pass to print a thin section of STL like a custom support. This is basically because the part has a continuous face around it, and Cura wants to print that continuous loop of shell. It may reduce your effective shell thickness in that area to a single nozzle-width, but to make a single loop around the thin shape, you are going to end up with the two sides touching one another. It will allow the two passes to overlap slightly but not completely. If the overlap would be too great, it just filters that section out totally. So I think you can print (with two, slightly overlapping passes) a wall that is 1.5 times thicker than the nozzle width, but not any thinner. (But it's been a while since I looked at that so I don't exactly remember the details, or know whether the implementation has changed recently).

    Cura could possibly be smarter and just use a single pass, but it isn't. When you think about it, it starts getting pretty complicated unless you treat everything as a collection of full loops, with more or less infill inside them. Especially considering that STL files describe the geometry in an almost totally context-free way. You know that you have a surface, but not what it means, or how the parts relate to one another. It's just lots of triangles that the slicer has to intersect with planes, and then make sense off the jumble of lines that results.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    AH, that makes a lot of sense...

    BUT here's what originaly got me thinking about the .8mm shell

    Here is an image of a shape that is exactly 1.6mm thick, and .8mm thick at the semi-circles. I understand why it's filling the tapered section but there are straight sections it is filling also. This is where I got the 1.55mm from. Seems to do the trick.

    With the .8mm shell 35% fill

    .8

     

    with the 1.5mm shell

    1p55 shell

     

    BIG time difference there!

     

    In case you're wondering, here it is at .8mm shell, 100% fill

    100 fill

     

    The whole reason I started this was to get a better idea of how to design parts like this where I wasn't having to find magic numbers in Cura. A 1.55mm shell in one section of the print may not work in the other.

     

    The single pass shell - That's what I was saying about using loops to make the custom supports. In the end I don't mind it making 2 passes. I'm more concerned how much of an air gap to leave. Still trying to figure out the magic number for that one :)

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Remember it's also quite possible that the surfaces which were designed as straight, and look straight to the eye, really aren't straight when exported as an STL.

    STL's are only an approximation of the original surface, and most CAD packages allow you to specify how closely (or not) the triangle mesh of the STL follows the surface of the modeled shape. This is especially true with curves. Within the resolution of the STL, it's quite possible that a flat surface that ends in a curve actually has it's end point slightly offset from the 'true' endpoint, in order to match up with the adjacent curve.

    The exact behavior of the inside and outside surfaces of that wall might be different, so that the wall isn't exactly the right thickness all the way along its length. Depending on how much tolerance the slicer has for these things, that might tip it over the edge from deciding that it can get, say, four lines of shell into a wall, to getting only 3.99 lines, and deciding to handle that as 3 lines plus some infill.

    I think that Cura sometimes errs on the side of over-precision, when slicing these sorts of thing, but it's important to also remember that the STL is not perfect either.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I thought that too at first. I use Inventor and the object is perfectly square and constrained to all three origin planes. I've tried different export settings, but they all produce this effect. I suppose I could see if another .stl exporter may export differently, like solidworks. Unless you are saying Cura is bringing in the object offset by just enough to create this phenomenon.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I dont think Cura is changing anything when it imports it... but on that last example above it looks like even the straight edges end in curved corners. While the native CAD format might have things perfectly aligned, the STL doesn't necessarily. It has to approximate the curves, so it might approximate the lines that approach them too, to keep things smooth.

    The CAD package knows that the wall is, by definition, 1.6mm thick. The STL doesn't. It just knows that there are two surfaces that are defined by a bunch of triangles, and on average, the centroids of triangles on one face are about 1.6mm from those of triangles on the other face.

    Cura doesn't even know that. It just knows that it sees a bunch of short line segments that are cross sections of some triangles. The triangles and the lines are in no particular order. But it looks like the short lines can be laid out end-to-end to form two longer lines. And then it can see if it can figure out how many passes of the head it can fit into the space between those two lines.

    The slightest of rounding errors during the process of interpreting those short lines could cause Cura to give suboptimal results. The aim of the slicer is to get those two outside lines in the right place. Once it has done that, it has to do the best job it can of filling in the inside, based on what it has been able to deduce about the shape. There are basically no guarantees that it will do what you would like/expect it to do.

    If you can instead define the shape as solid, and then just use the shell thickness to create the loops, you are providing far fewer constraints that the slicer has to try and work within, and so you are more likely to get what you want. But if you define the thickness of the shapes within the STL, and then tell the slicer to interpret that and fit the lines in the way you want, then you are relying on everything being perfect, or having the same tolerance for error at every stage, in order to give you what you hope to achieve.

    So yes, it should work, but it's perhaps not totally surprising that it doesn't. If you specify a 1.6mm wall, but the slicer ends up thinking that it's about 1.5999mm thick, then it has to decide whether its ok or not to put 1.6mm of plastic into that space.

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I completely understand, and it actually goes back to my broader question of "How do we know how Cura is going to handle it"

    So far it's just a guessing game, I design as close as I can to the printer's nozzle and layer heights, etc, and bring it in to Cura and adjust for best performance.

    Here's a prime example of a car part I'm making for someone. It is designed with walls and features in multiples of .4, as well as z heights of .2.

    I tried to plug in just a .4mm shell so it has all the freedom in the world to make the fill passes, only constrained by outside perimeter.

    This is what I get

    P4 shell

    Fairly straight forward, but I notice a lot of extra work on the walls

     

    So I plug in all kinds of numbers, and come up with 1.3mm shell... I know right :)

    and This is what I get

    1p3 shell

    Almost 30 minutes faster, and nice straight lines on the wall. I like straight lines on relatively thin walls because the head is not going back and forth, shaking the wall. All in all, I'll just have to assume this will be a decent print, and that the parts will measure out right. Not sure how tricking Cura into making even passes on those walls is going to affect dimensions.

     

    I'll make a note to try 1.3mm shell on other prints :p

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    BAHAHAHAHAA. Well, my new ultimaker prints at a finer X,Y, resolution than my 5 month old printer, both UM2's, most like due to the needles and brushing that have been used on the extruder tip.

    Now I have to design for 2 different machines....I don't think so ! I guess I'll get a new extruder block, so they wear at the same rate, or drill the older one out to .6mm ~.8mm and use that one for large, bulky parts.

    Does anyone have a link to some useful information about moving up to larger tips?

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    I always think it is worth having a few new nozzles on hand - we do pit them through tough times :)

    Drilling out is good - I have drilled out to 0.65mm and for 'draft' printing it works well - oh, and for ninjaflex I use th elarger hole size with good results.

    To drill it out was slightly tricky - I bought a good pin vice chuck - a proper one with moving jaws - the cheap ones are no good at all.

    Put it in my hand drill within has a pillar drill stand.

    Drilled a hole in MDF and screwed the nozzle tight into it until I had seated it at 90 degrees (i.e. perpendicular to the drill bit.)

    Then wearing my best glasses I slowly drilled through the nozzle tip - quite tricky with a steady hand!

    Clean the chips of brass off and you are ready to go!

    I find with some filament I need less heat, and some I need more - but I can do layer heights of about 0.25 and single walls and for some of the architectural models I do this reduces print times from 12 hours to 3 hours - slightly cruder, but they completely do what I need them to.

    Don't forget to change your settings - I have profiles for filaments and nozzle sizes.

    James

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    OK, here is another problem I'm having, not a big deal, but I'd like to know if it is a design thing ( as in, I'm the only one with this problem) or if it's a known Cura bug.

    These 4 squares are built on the X,Y Plane.

    When I load them into Cura, this is what I get... slice view, layer 1

    cutoff bottom

    The bottom does not touch the platform apparently, so I'm assuming it just moves on to the next layer.

     

    SO, I cut off the bottom layer by .03mm and it seems to fix the issue.

    cutoff bottom 2

     

    No big deal, but I just ruined a print (AGAIN) becasue I forgot to check if the first layer was indeed printing. I usually always check my layer view before saving, but I forgot.

     

    When it skips the first layer, is it also skipping the .2mm layer height for the first layer, and trying to print a .4mm layer with .2mm worth of filament on the 2nd layer?

     

    Here are my settings

    settings

     

    Just another thing to add to my "Watch Out For" list

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    It's not something I'd expect to see, no. Basically you have some very small part of your object that sticks out 0.03mm (or less) below the rest of it. That's the part that touches the plate, but is too small to print.

    So the first layer there is nothing to print, and then on the next layer it prints a 0.1mm layer, but 0.2mm off the bed (if you first and regular layer height are both 0.1mm). You say '0.2mm first layer height' but your screen shots all show 0.1mm. I'd definitely recommend going with a 0.2mm or more first layer.

    Combined with the other issues you've mentioned, I'm wondering if you need to tighten up the tolerances in your STL export settings, so that the STL's have fewer of these 'slightly off' positional artifacts. What are you exporting the STL's from?

     

  • Link to post
    Share on other sites

    Posted · Designing For Cura

    Exporting form Autodesk Inventor 2014, settings = High , all units converted to mm

    I found out what it is as far as cutting off the bottom (well not really) It's something in my saved profile. I reset Cura's profile, and started from scratch and the problem was gone. Funny thing is the only thing that I could find different, when comparing profiles side by side, was the cutoff bottom is set to 0 on the skipped layer version, and 0.0 on the version that works? I'll double check that though.

    Also, there's no small part coming off the bottom, I made sure of that.

    Yeah, typo, .1mm first layer, and I've never had problems with .1 before, although I prefer .15 for a glass like finish, .2 tends to curl at tight corners sometimes...but this could all be relative to my bed leveling (and filament), which I use a standard piece of copy paper for (measures to .12mm). From there I fine tune by looking at brim and adjusting from there.

    To Sum it up, I uninstalled Cura, re-installed, started from scratch and it seems to be working.

    Now I have ANOTHER issue that popped up where the z axis is doing some really wierd stuff about 2 mm into the 4 squares print. 3 prints failed, and I thought it was a filament issue (using zeni ABS), but I just happened to be there when I heard a strange noise and saw the printer printing in mid-air and the z stepper clicking every few seconds... definitely some screwed up code somewhere, so again, I started from scratch and we'll see how that goes. If that remains a problem I'll post that on the troubleshooting forum.

    Thanks again

     

  • 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.9 stable released!
        Here comes Cura 5.9 and in this stable release we have lots of material and printer profiles for UltiMaker printers, including the newly released Sketch Sprint. Additionally, scarf seams have been introduced alongside even more print settings and improvements.  Check out the rest of this article to find out the details on all of that and more
          • Like
        • 5 replies
      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Heart
          • Thanks
          • Like
        • 4 replies
    ×
    ×
    • Create New...