text:
Sketchup designed object printing first layer incorrectly
I am a 3D printing beginner but wanted to get stuck in straight away and design my own 3D objects. I used Sketchup to design a badge of one of my logos. I make sure that all faces of my object are not inside out and show a white face in Sketchup. I also make my entire object a component before exporting into a .stl file. However, when I import into Ultimaker Cura, the base of the object is red. This to my understanding means there is an issue with that face.I have played around with Sketchup several times by not creating a component, reversing the face and I still have no luck. When I reverse the base face in Sketchup so that it is grey, it then shows up in Ultimaker Cura as okay (not red). But when I 3D print it, it still prints it very strangely. I would like to note I am 3D printing with a raft and when I do not use a raft, the object prints fine. Also I have tested printing a small 3D cube with the same settings and the results are exactly the same. Surely you can design objects in Sketchup and print with a raft?

Welcome to 3dPrinting.SE! I don't know for sure, but it sounds as though the base of your object is off of the print bed, or rather that there is a gap between the printer bed and the base of the print itself. There is a snap-to option within Cura which automatically places the base on the printer bed ... you might see if that helps.

FYI, SketchUp hasn't been a Google product for at least five years.

@DanHulme Thanks. Apologies, that last time I used Sketchup was when it was owned by Google.

@Pᴀᴜʟsᴛᴇʀ2 Thanks, I already have this option enabled but still have no luck.

Snap-to won't help if there's some stray junk part protruding just slightly from the bottom of your model. That may be the problem. I've explained how to look for it in my answer.

The smoother print looks like it was printed with a higher temperature for the extruder and/or bed.  Because you are printing a short object, you shouldn't have trouble with a higher bed temperature (70C for PLA and 110 for ABS).

In Sketchup I remove all unnecessary lines on each face, then use x-ray view to remove unnecessary internal lines and objects.

A red surface coloring is normal for the bottom when viewed in Ultimaker Cura, nothing to worry about that (e.i. when that face is touching the build plate; if it is unsupported, you should add support structures but a raft is generally not necessary for PLA).
Rafts are useful when you print high temperature materials that have a large shrinkage when cooled from print to bed temperature (this somewhat mitigates the problems of curling up corners or warping prints), for PLA it is not needed. As seen from the print that is printed on the raft, it's clear that the print to raft distance is to large, the first print object layer is not adhering to the top raft layer very well.
The print that is printed without a raft doesn't look too bad. Some printer extruder calibration could further improve the quality.

Note: This answer is curently wrong because I mentally reversed your "with raft" and "without raft" columns. I'll attempt to fix it soon.
This doesn't look like a problem with your model, but rather a problem with your bed height or slicer settings (possibly both) that may be affecting your particular model worse than others. It's clear from the photo of the bottom of your print that the extrusions that were supposed to be circular failed to adhere to the bed, and instead got pulled to chords between points they happened to adhere at. This could be caused by a mix of:

Excessive print speed for the first layer. Generally I would limit it to 30 mm/s or less to give the material the best chance to stick.
Excess space between the nozzle and bed. Could be caused by improper adjustment of bed height ("leveling"), or by using a layer thickness that's too high (roughly, more than 75-80% of nozzle width).
Underextrusion, possibly caused by insufficient print temperature, incorrect filament diameter setting, or poor quality filament with wrong diameter, among other things.

Using a raft mitigates these things by moving the potential problem to the interface between the raft and the bed; once there's a raft sticking to the bed, printing of the model can ignore the problem. But you should never need a raft. It's a waste of plastic and a workaround for problems that have better fixes, not a necessary part of 3D printing.
The "red" in Cura is not a problem; as I understand it, Cura shows all parts of the model that aren't supported by other parts of the model in red, and this includes the base. However, it is possible that your model has some stray part extruding below the bottom, causing the whole thing (except that stray part) to be printed starting one layer above the print bed with nothing to adhere to. You can check if this is the case in Cura by switching to layer view and looking at the first layer. You should see the whole surface that you want to adhere to the bed; if instead you see just one or a few small blobs, that's your problem.

I thought something was "odd", hence the addition of my answer, please do update as it contains valuable information (e.g. your explanation of the red layer is very useful).

it seems to me that the oddities and bad adhesion is from raft to print...


text:
What solvents are appropriate for smoothing/finishing ASA?
When I print parts in ABS, acetone vapour smoothing is a good technique to get a smooth finish. Is there an equivalent solvent or process for parts printed in ASA? Ideally I'm looking for something as easy to obtain as acetone, and not so awful a chemical that I wouldn't want to work with it, but I'd still be curious to learn about less friendly solvents.

ASA is Acrylonitrile styrene acrylate. According to Wikipedia:

ASA can be solvent-welded, using e.g. cyclohexane, 1,2-dichloroethane, methylene chloride, or 2-butanone. Such solvents can also join ASA with ABS and SAN. Solutions of ASA in these solvents can also be used as adhesives.
Staff, PDL (1997). Handbook of Plastics Joining: A Practical Guide. Elsevier Science. p. 515.

Solvent-welding means that the material is at least somewhat easily soluble in these fluids (they dissolve the material at the interface and as they evaporate, the former interface layers bond as if molded or welded), and the fact that the material can become an adhesive means that it is somewhat good soluble in these.
The least dangerous (and thus most advised from my side) of these 4 is 2-butanone, the others are listed as carcinogenic, and in the case of 1,2-dichloroethane, also toxic.
If these solvents can be used as a smoother similar to acetone with ABS would need testing, but a short exposition to their vapors should suffice to test this.
Addendum:
These four solvents also are able to solve Acrylonitrile butadiene styrene (ABS), which is a quite similar plastic in regards to its contents (butadiene instead of acrylate).

The acrylate rubber differs from the butadiene based rubber by absence of double bonds, which gives the material about ten times the weathering resistance and resistance to ultraviolet radiation of ABS, higher long-term heat resistance, and better chemical resistance. Wikipedia

Acetone might prove to be also a possible option, but results might differ from those on ABS.

From Simplify3D - ASA:

ASA can be smoothed using controlled exposure to acetone vapors (a process called “vapor smoothing”).

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
How to write arcs directly in G-code?
How can I write G-code for a triangle without sharp tips?

I want to generate the corners manually, rather than using a slicer to generate them, just to know how it is done.

your question is extremely terse. Do you want to generate the corners manually or do you want to understand how a slicer maces them? How a CAD does them?!

With lots and lots of tiny segments.

@towe True, even if you use G2/G3

First, convert the given measurements into a sketch...

G-code shenanigans
we actually have the printer do circles.. let's plot that out...

Using that, it's easy to write the G-code using the Documentation for G1 and G2. You'll have to add the E values to extrude something along the paths, but your sketch would turn into this path:
G92 X0 Y0 ; the current position is now (0,0) on the XY
G90 ;Abolute mode for everything...
M83 ;...but for the E-argument, so you can just put the length into the extrusions that are to be done
G0 X10.66 Y2
G2 R5 X6.33 Y9.5 ; Alternate: G3 I0 J5 X6.33 Y9.5
G1 X45.66 Y77.638
G2 R5 X54.33 Y77.638 ; Alternate: G3 I4.33 Y-2.5 X54.33 Y77.638
G1 93.67 Y9.5
G2 R5 X89.33 Y2 ; Alternate: G3 I-4.33 Y-2.5 X89.33 Y2
G1 X10.66 Y2
G0 X0 Y0
G91 ; return to relative coordinates

This code has to be prefixed by a move to where you want to start the pattern and will not know if you move it off the build plate, so keep 100 mm X and 87 mm in Y of the allowable build plate. It will end exactly where you started it.
Iterative approach
In many uses of g-code, rounded corners are actually n-gons with a very high number n. then we only need G1 and can easily calculate the length of the stretches and fill in the G1. We need to iterate down to somewhat circular...
Let's start iterating with n=3 aka a triangle, which gives a direct line over the corner gives this:

going to n=6 (hexagon) follows the curve a lot better...

going to n=12 looks almost round on a larger scale...

and when we reach n=24, we are pretty close to the circle..

And as we go above n=6, we also get easier math for the corners, as we always get the same lengths of movement along X and Y just swapped around due to symmetry.
With all these stretches defined, we could start to work in relative coordinates easily, again without E, and only for the bottom left corner:
G0 X10.66 Y2
G1 X-1.294 Y0.17
G1 X-1.206 Y0.5
G1 X-1.036 Y0.795
G1 X-0.795 X1.036
G1 X-0.5 Y1.206
G1 X-0.17 Y1.294
G1 X0.17 Y1.294
G1 X0.5 Y1.036
...

Killer explanation ... love the graphics, which completely help the understanding. +1

Beautifully illustrated, but it is responsive to the question  The question seemed to be about writing arcs in g-code, rather than how one could simulate arcs with line segments.

Marlin has G2 (clockwise arc) and G3 (counterclockwise arc) commands that could be used to do this. You can find detailed documentation for the command here.
Basically, you can use

G2 R1 X5 Y5

to draw a (clockwise) arc from the current position to $(X,Y)=(5,5)$ with a radius of $1$.
So, your rounded triangle could be drawn with 3 straight line moves and 3 arc moves. Figuring out the exact coordinates for each move would be a quite challenging geometry exercise, as you'd need to know where the straight line portion of each side ends and the rounded portion starts.

it's an easy exercise with a CAD though

Do note that in the firmware support for G2/G3 must be enabled in the firmware, e.g. in Marlin by definition of #define ARC_SUPPORT in the Configuration_adv.h file. Also, shouldn't your printer board must have a sufficient capable processor to process the calculations for this option?

