commandline remeshing and simplifying tools

Netfabb came up in a number of suggestions that I found. Take a look at 3D Printing Under Arch Linux, which offers a number of solutions for Linux, including:

OpenSCAD
FreeCAD
Blender
NetFabb
Slic3r

Netfabb

Taking the section on Netfabb:

  netfabb Private will provide you with a fully-loaded tool-box to do all this and much more:

  fix complicated file errors
  make late design changes
  combine parts into one
  hollow out solid parts into a shell
  smooth the mesh to improve surfaces
  reduce file size

Installing it:

  netfabb is not at official repository so you must install it from AUR
  using yaourt

$ yaourt netfabb-basic
$ netfabb-basic

However, it is unclear as to whether there is a cmd line interface. It could be worth reading Problem in Netfabb Command Line execution and in particular the documentation on Automating Netfabb - although this seems to suggest that command line functionality is only available to users with Ultimate subscription and not Basic:

From Reducing Size of STL file to upload to shapeways, this post (#10) states:

  You can also decimate the model in Netfabb easily - Right click > Level of Detail > Choose something like 50%... or more or less depending on the level of detail needed.

Although, this isn't available in Basic subscription, or so says post #12.

Meshmixer

I also came across this, non-command line option.

From How to Reduce the File Size of .STL and .OBJ 3D Models

  For example, you can give the free 3D modeling program Meshmixer a try. Choose the ‘Select’ tool from the menu on the right, then double-click on your model (this will select your entire mesh). Then click on the ‘Edit…’ option and select ‘Reduce’.

  You can now reduce the polygon count using several options. The best working choice is to use the percentage tool. It will immediately tell you by how much percent your file size (and polygon count) has been reduced.

Available for Windows and OSX.

From Reducing Size of STL file to upload to shapeways, this post (#8) states:

  The meshlab tutorial is exactly what you want to do - the options described help preserve the overall geometry of the model while reducing the poly count. Start with a target of 150,000 polys and work up until the desired detail is retained, bearing in mind the printability I mentioned above.

Also, by way of Quora, How do I reduce the size of an STL file? Does it affect the CAD coordinates for 3D printing?, I also found this Meshmixer tutorial: Easy Guide on How to Repair Your .STL Files. Under the section Problem 4: File Size is too Large for 3D Printing are the following steps:

  The last problem that you may stumble upon, particularly as your
  objects get larger and their complexity increases, is that the
  resulting .stl file size is too large for your 3D printer or 3D
  printing service of choice. Third party printing services like
  i.materialise or Shapeways  have upload limits so you may have to
  change the size of your file (100 MB limit at imaterialise and 64 MB for
  Shapeways). It’s important to reduce the mesh without sacrificing the
  quality, which I should say at the outset is best done at the initial
  export from your CAD software to minimise any distortion. My number one quick
  tip is to make sure in the export settings that your saving in
  ‘Binary’ format, not ‘ASCII’ –  it’s a significantly more compact file
  format for .stl’s without losing quality). However if it’s not an
  option, Meshmixer can be really useful to quickly reduce file size and
  visualise how this will affect the quality of your surfaces.

  For this example I’m going to return to the leaf from Problem 1, which
  as a .stl file is 30.757 MB – pretty large for such a small design and
  definitely over the limit for someone’s email if I wanted to send it.
  So let’s look at how we can get this under 10 MB.

  Select the entire model by pressing Ctrl + A on your keyboard to select all.
  Go to Edit>Reduce to bring up the options to reduce the mesh. Essentially the file size of a .stl is directly related to the number
  of polygons (triangles) that make up all of the surfaces. We will use
  the Reduce tool to reduce the quantity of polygons, therefore reducing
  file size.
  The menu will give you a range of options to reduce the size of your file. The simplest is to use the default Percentage option,
  allowing you to determine the final file size you want rather than
  needing to know exactly how many triangles will be used to make up the
  file. In this case I have calculated that in order to get my original
  .stl file below 10 MB, I need a reduction of 70 % or more. As you
  adjust the values, you will get a preview of what your model will look
  like, allowing you to control how much reduction you employ before the
  model becomes too distorted and ‘pixelated.’

  Once you’re happy and have accepted the changes, you can click on the Export button or go to File>Export to save this new reduced .stl
  file. As you can see in the comparison below, there is almost no
  perceptible difference in the quality of the 30.757 MB file compared
  with the final reduced version at 9.362 MB. I have simply increased the
  size of the triangles, minimising the quantity needed to create the
  same volume. Your regular 3D printer, or even a highly accurate SLS
  printer will never even know the difference in a change like this.
  It’s only if you really go crazy with the file reduction that you
  might start to notice them in your final print (and in fact many of
  the low-poly models which are popular on Pinshape can be produced
  using this technique – start with a detailed .stl of the object you
  want, and then just keep reducing the number of triangles!).

Blender

From Reducing Size of STL file to upload to shapeways, this post (#8) states:

  Another option is to import the model into Blender, then use the Remesh or Decimate modifiers. Blender can be tough to get into initially but there are plenty of introduction tutorials on YouTube to help.

Blender does offer a Command Line Interface (CLI), see Command Line Arguments:

Usage: blender [args …] [file] [args …]

However, there doesn't appear to be an option for Remesh or Decimate. Although take a look at Is it possible to decimate or remesh via the CLI?:

  You can specify a Python script to run, see the Python Options section of the documentation you linked. In this script, you can import the model, add the modifiers, apply them and export the result.

Related - Is it possible to automatically simplify geometry in blender without losing object shape?, which has this comment:

  Is there a way to execute this modifier from command line and export the result?

which then leads to Can modifiers be computed and applied from the command line?

  You'd have to use bpy.ops.object.modifier_apply, e.g.

import bpy

for obj in bpy.context.scene.objects:
    bpy.context.scene.objects.active = obj
    count = 1
    length = len(obj.modifiers)
    while obj.modifiers:
        name = obj.modifiers[0].name
        print("%s: Applying %s (%d/%d)" % (obj, name, count, length))
        bpy.ops.object.modifier_apply(modifier=name)
        count += 1
print("All done.")

  For info on how to to run the above, see here.

Meshlab

Seeing as you are already using Meshlab, it might be worth reading Executing meshlab from commandline reduce faces of a mesh iteratively (awesomebytes/reduce_faces.py)

#!/usr/bin/env python

import sys
import os
import subprocess

# Script taken from doing the needed operation
# (Filters > Remeshing, Simplification and Reconstruction >
# Quadric Edge Collapse Decimation, with parameters:
# 0.9 percentage reduction (10%), 0.3 Quality threshold (70%)
# Target number of faces is ignored with those parameters
# conserving face normals, planar simplification and
# post-simplimfication cleaning)
# And going to Filter > Show current filter script
filter_script_mlx = """<!DOCTYPE FilterScript>
<FilterScript>
 <filter name="Quadric Edge Collapse Decimation">
  <Param type="RichInt" value="1448" name="TargetFaceNum"/>
  <Param type="RichFloat" value="0.9" name="TargetPerc"/>
  <Param type="RichFloat" value="0.3" name="QualityThr"/>
  <Param type="RichBool" value="false" name="PreserveBoundary"/>
  <Param type="RichFloat" value="1" name="BoundaryWeight"/>
  <Param type="RichBool" value="true" name="PreserveNormal"/>
  <Param type="RichBool" value="false" name="PreserveTopology"/>
  <Param type="RichBool" value="false" name="OptimalPlacement"/>
  <Param type="RichBool" value="true" name="PlanarQuadric"/>
  <Param type="RichBool" value="false" name="QualityWeight"/>
  <Param type="RichBool" value="true" name="AutoClean"/>
  <Param type="RichBool" value="false" name="Selected"/>
 </filter>
</FilterScript>
"""

def create_tmp_filter_file(filename='filter_file_tmp.mlx'):
    with open('/tmp/' + filename, 'w') as f:
        f.write(filter_script_mlx)
    return '/tmp/' + filename

def reduce_faces(in_file, out_file,
                 filter_script_path=create_tmp_filter_file()):
    # Add input mesh
    command = "meshlabserver -i " + in_file
    # Add the filter script
    command += " -s " + filter_script_path
    # Add the output filename and output flags
    command += " -o " + out_file + " -om vn fn"
    # Execute command
    print "Going to execute: " + command
    output = subprocess.check_output(command, shell=True)
    last_line = output.splitlines()[-1]
    print
    print "Done:"
    print in_file + " > " + out_file + ": " + last_line

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print "Usage:"
        print sys.argv[0] + " /path/to/input_mesh num_iterations"
        print "For example, reduce 10 times:"
        print sys.argv[0] + " /home/myuser/mymesh.dae 10"
        exit(0)

    in_mesh = sys.argv[1]
    filename = in_mesh.split('/')[-1]
    num_iterations = int(sys.argv[2])

    folder_name = filename.replace('.', '_')
    tmp_folder_name = '/tmp/' + folder_name + '_meshes/'

    print "Input mesh: " + in_mesh + " (filename: " + filename + ")"
    print "Num iterations: " + str(num_iterations)
    print "Output folder: " + tmp_folder_name
    try:
        os.mkdir(tmp_folder_name)
    except OSError as e:
        print >> sys.stderr, "Exception creating folder for meshes: " + str(e)
        exit(0)
    for it in range(1, num_iterations):
        if it == 1:
            out_mesh = tmp_folder_name + folder_name + "_it" + str(it) + ".dae"
            reduce_faces(in_mesh, out_mesh)
        else:
            out_mesh = tmp_folder_name + folder_name + "_it" + str(it) + ".dae"
            reduce_faces(last_out_mesh, out_mesh)
        last_out_mesh = out_mesh

    print
print "Done reducing, find the files at: " + tmp_folder_name

Also

  here are some updates for python 3.6.2: https://gist.github.com/tylerlindell/7435ca2261e7c404ccc1241f18e483aa


"configuration files" issue when trying to run Ultimaker Cura on RPI 4

The regular version of Cura has system requirements that the Raspberry Pi cannot meet, including the GPU required to run it.
However, it looks like you can try an experimental version of Cura here.


How do I calibrate temperature control in a Repetier firmware?

When applying a voltage directly to the heater element, it should heat up very fast. You could measure the resistance of the heater element. A 12 V heater element of 40 Watt should have a resistance of about 3.6 Ω; you could test that with a multitester. If the resistance is a lot higher, the heater cartridge could be a 24 V heater element. Operating such element on 12 V would imply that the power output would only be 10 W. Heating of the hotend is much slower at low power output.

Incorrect PID settings can indeed prevent the heater to heat up fast enough to trigger errors during tuning. The trick is to heat up the element a little prior to performing the tuning, or upload new PID settings to the firmware prior to tuning.

PID settings can be set not only by uploading a modified firmware version (configuration file), but also by sending commands to the printer over serial terminal connection (e.g. Repetier host, OctoPrint, Pronterface, etc.) or stored in a G-code file and executing it ("printing"). The G-code command to set the PID values is M301. The relevant parameters are:

  Hnnn heater number Pnnn proportional (Kp) Innn integral (Ki) Dnnn
  derivative (Kd)


3D printed mold techniques for long and short term usage

Yes, this is very broad. That said...

For high detail you want SLA. i.e. jewelry. If you just want a prototype of a mold, you can do a standard FDM style printer (95% of printers are FDM, and that number is a guess)

Really, you should be asking what material you need for your mold, but you can open a second question for that.

Do more research on injection molding. There is a great deal of information on how molds are made, i.e. How It's Made Plastic injection molds.

You will see there is a vast difference between a plastic, or silicon, mold and an injection molding machine. You are thinking that injection molding as a single mold, when it is really it is a system composing of several pieces of heavy duty machinery that can pump out hundreds of items a day automatically. However, it usually starts at 20k USD for the tooling for injection molding. Your costs could be a fraction of that or could be several times that. This is just a generality. So, if you are making 100 units you won't want to go down that route. For 10,000 units, on the other hand, it would be acceptable.


I've now worked out the reason for the plastic 'running' on the second layer. It is because of the way that I prepared the G-Code file, using the option in  Slic3r which lets you alter the layer height for certain layers in the print. The problem with this appears to be that there are other settings which are not altered at the same time for the thicker layers. So the first half of the file ends up printed using the settings that work for a 0.05 mm layer height, but with the layer height set to 0.2 mm.

I have prepared a new file by rendering two G-Code files, one using the Prusa settings for a 0.2 mm layer height, and the other using a 0.05 mm layer height. I then merged these manually by looking for the layer change at 2.8 mm in both files and appending the end of the 0.05 mm file to the start of the 0.2 mm file. (I found the layer changes by using Slic3r's custom G-Code option, and adding custom comments into the G-Code which included the layer number and height on every layer change). Then I inserted an M600 'Change filament' instruction at a height of 3.05 mm, where the writing begins.

When I print this file, the problem with the plastic running together on the second layer disappears.


If the question is "has anyone seen..." my answer is yes. It's not precisely what you show in the drawings, but close enough and for the same purpose.

In the case of a Robo3D R1+ printer, replacing the stock "hexagon" hot end with an E3Dv6 hot end provides for a piece of PTFE tubing inserted into the heat sink. The recommendation from the denizens of the 'net is to slice the top of the tubing in the shape you have in the drawing and to have the tubing extend sufficiently to reach the junction of the hob gear and pinch roller. This took some doing, but I was able to get an appropriate taper to the tubing end that does not contact the moving parts.

As the fed-in filament exits the assembly, the small gap between the wheels and the tubing gives the filament nowhere else to go but into the heat sink and hot end.

As your design reference indicates a 3D printed part, it might be practical to engineer into that segment a larger hole to take the PTFE tubing and then size the length after the wheels are in place.

The above image shows the added PTFE tubing surrounding the filament. Even though the slightly diagonal cut appears somewhat as a cone, it is not. The edges are parallel to the rollers/hob gear. The lower portion has been omitted for ease of drawing, but would extend into a hole drilled or printed in the block holding the assembly, based on the thingiverse link provided.


Why did my power supply fuse blew out on my Anet A8?

You need to closely look at how to connect to the output connectors. In this case it appears that you have wired it correctly according to the stamped in markings above the connectors. You have chosen not to connect the earth, this is strongly advised.

Did you check if the power switch matches the voltage of your country? If you are in Europe the switch should be set to 230 V, not 115 V (which is used in America).

E.g. for the following power supply you see such a switch on the side:

If a PSU is connected without load and works, and short circuits when externals are connected there are a few options:

there is a short in the connected printer board,
the load that the board takes is too large for the PSU,
the PSU cannot deliver the load,
the PSU was faulty to begin with.


How does G-code for belt bed printers work?

Belt printers use existing 3d printer hardware, including controllers and steppers. The Z axis is tilted at 45 degrees (usually). So to answer the first part of your question: yes, you can use G-Code to control the printer, just as you would with an upright printer.
I don't know a good resource that describes everything, but I will try my best here: it's not enough to just skew everything. Basically, you need to rotate all you models at 45 degrees along the x axis, using an imaginary 45 degree plane as the "build plate". Then, the model needs to be skewed, so that everything that would otherwise be on the build plate is now at y=0. Z needs to be scaled by sqrt(2) to make up for the diagonal belt. The result should be a working G-Code.
But if that's not enough, the issues are in the details. Supports will not work as expected at all. Supports in positive y need to start at 0 degrees, whereas in negative y, you need no support at all. Rafts need to be placed quite counterintuitively on zero y instead of zero x. And giving the build plate/belt a different extrusion temperature is also difficult, because every build plane touches the belt at some point unless it is a bridge. Oh, yeah, and bridges work perpendicular to the build plate instead of parallel to it.
So, yeah, it's not easy at all to generate good G-Code for a belt printer.


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.


At which point does a delta 3d printer change the G-code in order to work in its non-cartesian design?

The short answer is that the handling of the non-cartesian design is done by the motion-control firmware running on the Arduino.

The long answer:

I don't believe GRBL supports non-cartesian designs, and it is not commonly used for printers. It is more often used for mills, routers, or laser machines. 3D printers will typically use a firmware such as Marlin, which supports several printer designs, including Delta machines.

At no point is the g-code itself changed. The motion control firmware running on the Arduino or other controller interprets the g-code and determines which way and when to step each motor to accomplish the motion.

With a simple cartesian machine, commands for the X-axis only relate to the X-axis motor, but for a non-cartesian machine the axis and motors have complex relationships. The firmware must be programmed and configured to control the motors correctly.

The g-code itself is never passed to the drivers. The commands to the driver are simple electrical signals to "enable" (to energize the motor power - even to just hold position), "direction" (which way to rotate the motor shaft), and "step" (which causes the motor to rotate by one step in the selected direction).


Can I use a 0 mm top layer thickness in Ultimaker Cura to create an open box?

Yes that will work in Ultimaker Cura exactly as you say.

So if you have a solid model of a cube, you select wall thickness, bottom thickness, 0 % infill, and no top layers or top layer size of 0 mm. You will then end up with a box without a top layer, but with walls reaching up to the height of your model.


Now, all of that aside, I guess, in theory, it WOULD be possible for the printer to use these 16 measurements to dynamically ADJUST the height DURING THE PRINT based on where the head is SUPPOSED to be versus where the ACTUAL height of that spot actually IS. However, I cannot find anything that claims this is what happens

This is actually what happens. This behavior is clearly specified in the firmware documentation:

Mesh leveling measures the height of the bed at several points to generate a 3D mesh representing bed imperfections. With compensation enabled, the nozzle follows the bed contours by dynamically adjusting the Z position (using bilinear interpolation between the measured points). The nozzle follows the contours of the bed more accurately with more mesh points and/or finer segmentation of moves.


Does the amount of figures on the board matter?

This would depend on what type of printer you have and to some extent, the design of the printer.

Cartesian (i3 style) - Should not have any issues printing a full bed.  I have seen designs and variants of printers where the designer did not make the belts parallel to the travel axis (placing the mounting point on the carriage higher/lower than where it come off the pulley/idler) so as you move closer to the pulley/idler the angle starts to change dramatically.  While not extreme, this will introduce error in that axis.

H-Bot/CoreXY - Should not have any issues with a full bed as nothing is changing depending on hotend location.  I know there has been some concern about keeping the gantry square on H-Bot designs due to the way the motors pull when moving in certain directions but I believe that applies to the entire print area.  Both designs will have issues if belt travel is not parallel to axis travel as stated in the cartesian section.

Delta (Kossel/Rostock) - Have a varying axis resolution depending on the location of the hotend.  As the hotend gets close to an individual tower, the carriage on that tower has to move very little to move the hotend which depending on your pulley selection could affect your print resolution.  The sweet spot for a delta in terms of speed/resolution is the center of the bed.  The center is not the highest resolution but is the largest area where the resolution is relatively stable.  I've tried to summarize all that I could from here, but I've included the link if you wanted to read more about it or see the graphs.

Finally, as Tom covered. All three above will have issues with the entire bed depending on your hotend calibration and how well your printer was built. Delta's are fussy about build quality but you will solve most issues on a Delta if you level the bed before using any kind of bed leveling/probing.


How to print TPU material with 3D printer

Elastomers do much better on direct-drive heads (pulled to the head by the motor) than on Bowden designs (where the material is pushed to the head by a motor). This is because the flexible TPU or TPE can bend in the guide tube, causing lag during advance/retract changes, and sometimes even bind up during delivery.

Look for equipment which explicitly states that it is compatible with, and designed for, flexible filaments.


Adequate default filament diameter for Anycubic Mega X

Reading all 49 pages of the manual was fruitless. I'm astonished that there is no reference to the filament diameter used in this printer.
From 3dJake's web site comes a confirmation that the printer uses 1.75 mm filament.
It's not a matter of changing a nozzle to use 2.85 mm filament, as the entire filament path is based, in this printer, on the 1.75 mm specification.
To find 3Djake's site, I used "anycubic mega x filament diameter" as the search terms. Many other links appeared, confirming the 1.75 mm filament size.


From what I've read about Mod Podge, it is an adhesive with a vinyl acetate base. As such it is similar to both PVA (used for wash-away support) and ordinary white glue. One of the more common references to the product refers to it not being water proof, although the outdoor version of the product presents as being water-resistant.

As part of the research for this answer, I found references to overly-thick coats becoming milky. This follows a reference to applying thin multiple coats and allowing proper cure time between coats. That proper cure time is listed as 28 days.

Another set of posts suggest to cure the MP more rapidly than 28 days, one can heat the item in an oven to 175°F (80°C) which should not cause the PLA to melt, but may allow for sagging of unsupported parts. Testing is recommended.

MP is an adhesive, is known to stick to non-porous surfaces and would be no more harmful than glue stick for a PLA (or ABS) model.

Durability is uncertain. If you intend to paint the item after sealing/smoothing, you'll gain durability and water resistance.


Does Cura have an algorithm for any infill percentage or does it just have specific patterns?

I fear I'm going to deny your question.  The infil percentage and the infil pattern are two orthogonal properties, both of which contribute to the strength, density, mass, and print time of an object.   Since there's no way for an algo to "know" what your desired outcome is, this can't be done.

Note - I used 'orthogonal' in the Hilbert sense, meaning neither property is a function of the other.


This appears to be the result of your hot end (nozzle) temperature being slightly too high.

I'd recommend lowering your nozzle temperature by a few degrees and retrying the print. If the quality improves you're good. If it doesn't improve significantly try lowering a few degrees more.

If you lower the nozzle temperature to the point that you start having other adverse effects, try going back to the lowest temperature that works and check your infill and shell settings. The top shell of your part may be too thin given the span (top surface, maximum travel length). i.e. the strands being printed on the top of your part are sagging between your infil hex's, by thickening this part in the slicer settings the next layer on the roof won't sag as much as the previous.

By increasing your number of shells or shell thickness (or roof thickness, i'm not sure on the exact terminology) you could effectively hide the effect you're seeing by thickening this section of your part.

Best guess though is nozzle is a bit too hot.


Aluminium cube - fan and hotend mount - is it worth it?

I think its only advantage is that it serves to move money from the folks who buy it to the folks that sell it, and that's an advantage purely for the folks that sell it.

"Additional heatsink surface area" is quite doubtful - it would have poor coupling to the actual heatsink. If the actual heatsink is correctly designed, there's no need for additional area, anyway. This design clearly does limit airflow to the top and bottom fins - the bottom one, in particular, is not a good place to limit airflow for best function, and yet it's severely occluded by the design of this block.

Save your money.

Edit - I think the plastic one shown is also less than ideal - the close coupling to the edges of the heatsink reduces the effectiveness of the heatsink, which would otherwise be dumping heat into the airflow past those edges. A better design (IMHO, gut engineering) would be spaced off the ends/edges of the fins about as much as the space between fins, not touching them. Axial fans perform poorly with backpressure, and that would also reduce backpressure.


Issue crashing Z-axis when I home X or Y axes

Found the issue with help here! My Z-axis homing height was not set - I set it to 4 mm but found that the Z movement is way off (actual Z movement is more like 15 cm!).
I will update to the latest firmware as suggested.


Extruder doesn't retract on inner wall lines thereby causing stringing

Cura has a setting called Combing that is enabled by default. This stops the printer from retracting if the travel is contained within the walls. It does this to speed up the print but you get oozing during the travel since the plastic is still in the melt zone. You can change this setting to no skin which will stop it from combing on the skin layers or turn it of completely.


There's no appreciable difference. Just use the filament that fits your particular printer.

If you don't yet have a printer, then I'd get one that uses 1.75 mm filament:

1.75 mm is increasingly becoming the "standard", thus being easier to get. Some filaments are not available as 3 mm.
1.75 mm filament allows for finer control, because feeding in 1 mm of filament corresponds to less plastic extruded.
1.75 mm filament requires less force to extrude. Compressing 1.75 mm down to 0.3 mm takes less force than doing the same to 3 mm filament.

However, the advantages are fairly minor. I don't see any reason to replace a functioning 3 mm extruder with a 1.75 mm one (yet).


How do I give 3D-printed parts in PLA a shiny smooth finish?

PLA parts can be finished with a coat of epoxy like XTC-3D from Smooth-On. This will smooth out the part and give it a pretty nice shine.

I've also had a fair amount of success sanding prints, giving them a coat of automotive filler primer, and using glossy spray paint.

You can also get great results with an acetone vapor finish if you're willing to switch to ABS. Though that will require a heated bed and can be a bit more finicky to work with than PLA.


Nomenclature help

A Layer is everything that is printed between the print head moving upwards.

Layer height is how tall each line is. It is in Quality.

A Wall is made up from lines put down next to each other.

line width is how thick a 1-perimeter-strong wall is in the XY-plane. It should never be smaller than the Nozzle Diameter. It is in Quality.

Nozzle Diameter is what is the physical diameter of your nozzle. It is located in the printer configuration.
A Bridge is printing horizontal layers that connect to walls at the sides but otherwise not connected to the printbed or print.

Ultimaker Cura does ignore too thin walls

Your walls are 0.28 mm thick and your nozzle is most likely 0.4 mm thick. That can't be printed at all, in fact, you are way too thin to be printed: a printer should never print any object that is thinner than its nozzle as that is a perfect way to generate clogs.

Atop that, slicers ignore also what is thinner or exactly as thin as the line width. If the line width is 0.4 mm, and the wall is 0.4 mm, it gets ignored. If the wall is 0.45 mm, it is not. This can be remedied by setting the option print thin walls, but you still need to have one line nozzle-diameter as minimum line width - actually it is common to go about 10% larger for better extrusion.

Solution

Strengthen the walls to one line width (usually 0.4 mm) in your CAD-design and activate print thin walls under Shell.


I think the easiest thing is to use the Cura application together with CuraEngine.
If your printer is not supported, you'll need to add it manually by adding a JSON here: https://github.com/Ultimaker/Cura/tree/master/resources/machines
But when you are done you can easily choose all the features you want. For example: generating supports, printing order when printing multiple models, etc.
Cura and CuraEngine are developed at the same time, so you can expect that all features supported by the engine are accessible by the UI.


How to control 4 thermistors in a heated bed?

You can use the Klipper firmware which accepts an arbitrary number of heaters.

Then you can write a Klipper macro which takes one input and applies it to each heated bed (or not, as you prefer).

With Klipper you can also add another Arduino and connect it to klipper as well, in case you don't have enough pins on your board: klipper is not limited to controlling one single board per printer.

Check the docs.


Your calibration shape depends on what you want to calibrate on. Among the most popular:

Benchy as a general "overall" test.
Lattice Cubes for retraction/stringing and overall quality.
Two pillars to test for stringing and temperature/cooling control.
Spikes for retraction, stringing and temperature/cooling control.
Bridges for cooling control.
Cubes for sizing. They also allow seeing if the printer is skewed in X or Y.
Circles, crosshairs, and squares of just a couple layers high to determine the correct center of the print area and measure sizing.
Cylinders in each other to check the achievable resolution and clearance.
Overhang tests to test just overhangs.
Temperature towers for temperature and overhang.
Impact1 & Bend & Tension test pieces for filament properties - if you have the setups needed.

1 - I couldn't find a proper model for an ISO 148-1 Charpy pendulum impact test in thingieverse


Can a heatbed PCB (Prusa Mk2) be straightened out?

Electrical engineer here.  There is nothing odd about putting a PCB in an oven.  Any surface mount PCB is assembled using a reflow oven which heats all the components, as well as the PCB itself, several degrees for quite some time up to the 'soak' temperature, which is 150 °C.

After that, the PCB (and components, still not soldered but held down with solder paste) are heated up to the reflow temperature, which for lead-free processes (i.e., all of them) is 245 °C.  After this point, they are held at that temperature for 60-90 seconds to allow the solder to completely reflow.  Note, this is not time spent with the oven temperature that hot - this is time the entire PCB, which edge to edge has reached 245 °C, spends at that temperature.

There is absolutely nothing wrong with, nor anything odd about putting a PCB in an oven or otherwise getting it hotter than it's glass transition temperature.  Doing so is a key part of their commercial assembly into electronics and has already been done to every PCB you own.

Please ignore the 'accepted' answer - it's incorrect.

PCBs are usually made out of glass epoxy composite (FR4) with a glass transition temperature of 140°C.  There are high heat varieties with a glass transition temperature of 170°C.  I do not know which variety the Prusa MK2/MK2S uses specifically, but FR4 doesn't have a 'sharp' glass transition anyway, so you want to err on the side of hot regardless of the specific type.  Get it nice and cozy at at 190-200 °C, and increase the temperature until it unwarps.   The solder's liquidus is about 220°C, so you should try to keep 20 °C shy of this just because kitchen oven thermostats are not to be trusted.

I own a MK2S, and have personally heated my heat bed up to above the glass transition temperature of PEI (don't ask) which is 217°C, and this was not a problem (well, except for the PEI but again, don't ask).  It didn't suffer any ill effects, nor did I expect it too.  I'm printing on it right now, as I type this.  It's perfectly fine to heat it up that hot.  That was the entire reason FR laminate was even made - to be rigid and to tolerate being hot.  Solder ain't gonna melt itself.

Note, however, you will need to remove the PEI/Ultem sheet as well as the adhesive before you do this.  Prusa has instructions on how, look under replacing the PEI print surface.

Now, as for the actual procedure, the pcb isn't going to magically just become flat.  You have to force it to flatness. Flatten it into submission. It will only be as flat as the hopefully flat surface it is resting on.  And, given the gradual transition of the material, it isn't going to exactly become super pliable even when a good deal past its glass transition temperature.

What you ideally want is two plates of aluminum large enough to sandwich it between. Or steel, or any metal.  They need to be thick enough to not flex so they are very flat.  A pizza stone, if you can find one that is flat, or a slab of granite also works.  I know none of these are exactly 'just laying around the house' type objects, but really any flat surface that will tolerate the heat that you can rest the pcb on is acceptable.  (Kids - ask your parents first)

The only problem is it will likely not unwarp itself under its own weight.  You'll need to put a large flat thing on top of it too, and either have it be heavy, or add heavy things on top of your large flat thing.  You want to make a heat bed sandwich.  Also, it needs to be shielded from the oven heating elements (be they electric or gas), as these will radiate heat a lot hotter than the oven temperature when they turn on.  Don't worry - aluminum foil is enough to shield anything from the heat, but again, you should have something very flat and substantial on top.

Oh, and remove the screw hole sockets from the PCB.  They just need a hex key and some pliers to unscrew.  Don't lose the lock washers.

Anyway, the above procedure, while definitely a pain, will restore (or if it was always warped, imbue for the first time) flatness as good as the flat things it is sandwiched between.

The flatness of kings.

This isn't exactly unknown either.  People do it.  It works.


I've encountered this on my Replicator Dual in the past. I was only using MakerBot branded ABS filament, so it wasn't a quality issue for me.

What I found was that the delrin plunger design that "helps" keep the filament in contact with the drive gear wasn't actually helping. So, I installed the newer assemblies that use a spinning bearing to contact with the filament.

Install (or keep installed) a spring loaded extruder assembly.
When feeding filament, loosen the spring and gradually tighten until the filament begins feeding on its own.
Try to stay close to the recommended print temperatures for the material. ABS is typically somewhere around 225C, but it depends on the supplier.
Ensure your filament is stored in a dry place. This is way more of an issue for PLA, but it doesn't hurt to keep your material protected.
If it continues, perhaps swap out the drive gear itself. If you've dropped your motor or somehow a burr has developed on any of the teeth, naturally the burr will cut away the material. Gears are very temperamental and should be considered a consumable.


G-code commands gets multiplied by random number

I believe that everything after the "*" is a comment.  From the random variation, I speculate that the comments for Octoprint are a check code.  For other host programs, it is a sequence number.

@oscar linked to a previous answer in a comment which shows that it is a checksum.  I will need to check the next time I run Repetier Host, but that seemed to be a sequence number.  Please see Oscar's comment (and upvote it).


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.


Can you put PLA parts in your car (in the sun)?

No, PLA cannot be used in cars standing in the sun. Temperatures can locally get over 50 °C (122 °F).

I have printed sun visor hinge pins from PLA for a car (not exposed to direct sunlight either), but after one day in the sun (it usually doesn't get over 29 °C or about 85 ˚F here too) the pin deformed (only printed it for form fitting). The actual pin was eventually printed in PETG, and even with PETG the part deformed a little when it got really hot in the car.

Your part might not get that hot as it is lower in the car, but you could best print parts in Nylon (Polyamide, PA), ABS or any other high temperature resistant Co-Polymer (e.g. made from Amphora HT5300), there are lots to choose from nowadays.

If it is a non load bearing component that is not stressed (e.g. a cover or a bushing) it could be printed in PLA, but I would not take a change and would print it directly in a more temperature resistant material.

Downloading some of the technical data sheets from various filaments will give you for PLA:

  Not suitable for long term outdoor usage or applications where the
  printed part is exposed to temperatures higher than 50 °C (122 °F).

similar for Nylon:

  Not suitable for applications where the printed part is exposed to
  temperatures higher than 80 °C (176 °F).

To complete the overview, generally, materials should not be exposed prolonged periods of time above (give or take):

70 °C (158 °F) for basic Co-Polymers
85 °C (185 °F) for ABS
100 °C (212 °F) for enhanced Co-Polymers
105 °C (221 °F) for Polypropylene (PP)
110 °C (230 °F) for Polycarbonate (PC)


Do 3D printers really reach 50 micron (0.05 mm) accuracy?

There's not a simple answer to this question, or if there is, it's "no". However the situation is a lot more complicated. When printer specs cite accuracy like this, they're usually basing the claim on the nominal size of the smallest movements on each axis by one "microstep" of the stepper motors. There's a great article on Hackaday explaining the how this affects accuracy: How Accurate is Microstepping Really.

At the mechanical positioning level - putting the print head where it needs to be to extrude the material with the desired accuracy - you have at least these factors limiting your accuracy:

Microsteps are generally spaced roughly monotonically between whole steps, but do not necessarily divide the whole step into even portions. How well they do is a matter of the stepper drivers your printer's controller board uses. Generally, microsteps are 1/16 of a step (although there are drivers with 1/8, 1/32, or even 1/256, maybe others too), so if you see a rated accuracy of 0.05 mm, a whole step, which might be the minimum you can get reliable accuracy from, is likely 0.8 mm.
Stepper motors are deflected slightly - up to 2 whole steps but less than one step is more likely if they're not overloaded - under load. So are belts. How much this affects you depends on the design of the printer and how much mass each axis is moving. Direct drive extruders are much worse in this regard. Delta printers are probably best in it.

These can be mitigated somewhat, with tradeoffs, by using stepper motors with more steps per rotation, better stepper driver chips, reduction with gears, etc.

On top of that, you also have extrusion and properties of the print material limiting your accuracy:

The extruder motor is subject to the same accuracy issues as the positioning ones. If you extrude too much or too little material anywhere, you'll necessarily have accuracy issues. You can compute them based on the cross-sectional area of filament, size of extruder gear, extruder motor step and microstep size, etc.
If the filament diameter is not perfectly consistent, you'll also extrude too much or too little material.
If material is not cooled or kept warm appropriately as it's extruded (this varies by material), it will sag, warp, or curl, ending up in a different place from where you wanted it.
The more you vary the ratio between nozzle/extrusion width and layer height from an ideal ratio, the more the shape of the extruded material paths will differ from the model you're trying to print. With thick layers especially they'll become rounded rather than near-flat along the walls.

In theory, a lot of these issues probably could be mitigated a lot better than they are now just by better slicing - the logic that happens on a computer to convert the original 3D model into instructions for where to extrude material.

With all that said, you can get pretty amazing accuracy still, especially with a good or well-tuned so-so printer. On my cheap Ender 3, after dealing with some issues now and then that made glaringly obvious problems, I can get dimensional accuracy within 0.1 mm in the X and Y directions, at least for some models. So I think it's very plausible that a better, or better-tuned, printer could get 0.05 mm accuracy.


Is there a lubricant that can be used for linear bearings, bronze sinter bushings and threaded rods alike?

A mid-weight PTFE grease like the popular Superlube will work in all the cases you mention (bearings, screws, and sintered bushings). 3D printer service conditions are quite light-duty as far as lubricants are concerned. You really just need to keep everything a little bit "wet" with oil or grease and performance will be adequate.

The main downside to using grease with sintered bushings is that they will likely stop being "self-lubricating" after the first exposure. The grease tends to clog the pores that allow the sintered bushings' factory oil impregnation to maintain a nice oil film on the sliding surfaces. So the bushings will forever-after require regular re-greasing, just like the ball bearings and threaded rod.

In comparison, a light machine oil like 3-in-one will maintain the sintered bushings' self-lubricating properties, but if used in ball bearings and screws will require very frequent replenishment. And that is certainly an option -- oil DOES work on bearings and screws -- but odds are good that you'll eventually over-oil the bearings, get drips on the build plate, and bang your head against a wall trying to figure out why your prints won't stick all of a sudden. Grease doesn't need to be applied as often, and it tends to stay where you put it rather than dripping. So grease is generally preferred to oil if you have to pick just one lubricant.

Again, the most important thing is to keep sliding and rolling surfaces wet with something. You'll just have various maintenance trade-offs with different options.


Slic3er throws "AMF parsing requires XML::SAX"

The slic3r software is written in Perl, a programming language that can be expanded with local libraries.  XML::SAX is one such library.  CPAN is a tool which can be used to retrieve libraries from the CPAN repository (Comprehensive Perl Archive Network, I believe).

I use CPAN is something I do infrequently, so I would be doing a disservice by trying to list the steps here.  Better answers are, no doubt, on stackexchange.  Nevertheless, these may help:

From your command line, start Perl running the CPAN module, and invoke the CPAN shell (your input in bold):

> perl -MCPAN -e shell
cpan> install XML::SAX
cpan> ... several lines of output ...
Done!
XML::SAX is up to date (0.99).
cpan> quit
>

With that done, try using slic3r again.


By just changing powder: No.
Changing the powder, the laser and the chamber, maybe you can get something, but it's not recommended.
DMLS machines use a sealed chamber with a flow of Argon, Nitrogen, or other gas to prevent oxidation of metal powder (and avoid fire or explosions).
Laser power for metal needs to be of higher power than that used por polymer laser sintering (SLS, SLM, LS, etc).
BTW. DMLS also need a metallic build plate to dissipate heat.


How to reduce +/- 5 degree temp swings of hotend (after PID tuning)

If you are sure that PID is enabled (and not using bang-bang heating, as this gives a very similar heating profile) and did not fix the fluctuations, the best guess for this phenomenon is that the printer board has incorrect capacitors installed on the printer board. This is not very uncommon and can be found on the internet. You should at least show the graph to the vendor and ask for support.

If incorrect or faulty capacitors are the cause it requires desoldering, and resoldering new ones. If this is out of your comfort zone, it is better to steer your communication with the vendor to replacing the board.


I can't comment for the specific sensor you have, but in general, yes, if you plug something in backwards you have a chance of breaking it - and whatever you plug it into - permanently.

You might have gotten lucky, though - but short of testing the sensor to see whether it will work there is no way to find out.

Consider that these sensors are not made to be plugged directly into endstop connectors. The endstop connectors only provide 5V, whereas these sensors often require at least 6V to operate. Some people get lucky and have theirs work on only 5V, but it's not guaranteed to work. This might also be the cause why your sensor is not working, even if it's not broken. There are some special sensors out there that are rated to work at 5V, but you should check the operating voltage of your specific sensor.

If your sensor requires more than 5V to operate, then you should also be aware that the signal pin might output more than 5V, in which case, it should not be connected directly to the signal pin on the board (since anything over 5V might damage the board).

Finally, consider the possibility that neither orientation (backwards or not) is correct. Perhaps the order of the wires in the sensor's connector is different from that of the main board. Make sure that the pinout of your sensor matches the pinout of the connector on your board. These sensors usually have a slightly strange color coding where black is signal, blue is ground and brown is power.


I think @Trish answered your question more specifically, but an alternate route (that I think its simpler assuming you don't mind the learning curve) is using Blender.
Rather than creating an svg in a different software and having to go from something like photoshop to inkscape to tinkercad to your printer software...  Blender could do most of that in one step, and its free.
In Blender, add text:

Hit tab to go into "Edit" mode and in edit mode you can simply backspace and type whatever you want.

In the "Font" menu, you can choose from any font on your computer.

And you can make it "3D" by extruding it:

When it looks good and you're ready to print it, make sure to convert it to a mesh, then export as .stl for your printing software. (Cura/Slic3r/etc.)


What can cause the center of the bed to be higher than the sides?

As the Anycubic Chiron has an automated bed leveling, you can just calibrate that differences in height in the printer's firmware. Here is the official tutorial made by Anycubic :)


extruder clicking means you're getting backed up, grinding.

Make the hotend hotter so you can melt filament 3X faster than expected; most materials have quite a range; aim high.
Slow down the cooling fan; a lot of them can cool the hotend.
You have a silicone boot on the nozzle? that will help some.
Use a larger diameter nozzle to reduce backpressure and allow thicker layers.
Try cranking the feed rate

Lastly, consider that you simply might not get acceptable results pushing speed THAT much.


To reduce the noise, you could replace the metal linear bearings for plastic ones. This reduces the produced noise considerably from experience. Also, put the printer on damping rubber feet.

Enclosing the printer should be done with care, completely boxing the printer up could lead to increased temperatures of your board electronics, steppers and cold end cooling. Make sure to vent some air. How you box up does not matter, although double glass window panes does seem a bit of an expensive solution.


Hemispherical Bowl : how is it possible?

There are several factors playing together. For example orientation, printer & slicer settings and more.
Reminder
First of all, not all overhangs of greater than 45° need support. Many printers manage up to 60°, even 70° is not unheard of - with the right settings. Pretty much all printers manage tiny 90° overhangs.
U-Bowls (open side up)
Let's look at bowls that shape like a U - the dome is at the bottom. With a flat contact surface only the next areas need support, and with PVA or other easily removable support structures on the rise, it is no problem to use support and leave no trace. With support, there is no sagging, so the bowl gets its "perfect" look even though there are overhangs and support used.
n-bowls (open side down)
The other way around - dome on top - is probably the more "smooth" one, using different tricks to get it set.
The outer wall now sits on the infill like the inner we had before, perfect, but we used that for the inner wall before. But what about the inner one?! Well, we need no support for the sides till we reach, let's say 55° angle. Can we go further without support? Yes... if we are tricksy!

Print the walls from the center to the outer wall, as then the inner walls stand on the lower layer and can hold the new, neighboring, floating wall
Have more than 2 walls! Why? Well, simple math: You go up by $z$, and out by $(n-1)\times d$ where $n$ is the number of walls. We have a maximum overhang angle of $\tan^{-1}(z^{-2}\times((n-0.5)\times d)^2)$ before our walls don't stand on the wall below by more than a half wall. As one can see, $z$ and $d$ are fixed in that calculation while a higher factor $n$ directly increases the value of the angle. As long as there is support for the wall (like the neighboring, already printed wall), you get some kind of dome.
Print thinner layers. If you decrease $z$, you also increase the maximum angle that has one wall standing on half a supporting wall.
Print slow. Printing slower allows the material to cool and harden while still somewhat held up by the cohesion to the filament that comes from the nozzle. This can support a higher overhang angle.
Cooling. Together with slow printing, you might want to use an extra strong cooling solution to speed up the solidification. Aim well.
Print narrow1 domes. Why is it much easier to print more narrow domes than wider domes? Part of the answer is how much geometry does not need to be supported by itself, another part is the weight of the full structure: A narrow dome spans a smaller distance. This means it has less area of a high angle to the last layer, and the overhangs, in general, are shorter. This can result in better printing.

1 What counts as narrow is printer and filament dependent. It is no problem to print small spherical hollows in a print if they are just small enough as the overhang then is just short enough so it can carry itself. At some point it gets too much though.


The part printed correctly except few layers

This looks like either the nozzle had been clogged for some layers and it resolved itself or the g-code contained incorrect instructions.

I suggest altering your print settings slightly and reslicing, then just printing it again. To get more accuracy on the prints, I suggest a line width of 0.45 mm.


Trouble uploading Skynet3D to my Anet A8 via Arduino program

Skynet3D was a very old fork from Marlin firmware, all functionality (more specifically for the odd LCD screens used by Anet) have been merged into Marlin firmware. Just get the latest version of Marlin. The current and final release of branch 1.1.x is 1.1.9 further development will be done in 2.0.x. Version 1.1.9 works perfectly fine for the Anet A8.

These error messages are displayed when you have either selected the wrong COM port or wrong Arduino board or have faulty or no drivers installed.


Repeatedly Clogged Printrbot Simple Extruder

I had a similar issue on my Printrbot Simple Metal. I believe my problem was initially caused by clogged nozzle which I replaced, however the jamming persisted. I can't say for sure that it was acting exactly as you describe but I think it may have been similar. I noticed that the little red insulating sleeve was pushed up higher than it was when I got it from Printrbot. When I lowered this my problem seemed to go away.


Printing objects with holes using M3D Printer

Have you tried letting it print a few more layers? It is very common that printers use the first few layers to create a raft, which will make the model adhere better to the bed.

I believe this illustration from Simplify3D displays this well:


PETG filament doesn't stick reliably to fake Buildtak surface

I have printed kilometers of PETG and found the sweet-spot for my brand to be 240 °C for the hotend and 70 °C for the build plate (for my Ultimaker 3 that is, the extruder temp is 5 °C higher for my home build HyperCube Evolution). The reason for the 70 °C is that the glass temperature of PETG is around 70 °C. The PETG is flexible at that temperature such that there are no stresses because of shrinkage causing the PETG to keep attached to the heat bed surface (aluminium, glass, Buildtak, etc.). A little PVA based glue (stick) or spray (hair or specific print sprays) can even further improve the adhesion. A slow first layer also helps adhering better.

Note that the hotend temperature should be calibrated to the speed you are printing. If you print faster, a higher hotend tempearture is required. To determine the sweet spot for your filament you can print typical calibration towers that can be found on e.g. Thingiverse. Note that you need to manually change the G-code file after slicing of the tower or use plugins of your slicer to change the temperature at a certain level.

Furthermore, PETG does not like to be cooled by the print fan, so keep cooling fan rpm low to prevent layers not to bond (else you get a sort of string cheese print).

Edit:

I use parametric stair case style calibration prints that include the slicer print settings that are to determine the best settings for temperature, print cooling, layer size and print speed.


How do I decrypt messages on my Repetier firmware?

Looking through the source I found Commands.cpp that has a loop.

void Commands::commandLoop() {
    while(true) {
        ...
        Commands::executeGCode(code);
    }
}

If we find the executeGCode method, we see that it calls:

processMCode(com);

And finding the processMCode method, we have the switch case you can add your own logic to.

void Commands::processMCode(GCode *com) {
    switch( com->M ) {
        case 3: // Spindle/laser on
            ...

        case 999: // Your custom logic

After decoding your encrypted string, I think it would be best to call back into the first method mentioned, and let the process start from the top with the unencrypted command.

case 999:

    // Custom logic
    executeGCode(unencrypted);
    break;


Depending on what material you print it it most likely a good idea to let the hotend cool down before shutting off the printer (fan).

For example if you shut down the printer right after you print a PLA part, at 190 - 220 degrees Celsius, your hot end will still be that hot and will suffer heat creep without the fan running. The next time you fire up your printer the hotend will be jammed and you will need to clear it before starting a print.

This is obviously situation dependent but in most cases you should let your hot end get below the TG (glass transition temperature) of the material before turning off the printer.


How to identify what type of filament an unlabeled spool is

Mick's suggestion is a good one. PLA may shed some color in acetone, but ABS will dissolve completely in a suitable amount of time. If you have dark filament, you can test by flexing the filament until it breaks. ABS will sometimes/often/usually fatigue with a white break line, while PLA does not exhibit this tendency as much.
PLA has a somewhat sweet smell, which may be the corn sugars burning off, while ABS has a much more chemical-like odor.
Not doing heat testing does limit your options.


Printrboard Rev. D - RX1 and TX1 (second serial port) / Marlin

I was able to resolve this issue:

I moved to Marlin 1.1.9 (the final release of the 1.1.x versions).
I made a fork, for those who would like to see the changes. Also summarized below.
The RX1 and TX1 pins are well identified in the question. I connected those directly to the HC-06 bluetooth module (using a voltage divider for the RX pin in the bluetooth, as it is a 3.3 V logic module).

Changes in code:

Marlin/Conditionals.LCD.h: commented out:

// this line conflicted with the bluetooth/serial1 options
// #define USE_MARLINSERIAL !(defined(__AVR__) && defined(USBCON))

The rest are the configuration options already provided by Marlin in Marlin.Configuration.h:

define SERIAL_PORT 1
define BAUDRATE 115200  // Note: this baudrate MUST match the one set in the bluetooth module. That's done using the AT commands. There is plenty of information on how to do that.
define BLUETOOTH

As a result of these changes I am able to print with my PrintrBot Simple 2014 (Printrboard Rev. D) with Bluetooth over a distance of ~3.5mts, behind a wall. I haven't tested it exhaustely, but it does print.


The same effect as Marlin's test pattern, with alternation between fast and slow segments, can be achieved with a skewed tower and Cura's overhang settings, providing the opportunity to interactively adjust K value during the print, or insert changes at particular layers in the gcode for automated test towers.

I'm using the following OpenSCAD to make a skewed cylinder:

multmatrix(
   [[1,0,1/8,0],
    [0,1,0,0],
    [0,0,1,0],
    [0,0,0,1]])
cylinder(d=40,h=40);

with Cura set to:

no top/bottom layers or infill
single walls
treat walls with 1° overhang as overhangs
print overhangs at 25% speed

These values can of course be tuned, but the extreme low overhang angle and 8/1 slope is to prevent actual physical overhang-printing considerations from messing up the test.

Vase mode might work even better for this if it supports overhang settings, since it would avoid the layer seam.


Nozzle insulation gone, can the printer be damaged?

Removing the insulation will not damage the printer, although it may affect the quality of the prints. The insulation is, after all, there for a purpose.

Allowing too much heat to escape radiatively from the heater block will reduce the maximum flow rate, since less energy will be available to heat the filament, and you may need to reduce your printing speeds or increase your nozzle temperature.

A bigger problem is that heat radiating from the heater block can cause already extruded filament to sag, especially when printing details and intricate infill. If the nozzle remains too long in any area, already extruded filament is likely to soften and deform. Without adequate insulation, the only way to counteract this is by increasing part cooling, and this will remove even more energy from the heater block.

Either fit new insulating tape or buy some silicone socks, since they are readily available for MK7/8/9 heater blocks. Then print a couple of Benchies, both with and without a sock, and compare the results.


Can closed loop steppers be used for extruders?

Closed loop steppers like S42B are becoming popular for the spatial axes because compensating for skipped steps is the correct way to recover for those axes. For example, if the nozzle knocks into a warped corner of a print and skips, the right thing to do is compensate, commanding additional steps necessary to get to the commanded location.
This is less valuable for extruder, since displacement is not necessarily the target we want to recover, but nozzle pressure. Extruder skip usually occurs when nozzle pressure exceeds the motors ability to drive the filament. Correcting for the skipped steps may result in overcompensating, attempting to drive nozzle pressure up over a longer period of time, since the problem won't clear itself as quickly as it does for the spatial axes. Compensating for skipped steps doesn't recover E errors like they do for X,Y, or Z, since skipped E steps tend to be driven by persistent problems, like low nozzle temp or hotend restrictions, where spatial errors tend to be transient, e.g. hitting a 'speed bump' on the print.
An alternative is filament flow sensors like this BTT Smart Filament Sensor. It uses a similar feedback mechanism like you suggest. It uses a driven wheel and encoder to send pulses to mainboard. When mainboard stopped getting pulses during commanded moves, it pauses print. Instead of trying to correct in a closed loop fashion, its a human-in-the-loop solution


How to make walls thicker using meshmixer or meshlab

Only today, I learned of a solution for this sort of objective, but it uses Fusion 360 rather than Meshmixer  or Meshlab. As your question does not include that program, I'll toss the Meshmixer method.

This image is of the model prior to modification:

When you load your STL file into MM, use Edit, Generate Face Groups. This will cause the surfaces to change color. Click Accept.

With face groups created:

If you can be assured of all one surface, use Select, then double click on the interior. This should turn the entire interior red. If you discover unselected surfaces, simply click on those surfaces until all is completed. If you select a surface in error, use Shift-Click to clear that one surface.

Once selected, the select menu gives you a new edit menu.
Use Edit, Offset for yet another menu. As you make changes in the menu settings, you'll see the results on the model. Ideally, you won't have an overly complex model with too many facets/triangles, as it can really bog a machine down.

This particular model has a nearly uniform interior. Double clicking on the inside surface caused the full cylinder (not the bottom) to be selected (turning red).

Low accuracy offset, with surfaces still selected:

For smoothest results, keep the accuracy high. Any protruberance in the interior will give very strange results.

High accuracy results, surfaces selected:

Experiment with the settings, aim for the best result and click accept. As long as you don't export the model over your original, all experimentation is a learning experience and not a destructive one.


How to determine shell thickness for parts?

This totally depends on what you think is acceptable for your print, and what the usage of the print is: is it a structural/functional part or just for aesthetic purposes. There is no general rule of thumb for that. Basically this is a design issue.

If it has to be stiff and may not flex much you would require to use more walls to give it more rigidity. Less if it is not that important.

When using infill and depending of the part, 0.8 to 1.2 mm walls are frequently used for nozzle sizes of 0.4 mm, without infill you could use the same values, but need to take less rigidity for granted. Add more walls when you need it to be more rigid. Note that the larger the wall surface area becomes (height over width), the easier a wall can buckle under load; increase the wall count to counteract.

In your case (design of a container) I would consider what the purpose of the container is; e.g. how big is it, how much weight is it going to contain (e.g. heavy nuts and bolts, or left over filament pieces), is it stackable, etc. etc. etc.. As a final thought, note that you can play with the design as well, a straight box/container is less stiff than a box with some curved edges or stiffeners. An example of a stackable container is e.g. this:

The indents on the walls of this container give it more rigidity, these walls are in the range of 2 to 3 perimeters.


Adding extra Z-offset to bed for PETG in Slic3r

An extra gap of 0.2 mm on top of your existing gap seems rather illogical as the filament is not squished at the build plate anymore. Furthermore 0.2 mm plus something you already have will soon result in a gap over 75% of your nozzle diameter (including your first layer; note that 75% is considered to be the max for good adhesion). The filament will then drop down to the plate... Possible effects/results can be seen in this recent question.

Having printed about 8 kg's of PETG, I have never had to add an additional gap. I have printed on various machines; Prusa clone, Ultimaker 3E and self build CoreXY. I use a 0.2 to 0.25 mm first layer thickness (for a 0.4 mm nozzle) while printing on glass or directly onto the aluminium bed using a PVA based spray glue (3DLAC). Beds are always leveled with the nozzle to bed distance of a sheet A4 printing paper. I have zero adhesion problems.

I would recommend you to try print as you would normally do and, when that does not work, increase the first layer in your slicer slightly. Printing temperature/speed towers is also recommended to find the best settings for your brand of PETG.

Now to address your specific question how to change the offset in your slicer; an additional offset can be added into your start code script by adding a move to a certain height and redefining the zero Z level. This should be typically done after auto leveling of the bed (if used). So before the first layer is being printed you could add:

; start code contains homing, pre-heating, auto-leveling, nozzle priming, etc.
G1 Z0.2 F500 ; Go to the level of 0.2 mm + your paper thickness
G92 Z0       ; This redefines the zero Z level

You can create custom startcode profiles in Slic3r (requires setting the Printer Settings) and store them with a specific name so you can have different printer profiles.


PETG nozzle clearance and extrusion multiplier

Here is the mental framework that I use to reason about PETG: In a nutshell you want to avoid nozzle contact.

Unlike most other plastics, PETG sticks to hot brass really well and every time the nozzle moves through material it will pick up some of it. Material around the the nozzle then sticks to a random place creating a blob. It can also cook, turn transparent brown and drop into the print. Investing in a plated nozzle or silicone socks helps but doesn't eliminate the problem completely.

Now to the questions.

1) Nozzle Distance

Distance to the plate has to be such that the plastic is laid down precisely without the nozzle dragging through the material (remember, avoid nozzle contact). Precise lines require the build plate to be level and the flow perfectly calibrated. If nozzle is too low and/or the layer is over-extruded then PETG will stick to the nozzle and rip the lines off the plate again. Inspecting the first layer is required for best results. I like to print a layer test pattern after the flow has been calibrated and tweak Z offset in 0.02mm increments until it's perfect.

With many other plastics it's ok to have a large amount of "squish" in the first layer as it helps to work around minor leveling issues. This is where the cookie-cutter recommendation to raise the nozzle when printing with PETG is coming from.

2) Extrusion percentage

Flow has to be near perfect. Down to one percent perfect. Even a slightest over extrusion and some of the excess material will end up on the nozzle when it makes the next pass. Under extrusion isn't great either as this can lead to holes and affect overhangs where thinner strands of a previous pass may not be enough for the next line to stick to.

There are two critical parameters: diameter of the filament and extrusion multiplier. This is how to determine the settings:

Measure filament diameter. I use an average of ten measurements over about a meter (yard) of filament taken in multiple orientations.
Calibrate the extrusion multiplier using a method described in Prusa
manual:
I print a 40x40x40 cube in vase mode with extrusion multiplier set
to 1 and fixed extrusion width (e.g. 0.45mm), measure the wall
thickness in three spots on every side, average the results and
compute the correction factor.

I perform flow calibration for every new roll of filament.


First layer rippling and no filament in the certain areas

From the wispy horizontal lines within the perimeters in your second image, it appears that the nozzle is still oozing material during the travel moves. This is likely causing the hole in the corner and the wispy perimeters too. When the extruder reinserts the filament into the hotend after a travel move, it expects the same amount of material to be in the nozzle as when it extracted the filament, but some material has oozed out during the travel move so that is not the case. I had a similar issue with my printer, and was able to mitigate the problem by increasing the retraction extra prime amount in the material section of Cura. This should compensate for the material loss during the travel move by reinserting the filament slightly farther when starting the extrusion. This solution is not perfect as different lengths of travel allow different volumes of filament to ooze from the nozzle. If you want perfect prints, you may have to tune this to the model you are printing: larger models usually require larger travel moves which would allow more time for plastic to ooze from the nozzle.

If you try this, make sure to look for blobs at the start of extrude moves. If the prime amount is set to high, it can create blobs on the side of the model (or inside depending on which perimeter is extruded first) which could cause tolerance issues on more complex parts.

Personally, I have also added a small coast distance to the end of each extrusion (located in Cura's experimental section). This allows the nozzle to ooze into the perimeter of the part which should decrease the stringing on travel moves, and thus loss of material on travel moves.


The first thing to check is the transparent sheet itself - are there any defects (rough patches, creases, grazes) in the area in which the print was stuck to the "transparent sheet"[1]. This will cause the newly cured layers to cling better to that sheet than they should in that area, and likely caused the failure.  If the sheet is marked in any way in that area, you likely need to replace it.

This kind of failure happens when the forces holding the newly cured layer to the transparent sheet are weaker than the forces holding the part together/to the build platform. These issues are usually to do with exposure settings - underexposed layers are less likely to bind together well and more likely to fail.

Since the majority of your part printed correctly, it looks as though your exposure settings are probably about right.  If there are no defects in your transparent film though, there may be unevenness to the spread of light across your LCD that means some areas on the build area cure less well than others. You don't mention what slicing software you are using, but many slicers allow for a 'greyscale mask' that can compensate for this by making the image displayed on the LCD screen less transparent in the areas that the UV output is stronger so that the weaker areas can catch up.  Note that after applying such a mask, you may need to alter your layer cure times to compensate.

[1] This transparent sheet is likely FEP film - essentially transparent flexible teflon,  though I can't actually find that specified in the product details for this model of printer


I would have posted this as a comment, since it is not a definitive answer to the question, but it was too long for a comment.

Since you were unplugging the fan when the problem started, I would suggest that it is a wiring problem.

The first place I would look is to check the ground connection between the processor board (probably the ATMEGA Arduino), and the board that carries the stepper motor drivers.  If the ground connection is faulty, the board may still work due to sneak ground paths through signal lines.

A simple way to check is to measure the voltage from the GND pin on the ATMEGA to the ground of the driver board.  That voltage should be very close to 0.0 Volts.  You might also check the resistance (using an ohm meter) with the power turned off.  The resistance should be 0.0 ohms, or if the meter is not perfectly calibrated, it should be the same as you measure with the probes connected together.

If either of these readings isn't zero, search for a broken connection.

One sign that ground may be broken is the LCD brightness control sensitivity.  I don't have the schematic to refer to, but if the ground reference for the pot is broken, the output of the pot will be too high.

Another sign is that the stepper motors still make some sounds when they should move.

If you don't find a problem there, check through the other power and ground connections.  Be sure that all GND lines are well connected, all +5 lines are well connected, and that all +12 lines are well connected.


Heat sensor problems with Makerbot Replicator 2X

Overall, it is unlikely that the problem is temp sensing accuracy. There are only a few things that will throw off the thermocouple's reading:

Poor thermal coupling between the tip and the hot block, such as if the tip has partially pulled free of the brass thermowell crimp (this will make the hot block hotter than the reported temp)
Loss of electrical insulation between the tip and the hot block, plus some ground loop noise or stray voltage on the hot block (this will typically add noise to the reported temp)

You should be able to visually check for the first, and test for the second with a multimeter. The resistance between the board end of the thermocouple leads and the brass thermowell at the tip should be infinite / out of range.

To actually check the thermocouple calibration, you have a few options:

Easy: Look at the behavior of the printed plastic. PLA that is too hot will smell of pancakes/waffles much stronger than normal, or even smell burnt. The printed material may be more shiny than usual. It will string and ooze more as you print.
Moderate: Secure another reference thermocouple (such as might come with a digital multimeter) tightly to the hot block with some Kapton tape, somewhere the aluminum block is exposed. The external TC should read within a few degrees of the printer's TC. (Assuming you get it attached well enough.)
Hard: Place the tip of the TC in boiling water to check if it reads 100C (or slightly lower if you live at a high altitude). Repeat with well-mixed ice water to check if it reads 0C. Both measurements should be within a couple degrees. You will probably need to dismantle much of the extruder to detach the thermocouple for this test.

But, again, the problem probably isn't the TC. It's more likely either a bed tramming issue (eg too much gap between nozzle and surface) or the BuildTak is degraded and not adhering. This can happen if you do a large number of prints in the exact same place, or get the surface oily, such as with fingerprints. Try a fresh sheet of buildtak or cleaning it with rubbing alcohol and moving the print to a different location.

In some rare cases, low-quality filament or filament stored in very high humidity may not stick well. This is pretty rare though. For the most part, if your nozzle gap is right, any extruded plastic will stick to Buildtak.


Hictop prusa I3 clone - broken z axis right bracket bearing

That "plastic coupler thingy" is actually a linear bearing, and it consists of a metal shell, and the metal balls roll between the smooth rod and this shell. The plastic part has a channel that guides the balls in a circle.

It would be best to replace the entire bearing (metal part+balls+plastic liner). It's probably either an LM8UU (most likely) or LM8LUU bearing.

3D Printing a new part will not give good results.


What determines print start location on the build plate?

So it turns out there are elements from each of the previous answers that make sense here, but its not a clear picture.  I've spent a whole lot of time trying to make sense of this. I also upgraded my firmware to Sailfish.

For the MakerBot Replicator (or FastForge Creator) family of 3d printers, the origin of the build plate is NOT at any of the corners, its right in the center of the build plate. Reference here.

  4.1 Home Offsets:
  By convention, the center of the build platform is assumed to be the point (0,0,0) in XYZ space. The X, Y, and Z home offsets tell the printer the location of the X, Y, and Z endstops in relation to the build platform’s center.

Looks like this:

And it would appear that most other 3D printers are not using this convention. Sigh.   From my testing, the main control of print location is within the G-Code generated by the slicer.  The tool I was using, Slic3r does give one a chance to correct that
adjustment.  You have to go to top menu Settings --> Printer Settings --> Size and Coordinates (Bed Shape) --> Set to get a nice popup visual tool.  See below.

Unfortunately the default setting is accurate for the overall bed size, but is a fail for the origin location on the bed.  The default origin is set at 0,0, in the corner.  Ouch. Big ouch.  The origin needs to be located right in the center of the build plate (to be consistent with the firmware controlling the print for this family of printers).  It should look like this:

Note, when you tell the printer to go to 'home' it doesn't go to origin (0,0,0) it goes to the endstops.

 G68 X0 Y0 F500 ; Perform Homing Routine

So as long as you understand the quirks of these printers things will work out.  You have to ensure offsets are set accurately in firmware config files. (Replicator / Sailfish) And you have to indicate the correct center location to the slicer program.  I will say the advice given here was of some help in understanding this. Many thanks.  I'm posting here in case others using the Replicator or FastForge Creator series of printers is having troubles centering their prints on the build plate.

Additional info for anybody using a MakerBot Replicator or Flashforge Creator series printer with Slic3r. I wanted to add my custom G-code stuff. The default Slic3r stuff definitely did not work.

Printer Settings --> Custom G-Code --> Start G-Code

M103 ; Turn all extruders off, Extruder Retraction
G21 ; set units to mm
G90 ; Use absolute coordinates
(**** begin homing ****)
G162 X Y F2500 ; home XY axes to maximum stops
G161 Z F1100 ; home Z axis to minimum stop
G92 Z-5 ; Set Position Z =-5mm
G1 Z0.0 ; move Z to "0"
G161 Z F100 ; home Z axis to minimum stop slowly
M132 X Y Z A B ; Recall stored home offsets for XYZAB axis
               ; Loads the axis offset of the current home position from the EEPROM and waits for the buffer to empty.
G90 ; Use absolute coordinates
G1 X0 Y0 Z50 F3300.0 ; move to waiting position near center of build plate

Printer Settings --> Custom G-Code --> End G-Code

M109 S0 T0 ; Cool down the build platform
M104 S0 T0 ; Cool down the Right Extruder
M104 S0 T1 ; Cool down the Left Extruder
M73 P100 ; End  build progress
G0 Z150 ; Send Z axis to bottom of machine
M18 ; Disable steppers
G162 X Y F2500 ; Home XY endstops
M18 ; Disable stepper motors
M70 P30 ; We <3 Making Things! Yipee, you made it...
; display message above for 30 seconds
M72 P1 ; Play Ta-Da song

One other thing I do with Slic3r.  I print a single loop of print on the periphery of a phantom skirt.  I do this as a printer head clean extrude exercise.

Print Settings --> Skirt and Brim --> Skirt --> Loops (minimum): 1, Distance from object: 6mm, Skirt height: 1   This works well.  I do this in lieu of the G-code startup used in ReplicatorG software (which went to the lower left hand corner, and did this odd 4mm extrude exercise, with odd timing...)  The skirt thing works just fine.


If you want an helicoidal object which acts relatively rigid, you should pick a plastic which is very rigid to begin with. In the case of 3D printing, probably PLA is the best choice. Make it as thick as you can in all the directions where you have no constraints.
Still, it's an object which will be hardly printable without dissolving support material. You need a two material 3D printer if you want to get good results.


What are the appropriate ranges of gear ratios for 1.75 mm and 3 mm filament extruders?

$ \frac{(2.85\ mm)^2}{(1.75\ mm)^2}=2.65$ which is the reduction you would want assuming a 1.75 is direct drive.

In this answer I am comparing the amount of filament flowing though the extruder by using $ \pi \times r^2$.  Dividing the 2 values gives the ratio of the 2 speeds.  A gear ratio is them used to change the speed.


Flashforge Adventurer 3 Filament feeder loud thumping noise, not enough filament extruded

Advice from another source suggested thoroughly cleaning the feed gear on the bowden extruder.  When I looked closely there were plastic flakes all over the mechanism.  I used compressed air and a brush to clean it.
I also discovered expert mode in the FlashPrint software, which enabled me to slow down the speed at which fill is laid down.
Now I have good printing results with any filament.

EDIT AND UPDATE::
I have continued to have problems with PLA.  For most of the last year I printed using ABS with no similar problems.  I guess that PLA is simply rougher, scratchier than ABS and catches in the tube.  I found a comment that putting olive oil on the filament fixes it.  I used Vaseline.  Things were fine for a while, but a retailer said this would lead to other problems.

So far, no permanent answer to this question.


For anyone who has this problem in the future my solution was to loosen the screw on top of the touch just a little bit


A laser sintered part typically uses what could be described as surface bonding, as it does not melt particularly deeply into the powder. It would not have the same strength characteristics as machined steel or otherwise processed metal. A part constructed from 3d printing using feed metal/welding methods would have more strength, but would not necessarily have un-modified steel strength, due to the heat applied during the process.

Using a metal which responds to post processing, as in tempering, will likely improve the strength, but I believe that one is unlikely to reach the same values as "ordinary" steel. Compression along the lines of the construction layers would be reasonably strong, but forces applied in other directions are likely to match only the characteristics of the bond. The same consideration applies to shear strength.


Use Gcode Extrusion Speed in Calculations

I don't think you're going to find either a firmware feature or a slicer feature that handles specifically what you want to do. The slicer would probably be the best place to put it, and I'd recommend maybe opening a feature request ticket with Ultimaker, because that sounds like an awesome feature.

That being said, there's nothing stopping you from post-processing your GCode file after it's been generated. If you're experienced with python at all, that's the place I'd recommend you start.

You'll probably want to do it via the following:

Find the first line number that does a retraction.
Sum up all the extrusion distances between that line and the starting point (the beginning of the file)
Replace the retraction distance and feedrate with whatever your short/medium/long retraction settings are
Store that line number as your new starting point
GOTO 1.

If you're using Slic3r, there's actually a post-processing script function built into the app itself, you just need to write the script and give it to the application to make the whole process hands-off. For other slicers you'll probably just have to run the script manually between slicing and printing.


Artillery Sidewinder X1 3DTouch not working

Ok so I did a bit of testing with the wiring and it turns out I just had the 3DTouch in the Z- socket instead of Z+ :-) .
Another idiot mistake from me!


To be successful you would need to ensure that the geometry of the two nozzles are compatible. It is not just the external thread. It includes thread length, internal diameter of the nozzle, whether the hot-end is configured for a PTFE liner, or is an all-metal hot-end, how the back end of the nozzle couples back to the heat-break, how the internal geometry of the nozzle sits in relation to the heater block etc.
The original designs that spawned many of the clones were usually highly researched and sophisticated holistic balances of thermal and mechanical properties designed to prevent clogging with the widest range of filaments within the design spec of the hot end.
Randomly swapping parts could alter that balance and cause all sorts of printing problems - including leaks, burned filament within the nozzle, clogging, oozing, poor retraction control, poor thermal control etc.
But, if the geometries of the two nozzles are close enough, you might be ok...


The spool kept getting caught on itself and tightening. I unrolled some of it and rewound it and the print came out perfect. @anttix was almost correct with the clog theory.


Sealant to increase Water-Resistance of SLS print

SLS prints from nylon are somewhat porous. This means, that they will let a stabilizer soak into the outer surface to some degree.

What kind of stabilizer is needed is depending somewhat on the properties you want, but generally I believe these might be useable depending on the viscosity:

2-component resins could be used, but they are usually very viscous. Their viscosity, however, is dependent on the exact type and mixture and could be altered by temperature.
1-component (air-hardening) resins or resin lacquers can be thinned to achieve a solution into which the item is then dunked and dripped off. How much thinner is adviseable depends on the exact material
Nitrocellulose lacquer, like it is used in guitar building, is extremely fluid and could be used for treatment via dunking.
PU lacquer could be used too.


How to move Z-axis to a specificic position (Z-max) after printing?

To move the bed down, you simply instruct the bed to do so after the print.
The best way to do that is add a G-code line to your "end G-code" script you find in your slicer you use.
Just add the line:
G1 Z230 F500

With this command you instruct the bed to lower to your maximum Z height at speed (feed rate) 500 mm per minute.


How to fix Y layer shift on Creality Ender 3?

You have a case of layer shift. Layer shifts happened to me in 3 ways:

The movement of the axis is hindered. Check if all cables run freely and without any chance to catch! improper cable chains can cause binding and stop the printhead or bed in movement and thus induce a shift.
The acceleration might be too fast. Shift the acceleration of the printer movements down a notch. Don't print faster than ~60 to keep the acceleration in check, as the printer will try to reach the top speed as fast as possible, thus limiting top speed also limits acceleration.
The model might be broken. Re-slice the model just in case.


Bed leveling method not working with Repetier firmware 0.92.9?

As a guess, you are using the wrong command. If set for n x n grid, you get 3 point measurement with G29, but that is not auto leveling, it is just setting Z height - based on average height at 3 points.

What you need is G32 S2 with S2 to store result in EEPROM (and therefore you should have EEPROM enabled with auto leveling. It is also used to store endstop offsets).


From your video, it sounds to me as though the stepper motor is fighting against the bed movement. That would indicate to me the bed rails on the X-axis are not square to the bed movement, which would cause binding of the linear bearings on the bed.

To see if this is the issue, loosen the threaded rods in all six places (three placed times two rods). Loosen the belt tensioner so it is not causing any issues. Then see how the bed moves. If the bed is freed up, tighten the nuts on the threaded rods two at a time on the same plane (each plate of the frame). At each tightening, ensure the bed continues to move freely. Measure the distance as accurately as possible to ensure the frame continues to stay square and are parallel to each other. Once you have tightened all of the nuts on the threaded rod, then re-tighten the belt tensioner.

If none of this solves it, it could also be an issue with your linear bearings. If your Anet A8 is a Chinesium clone, the bearings are not what I'd call "top notch". I replaced mine with Igus Drylin bearings and have not regretted the $10 investment. There are other printed options you could go with as well, which you can find on thingiverse.com.


Is the Vref trimmer relevant on TMC2208 in UART mode?

The potmeter does not work in UART operation, see e.g. this quote:

You don't have to fiddle with jumpers to set your micro-steps, just
change it in the firmware, and you can dynamically change the amount
of current going to each stepper motor (no more adjusting that small
potentiometer on the driver board) just by sending a GCode command
(M906).


What is the best way to connect 3D printed parts?

For ABS print, I recommend acetone. It is not a glue, but it will dissolve the plastic a bit and if you apply it to both connecting parts and push them together, they will stay connected after the acetone dries. However, it does not dry very fast and you have to be careful not to destroy the object.

For PLA I usually use regular super glue (Cyanoacrylate).


How to create an accurate mask for a UV 3D resin DLP printer

I've created software to do just that. See the project on Github: CreateMask. It has a wiki page that explains what to do.

To summarize: you measure the LCD build area using a multi-meter and a light dependent resistor. You do this with low and high intensity masks. You feed the numbers in CSV files to the software, and the software will generate a mask for you by polynomial curve fitting. See this page that explains in detail how the mask is created, if you are interested.

You can download a release here.


There are a few different approaches I've seen which you could look into.

The easiest and most common is multiple extruders, each with a different color of thermoplastic. Tools like Pronterface and Slic3r have built-in support for multiple extruders. With multiple extruders you can get one color per extruder; there's no clear way to mix colors and get a color between the input materials' colors.

Another, more complicated approach is to use a single extruder with three inputs, like this one, where thermoplastic from the three inputs can be mixed in varying amounts to get color gradients between the input colors. With red, yellow, and blue filament, you could get a rainbow of colors...albeit without any control over value (white to black) or saturation (bright vs dull color).


Paraphrasing this site. Feel free to add suggestions in the form of comments and I will try to incorporate them.

Summary

ABS: Stronger, machinable, more flexible, and more temperature
resistant than PLA. Typically printed on a heated bed. Warping is a common problem when printing ABS.
PLA: Wider range of filaments available, easier and in some cases faster to print. Not as strong as ABS and the fact that its biodegradable could be seen as both a benefit and a drawback.

Material Properties:

ABS: Strong plastic with mild flexibility. Naturally beige in color. Can be filled and sanded. Higher temperature. Easy to recycle.
PLA: Not as strong as ABS but more rigid. Naturally transparent. More difficult to fill and sand. Can sag in hot temperatures. Sourced from organic matter so it can be broken down in commercial compost facilities.

Part Accuracy:

ABS: Part warping is a significant issue. Sharp corners will often be rounded.
PLA: Less heat required contributes to less warping. Becomes more liquid at common extruder temperatures so finer details can be printed.

Safety and Handling:

ABS: Strong burning/melting plastic smell is present when printing ABS. Health concerns have been raised regarding airborne ultrafine particles generated while printing with ABS (ref). ABS will absorb moisture causing popping when the moisture enters the hot end. This leads to discontinuities in the print job.
PLA: Doesn't smell as strongly when printing due to its organic nature. Moisture can also be absorbed into PLA and can irreversibly damage it.


3D printing enclosure with LED indication symbols -- is this possible?

Achieving this with 3D printing would be quite difficult, and you might be better served by creating this effect some other way (I would personally recommend getting some inkjet transparencies and stacking a few layers together: an entirely black layer, and a few layers with the symbols in negative space).

One way that you might be able to achieve this using just a common FDM printer is to print the part face down, and printing just a single layer or two that covers the entire face, and then printing more layers that cover everything but the symbols. However, those symbols look small and detailed and you might not be able to reproduce such detail.


Your printer basically has 2 problems;

stringing, and
layer shifting

The second problem is most probably the result of the first issue. Excessive stringing leads to a lot of material outside the print object, when this clutters, the nozzle could get caught up and cause hindering of movement of a certain axis to result in a shifted layer print as the printer is not aware of this shift, it will continue the print from the shifted reference point.

From your second experiment you see that a larger layer height does not show excessive stringing and the print has therefore not been hindered by caught-up material to finish the product without layer shifting.

It is key to solve the stringing issue; stringing is the result of filament being extruded by pressure build-up in the nozzle that "leaks" out of the nozzle on travel movement of the print head. You will probably not see this happening when you print a single product; it is typically seen when printing multiple objects on the build plate. This usually implies that the printer need to be properly tuned. It is up to you to find the correct settings; test print objects, like calibration prints, help you find these correct settings.

Important print parameters to fight stringing are:

retraction, (do you retract enough prior to movement?)
coasting, (do you stop in time with extruding to make use of the overpressure in the nozzle?)
travel speed, (do you move fast enough to minimize the amount of filament leaking out?)
print temperature, (do you print at a temperature where the filament doesn't get too fluid?)
print part cooling, (do you have sufficient cooling?)

Once you optimized this, the stringing should be gone and the change of layer shifting should have reduced.