Tag Archives: STL

3D Modeling: FreeCAD2Any

Just a brief announcement of a small Python script for command-line use (CLI) which allows to convert FCStd (FreeCAD Standard file-format) to

  • STL
  • IGES
  • STEP
  • Brep
  • AMF
  • OFF
  • OBJ
  • 3MJ

which I primarely use to bring FreeCAD into the 3D printing framework with Print3r.


  • Linux/Ubuntu 20.04 LTS




  • Print3r, makes use of freecad2any in order to pre-process FCStd, IGES, STEP and Brep files

3D Printing: Sliding on Alu Extrusions

State: Early draft, work in progress and likely will receive updates.


  • 2018/08/15: Added Slider with PTFE tube inlets with 1 and 2 axis support with photos and brief test video
  • 2018/08/05: First overview with a 3 approaches

While waiting for the shipment to arrive, I thought to study some of the alternatives to wheels on alu extrusions, such as sliders.

2020 Nut 6 B - 999991_1

Nylon 2020 Slider

gleiter-glatt-b-typ-nut-6_3Commercially manufactured, apprx. cost EUR 2.50 per piece, sold in 10 pieces bag.






3D Printed Sliders

Simple Slider

A simple replicate of one of the simple 2020 sliders:

The sliding nose is 5.8mm wide. Ideally this would be printed in nylon; PLA might work as well but tends to stick more and grease or oil is required therefore.


  • print samples and measure friction with PLA
  • publish model

Slider (2 Sides) with PTFE tubes

Improving the simple slider with 10mm long 4mm PTFE chunks to decrease surface and use proper material for sliding:


and in use for the Y axis of a Prusa i3 like style:


and a small improvement to take care of the 2nd axis as well (reducing 2nd axis wiggle):

Screenshot from 2018-08-15 06-21-15


and then mounting them with a carriage together with M3 screws to control tightness:

and a brief test:

Slider (4 Sides) Carriage with PTFE tubes

A bit more complex using PTFE tubes on all 4 sides:

each inner side has 8 tube chunk insets, which gives you the variable option:

  • 4 chunks (a 10mm) x 4 sides = 160mm total
  • 8 chunks (a 10mm) x 4 sides = 320mm total
  • 12 chunks (a 10mm) x 4 sides = 480mm total
  • 16 chunks (a 10mm) x 4 sides = 640mm total

The OpenSCAD module takes parameters such as length of the carriage and the diameter of the PTFE tube (e.g. 3mm or 4mm), default length 60mm.

And the adjustable version with 75mm width looks like this:

which breaks the one surface apart with the mounting hole; if a plate would use all 4 holes that side would become non-adjustable that way – so this isn’t ideal, but perhaps work for single side use.

A possible application as X carriage and two Z carriages in a Prusa i3 use case:



  • print model and make actual physical tests, measure friction of the possible options
  • publish model



End of Page

3D Printing Experiences: 60 Days Later

Video ID not provided: Please check your shortcode.

Some further notes using CTC DIY I3 Pro B 3d printer the past 60 days:

Sample Prints

Propeller Guards

Printing propeller guard at 60mm/s (first started with 40mm/s and then “Tune” -> “Speed” changing from 100% to 150% when I saw first few layers went well) with Kaisertech white PLA @ 210C:

This is quite a hectic print, a lot of motion of the head and relatively narrow infills; 20% infill, 0.3mm layer height with 0.4mm nozzle.


I really like, admire the Platonic Solids, and Johnson Solids, and there is the Sphere – the ultimate archetype of form – and for sake of challenge, I tried to print a 25mm diameter sphere – without support (with it, you won’t get a smooth surface).


The trick which worked, was printing a brim and 50um layer height with slow speed of 15mm/s at height 0-4mm height and then 30 mm/s for the rest, that allowed to print the slope at the bottom of the sphere somewhat, not perfect but good enough for now – I will keep refining the process though.

Many Failures

Additional, my one-side blowing part fan showed its weakness, there is a cooling “shadow” (1st photo below) which shows when printing small objects where the nozzle reaches the same point soon and insufficient cooling is happening: the printing curls up, and causes bad surface in the final print.

Cura has a special mode called “Spiralize Outer Contour” and it prints circular with a steady increase of Z, smoothly, yet, without infill, the top won’t work (2nd photo), and the bottom was very weak that it broke when I tried to remove it (3rd photo).

A simple way to print a smooth sphere is to break it in two halves, and print both hemispheres and glue them together.

Challenge 1st Layer

The first layer is the challenge in 3d printing, because it can fail based on various reasons:

  • not well leveled toward X gantry (level it)
  • dusty surface (clean up)
  • uneven bed itself (use glass)
  • uneven bed while heating up (level in warm/hot bed state)
  • uneven bed while hot (let it in hot state for a few mins and level again)
  • bad filament (change it, keep records)