@0scar circles are rather usual in CNC commands and most printer boards can double for those. I assume you might want to use the IJ argument instead of the R Argument though.

@Trish The question specifies the G-code must be created "manually". I'm not sure if using CAD still counts as manual.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Standby hotend and bed heating with inactivity timer after print?
Is there any G-code command to turn off hotend/bed heating after a specified timeout? I'd like to edit my end G-code to leave them heated to a standby temperature, rather than immediately letting them cool down, to eliminate the delay of re-heating between prints, but obviously it's not a good thing to leave them heated indefinitely.

Note: if you leave the hot end at extrusion temperature too long without extruding filament, the filament material will carbonize and stop up your hot end.

@PerryWebb: Is that an issue at something like 170°¢, just below extrusion temp? I was under the impression even the "preheat PLA" temp of 185°C was deemed ok to dwell at for a while without issues. But this is another good reason for having a timeout, aside from safety & energy use.

Eventually, but that should give you a lot more time.  Getting the hot end to temperature usually doesn't take long.  It's getting the bed to temperature that is slow.  The only issue with keeping the bed heated is it makes getting the print off the bed hard.  The thermal coefficient of expansion causes the print to release from the bed when it cools.  You can pry PLA off a bed heated to 70C or below.  However, ABS on a bed at 110C will warp if you pry it off without cooling.

I'm actually leaning towards switching away from heated bed entirely for PLA anyway, but normally I remove prints at 60°C with no problem. Been a while since I used PETG but I don't recall having trouble removing them hot either. I find getting nozzle from 20 to 215 and bed from 20 to 60 take almost exactly the same time, though.

For ABS with the bed at 110C, I wait until 65C.  By that time the print is completely loose.  I've removed PLA at 60C, but it is much easier below 40C, when it starts to release.

I've pulled ABS off at 110C when aborting a print, but the print warps severely.  It didn't matter because I was throwing it away.  I've removed PLA with the bed at 70C with no problem, but it takes some prying to do so.

Pausing
You could set temperatures for hotend and bed (respectively M104 and M140 and after that introduce a pause/dwell time with G4. After the pause, you could lower temperatures and proceed the shutdown of the printer, as such the setting of the idle temperatures and dwell time need to be done in the beginning of your end G-code in your slicer.
Not powering down
Alternatively, you could just not power down the hotend and bed. A typical end G-code consists of de-powering the fans, steppers, temperatures and positioning the head in a parking position, e.g.:

 M106 S0              ; Turn fan off
 M104 S0              ; Turn extruder off
 M140 S0              ; Turn off bed
// G91                  ; Change to relative positioning
// G1 Z30 E-2 F3000     ; Raise Z 30mm (lowers the bed) NEVER DO THIS, IT WILL DESTROY YOUR PRINTER IF YOU PRINT LARGER THAN MAX-Z MINUS 30 MM
// G90                  ; Switch back to absolute mode
 G1 X0 Y0             ; Move X/Y to origin
 M84                  ; Disable steppers

You could easily change the temperatures to standby values:

 M106 S0              ; Turn fan off
 M104 S160            ; Turn extruder to standby
 M140 S40             ; Turn bed to standby
// G91                  ; Change to relative positioning
// G1 Z30 E-2 F3000     ; Raise Z 30mm (lowers the bed) NEVER DO THIS, IT WILL DESTROY YOUR PRINTER IF YOU PRINT LARGER THAN MAX-Z MINUS 30 MM
// G90                  ; Switch back to absolute mode
 G1 X0 Y0             ; Move X/Y to origin
 M84                  ; Disable steppers

Wouldn't the dwell command leave the printer in a state of "still processing SD card print job"? If so, I don't think that behaves well with respect to removing the SD card. Maybe I just need to run one of the print servers you can queue jobs through and all rather than moving each revision of a test over via SD card..

@R.. If you "dwell" indefinitely, you could abort the print, insert a new SD card and continue.

Yeah, that's a possibility. I was looking for something less hackish (and with less manual steps each time) but maybe there isn't one.

Hmm, maybe M85 Inactivity Shutdown? I'm not sure how widely supported it is though. Guess I can try it.


text:
Rough surface when printing
Is there a specific name for that problem? What causes this, and is there a way how to solve it?
Printed with PLA, 2 mm nozzle diameter, 0.2 mm layer height, 20-60 mm/s, 200 °C extruder, 60 °C bed.

Welcome to 3dPrinting.SE! What does the bed side look like? Is it as you'd expect? You state the print speed is 20-60mm/s ... It looks like to my untrained eye the travel speed is too fast. If the base is printing at 20mm/s and looks fine, then goes to 60mm/s after the base layer, you may need to slow the other-than-base-layer down to 40mm/s and see if it helps.

Bottom looks nice, pretty smooth (img attached). Will try to print non-first layers with slower speed. thx

Looks like poor bed adhesion in your first layer.  Try printing first layer with the bed at 70C, then setting the bed to 60C after first layer.

@PerryWebb - I'm not seeing that at all. The first layer is flat and smooth. How did you come to that conclusion?

That looks to me like overextrusion

A 2 mm nozzle diameter is quite large, what filament diameter are you using 1.75 mm or 2.85 mm filament? I expect this is a typo.

Overextrusion or bed too high.

What printer/slicer are you using? FWIW, I thought I'd have a quick google last night, and presumably you've seen these threads: Rough surface-bad quality, Rough surface with PLA/PVA and Why do my prints have rough surface patches? which points to shell. Maybe it's a Cura pattern setting?

Hello user236012. Please fill in the [placeholders] in the template I added and then remove the leading < afterward. This will turn it visible and help us help you find the actual problem.

Looks to me like the hot end is too cold. Try turning your cooling fan down. I've encountered this problem many times myself with PETG. Turning down the cooling helped. So did turning up the heat.

I've gotten 1st layer prints like when the bed wasn't level enough causing the extruder to be too high in the rough area.

I have experienced this problem.  This picture is one that I could have taken.
It has always been because I was putting too much plastic into the available space.
This has been caused two things: overextrusion -- squirting out too much plastic for the intended layer height, and the bed being too "high" so that the gap between the nozzle and the bed is too thin.
In both cases, too much plastic is trying to be placed in too small a volume.  The plastic has to go somewhere, and ripples follow.  Because the nozzle rubs against the adjacent lines which have already been deposited, an up-bump pushes up the nozzle on the line beside the bump, and a coherent pattern of ripples can form.
The "bump up" is a real effect from the elasticity of the Z-axis, including all the resulting strains of twisting and lifting the nozzle.

@Oscar's thought about belts could be part of the problem.  Measure the X-Y size of the object you printed and compare that with the design.  Adjust the steps/mm for X and Y until that is right.  If the object is printing too small, that would also create the "too much plastic in the volume" problem.

Thanks for the thorough explanation! I was looking for an explanation as I was having the same issues on my Ender 3. I lowered the bed just a little bit (thus increasing the distance between nozzle and bed) and the first test print comes out waaays better.

This could be a number of things, I personally think it could be either over extrusion or an issue with one of the belts. Depending on the printer, you may need to manually go in and adjust your steps per millimeter, which you should be able to find a guide on. If that doesn't work, then look into belt tension adjustment. Hope this is able to help! I like to use the Simplify3D Print Quality Guide for situations like this, it tends to be very useful.


text:
Inconsistent Auto Bed Leveling - Having To Calculate Z Offset For EVERY Print
I am having a problem with my Flying Bear P902 3D printer where I have to calculate the Z offset for every single print. I calculate it using this method (and store it in EEPROM) : Link to Stackoverflow post. Then, it will be able to print the first print with the right layer height. But, when I upload a second print afterwards, something goes wrong. It levels the bed and it starts printing too far away from the bed so it is just printing in the air. So, it must some way not have measured right. I checked the Z offset on the control panel and it does say the right offset that I calculated (-2.3).
During the bed leveling, I do sometimes have a problem. It will try to move the bed up to touch the probe, and there is this loud screeching noise, and the bed will not move upward. But, other times it doesn't have this problem. And, I am not sure if this is related to the inconsistent bed leveling.
Printer: Flying Bear P902 (Powered by Arduino & Ramps 1.4)
Auto Bed Leveling: BLTouch
Anyway, I have no idea what is causing this problem and it is really annoying to calculate the offset every time. Do you guys have any ideas? Have you guys experienced this problem?

I would bet when you hear the screeching noise during z-axis movement, it is binding somewhere, and the motor is turning inside of the rod coupler (whatever that thing is called - the part which attaches the motor to the acme threaded rod). Ensure you have some light oil on the bed support rods (the ones which allow movement on the z-axis). This would have an issue on bed leveling when it happens, but I don't think this is causing your overall issue.

I will oil the rods and check them to try to make them turn more smoothly. Do you have any idea what might be causing the inconsistent leveling though?

Are you sure it stores the Z offset value? Is M500 enabled in firmware?

Yes, I believe M500 (and EEMPROM) are enabled. And, when checking the z offset value on the lcd screen, it also displays the correct value (even after the 3d printer has lost power). I put some lubrication oil on the rods and they are now running smoothly. I am going to check whether all of the screeching from the non-lubricated rods was one of the issues.

Sounds like a mechanical problem with X axis gantry not being square to Z axis. I'm not sure of the mechanical construction of this particular printer though and didn't find good pics to figure it out

When the bed doesn't move up when requested and you hear noises, the stepper most probably looses/skips steps, this means that you loose the level and requires you to re-level again.

Since I lubricated all of the z axis rods, I have not had this issue anymore. I will still look for it though and see if it doesn't come back (cause then maybe lubricating the rods was only a temporary fix)

A screeching noise could also be that the z-axis acceleration value is too high.  Lowering it can make vertical movement be more reliable.  The problem would only appear on larger Z movements, such as the start of the print.  Lubricating the rods could be a good fix, if they were binding, or it could be covering the acceleration problem for a while.


text:
TPE warping problems
I'm attempting to print some flexible TPE filament. But I failed to imagine TPE was this difficult to print.
Specs of the shop-brand filament:
Red 1.75 mm TPE (+-0.05 mm).
Hardness: 45D.
Print temperature: 220-260 °C with 0-95 °C bed.
I'm trying to print this on my original Prusa i3 MK3S with powder coated sheet with 0.20 mm layer with PrusaSlicer 2.0.0.
What happens? After 3 or 4 layers, the print warps a lot and detaches from the plate. The object is 40 mm long. The next image shows the print detaching from the build plate as well as a skirt of two layers height:

I've tried warmer/colder, more/less fan, faster/slower. I went down to 1 mm3/s, which is 7 mm/s. For reference, PLA prints 15 mm3/s.
I readjusted my z-cal, and when I test print a first layer with TPE it's difficult to remove from the bed.
I also attempted the glue stick on smooth PEI sheet. Worked until the first few layers of infill, then it still warped.
Do I have bad filament with too much shrink, poor settings or is this 45D just too soft for my MK3s?
Bonus pile of failures:

Have you looked here; https://www.simplify3d.com/support/materials-guide/flexible/

Please add by [edit] which hotend and bed temperatures you used for your prints, or did you try the whole range of hotend and bed temperatures?

I have not given up yet!
And I figured it out, I think. I tried many things, dried the spool at 60C for an hour, Simplifiy3D's slicer, but eventually playing around I found a setting that resulting in no warping during the print.
Final solution:
- Original Prusa Powder Coated sheet.
- Changed the nozzle to 0.6 mm.
- 20 mm/s print speed, slow.
- 260 C nozzle temp, make it liquid to get best bed adhesion.
- 90 C bed, this keeps it soft at the bottom. Do not change the temperature, as this will detach the print.
- 0.95 Extrusion Multiplier instead of 1.2
The extrusion multiplier did the trick. It kept pushing slightly too much stuff out, especially on the bottom layers causing ridges that is will pull on the next layer.
It did still warp a bit, I found that this stuff shrinks about 2% when cooled, and when you start infill, it will pull itself loose. Hence the 90C bed temp.

It still prints poorly, but it did print without creating "the blob"!

I had a devil of a time getting this "greasy" tpe85a to print from filaments.ca. Buried in the comments there:
85A TPE Warping issue:
Mesa K wrote on Filaments.ca to try the following:

"Adhesion: this stuff does not stick to Prusa's smooth PEI sheets at all, it also did not stick to masking tape either. The solution I found was to tape a piece of printer paper to the bed (I used packing tape for this, but I would recommend masking tape or something else easier to remove).  I didn't have a glue stick or kapton tape to try, but those may work too."

That's right, printing on a sheet of printer paper creates amazing adhesion for this stuff. I suspect it to be a bit of a "greasy", oily filament at temp. When you drop a piece of popcorn on a sheet of paper, it leaves a grease slick. It is a permanent stain. So if this filament is a bit greasy (but much higher viscosity than melted butter ;-] ), literally, at temp, the paper would actually act as an absorbent material, and even as a degreaser on the point of contact with the filament.
I am printing a phone case. I assume you have used a sheet of paper on top of this sheet of paper and leveled the bed perfectly using the paper as feeler gauge method, or all the rest of this advice is useless. Because of the close tolerances I use on the first layer, this is critical.
Tips: Print a huge 1 cm brim in case you have to do last ditch intervention on the print. The brim is to prevent warping from the contact surface, but also as a place to tape the print down from the topside in case it decides to warp no matter what you try.
Extrusion: I am using a creality CR10V2 I converted to direct drive with a 0.2 mm nozzle. I replaced the stock stiff spring with a pair of ballpoint pen springs I hotglued together. ( I am kind of a barbarian.....) They put just enough tension on the tensioner wheel to reliably push the filament without it sticking to the drive gear. (Single drive gear extruder)
Set Cura to extrude at 112 % or in that range. It will not blob at that rate, but will have a nice fat line laid down. It created blobs for me at 115 % extrusion, so avoid going to 145 % like I tried at one point. Nice to know my ballpoint pen printer can do that....
The initial layer height will be set to 0.12 mm, with following layers set to 0.19 mm.
The wall width will be 0.2 mm and that "excess" in the above calc fills gaps and binds two side by side lines together.
This stuff also contracts if the adhesion sucks, so extrude extra and it will not contract lengthwise so badly.
Heat:
Extruder: 220 °C. My filament seems to get more plastic-y at higher temps. Lower temps made a softer, more flexible material. Also, printing at a lower temp reduces contraction related warping.
Heat Bed: 85 °C. Keep it there the whole print. This stuff likes the warm and contracts less if kept warm the whole print. I tried starting at 85 °C and letting it cool after the first layer to 40 °C, and all 4 sides came loose from the painters tape surface. Keep it hot!
Increasing your fan speed seems to help it contract as soon as it is laid down, laying a bead that has already contracted somewhat by the time it is embedded in the layer.
Other tips: Printing infill at 25 mm/s was too fast. I have it making nice prints at 18 mm/s throughout the print. TPE prints slow. Fails print slowly too. Lots of beautiful failures on the path to success... Knowledge gained from watching the machine print.
The above guidelines will help you get prints without glue, sometimes with a bit of tape around the brim if it is really cranky.  Good luck, very tricky material to work with on large surface area prints.


text:
How would you clean/prepare a flexible/magnetic mat (e.g. Ender 5) as compared to a glass bed?
I have started printing about a month ago on an Ender 5 (using mostly PLA but recently also PETG) and it seems it's about time to give the print bed a more thorough cleaning than what I usually do after most prints. I'm using the flexible magnetic mat that came with the printer which has a slightly rough surface, but all of the cleaning suggestions I found so far either did not mention the bed material or were specifically for glass beds.
Can/should I use stuff like acetone or rubbing alcohol on this? Or should I stick to warm soap water?
I have had some fairly decent results with spectacle cleaning tissues but that will only remove grease, not filament residue.
Also, I am occasionally having some first layer adhesion issues (especially with the PETG or when printing things with a circular base) and I was wondering whether common suggestions like glue sticks or hairspray to prepare the bed for printing  can also be applied to the flex mat?

I have the WhamBam system which uses a PEX layer over flex steel (which sticks to a magnetic sheet on the printer bed). To clean old material off, I use a "brass sponge" intended for cleaning soldering iron tips to remove the old plastic, then give it a wipe with a paper towel with some isopropyl alchohol (I have 99.99 anhydrous on hand as I use that for cleaning printed circuit boards as well).
The brass sponge is fairly soft, does a good job of grabbing the old plastic without tearing up the PEX layer.

Would steel wool do the trick? I have some fairly fine grade stuff to hand.

Try it on a small spot in a corner, see how it looks.

Just about every reference I've seen for non-glass beds is to stay away from acetone. Denatured alcohol is likely a safe bet for beds with surfaces that are not impenetrable. If you can identify the bed material, you'll have a better shot at getting a definitive answer.
If you have filament residue, you won't get it clear without some mechanical effort, unless you had an adhesive layer between the bed and the filament. Even a plastic scraper can be effective in clearing the debris.

I think I read somewhere that methylated spirits leaves a residue - should I avoid it?

The denatured alcohol in our area is not dyed, which means such an additive is not a problem in that respect. The other additive can be methanol, which evaporates at nearly the same temperature, leaving nothing behind, if properly swabbed. The research I've done shows some countries use a colorant, which may leave a residue that could be cleaned with isopropyl alcohol.


text:
Tryinng to get CAELinux to boot
I believe that CAELinux has successfully installed on a SD card on a laptop. When I rebooted what I am left with is a GRUB prompt. If I enter the chainloader command it expects things like the device name of the linux image. I really want to know if CAELinux has installed and if it runs OK. Then I shall learn more about GRUB because I have another distribution that I am interested in.
How can I simply start CAELinux from the GRUB prompt?

How's this apply to 3D printing?

CAELinux is a distrubution centered around 3D modelling and printing. I have tried posting on their forums with these questions regarding booting after installation with no reply. I know that it is off topic but this is the closest type of group I can find on the stackexchange to what I want to know.

Have you tried their forum (https://www.caelinux.com/CMS3/index.php/forum)? Seems a more appropriate place to ask.

Yes I have and get no response

Go try the Unix and Linux, they may be better prepared to help on this matter. But I would imagine they suggest what I am going to suggest. Use a more common distro like Ubuntu and install the packages on that, you will find more support that way. Otherwise my guess is that the device of the sd-card reader does not match what grub is expecting and it can't find the kernel because of that.

It is OK, I figured it out. Thanks for the help nonetheless.

Per the Getting Started page,

As CAELinux is a customized Xubuntu 16.04 distribution, the installation instructions (and then administration) for Xubuntu/Ubuntu  all apply to CAELinux.
  For more instructions on how to install CAELinux on hard drive, please follow the Ubuntu instructions here: https://help.ubuntu.com/community/GraphicalInstall

Based on the information provided above, I think this question is off-topic for this site, and should be migrated to either Unix & Linux, or Ask Ubuntu.

OK it may be off topic, but I still think it is worth considering that this distro is designed for 3D modelling and printing.


text:
How can I add an extra fan, controlled by a microcontroller, to my board?
I recently discovered this kit after reading this Instructables, Adding More Extruders to Any 3d Printer:

I'm pretty sure I can use this kit with my board since it uses the same drivers as mine. But that's for motors, not fans. And while I know G-code pretty well, I'm not sure how I would use this to activate and deactivate a fan from G-code. There is probably a better way to do this.
The board I am using is from an FLSUN Large Scale 3D printer. Here is a picture of the board:

There appears to be only one labeled pin for the fan. BUT even if there are other pins that I don't recognize, they would have to be controlled by a micro controller (G-code commands). There appear to be a bunch of un-used pins in the bottom right of the board. But if this board just can't do it, there is a newer board here: [link removed].
It does seem like it is using Arduino and the newer board might have extra pins for a fan. But at that point, would it be easier (cheaper) to just control the fan from the extruder extender kit? Would I just set it as an extruder with a really high filament extrusion speed and send appropriate G-code commands when needed to run it at max voltage?
I know on my Lulzbot Mini there is a "parts cooling" fan which allows you to cool off the layers as your structure rises vertically. This is a fan I want. The parts cooling fan must be controlled by the micro controller. It only comes on when printing vertically.
I would like to actually add two fans like this to my 3D printer. One of them is a >= 5 V cooling fan like above. Another is a regular 12 V cooling fan for an extra extruder that I am adding.

Am I even able to use two motors at once? Assuming I was able to control a fan from the extruder extender... Would I be able to run the fan, and keep printing, then turn off  the fan later?

I could use the LCD pins somehow?

I was wrong, you'll just need custom firmware. Your wiring diagram is wrong though.

Adding fans has been discussed in other questions, why does it specifically need to be through an additional microcontroller as it can be done by your current board/microcontroller.

@Oscar I can control it by the same microcontroller, there doesn't need to be an additional microcontroller. The problem with this question was that I didn't notice there was even a pin for a microcontrollable fan! It wasn't labeled in the assembly manual and was off in the distance.

Ok, Steve, thanks for the update. I have added an image of the product rather than a link, as it is more appropriate. Now, regarding the second link, apparently it sets off virus warnings. @0scar noticed them this morning

Note: With the firmware it is shipped, the FAN port is 100% all the time. you need to re-pin the software, but you have lots of other free pins that could be programmed for though

The MKS Gen L v1.0 Board you are using does support microcontroller controlled fans without doing some surface level modification to the board via the D9/FAN. The port you marked FAN is not a controllable port, it runs a direct 12/24 V all the time and should be used for the Hotend cooling solution. The ports D7/HE1 and D10/HE0 are for two hotendes, corresponding to E0 and E1.

Variant A: Swappy Fans
This is the more tricky variant and does need both coding and wiring expertise.
You'll have to run both hotend cooling fans via that one port in the top left corner. Make sure they are running fast enough to keep the heatsinks cool and prevent heat creep!
Your custom Firmware will have to define D9 as a microcontroller controlled Fan instead of a 100 % running fan as the normal firmware is most likely.
Without extra hardware, you can't get 2 individually controllable ports from D9, but you can use, the fact that you don't want part cooling for a hotends in 'resting' position. So a pair of couple Normally Closed switches cab achieve disabling of the resting hotend's part cooling fan:

make a wire splitter for D9, so that you have both + and both --wires connect to the one +/--pin on the board. You'll have the part cooling fans in parallel now.

Do the same for the Hotend Cooling Fans!

connect each +-line to a Normally Closed switch, which is installed on the hotend in a way so it triggers and opens the line if the hotend is in the resting (homing) position.
As the line connects when the hotend moves into the build volume, the part cooling fan on the currently active hotend starts to spin while the one of the non-active hotend is isolated.

Variant B: MOSFETs and Safety
An alternate source for the part cooling fan signals might be the SERVOS1/SERVOS2 group, where D4 to D6 and D11 are accessible. This leaves the FAN and top-left 12 V pinnings free for the hotend cooling. The downside is, that these pins don't likely provide 12 V but at best a 5 V digital output. However, a 0 to 5 V signal can be used to control a separate MOSFET which outputs 0 to 12 V, which then can power the part cooling fans. Due to the power draw of the Fans, a simple step-up converter is not a solution it needs a separate power supply.
The Main benefit is, that this does draw less power from the board than Variant A and does not re-pin D9. The "Cooling Fan Board" could use a 6-line ribbon cable to connect to the SERVOS1 pins, using the 5V as reference for the MOSFETs, D4/D5 as the trigger signal and GND as return lines.
A pre-assembled board that could serve in this position would be a L298N Driver. Due to how it is set up, one could run both part cooling fans, if their speed is set up to be always equal.

WOW I missed that open one. Thank you!!! What circuit hardware would I need to extend this port into two controllable ports?

For your information, the MKS GEN L is basically a RAMPS board as the pin layout of the RAMPS configuration is used in the firmware of the MKS GEN L (see e.g. the Marlin source code).

@KMmmm I am far better on the hardware side... The Code snippet linked by 0scar uses the pins in AUX1. The 5V fans spin slowly because the board only provides a very low current of the right voltage but the fans need considerably more.

You can use the M42 g-code to manually set any supported digital pin, which can then be used to either enable one of the on-board MOSFETs (D7, D8, D9, D10) or an external MOSFET.
For example, M42 P9 S255 would enable the parts cooling fan at 100 %.
You should never run any fan or heater directly off of a microcontroller pin (the ATmega2560 on your board supports up to 40 mA. Standard 5 V fans I found online tend to draw 100 mA or more).
Your board supports up to four switchable "power" outputs - bed, heater 0, heater 1 and FAN.
Depending on what you use so far, one of those may be usable for your fans.
Note that on-board MOSFETs usually switch the ground side of the connected device.
This means that you for your 12 V fan, you can connect it directly to one of those connectors.
The 5 V would have to receive +5 V from elsewhere (like the +5 V pins near the bottom right mounting hole), but you can still control the fan by connecting its ground lead over one of the on-board MOSFETs.
If four MOSFETs are not enough for you, the L298N module provides an easy way to control four additional fans, while using normal digital pins to control the L298N.

Please note that it is not advised to run a fan from a digital pin directly, the current can be too much for the microprocessor, instead connect the pin to a (external) MOSFET to schedule either a 12 V or 5 V load.

Thanks. Just to summarize so that I have it clear. I can connect a 12V fan to the "FAN" pin (D9). That's something I can do today, because it is one of the four "power" outputs.

But when I use the L298N module, I will also need to buy external MOFSETS? I can research this part separately.

Correct, you can connect a 12V fan to D9 / the fan connector and control it via firmware / g-code.
The L298N essentially is a module with four external MOSFETs in it. It's suitable for driving one stepper motor, two DC motors (in either direction) or four "single direction" loads such as fans.


text:
Object's height not a multiple of layer height
This basic question has been bothering me for a while.
Let's say I'm printing an object of height 20.1 mm with 0.2 mm layers. What will the slicer do? in other words, how will it print the last layer? Since I'm printing with 0.2 mm layers, my object will be printed in 11 layers, but the last one would make my object 20.2 mm high. Is there some sort of compensation (in Slic3r or Cura for example), or will I just get an inaccurate object?

Slicers will round off to the next nearest layer, so 20.2 mm in your case. However, you can get to 20.1 mm if you use a 0.3 mm first layer.

Might want to add that the ultimate layer height may vary depending on material, print temperature, etc, so it depends a bit on how many sig figs of accuracy the OP needs in his final part.


text:
A single angle, single phone model windshield mount -- a job for a 3D printer?
My end goal is getting high quality dash footage from a 6 month road trip I'm going on. From my research, very few dash cams support 4k 30fps filming, and the ones that do overwrite their own footage really quick, so instead of that I'd like to use my iPhone. I have a wide angle lens for it, and I figure I can mount it to my windshield, behind the rear-view mirror.
But here's the problem: there are no windshield phone mounts that allow for the angle I need. They're all designed to point the phone screen at the driver, and the little ball joints that let you set the angle just don't work to point the camera straight ahead. I've tried like 5 different ones, and they all have this problem.
What I need is a solid thing that sticks to my windshield and holds my phone in the correct direction. Once stuck, it never needs to be adjusted. I think I could use 3M strips to stick something to the glass, so the only remaining part of the mystery is this: A piece of plastic the exact right shape to hold my phone and point it at a specific angle.
My question is: Is this a good use case for 3D printing? And if so, how would a complete amateur get started on this?
A few more requirements that I'm not sure if 3D printing can meet:

It would need to withstand heat, as it would be left in the car on hot days in the south.
It can't be too brittle, as speed bumps and dirt roads will knock it around a fair bit, and it has to support a large phone with an added lens.

Welcome to 3dPrinting.SE! Ever thought of adapting GoPro mounts? Put together correctly, they are infinitely adjustable. There are a ton of them on Thingiverse.

Have you looked into phone holders? Like this one  https://www.amazon.com/iOttie-Touch-Connect-Android-Universal/dp/B07RCBYDZS?pf_rd_p=2620b553-1291-4b92-a682-d86af1a6ccab&pd_rd_wg=qV0hl&pf_rd_r=2EM1C86Z099D5Z54JND3&ref_=pd_gw_unk&pd_rd_w=KDBOK&pd_rd_r=77657ff8-cfe0-4e30-87da-9b1d02ae18fd  Holds your phone, but looks like it can also pivot around so you can see the controls to start/stop recording, etc.

You'd need to print in a heat resistant material - ASA for example - and design the part for your needs, but this project is certainly feasible and doable with 3D printing. If that isn't enough for you, you could drill a hole to the internal cavity (it's best to have an infill pattern that does not split the internal cavity into several ones. Gyroid is one of these) and fill it with resin to make it even more sturdy.
With the right design, you could also go for SLA/DLP aks resin printing, but I am not well versed in the properties of printed resins but that they have some of the best inter-layer bonds.
If you don't want to get a 3D printer yourself, order the part printed, which usually comes cheaper than an entry-level printer with better quality for a one-off project as you won't have to learn the ins and outs of your printer and how to ensure the quality in the material you choose. Some print services also provide really exotic materials.

This certainly is a problem you could use a 3D printer to solve, but it requires getting good results with printing in materials that aren't the easiest to work with. It might be easier to go with one of the mounts you already have, and just adapting it for a different range of angles by mounting a wedge-shaped piece between it and the windshield. This could be done with 3D printing (note the materials requirements still), or if you have access to tools for cutting, drilling holes, etc., by just starting with a chunk of material, cutting it to the right shape, and adding some holes to mount suction cups and attach the existing phone mount.

Why not try a GoPro camera? They now have 4K, image stabilized camera with all kinds of accessory mounts.
https://shop.gopro.com/cameras/hero7-silver/CHDHC-601-master.html

While a GoPro might solve the issue in itself, you don't answer the question if this project is suitable for 3D printing or not, which is a Yes-No-Maybe question.

I think it would solve the heart of the question: "My end goal is getting high quality dash footage from a 6 month road trip I'm going on. " and "very few dash cams support 4k 30fps filming,"

Hmmm... after re-reading the question, you actually make a good point! :-) Although, as @Pᴀᴜʟsᴛᴇʀ2 states in the comment, adapting a mount from Thingiverse could be an idea. Maybe add an example or two from there to your answer, to make it more complete? Just an idea. :-)

I haven't found a phone holder at thingiverse that I am satisfied with, even for desktop use.  I have a folding cover on my phone, and am not skilled enough yet with the a design tool like fusion360 to design my own, and there are not many available with design files that can be modified.  I found one that sorta works, but it falls over a lot - I have it taped to a wood block to give it some stability. We're just getting into designing, coming from electrical engineering background with no 3D tool history, so it's been a challenge.  A multi-part design would be a real challenge!


text:
What exactly is the relationship between Flow/Feed Rate and (Print) Speed?
Newbie alert...
On my Ender-5, when I go into the "Tune" menu during a print and adjust the "Speed" value, that value will later be shown in the display next to a label saying "FR". I can also adjust that value by simply turning the knob during printing (and thus started to think of it as the "speed dial" ;) ).
As far as I was able to tell so far, the "FR" percentage value is being applied to all four stepper motor movements and thus allows me to slow down or speed up printing on-the-fly, e.g. to make up for sub-optimal speed settings chosen during slicing (after all, I'm still learning).
I only recently learned that FR is actually short for "Flow Rate" (or is it "Feed Rate"?) and that seems to imply that this is probably about more than just motor speed... Also, there seems to be no equivalent to the Speed setting in Octoprint: All I have on the Control tab are two distinct sliders for "Feedrate" and "Flowrate". Would I always have to move both to achieve the same effect?
Can anyone clarify? What implications of changing FR/Speed might I be missing?

By turning the knob in the main screen, you're adjusting "feed rate".
This is essentially a factor that all g-code speed settings are multiplied with - "speed dial" seems an appropriate name for it.
"Flow rate" is something different altogether - this is multiplied with the extrusion commands. It has the same effect as changing your extruders steps-per-mm.
You can adjust under- / overextrusion with this on the fly.

OK, thanks! But don't extrusion commands also include "g-code speed settings"? When I'm moving the axes faster, the extruder also has to adjust its speed accordingly just to keep up, right? So, would it then be correct to say that Flow Rate is applied "on top of" the Feed Rate but only affects the extruder motor?

@OliverGiesen 'Speed' affects how quickly, 'flow' affects how far. Flow rate is like a dimension scaling, but only for the E axis.

feed rate is used in some slicers for the material feed rate You mean code processing rate, right?

@Trish I've never heard of code processing rate. That sounds like it should be affected by buffer sizes and serial connection speeds, not F tags and tunable menu items.
Do you know which slicers call flow rate that? The flow and feed rate terms have been pretty clearly "standardized",
I don't like the "feed rate" term either, but it's a silly remnant from CNC mill days, just like the mm/min unit - but I think it's too late to get rid of those definitions now. I'd probably prefer "speed" and "flow" if it were up to me.


text:
Ender 3 BLTouch first layer problems
I recently installed an original BLTouch V3 on my Ender 3 pro and ever since I can’t seem to get a decent print. My first layers are horrible.
The install wasn’t so bad, I really thought it would be plug and play thereafter.
I currently have:

Version 1.1.4 board with non silent steppers
Marlin 1.1.9 with bug fix as per the teaching tech video
Printing on glass, bed @ 60 °C, extruder @ 200 °C

I have checked

Bed is level.
X gantry is squared/straight.
Belts seem tight.
Tried my best at getting the Z offset right.
Checked E steps are correct.
BLTouch seems to be working - not 100 % sure as it’s my first time using an auto level sensor.

More pictures here for those who can help.

I have reset the offset and still having difficulty I’m hoping the following pics would help. They bed level squares that prints squares on all four corners and the centre of the bed plate. If I raise the offset any higher I have difficulty with prints sticking. See here.

Please do not roll back constructive edits, thanks. Informational updates should be edited into the question and not left as comments, as comments are ephemeral in nature and are generally deleted over time. I've updated your post for you.

I manage to get the printer working, it was an hotend issue. Was clogged, replaced nozzle and working as expected.
Thank you all for the guidance!

Glad you got it working, please don't forget to mark the answer and the accepted answer using the tick icon in order to remove the question from the unanswered question list. You may have to wait 24 hours or so, in order to be able to mark it as the accepted answer. Maybe also expand upon the answer, if at all possible, in order to provide guidance to other users who may experience the same issue in the future. Thanks in advance.

So the weird ridges around each line look like a form of over-extrusion that happens when your nozzle is too close to the bed. The gaps on the other side may be areas that were so thin that they didn't survive removal from the bed, or just areas that the plastic couldn't reach because the nozzle was basically dragging. I don't personally have any experiences with touch sensors (yet! got an inductive probe I'll be installing soon) but I can only assume that you have the ability to set the probe's Z offset from the nozzle. If that is the case, try setting your Z offset such that the nozzle is further away from the bed after probing.
I'd suggest starting by raising the nozzle about 0.2 mm, and fine-tuning from there. If you continue to get the raised ridges adjacent to each printed line, keep raising the nozzle until you don't get them anymore. At some point you should actually get to a point where there's gaps between the lines because the nozzle is too far, and at that point you can start bumping the offset back down again to try and perfect that Z offset.
Alternately you could do what I do and print on a raft with a 50% density first layer, but I get the feeling if you're printing on glass you probably want to be able to just print on the glass.