and I discovered another reason:

  • inconsistent extrusion because of
    • missing steps (clicks) of extrusion, too low temperature (increase temperature of extruder +10C)
    • bad teflon tube (replace it)
    • partially jammed or clogged nozzle (clean it or replace it)

which is hard to determine: one has to observe the first 3 layers closely and if it’s laid down “nicely” (even surface), and see if the width of the laid down filament is consistent, if not and it varies then the filament tends to curl on the nozzle instead to lay down to the bed.

I was in the process printing ~100 pieces, in 12 pieces batch prints, after 5 batches and the first layer failed after 10-11 pieces and I had to abort the print for 10x in sequence (re-level and cleaning bed and otherwise determine the problem) until I realized it was the worn out teflon tube, after I replaced it the following prints worked well again.

The past weeks I discovered the hotter the filament, the more likely a good first layer, but you have to print the next layers a bit cooler, otherwise the final surface come out smooth. So, with Cura you can set “Printing Temperature Initial Layer” and increase +10C to the normal printing temperature.

CTC DIY Bad Print Reasons and Remedies

These are the issues I encountered the past 60 days:

  1. two screws which hold the “L” with the extruder on the X axis, they tend to get loose and X motion will change Z level, or give bad layers once in a while when it tilts – retighten those two screws
  2. nozzle gets loose with time giving bad quality prints (e.g. after a few weeks), retighten in hot state (at 215C for example), not too tight
  3. screws and zip ties of the Y bed get loose giving bad quality prints – remove heatbed and rethighten all screws if necessary and retighten or replace the zip ties
  4. recheck X belt tension and Y belt tension
  5. recheck Y motor holding, best fasten entire Y motor at the back with zip ties
  6. refasten screws which connect XZ frame with Z motors
  7. recheck the teflon tube whether malformed or has residue (replace)
  8. clean the nozzle with a fitting drill (e.g. 0.4mm) or cold pull

Changing Filament

Push/pull method:

  1. preheat nozzle (with LCD Controller manually, or with Cura) to 215C for PLA
  2. push manually the filament into the extruder ~2cm firmly, if it goes easy then do 3), if not, wait for a few seconds, and push again (it has to go easy)
  3. swiftly pull out the filament – most of the times the break will happen below heater block; a few times a thin break happens which blocks the extruder wheel
  4. push in new filament manually and push old filament out the nozzle until new filament shows up


Just for the fun of it: seamless (without interrupting printing) changing filament

Continually or seamless change PLA filament:

  1. preheat nozzle (with LCD Controller manually, or Cura) to 215C for PLA – or you are in the midst of an existing print job
  2. cut perpendicular (not pointy) filament few millimeter above the extruder
  3. cut perpendicular new filament (not pointy)
  4. extrude more filament (with LCD controller or Cura) until old filament disappears into the feeder
  5. insert new filament so there is a seamless continuation of filament (too much force screws up Z layer height, too little force doesn’t take up the new filament)
  6. hopefully the new filament pushes the old one nicely through

Improving CTC DIY Prusa i3 Pro B

Replacing Pulleys

After some hesitation, I replaced the white plastic pulleys and printed pulley holders for the new GT2 metal 16 teeth pulleys, also for the X and Y motor, with the existing bearings (MF85ZZ: 8mm outer diameter, 5mm inner):


I printed a small washer (in white PLA) (8mm outer, 5mm inner, and 2.5mm thick) so the pulley would stay more centered and not move or wobble like the older/original pulley holders.

Replacing Y Bed Bracket

Quite an obvious move, when you look at the way the bed it attached with the Y belt it’s not parallel, and I felt this will interfere with precision in Y axis in general – so I used this CTC Prusa Y Belt Holder / Bracket to replace it:



And now the belt is parallel to each other and the smooth rods and threaded rods as you can see.

Stabilizing Y Bed on XZ Frame

The Y bed is just fastened at the back and in the middle with the XZ frame, and it’s quite wobbly – so I tightly fastened with two more M10 nuts and washers.

Note: Although the upgrade looks simple, but it is not: when you fasten the M10 nuts on the XZ frame, do this while the printer sits properly on a table (which is cumbersome) – fastening the nuts in another position will results in a skewed geometry of the printer (happened to me at first).

After this upgrade most flimsyness of the frame has vanished, which otherwise this 3d printer is known for.

Cooling the Extruder

CTC did a sloppy extruder construction: when you look closely you see a small black screw holding the heating screw but also doesn’t allow the cooler seamless attach the aluminium block – there are several remedies, I choose to give the screw a bit space by drilling a small dent into the cooler (you know where to drill as the screw likely has hinted the position already):

So now the cooler makes good contact to the aluminium block which transfers the heat of the extruder/nozzle.

Replacing Fan Blades, Adding Fan Covers