If the image is showing a view of the bottom layer of the print, the most probable issue is that the nozzle is too far away from the bed when printing the first layer. This manifests itself as almost not flattening out the deposited filament lines, hence you can see through them. Also it might be a good idea to check if the extrusion process is giving you enough filament (it could be that you are under-extruding); a calibration of the extruder might help in this respect.
To lower the nozzle/decrease the nozzle to bed distance you can use the menu of the printer to set a smaller value. Also, G-code M851 may be used to set a new (smaller) value (e.g. M851 Z-1.23 when the sensor trigger point to the bed is 1.23 mm); don't forget to store the value to memory with M500 (if enabled in firmware). Sending of G-codes to the machine can be done by "printing" the commands stored in a .g text file directly from the SD card, or using a so-called terminal interface that many 3D Printer software applications offer (e.g. OctoPrint, Pronterface as part of Printrun software suite, Repetier-Host, etc.).

Thank you, it is the top layer. The bottom layer is pretty smooth as in glass and using alcohol.. the prints do stick surprisingly. I have calibrated the extruded I’m 2mm off .. would that cause major issues? I measured from the extruder end unscrewed ptfe and used octoprint to extrude 10cm of filament and the printer returned 9.8cm

So slight under extrusion, not much. Use this reference to determine the Z offset. Do you hear skipping clicking when printing?


text:
Printing with PETG, printer says it's out of filament when it clearly is not
Background:
I have an Alfawise U20 (CR10 clone) and am still somewhat of a noob, though I've been learning as much as quickly as time will allow.
The Alfawise U20 has "out-of-filament" detection, though I'm not 100 % certain how it works. I think that there's a roller across from the toothed knob that drives the filament into the Bowden tube, and if the roller doesn't roll, that means the filament has run out(?).

I've become fairly proficient printing with PLA but this is the first time I've tried printing with PETG.
Problem:
Almost immediately after starting a print, the printer pauses the print and displays message "Out of filament. Would you like to change filament?" There's not even time for the toothed knob to click, which I've seen when trying to print PLA too fast/too cold.
If I manually extrude some filament, it seems to work fine. When I resume the print, it will print for anywhere between ~2 seconds & ~5 minutes before pausing again, prompting me to change filament.
I'm printing at 240 °C. I've seen opinions vary pretty far & wide wrt how hot to print PETG, with some people saying you can print successfully as cold as 215 °C, and others saying you should crank it up to 250+ °C. This filament is rated for 230-250 °C extrusion.
Again, manually extruding filament works fine. No slippage, no clicking. Smooth extrusion.
I've read that PETG is extremely hygroscopic. Could my problem be caused by the filament having absorbed too much water? How would I even determine if this was the cause?
What else could be causing my problem? I've read some printers' "out of filament" detection have problems with translucent filaments?

Welcome to 3dPrinting.SE!