I broke one of the fans and I tried to replace it. Unfortunately to remove the old fan blades is a tricky thing and I broke the fan – the proper way is to remove the label at the back, push the blades on the other side so the pin comes out where the label was – and remove the ring coming out – this allows to remove the blades from the fan.

To secure the blades better, I printed two fan covers for those 40mm x 10mm fans, one for the extruder fan, and one for the part fan.


Further, the fast X axis movement doesn’t do good on the fans – and so just after 2 weeks with the new part fan cooler, it already makes noises when starting up – as if the initial tilt of the fan being in resonance and not able to achieve full speed; a gentle tap on the fan cover brings it out of resonance – this isn’t a good solution though.

Z Motor Stand

20180520_124738It bothered me at the very beginning, and finally resolved it: the Z Motors are lifted 8mm in air with a bracket, the force from the XZ frame and the smooth rods is distributed between just three screws, whereas the most tear is just on one screw – it’s fairly simple to make some stand so the entire Z motor takes some weight as well and adds stability.

Download the STL of the “Z Motor stand” at thingiverse and print it yourself.

Y Bed Cable Chain

The past weeks I noticed the narrow bending of the cables at the Y heating bed and it eventually will break there. So I searched on Thingiverse for some solution, and I found Cable Chain with a nice cable chain element:

Note: You must mirror both mounts (left <=> right) – within Cura use the Mirror Tool –  the mount on the side (CTC_Y_base_mount.stl), and the mount on the bed (CTC_Y_bed_mount_bottom.stl) – because the original setup is meant for the left side, but if you do that you have to switch the back planes of the Y bed to move the Y stopper switch on the other (right) side, but you can avoid this by mirroring both mounts before you print them.

The cables of the heat bed and termsistor were sufficient long to be wired via the right side, and then below the bed to the left side where the controller board resides.

Update: I moved the cable chain mount up ~1cm on the side and not reuse the screw which holds the power connector but drilled a dedicated hole – which makes the cable chain fairly horizontal now.

Documenting XYZ Cube and other Prints

One of my habits is to document things properly through time so I can fine-tune things I did already and review changes, in particular with 3d printing, using the 20mm XYZ calibration cube, writing down

  • date
  • printing speed [mm/s]
  • filament brand
  • extruder temperature [C]
  • infill [%]
  • layer height [mm]
  • special features (e.g. brim, raft, etc)


It helps me to review:

  • whether my changes on the printer increased or decreased the printing quality
  • whether filament from the same source but different color have different settings
  • whether filament quality decreased due my own storage

Software Tools

Mostly I use

  • OpenJSCAD.org, a local copy of it to be precise (offline), whenever I have a common theme or functionality, when special features become functions and things a composed programmatically,
  • OpenSCAD.org, the known scripted CAD approach, and
  • for WYSIWYG-like I use TinkerCAD.com for quick and simple models (online) but save all models as STL as backup.

For Linux users, as viewer I use

  • MeshLab (apt install meshlab) and ensured it’s the primary application for .stl files – for Ubuntu 18.04 LTS you have to edit /usr/share/applications/meshlab.desktop, ensure “%f” is added in the “Exec=meshlab” line:
[Desktop Entry]
GenericName=Mesh processing
GenericName[en_GB]=Mesh processing
Comment=View and process meshes
Exec=meshlab %f

and I installed the STL thumbnailer for Nautilus (GNOME default file browser) as well:

Screenshot from 2018-05-12 21-03-19


From now on I will post smaller blog posts more focuses on particular issues, and tag them with “3d printing” and alike.

Wemos D1 OLED (ESP8266) cases

Three versions of Wemos D1 with 128×64 OLED:

Same PCB aka ESP12F OLED

OLED 128×64 with SSD1306 controller built on the same PCB with Wemos D1 Mini usually named “ESP12F OLED” at Aliexpress.

STL: https://www.thingiverse.com/thing:2853146

Layered (Combo)

Using Wemos D1 Mini and put OLED 128×64 SSD1306 on-top/bottom of it, keeps it same width and height but a bit thicker.

OLED GND - Wemos D1 Mini GND (pin-to-pin)
OLED VDD - Wemos D1 Mini D4 (pin-to-pin)
OLED SCK - Wemos D1 Mini D3 (pin-to-pin)
OLED SDA - Wemos D1 Mini D2 (pin-to-pin)

STL: https://www.thingiverse.com/thing:2853148

Side-by-Side (ComboSBS)

Using Wemos D1 Mini and put OLED 128×64 SSD1306 side-by-side (SBS) with hot glue, is a bit cheaper than the “same-PCB” version.

OLED GND - Wemos D1 Mini GND (wire)
OLED VDD - Wemos D1 Mini 5V (wire)
OLED SCK - Wemos D1 Mini D2 (wire)
OLED SDA - Wemos D1 Mini D1 (wire)

STL: https://www.thingiverse.com/thing:2853149