Is your filament translucent? If so I suspect that's your problem. My understanding is that most "out of filament" detectors are optical.

@R.. it's semi-transparent. There's a link to it in the OP

@R.. That was my first guess also. W.r.t. being gyroscopic, my largest printer is located in our laundry room, where laundry dries, I have my 2.2 kg PETG spools uncovered, no problem whatsoever.

What kind of filament sensor do you have? Is it optic or mechanical? Please share a photo.

Easy test for optical vs mechanical:  if it's mechanical then a sensor has to be physically touching the filament.  If you can't tell that,  then slide a piece of glass or clear plastic into that slot and see whether the error is reported.

Online reviews indicate that many of the firmware updates cause new bugs. I dunno whether your version generates spurious 'out of filament' notifications, but if you can find a forum page or two dedicated to this model, that might be the best place to ask.

Since it could be a bug, see if it reports that there is filament when there is no filament installed.

@Trish I'm not sure what kind of filament sensor it is... I'm not even sure what they look like or where they're typically mounted

@CarlWitthoft I haven't upgraded the firmware since I got it this past December. I've been wondering if I should try upgrading it, if that would fix it but now it sounds like maybe I leave it as-is

I just noticed @0scar helpfully added a photo of the filament sensor!! Thank you!  I'll go investigate on my unit. I can't tell from the photo if it's optical or a simple switch, but it looks fancy soooo maybe optical?

Shoutout to @0scar for posting a photo of the filament sensor, that was super helpful. Also thanks to everyone else who pointed me to the filament sensor and resources around that.
I also tracked down this review which had great information around my printer's filament sensor as well. It turns out that the hole that goes to the sensor is way too big and there's a lot of play with the filament. As I jiggled the filament up & down I could hear the sensor clicking on & off, clearly indicating that if the angle of entry of the filament was too low, the sensor would not be depressed and this would continue to be a problem.
So for my next print, I did what that reviewer suggested and simply unscrewed the sensor & taped it so it would not stop my print. My print was unsuccessful for other reasons (under-extrusion/failed to adhere to the build plate ), but at least I think I've figured out what's going on with my filament sensor. Thanks again everyone!

the clicking tells us it's mechanical

Yes I agree, it's a mechanical filament sensor, not optical


text:
Slicing directly from non-mesh data?
This is a bit of a weird question, and I imagine the answer might simply be "no." But here goes anyway:
I'm writing some code that generates shapes for 3D printing via "implicit surfaces," i.e. a mathematical function f(x,y,z) that is positive inside the shape and negative outside it. This works pretty well for designing the kind of shapes I want to print, but the problem is, turning the implicit surface into a good mesh is hard - there are some libraries that can do it, but they're kind of finnicky and you have to play with parameters a lot to get it to work well.
But I was thinking: the only reason I need a mesh in the first place is to send it to a slicer, which will ultimately throw away the mesh and turn it into gcode instead. My plan was to do
implicit function --> STL file --> gcode
but I'm wondering if there are any slicers that will let me skip the intermediate step and let me just do
implicit function --> gcode
instead. That is, my code would supply a 3D grid of voxels, containing the value of the function at each 3D point, and the slicer would create the gcode from that instead of from an STL file.
It seems that Shapeways have a nice and simple format called SVX that is exactly this, but as far as I can tell, this is only supported by Shapeways and not by any FDM slicing software.
Another option would be for my code to supply a sequence of 2D polygons, one for each layer of the printed model, so the sequence would be
implicit function --> big list of slices --> gcode
This would be both easier and more accurate than first converting it into a mesh, and I assume the slicer must generate this kind of representation anyway, before it calculates the path for the print head to take.
I suppose the question is, is there an existing CAD format that supports either of these options, that is also supported by existing slicer software? If so then I can just write my code to output in that format and it should just work.

Have you looked at Mathematica? It will do parametric plots, and also exports STL files. Version 12 will run on the Raspberry Pi (including the latest version), and is available free of charge.

That last approach rung my OpenSCAD bells.
You should be able import each layer as a .dxf file in there, and have it render an .stl file from that. Maybe you can even implement the functions directly in OpenSCAD?

@towe I could import each layer, but then how to turn it into a mesh? If my shapes were convex I could just use hull(), but they're not generally. (I'm a huge fan of OpenSCAD, but it doesn't support implicit surfaces directly.)

@Mick  Mathematica is very much not free.  You can get a short-term demo package for free, and in some cases can get it free while you are a student at a participating college, but never the full app.

@Nathaniel Couldn't you linear_extrude and then translate each slice to its appropriate height?
Then render / export as usual.

@towe that would work, but then there would be layer lines built in to the model! (Then again, if I make sure those are the same height as the layers in the actual print, it might not matter. I might play around with that some time, to see if I can get it to work.)

Have you seen ImplicitCAD http://kalli1.faikvm.com/ImplicitCAD/Stable (via https://hackaday.com/2016/04/18/implicitcad-programmatic-cad-built-with-3d-printing-in-mind/ ) ?

@DavidCary yes. In fact, the reason I want this is because I have my own implementation of an implicit CAD package, similar to ImplicitCAD except that it's Python instead of Haskell and has a somewhat different feature set, more suited to my needs. (Perhaps one day I will release it.) ImplicitCAD has the same problem as me: before its implicit functions can be printed it must first turn them into meshes, which hard to do well. ImplicitCAD uses a variation on the Marching Cubes algorithm, so its meshes are far from perfect. I'm hoping to find a way to skip that step.

(I am currently using a C++ library called CGAL to generate meshes, which is the same library OpenSCAD uses. It generates much better meshes than marching cubes and is fast, but unfortunately its implicit function meshing is a bit unstable - you have to play around with a lot of numerical parameters, and if you get them wrong it just randomly doesn't work, or produces a malformed mesh file, or occasionally just crashes. This makes it unsuited to a public release, which is one reason for wanting a better alternative.)

No, not natively
To the current point, all slicers in frequent use do use some kind of 3D model with explicit surfaces to cut up into slices and then solve the path functions to create the G-code. The model can be in STL or OBJ or some other format, depending on the slicer, but at this point (November 2019), no slicing program I know about supports direct math as input.
Probably make it yourself?
However, you have a way to design the models by solving a mathematical formula. You could probably use the program that solves the formulae to also act as a slicer of some sorts.
One software that might form a base could be Cura, which allows writing plugins, so there might be a way to have Cura automatically solve the surface formula and then plug that into the slicing without storing the intermediate data as an STL.
Slic3r might also work as a base since the whole source code is open. It would be a similar endeavor as modifying Cura.

Thank you, that's helpful information. I wouldn't want to write a whole slicer myself - it would be no problem to solve the equation to cut the model into slices, but there's more to a slicer than that, e.g. calculating an optimal path, generating supports, fine tuning of temperature profiles, etc., which probably takes years of work to get right. Cura's API seems to be undocumented, so it's hard to tell whether I can do what I want by writing a plugin, but I'll look into it further. For Slic3r it seems I would have to modify the code base itself, but that might be easier than modifying Cura.

This is a partial answer that I might make into a full answer if I follow it up later. (I'm posting in case someone else has the same question, in which case this might be helpful despite being incomplete.)
It seems that the 3mf format has a slice extension that does pretty much what I want - it allows the model to be specified as a series of polygons representing the slices, instead of a 3D mesh. So in principle I could simply output a 3mf file containing slice data, and load it into any slicer that supports this extension.
Unfortunately, this would mean learning what seems to be a rather complicated XML based file format, and I'm unsure which slicers currently support the slice extension. This seems to be quite a recent thing, and it might be a case of waiting until better support is available, in terms of Python libraries to write 3mf files as well as slicer support. (There are Python bindings for lib3mf, but their documentation currently consists of a single word, "TODO".)
There is also a requirement in the spec that any 3mf file containing slice data must also contain a mesh representation of the object. This is annoying because the whole point of this idea is to avoid generating a mesh. I suppose I could just output a bounding box or something instead.

This is my second self-answer. I'm posting it separately because it's a different technique. This one should work today, without any modification to the slicer.
I got a helpful hint from Cura developer BagelOrb in the Cura issue tracker:

Note that generating the mesh doesn't need to be as difficult as you might think.
  You don't need to connect the layers together, you only need to give your slices a height, so that Cura will slice each layer exactly where you want.
Just generate the 2D polygons and then extrude each line segment into two perfectly vertical triangles with the same height as your intended layer height - and BAM! you got what you want.

This is similar to a suggestion @towe made in the comments on this question, but the cool thing is you don't need to bother rendering the and bottom surface of each slice, because the slicer will just ignore them anyway. This is because, in BagelOrb's words,

The first thing CuraEngine does is slice the 3D model into polygons and the rest of the processing only uses these polygons. The 3D model is only used to calculate the areas of each layer and all other operations are operations on polygons.
Your mesh doesn't need to be manifold; only each slice needs to be a closed polygon.
The slicing stage within CuraEngine is a 2 step process:

for each triangle generate the line segments for each layer with which it intersects
for each layer stich all line segments together into polygons

Your model can look like this:

This is great because the top and bottom surfaces are very tricky to do correctly. It can be done in OpenSCAD using linear_extrude, but it turns out to be extremely time-consuming to union all the layers together. This way my code can just throw all the triangles into an STL file and it will slice correctly without any issue.
The other useful information in that thread is that Cura will slice the model in the middle of each layer. So that's where I should slice my own implicit surface model for maximum accuracy.
I did a quick proof of concept and it seems to work so far. I manually created an ASCII STL file containing the sides of a 1cm cube with no top or bottom surface. In "prepare" mode, Cura sees it as the hollow model that it is:

But when slicing it ignores the missing faces and adds top and bottom layers and infill, as expected:

I'll probably edit this answer again once I have the whole thing up and running.

Open SCAD can export into STL or a different format respecting the origin. The exported files then can be imported in programs such as blender which also respect the origin. The accumulation of items then can be exported as one STL with multiple shells.

@Trish this is true of course, and I'd considered it. However, I'm super happy to have this method, where my code can just produce a printable STL file directly, without any additional steps.

Edit and show us the result in this answer when you print it

@FarO will do. (It might be a while because I'm travelling at the moment.) I did a quick proof of concept and added some screenshots to show that it does indeed ignore the missing faces.

HAve you tried setting top and bottom layers to 0 in conjunction with this?


text:
How to post-process G-code to make prints faster using splines and arcs?
Recently (in 2017) there was a paper that got some publicity by researchers who are using a B spline algorithm to reduce vibrations in 3D printers. But before them, a B Spline implementation seems to have been first been made open-source by an alias named DeepSoic here. I would like to be able to print faster using the method described in the research paper, through post-processing G-code. I'm pretty sure these two sources use basically the same technique but I could be misunderstanding things.
Basically instead of stopping and starting for travel moves, speed changes are done in a curvy fashion, so the head never stops and the printer never shakes. This makes the print smoother and also faster. I think printing 10 times faster is something that is really awesome once you try it. Laser cutting relies on cubic splines for a different reason; to create curves in space. But it seems like these techniques are doing something unique to to 3D printing -- using them to adjust head acceleration/de-acceleration to create smoother movement arcs of the print head. Since laser cutters have a constant head movement, this technique wouldn't help them much.
The downside seems to be that it makes way more G-code commands, overloading the USB port, since it's sending all the points on a curve so quickly. I'm assuming a smart person today would really only use it through an SD card (which has disadvantages) or if they bought a 3D printer with a free Wi-Fi module thrown in (which also has disadvantages). Maybe a high baud rate helps.
I was wondering if there are any more established ways to use this obviously extremely important and beneficial and simple algorithm. Initially I was thinking that this is obviously something that should be added as a checkbox in a slicer, and not something to be implemented in Marlin. But after writing this post I realized that a Marlin implementation would allow you to use this technique over USB, but only if the slicer steedleaders are also using its special G-codes for this optimization. I don't care if it's a post-processing technique like the research paper's or a special Marlin-friendly version, I just want to use this technique even if I have to use this Huawei Wi-Fi module.
Basically I would like to know the best way to get started using this technique through a slicer or other software.

I think there is a miscommunication between users of CNC laser cutters and users of 3D printers. In laser cutting the arcs are used to define the path of the cut, which would be equivalent to filament extrusion. In laser cutting, the motion of the laser itself is constant. But in 3D printing, arcs can be used to smooth the speed of the printhead as it moves across the perimeter, and then to infill. It is using arcs for controlling the head well which isn't a problem in laser cutting. Since it's about the head movement, and not the model itself, I don't see how the STL file really matters.
It's really about using an arc to set head speed (a first derivative of position). Not anything about the shape of the model (which would just be position). At least that's my interpretation.
The Wi-Fi module is interesting because it receives an IP address from my router, then my router stops listing it as a connected device. But it still connected, because I can access it wirelessly. I am going to look into it more once I can fix some other problems with this dual-head. But so far there's a reason to think it might be backdoored.

The problem with G2 and G3 moves (arcs and circles) is that STLs are composed of only flat surfaces.

I find it curious that the question refers to faster printing, but the hack-a-day project linked to claims nothing about speed.  The article in 3dprint.com seems like a different project than the hack-a-day link in the question.

@Davo That should not matter, intelligent slicer software should be able to detect if consecutive points are part of a circle segment and could theoretically be sliced into G2/G3 codes. Alternatively a post processing plugin or program can do that, but that is not a limitation of the STL file.

see https://github.com/FormerLurker/ArcWelderLib/issues/33

Klipper firmware allows the user to measure resonances and then it will filter out the stepper moves to cancel those resonances. It achieves about the same effect with little effort from the user.

Just in regards to the wifi module that i mentioned - I think that the wifi device was behind a second router that was doubling as a network switch without a dhcp server, and i was trying to see its connection status on the first router. i dont use that setup anymore though

I would have liked to answer linking to credible official sources, but I cannot add references either on direct B-spline printing. So I'm writing down my thoughts. I've familiarized myself in B-splines to understand what they are and read into the 2 references given by the OP.

Basically, the printer software only allows printing of straight lines. Yes I know we can give orders to the printer to print a curve (using G2 or G3), but these eventually will be converted to printing straight lines. There is no ready made printer firmware available to print cubic curves directly to my knowledge. If it would be possible, these curves should eventually be translated into smaller straight lines by the firmware of timed stepper rotational output. These extra calculations would demand a considerable effort of the printer board processor, most probably far more an 8-bit processor would be able to handle.
Comparing the paper released in 2017 to the G-code pre-processing software reveals that although both seem to refer to B-spline techniques, they are implemented differently. For example, the pre-processing software aims to reduce the linear travel moves by replacing these with B-spline curves (and not affect the actual print object), while the paper focuses on the optimization of the actual printing curves being optimized by B-spline curves (also using a pre-processor). Both eventually would need to create a multitude of small straight lines to have the printer be able to actually print the object as there is no 3D printing firmware solution to print curves. Do note that the method in the paper has been questioned by the RepRap community, which demonstrated that they could print the same object way faster than the B-spline optimized example. Furthermore, do note that the Marlin community is probably moving in that direction as can be seen from e.g. this feature request and this G-code meta overview; G-code instruction G5.
So, both methods rely on pre-processing G-codes by identification of sliced coordinate (print) moves, translation into Bézier/B-spline curves for (print) moves, which eventually are translated into normal G0/G1 (print) moves. It does not appear that the Marlin community/developers are aiming to implement Bézier or B-spline curves soon. This implies that if you want to pursuit printing B-splines, you need to make your own pre-processor, or dive into Marlin C++ development; an 8-bit based printer board would not be sufficient indeed like the OP mentioned, up-scaling to 32-bit or interfacing with USB might be the only solution.

In more practical terms, you could design the part so that the corners are rounded (also known as fillets). This will help keep the print head moving and would prevent the sudden stop and start effect that causes "jerking". Further 8 bit controllers tend to get saturated when reading large amounts of g-code from the sd card or the serial port. Upgrading to a 32 bit controller will prevent that kind of jerking.
Both of these methods pale in comparison to just speeding up the print. Upgrading the hardware to be faster (various methods exist) would yield more of a reduced time than trying to optimize the g-code (in my humble opinion). Delta printers have the potential to be the fastest type of FDM printer, assuming that you could get the filament to melt fast enough.

This answer is spot-on that what OP is trying to do is virtually useless. Neither vibration/acceleration/jerk limits due to linear segmentation, nor the gcode parsing rate from making the segments small enough that acceleration pattern is essentially the same as with true curved paths, is the limiting factor to print speed. The limits are going to be fundamental vibration/acceleration limits in the mechanical parts and volumetric melt/extrusion rate of the extruder.

The source OP gave showed standard printing failing when print speed was increased, but print time decreased when using bezier curves.  The technique turns corners from stop-start to a curved path, which avoids sudden transfer of momentum into the frame in one direction.  Marlin now has a specific G-code for bezier curves (and for arcs), so the approach is reasonable.  Melt rate is a limit, but often the print speed is low because of acceleration limits, so you can print at 30mm^3/s but only print at 3mm^3 sometimes.


text:
Printing non-commercial model to make money
If a customer sends me a non-commercial 3D model to print, am I allowed to charge money for the 3D printing process? I understand I cannot charge anything for the model nor offer it as a part of my business.
I cannot download the model myself, print and sell it, but if the customer downloads it and sends it to me for me to print it, is it a violation of the license or not?

Consider looking for alternatives or recreating the object from scratch - designers who license their creations as "non-commercial" or - even worse - "no derivates" should not be supported, whether you end up taking money for the print or not.

How different is what you are wanting to do from 3D print services?

Very difficult to answer, what if your customer prints it on your machines himself by hiring 3D Printer time (and actually print himself by sending it to the printer), would he violate the legal license restriction...

@0scar that would be not commercial for the customer, who has the model. He acquires a printer for some time. you printing for someone is him acquiring an expert and a printer for some time...

@Trish The question I posed was meant rhetorical. What I meant to say is that this is very difficult, if you hire 3D printing time, also profit for the company is in the hiring price, you would be printing yourself, but the outcome and price identical to being printed by the 3D print service...

related https://3dprinting.stackexchange.com/questions/7786

I agree that intellectual property is complex.  I am not a lawyer, but have been in the middle of patent and copyright actions.
In my non-legal opinion, you are providing a printing service for which you are free to charge your customer whatever you agree on.  You are not responsible for the disposition of the resulting objects.  You do not know how your customer intends to use them.  They may be using them for commercial or non-commercial activities.  They may have a license to use them in a way that is unknown to you, and, again IMO, they have no obligation to disclose their relationship with the IP holder.  That license could be part of their trade advantage.
If the customer asks you to work with the design to make changes, and the license prohibits derivative works, I would be careful.
Never-the-less, the smell test always applies.  If it seems to be illegal, unethical, or immoral, you might choose to forgo the customer and avoid any possibility of being tainted by their activities, if it should turn out that they are behaving badly.

I do not intend to participate in a large production of models or anything "smelly" nor I don't want to make derivative works. I just want to know, if I am allowed to charge money for the printing (material, printing time,...) when someone comes to me and asks me to print a non-commercial model they found on the internet that they like. The way you have put it suggests it should be legal as long as other conditions are fulfilled.

I am not a lawyer.  I would feel comfortable print a non-commercial design under one-off conditions and charging a fair fee for doing so.  You are charging for the printing service,  not for the object or the design.  In case I forgot to mention,  I am not a lawyer.

Intellectual property law is complex, so you might want to consider getting proper legal advice. However, to respect the original designer's intent you need to look at what their license permits and try not to find a loophole in the process. There is nothing to stop you asking the designer (in public or private) to clarify their intent.
The biggest 'non-commercial' restriction reason is to protect the design idea, and stop someone mass-producing a clever design for profit. This applies irrespective of the original designer's intent to monetise their work.
Another big reason might be to 'hold back' the time invested in the design. Maybe the designer wants to share something they spent a lot of time on, for individuals to appreciate rather than profit from. The designer would presumably gain reputation as a result of wider knowledge of their work.
Sometimes, a design inherits licensing restrictions from a 3rd party (even maybe from the design tools used). For example, Fusion360 can be used for free by small companies, students, or for hobbies and personal learning, but has restrictions on commercial, professional or for-profit use. In that case, you would need to ask clarification from the tool provider.
The case you describe is complicated. You can't sell the printed part, but a 3rd party can probably contract you to print the part (or rent time/access to a printer). However, your contract rate can't include any element of value derived from the model. Assuming there is no explicit license condition, you should be OK if you charge for your direct costs. As soon as you include time, profit, or any modification to the model, you are on less solid ground.
To consider a non-obvious use-case of the Fusion 360 license, a student may well not have their own printer (particularly for an exotic material, or living in university accommodation). Can they contract a fabrication company to commercially produce or evaluate their model for the purposes of education or not?
I don't expect you will find a definitive answer to this question since there are too many variables. Creative Commons have a page about their Non Commercial license which identifies some things to consider when you interpret a license.
As noted in the comments, you can divide your time and professional contribution (and thus billable items) into several steps. By providing a model, the customer skips step 1:

making the digital model
preproduction (slicing)
printing
postproduction (cleaning off support)

A clear license would refer to all of these.

An option would be to contact the designer and try to resolve this, maybe a small fee which you impose onto the direct operating costs can be paid to the developer. I wonder how current 3D printing services deal with this (not the community ones, but regular businesses).

As a side note: the free licenses of F360 are not limited in any way.

Seeing this just confirms my worries that the answer to this question depends on the interpretation. I have some lawers in the family so better to ask them. I hesitate because I think they are more familiar with local laws rather than international.

The conditions on the software that the model creator used to create it have no bearing on anything you do with it. The software publisher has no relationship with you and no claim to copyright over the model. It's remotely plausible that the software publisher could have a legal claim against the model creator on the basis that they way they licensed it to you was contrary to a contract between them, but this doesn't invalidate the license or have any bearing on you, and seems unlikely anyway as long as the creator is not themselves deriving some sort of compensation from the arrangement.

Obligatory disclaimer: IANAL. If you want a real legal answer to this you should consult one or at least ask on law.SE or even opensource.SE.

@R.. I don't see anything that I wrote as requiring a disclaimer, law.SE does not provide advice either. Your comment about software is contrary to the expectations that I have when using software in a commercial environment - as an IP developer.

I was following up my own comment above not claiming your answer needs a disclaimer.


text:
PET-G under-extrusion after changing the nozzle to a 1.2 mm d. one (Prusa i3 mk3s and PrusaSlicer v2.0)
PET-G is the main filament I use. I can achieve high quality of my prints with my Prusa i3 mk3s printer. Recently however, I've recently changed my nozzle from the default 0.4mm to the 1.2mm. I watched the online video tutorial on how to do it properly and did the whole process carefully.
Temperature: 250 °C/100 °C
Speed: max 200 %, but results are the same even all the higher ones .
Layer height: 0.35 mm
With my first print (and the next ones too) on the new nozzle I noticed lots of under-extrusion with infill (holes). LOTS of stringing although I've increased retraction. What's the reason ?

What speed, layer height and temperature are you using? You have just increased the cross-section of the nozzle by 800%. It is possible that the hot end is not able to extrude the filament at the rate that you are requesting.

@Mick I'm sorry, I've forgotten to add this, I usually include such information. I will edit my question

Can your hotend melt PETG at the rate you're printing? You need a hardcore hotend to take advantage of that nozzle size without really low speeds. Assuming you don't need the wall thickness, 0.4 can probably even print faster with a normal hotend.

"200%" doesn't seem like much of a valid speed - unless the Prusa i3 has some sort of default speed everyone is using?
At the same layer height, you can only move 1/3 as quickly as with a 0.4 mm nozzle - your hot end has to melt much more plastic at the same speed.
Since you also went to a layer height of 0.35 (with the default presumably being 0.2mm), you're now extrusing 5.25x as much plastic in the same time. Your hot end probably just can't keep up.

@Towe Prusa says that speeds up to 200% are OK. But  I'll try switching the layer height to 0.2mm

@StLuke5 Well, 200% of what sort of default speed? That would have to be a figure of something like "40 mm/s" or "2400 mm/min" (in ancient slicers).

Having struggled with PETG myself, using a V6 with a 0.4mm nozzle, I can say with a fair amount of confidence that printing lines 1.2mm across and greater at 0.35mm layer height, at feedrate faster than a snail's pace, is simply outside the capabilities of your hotend. That is an absurd amount of plastic to melt in that kind of time period. You'd probably benefit from upgrading to possibly a Volcano hotend if you want that kind of performance from your printer.

@Nach0z Thanks, decreasing the layer height to 0.2mm worked for me.

Piecing this answer together from the comments on OP's post.
Myself and R.. noted that a layer height of 0.35 mm, nozzle width of 1.2 mm, and a fairly high feedrate (200 % according to OP, no reference to what 100 % is), is an exceptionally large amount of plastic to try and melt through almost any hotend on the market except possibly the Volcano, or the high-throughput version of the Mosquito.
OP responded that lowering the layer height to 0.2 mm seemed to fix the issue. That's still an impressive amount of plastic, but it's a 43 % decrease in total flow compared to 0.35 mm layer height.

Addendunm: e3D Volcano and Supervolcano have doube/quadruple the meltzone length to gain access to extreme flow for extreme speeds. The only other type of extruder, that I could think of that manages this is a pellet type extruder, where the arbor is heated and offers similar access to high flow.


text:
Build plate adhesion, PLA
Am just wondering if any conclusions can be drawn from this:

Three corners are solid, but not the one in the centre of the plate.
The bed was levelled before printing (and checked afterwards also). Even though the photo may appear to show a slant or lower corner (where the print is coming off), there is not. The bed is level, relative to the extruder, at room temperature.
The temperature of the bed is about 70 °C. I get inconsistent readings (with laser thermometer) but to the finger it feels about the same everywhere.
It's a glass bed, presumably with some coating. Is it degraded? Local temperature variation? Any ideas anyone?

Try dropping the Z-stop by roughly half a layer height.  "Squashing" the first layer helps maintain adhesion.

@TomasBy Please don't go testing temperatures over about 50 °C with your finger: it will damage your finger. Do you have a small spirit level that you can use to check the x-axis beam is level? If so, and the beam is not level, put something like folded card under the printer's feet to make it level. Then do the bed-levelling procedure.

@TomasBy Is the bed level in both directions, after bed levelling, according to the spirit level? If you print the object on the opposite corner of the bed, does the object's corner at the centre lift or the corner at the corner of the bed? (I realise it's going to be tedious if it takes two hours.)

I'm not absolutely sure the Y axis is horizontal, but nearly so at least. I believe I have checked it at some point. Have not tried to print in any of the other three corners of the bed except front right. I believe the surface in the centre of the bed is dysfunctional.

So, the outline stuck but the print lifted?

@user77232: yes?

I cleaned the bed with acetone and it seems to have helped, so presumably it was just a build-up of something.

Buildup, and a little hot. Try to lower the temperature a little

I have tried many different temperatures. But you are probably right, I don't think the higher bed temperature makes much difference.

Take your 70 as a start point and lower by 5 degrees in some test prints - if you get equally good sticking with lower temperature, it also save you energy.

Yes, sure, it's just tedious that it's all so random.

From here:  https://io3dprint.com/review-anycubic-i3-mega-ultrabase/

Ultrabase Bed
  The Anycubic i3 Mega Ultrabase is the latest version in the Anycubic i3 family. As hinted in the name, the main upgrade from the previous version is the Ultrabase bed. This is a textured coating on the Borosilicate glass bed that means you don’t need to apply any glue or tape to the bed to make your prints stick to it.
Ultrabase is similar to the popular BuildTak beds except unlike BuildTak it doesn’t wear off and the most significant benefit is that parts are exceptionally easy to remove once the bed has cooled.
The Ultrabase surface has a Moh’s hardness of over 7. This means you can safely use metal scrapers and blades to clean it without risk of it scratching!

Perhaps it was just not cleaned sufficiently from a prior print.

I'm not sure the one I have is "mega", but I clean it with isopropanol between prints.

Maybe scuff it up a little bit then.  The PEX material on my plate was scuffed up with steel wool initially. Now I use a brass sponge, (grabbed one from a 5-pack on amazon with a holder to use with my soldering iron) to maintain the surface after a print, helps get rid of any rims, etc. that a print job might put down as an initial outline around a print. Then alchohol wipe again before starting the next one.

That sounds promising, but won't it damage the coating?

You're not polishing it smooth, just lightly scuffing it up the first time. After that, it doesn't take much to get any plastic remaining from a print to clean it off.