3D Modeling: Elegant Pieces in OpenSCAD with rcube(), rcylinder() and chainhull()

Updates:

  • 2020/12/31: rcube() extended, RCUBE_FLAT{BOTTOM, TOP, FRONT, BACK, LEFT, RIGHT} support added, rcylinder() with RCYLINDER_FLAT{TOP, BOTTOM}
  • 2020/12/30: rcube() source code extended, support RCUBE_FLATX, RCUBE_FLATY, RCUBE_FLATZ
  • 2020/12/28: inital post

While working on Ashtar D (Classic XY) I looked at some pieces I rushed to design with cube() and hull() and they didn’t appeal to me – yes, it kind of hurt my eyes.

A while back I coded a simple rcube([x,y,z],r) which takes r as a radius for the edges, internally it’s an OpenSCAD module which uses 8 spheres and hulls them together, providing round edges; but I hesitated to actually use it in my designs – until now. Further I thought, let’s do the same with cylinder() using rcylinder(d=10,h=5,r=1) providing round edges by using two torii and hull them together.

These two new functions, rcube([x,y,z],r) and rcylinder(h,d,r) allow to create more organic and elegant pieces, see for yourself:

From Bulky To Elegance

The position of the Y pulley mount is given, a bit of an X- & Y-offset to ensure printable area is not sacrificed for the Y carriage:

Using Chained Hulls

And another example . . . replacing hull() with chainhull():

The final version is composed by only 3 pieces chain hulled together:

difference() {
   chainhull() {
      rcylinder(...);
      translate([0,0,-20]) rcube(...);
      translate([...,-60]) rcube([5,20,50],2); // 2020 mount plate
   }
   rcube(...);     // pulley cutout
}

rcube() & rcylinder()

rcube();
translate([5,0,0]) rcube(0.75);
translate([10,0,0]) rcube([2,1,1],0.2);

translate([0,2,0]) rcube([2,1,1],0.2,false);
translate([5,2,0]) rcube([2,1,1],0.2,true);

translate([0,4,0]) rcube([2,1,1],0.2,RCUBE_FLATX);
translate([5,4,0]) rcube([2,1,1],0.2,RCUBE_FLATY);
translate([10,4,0]) rcube([2,1,1],0.2,RCUBE_FLATZ);

translate([0,6,0]) rcube([2,1,1],0.2,RCUBE_FLATBOTTOM);
translate([5,6,0]) rcube([2,1,1],0.2,RCUBE_FLATTOP);

translate([0,8,0]) rcube([2,1,1],0.2,RCUBE_FLATFRONT);
translate([5,8,0]) rcube([2,1,1],0.2,RCUBE_FLATBACK);

translate([0,10,0]) rcube([2,1,1],0.2,RCUBE_FLATLEFT);
translate([5,10,0]) rcube([2,1,1],0.2,RCUBE_FLATRIGHT);

translate([0+1,14,0]) rcylinder(3,1.5,0.2);
translate([3+1,14,0]) rcylinder(3,1.5,0.2,false);
translate([6+1,14,0]) rcylinder(3,1.5,0.2,RCYLINDER_FLATBOTTOM);
translate([9+1,14,0]) rcylinder(3,1.5,0.2,RCYLINDER_FLATTOP);

The library code (I might later release it as a separate library):

// Title: rcube(), rcylinder() & torus()
// Author: Rene K. Mueller
// License: MIT License 2020
// Version: 0.0.2

RCUBE_FLATX = [false,true,true];
RCUBE_FLATY = [true,false,true];
RCUBE_FLATZ = [true,true,false];
RCUBE_FLATBOTTOM = [false,false,false,false,true,true,true,true];
RCUBE_FLATTOP = [true,true,true,true,false,false,false,false];
RCUBE_FLATFRONT = [false,false,true,true,false,false,true,true];
RCUBE_FLATBACK = [true,true,false,false,true,true,false,false];
RCUBE_FLATLEFT = [false,true,true,false,false,true,true,false];
RCUBE_FLATRIGHT = [true,false,false,true,true,false,false,true];

module rcube(a=1,r=0.1,rd=[true,true,true],center=false,$fn=32) {
    if(FAST_RCUBE)
       cube(a);
    else {
       x = len(a) ? a[0] : a;
       y = len(a) ? a[1] : a;
       z = len(a) ? a[2] : a;
       rd = len(rd) ? rd : [rd,rd,rd];

          if((len(rd)==3 && rd[0] && rd[1] && rd[2]) || (len(a)==0 && rd)) // rd=[true,true,true] or true
             hull() {
                translate([r,r,r]) sphere(r);
                translate([x-r,r,r]) sphere(r);
                translate([x-r,y-r,r]) sphere(r);
                translate([r,y-r,r]) sphere(r);
                translate([r,r,z-r]) sphere(r);
                translate([x-r,r,z-r]) sphere(r);
                translate([x-r,y-r,z-r]) sphere(r);
                translate([r,y-r,z-r]) sphere(r);
             } 
          else                                                        // anything else
             hull() {
                translate([r,r,r]) rcube_prim(r,rd,0);
                translate([x-r,r,r]) rcube_prim(r,rd,1);
                translate([x-r,y-r,r]) rcube_prim(r,rd,2);
                translate([r,y-r,r]) rcube_prim(r,rd,3);
                translate([r,r,z-r]) rcube_prim(r,rd,4);
                translate([x-r,r,z-r]) rcube_prim(r,rd,5);
                translate([x-r,y-r,z-r]) rcube_prim(r,rd,6);
                translate([r,y-r,z-r]) rcube_prim(r,rd,7);
             }
    }
 } 

module rcube_prim(r,rd,i) {
    a = len(rd);
    if(a<=3) {
       if(a && rd[0] && rd[1] && rd[2]) 
          sphere(r);
       else if(a && rd[0] && rd[1])
          translate([0,0,-r]) cylinder(r=r,h=r*2);
       else if(a && rd[1] && rd[2])
          translate([-r,0,0]) rotate([0,90,0]) cylinder(r=r,h=r*2);
       else if(a && rd[0] && rd[2])
          translate([0,-r,0]) rotate([-90,0,0]) cylinder(r=r,h=r*2);
       else
          translate([-r,-r,-r]) cube(r*2);
    } else 
       if(rd[i]) 
          sphere(r);
       else 
          translate([-r,-r,-r]) cube(r*2);
 }

RCYLINDER_FLATBOTTOM = [false,true];
RCYLINDER_FLATTOP = [true,false];

module rcylinder(h=2,d=1,r=0.1,rd=[true,true],$fn=40) {
    if(FAST_RCYLINDER)
       cylinder(d=d,h=h);
    else
       hull() { 
          translate([0,0,r]) 
             if(len(rd) && rd[0]) torus(do=d,di=r*2); else translate([0,0,-r]) cylinder(d=d,h=r);          
          translate([0,0,h-r]) 
             if(len(rd) && rd[1]) torus(do=d,di=r*2); else cylinder(d=d,h=r);
       }
 }

 module torus(do=2,di=0.1,a=360) {
    rotate_extrude(convexity=10,angle=a) {
       translate([do/2-di/2,0,0]) circle(d=di,$fn=20);
    }
 }

chainhull()

module chainhull() {
    for(i=[0:1:$children-2])
       hull() {
          children(i);
          children(i+1);
       }
 }

There is one drawback using chainhull() { } as you can’t use conditional if else with { } within as it combines them as a group and becomes a child structure and so it will act as hull(), so you only can list non-conditional pieces within chainhull() as of OpenSCAD 2019.05, perhaps at a later time this limit vanishes.

That’s it.

3D Printer Ashtar D: Classic XY, First Draft

After the Core XY implementation of Ashtar C I pondered on changing the kinematic to a more classic approach to separate X and Y axis motors, but otherwise keep the setup and frame, hence Ashtar D:

Ashtar D: classic independent XY kinematic: head XY, bed Z setup, with 500mm 2020 alu profiles

Draft

Again using 500mm alu profiles, utilizing the frame itself as rails:

  • 1 V-slot beam for X axis with V-carriage/module (triangle shaped carriage) as X carriage with hotend
  • 2 V-slot beams for Y axis, 2 V-carriages/modules with the X beams on it
    • using classic V wheels
  • 14 T-slot beams for the rest of the frame
    • Z bed: white 7.3mm thick Delrin wheels on T-slots

The target is again a 400x400mm printbed, probably 380x400x380mm build volume alike with Ashtar C (Core XY), perhaps a bit less X-wise due the more complex pieces to mount the X motor and pulleys.

More high resolution renderings:

The project page on Ashtar D summarizes the current state of the project.

3D Printer Ashtar B: Cantilever, First Draft

It has been on my mind for quite a while to do a 2020 alu extrusion based Cantilever 3D printer, and so I started in December 2020 with a rough design, starting from the existing Ashtar K design and cut away parts:

  • using Head XZ and Bed Y
  • aiming common build volume (e.g. easy to source print bed)
    • 140mm to 190mm each axis
  • tried 6, 7 and 9 beams options, settling with 6 beams for now
  • aiming for uni-length 2020 alu extrusions, T-slot and V-slot where a carriage rides (X & Z axis) with V wheels.
  • trying to keep as simple as possible

Frame: 6 vs 7 vs 9 beams

The 9 beams give an overall better sturdiness, but not sure how essential at small building volume (less than 220mm each axis). I might be able to remove beam, the last beam at the back at the bottom reducing to only 6 beams, in that case the Y motor is mounted on the remaining beam in the back.

Z Carriage: 3 vs 4 wheels module

The 4 wheels looks best but it also sacrifices some of the X range by apprx. 10mm, the obvious choice is 3-wide mount – actual tests will tell if the X & Z axis are solid enough.

Different Sizes

The 200mm build axis length would be good, but I’m not sure if the XZ carriage will allow it as the max margin or tolerance would be half of a layer-height, e.g. 1mm layer height ⇒ 0.05mm tolerance, at X = 0 .. max the head should not flex more than 0.05mm. At this this early draft stage I don’t know which size is most suitable, I focus on 180mm build axis.

The project page on Ashtar B summarizes the current state.

3D Printer Ashtar M: Moving XZ Frame (Moving Gantry), First Draft

Updates:

  • 2020/12/20: adding XZ arch option
  • 2020/12/14: initial post
Jon Schone: Moving Portal Mod

In April 2020 Jon Schone (@properprinting) showed a “Moving Portal” mod for his CR-10 – a Prusa i3 derivative – and I thought to adapt his approach as “Ashtar M” as moving XZ frame or moving gantry in CNC terms.

On a second thought, this approach makes only sense with larger beds, as the bed weight should exceed the weight of XZ frame and X carriage:

weight(XZ frame + X carriage) < weight(bed)

and as I compose my Ashtar 3D printer series with alu extrusions (beams) I can say:

weight(XZ frame) = beam X * 2 + beam Z * 2 + NEMA17 * 2
weight(bed) = X * Y

and it becomes here clear, the bed weight grows X * Y whereas XZ frame only (X + Z) * 2, but also 2* NEMA17 motors of the Z axis are part of the XZ frame.

Moving Portal / Gantry

A few still images of Jon’s YT video to look at some details of his approach:

First Draft

  • using solely 500mm 2020 alu extrusions (T-slot for general frame and XZ frame, V-slot for carriages: X beam, 2x Y beams)
  • trying to achieve 400x400x400mm build volume as close as possible, alike Ashtar C 38.40.36

Using for Y carriages existing vcarriage2 module with vcarriage2(width=100) to have it wide enough:

The two main new pieces required were connecting the Y carriage with the XZ frame:

  • Piece “A” outside ycarriage_xzframe_mount_a(): has to be printed with 0.1mm layer height in order to stay within the +/- 0.05mm tolerance, otherwise it will introduce tilt and stress on the Y carriage and cause long term damage – tricky part to print.
Adding side pieces “A” & “B”
  • Piece “B” inside ycarriage_xzframe_mount_b(): is quite elaborate already and should be functional, with the Y belt ends fastening with M3 screws and M3 nuts inserts, the belt endings will come out downward:

XZ Arch Option – Removing Lower X Beam

In order to gain some Z build space by lowering the print bed, I may reduce the XZ frame to an XZ arch:

Actual physical tests may reveal if it’s suitable to maintain overall geometrical integrity. Removing the lower X beam also reduces moving mass of the XZ arch/frame/gantry.

Pros

  • gain Z build space
  • reduce XZ gantry weight / inertia

Cons

  • decrease XZ gantry stability

Further Development

As I develop Ashtar M further, I will post updates on the blog here, and also keep documenting the current state at Ashtar M page.

That’s it.

Infinite-Z CR-30 aka 3DPrintMill: Creality Acknowledges Prior Development & Commits to Open Source (2020/12)

As of December 2020, something remarkable has happened: Creality, a big chinese 3D Printer company has openly acknowledged and worked with western developers to bring forth a belt-based 3D printer.

Usually chinese companies have copied without acknowledge or give credit to development done by others like Adrian Bowyer or Josef Prusa, yet with the influence of Naomi Wu, a maker from Shenzen, Creality seemed to have been swayed to give proper attribution and even actively work with Open Source Hardware inventors to mass produce a belt-based 3D Printer.

CR-30 aka 3DPrintMIll by Naomi Wu with Creality (2020)

The past decades “Western Innovation vs Chinese Manufacturing” combo has been operating very well and brought many consumer products at low cost, including 3D printers.

Now, in this particular case, we see Bill Steele and Karl Brown (White Knight Printer) properly attributed in the 3DPrintMill Kickstarter page:

And even giving proper context of the overall lineage:

Lineage

All consumer 3D printers currently sold, build in some way on the work of Adrian Bowyer and his RepRap project- Open Source 3D printing. Some 3D printers iterate more than others, some are simply clones and claim innovations as their own that was in fact the community’s work. Others take only the broad strokes of an idea and build on it, improve it, and allow others to build on it further. For the 3DPrintMill (Creality CR-30) we have taken pains to involve and consult the talented individuals who brought the technology this far, and built on their work with their permission.

Bill Steele, who first demonstrated Infinite-Z FDM and DLP printers, and Karl Brown who created the first practical, Open Source kit so consumers could build their own Infinite-Z printer. Both Karl and Bill have given the project their blessing- and indeed, without them, it would never have been possible.

As said, this is remarkable and probably a new level of cooperation of Open Source Hardware movement and chinese manufacturers.

Back in 2010 I thought that the Open Source Hardware movement should actively seek cooperative alliance with chinese manufacturers instead just to complain – but this did not happen. Now in late 2020 it seems happening, thanks to Naomi Wu (Project Head for the CR-30/3DPrintMill), who made an effort to bridge the western innovation culture and chinese manufacturing culture – without a bridge, a canyon keeps villages apart.

Thanks also to Creality, namely Michael Tang (Co-founder of Creality), Steven Han (Brand Director), Zhou Yong (Product Manager), Lei Congjin (R & D Manager), Yu Xianhong (Project Manager) for the acknowledgment as expressed in the Kickstarter page.

Open Source Hardware Commitment

Additionally, and perhaps even more relevant is their on-going commitment to Open Source Hardware as expressed in this passage:

Bringing the 3DPrintMill (Creality CR-30) to life would need the resources of a full engineering team and a company with substantial 3D printer manufacturing experience. So a deal was struck, Creality would invest the R&D resources necessary to make the 3DPrintMill(Creality CR-30) real, and as soon as that expense was recouped, the entire product would be fully Open Sourced for the benefit of the community. When the 3DPrintMill (Creality CR-30) reaches 5 million USD in crowdfunding, the whole machine- CAD files, BOM, firmware, schematics, will be fully Open Sourced. Anyone in any country can make their own version, iterate and improve on it- leading to vastly accelerated development.

This is probably what many Open Source Hardware (OSHW) enthusiasts have been waiting for, one of the big player like Creality join the common OSHW efforts once more, after having released all plans of the Ender 3 in 2018 and giving an example for other companies.

Bigger Context

And I look at Apple, Microsoft, IBM, ARM, Intel, AMD and I wonder, with the Open Source ISA (Instruction Set Architecture) of RISC-V on the horizon, whether we are going to see the full stack of Open Source Hardware from the CPU design up to the PCB and final assembled computer (GPU, RAM, I/O); and if any of the big players take a moment, and look at what Creality did here?

Naomi Wu ranted away on Twitter with the following, which hits the nail about Open Source and Open Source Hardware is really about:

Software? Fusion360, Adobe Creative Cloud, John Deere tractors- a tradesperson can’t even own their own tools anymore. We’re all sharecroppers. Everything is rented.

Every single thing we own is being taken, put in the cloud, and rented back to us. Willingly. Because no one wants to know how to do anything beyond a narrow scope. We’re a world of carpenters willing to rent sharp chisels and saws rather than learn to sharpen them ourselves.

Although the rant started as people seemingly complained on the non-existing or poor customer support of Creality, her main argument is, rather have Open Source Hardware and a community helping each other, than a Closed Source without any control but good customer support – the rant actually targets the Software- & Hardware Sovereignty, which is behind all of the Open Source movement, that is the core issue: you are allowed, you are given the opportunity to improve what you bought, what you own, you can resolve the needs and requirements of your own use cases – personal evolution – and you contribute and help others by being able to share it again – collective evolution. And the mentioned companies, like Apple, or Microsoft, who have been locking up their hardware and software further and further, to improve usability and simplicity – and believe me, I have been an open critic of poor GUIs in Linux not able to catch up – but the price is high, loss of “digital sovereignty” as of software and hardware.

So, because companies are profit driven, they have to balance their own needs and requirements with the collective interest – and this is done in these statements:

Creality would invest the R&D resources necessary to make the 3DPrintMill(Creality CR-30) real, and as soon as that expense was recouped, the entire product would be fully Open Sourced for the benefit of the community.

When the 3DPrintMill (Creality CR-30) reaches 5 million USD in crowdfunding, the whole machine- CAD files, BOM, firmware, schematics, will be fully Open Sourced.

This is why I consider this an important and significant move, because a profit-driven company has actively and willingly balancing its own needs and requirements with those of the collective of the Open Source Hardware movement, and acknowledged that very product they are about to produce has been possible because of individuals like Adrian Bowyer, Bill Steele and Karl Brown.

Remarkable.


That’s it.

PS: If you are interested in early development 3D printers, see RepRap movement or general 3D Printer History.

Misc: VERRF 2020 Videos

East Coast RepRap Festival (ERRF) held a virtual conference October 10 & 11 2020, worth to glance over:

Day 1 Sponsors & Exhibitors

Notable presentations:

Day 2 Sponsors & Exhibitors

Notable presentations:

That’s it.

CAD: ScriptCAD.org Prototype (2019/12)

Around February 2019 I bootstrapped a scripted CAD environment named “ScriptCAD”, and resembles closely to OpenSCAD.org and OpenJSCAD.org (which I co-developed for a couple of years) with a new take, developed from scratch:

ScriptCAD.org: ScriptCAD Logo 2019/11
  • Scripting capability using JavaScript
  • Separate internal representation from display representation
    • Triangulation or Implicit representation
    • only triangulate at late stage at display or export
ScriptCAD.org Internal Stages
  • Intuitive Graphical User Interface (GUI)
    • Simple export various formats
    • Select top-level solids
    • Source <-> TreeView <-> 3D Model selection
Select Source <-> TreeView Item <-> 3D Model

The transparent Source vs Object Tree vs 3D Space has been in the back of my mind for a long time as I keep the connection of each stage intact and transparent.

  • Ease of use
    • hiding JS module complexity and notions
    • Browser use (either use built-in editor or drag-n-drop source with autoreload)
    • Command Line Interface (CLI) use

Screenshots & Examples

SpiritCAD.org Online as Preview

As of November 2019, ScriptCAD.org is reachable as an early preview (alpha stage), most examples work, some do not yet or display wrong output.

Note: there is only limited documentation yet (2019/11), and the API is subject of changes.

I still tune it to my use-cases and therefore API and overall design of the API might change, even drastically; once the API becomes more stable I will release the source code as well.

Some of use-cases (as seen in the gallery above):

  • coding low-level Gcode and use ScriptCAD to preview (render) Gcode including colors, scriptcad (CLI) outputs .gcode to actually print
    • testing single layer color mixed 3D Printing: forms, color mixing
  • ScriptCAD uses ThreeCSG/csg.js at its core to perform CSG operations, which can be very slow – hence, designing complex pieces can be slow as every change recomputes all again (I like to avoid this in future developments) yet as of 0.3.2 basic caching is implemented so only deltas are recomputed.

Introduction Video

The on-going development I document also. That’s it.

Misc: Formnext 2019 Videos

A few worthwhile videos done by 3DMN (3D Maker Noob), Vector 3D (Adam) and others at Formnext 2019. I will update this post as more interesting videos become available.

  • 2019/12/11: added 3DMN Trilab DeltiQ 2 video
  • 2019/12/02: added Joel’s (3D Printing Nerd) Formnext 2019 video

3DMN: BCN3D Epsilon

BCN3D Epsilon by BCN3D:

  • build volume: 420 x 300 x 400mm
  • dual independent extruders / printheads (IDEX)
  • price: 7000 EUR

3DMN: Craftbot’s Flow Generation

Craftbot Flow Generation:

  • dual independent extruders / printheads (IDEX)
  • build volume: 425 x 250 x 250-400mm
  • price: 3200-4000 EUR (plus VAT)

3DMN: Trilab DeltiQ 2 (Delta)

Trilab DeltiQ 2 (Delta) specifications:

  • build volume: 250mm diameter with 300m height
  • bowden style, optionally direct drive style setup (Trilab FlexPrint)
  • price: 2600 EUR (minimal configuration)

Vector 3D: Continuous Carbon Fibre by Anisoprint

Anisoprint mixes Nylon, PC, PLA, TPU and PETG with carbon fibres (CCF) in their continueous 3D printing procedure.

Vector 3D: Dyze Design & Craftbot

Dyze Design: High volume printing from pellets with 1-5mm large nozzles.
Craftbot: Briefly discusses “Craftbot Flow Generation” 3D printer series, not very informative (sales talk).

Vector 3D: More of Formnext 2019

  • Tiertime X5 by Tiertime: automatic bed switching
  • Prusa Mini by Prusa Research: low cost Prusa printer at 380 EUR
  • Phrozen by Phrozen3D: DLP printer
  • Raise E2 by Raise3D: dual independent printheads (IDEX)
  • BuildTak: build sheets / platforms
  • The Box by BLB Industries : really printing big > 1000mm with 1-14mm nozzles with pellets

Vector 3D: Best of Formnext 2019: FL 300 by FuseLAB

FL 300 Revolving Extruder

Adam from Vector 3D select the FL 300 by FuseLAB as “best of”:

  • revolving filament extruder (proprietary, patent pending)
  • dual printheads
  • price ~7000 EUR

It surely is an interesting design, but I wonder what this additional complexity adds in actual print quality.

3DNatives: Top 5 (Industrial) 3D Printers

  1. AM Polar i2 by DP Polar: rotating platform
  2. C3600 Ultimate by 3DCeram: ceramic printing
  3. Meltio M450 by Meltio: metal powder & wire printing
  4. T3500 by Tractus3D: huge delta, FDM
  5. LASERTEC 125 BY DMG Mori: 5 axis milling combined with direct energy deposition

3DNatives: Top 5 3D Printing Applications

  1. 3D printed boat by Autodesk, endless fiber & resin
  2. 3D printed car by BAC & DSM, carbon fiber & graphine
  3. 3D printed robot by 3DGence: PEEK, Nylon and PLA
  4. 3D printed bike by VMR: SLM metal printing
  5. 3D printed dinosaur by Lincsolution: SLA printed

igus: 3D Printed Wear Parts

igus: more infomercial, yet informative: wear resistant filament / prints (e.g. gears) with their own polymer mixture called “iglidur”, optionally also food save.

3D Alliances: Xact Metal

XM200C by Xact Metal:

  • SLM (Selective Laser Melting), metal powder based
  • build volume: 127 x 127 x 127mm
  • price 90K EUR (considered low-cost 2019/12)

3D Printing Nerd: Formnext 2019

  • Craftbot Glow Generation: closer look at dual independent extruders (IDEX)
  • DyeMension: eye wear with powder bed printing (SLS) and other applications
  • Raise3D: Raise3D E2 also IDEX
  • Desktop Metal: Desktop Metal Fiber contineous carbon fiber mixed with polymer, priced at 35K USD / year; Desktop Metal Shop System, binder jetting at 1600dpi (SLS)
  • BCN3D: closer look to Epsilon (IDEX) also presenting their BCN3D Cura with cloud printing
  • Loctite: resins and bonding polymers

That’s it.

Misc: Formnext 2019 aka “just too much for one day”

I decided to visit Formnext 2019 in Frankfurt (Germany) November 20, 2019. And to give you the essence first, it was too much – 800 exhibitors in two larges halls each with 2 floors – one day is not enough, and others told me, not even two days is enough to have time to absorb what has been shown at this exhibition.

Metal Printing: one of the huge topics of Formnext 2019 was . . . metal printing aka “no more plastic”, it seemed like the motto for 2019, in the corporate sense of it.

The printers were huge, car or even tractor sized 3D printers.

The kind of faceless corporate world:

Ultimaker booth

Ultimaker: So I spotted Ultimaker booth, and asked for “Daid”, nobody seemed to know, but “David” was known (as author and driving force of Cura) but not there, as he left the company 2 months ago I was told – either way, I spoke with Roger Bergs and expressed my gratitude for Cura being Open Source and he replied: “you know, we come from there, it’s part of our company culture” . . . nice to see such a commitment to the Open Source, especially compared to the next:

MakerBot: . . . and to my surprise, there was a mid-sized booth of MakerBot, the owner of the struggling Thingiverse, on the brink of collapse. After some brief delay, I was able to talk to Jason Chan, responsible for Thingiverse who was on site, and we had a brief talk:

MakerBot booth
  • I acknowledged the role MakerBot played in early days of 3D printer development in contrast to the later abandonment of the Open Source principle with the acquisation by Stratasys . . .
  • I pointed out how important Thingiverse was and still is for existing projects, which still reference the STL files on Thingiverse and if it were to disappear it would be devastating and break many projects out there (not all migrated to github or other 3D model repos)
  • further I expressed my experience about other the 3D model repositories being functionally inferior compared to Thingiverse
  • Thingiverse was unbearable slow and unreliable – Jason acknowledged and confirmed my concerns of the current functionality of the site
  • Jason responded as following:
    • only 2 web developers are assigned to Thingiverse maintenance as of 2019/11
    • there is a backlog or debt of problems unaddressed for the years and MakerBot is aware of it (to the public it seemed nobody cares at MakerBot)
    • Thingiverse is costly running it, and provides no (significant) income
    • there are commitments within MakerBot to reboot Thingiverse and fix all the backend issues and resolve the “slowness” of the site (that has been said before, nothing happened – just check @makerbot Twitter account)
    • development of a financially sustainable foundation for Thingiverse, means, to create income – how this is planned he didn’t wanted to reveal in more details
    • MakerBot kind of was surprised of the immense success of Thingiverse of the past years

Josef Prusa: While visiting Hall 11, I came across Josef Prusa walking alone, and I just briefly shared my admiration for his success by combining Open Source and business to a self-sustaining model. I later visited the Prusa Research booth, and it was packed with visitors and and catched this short video showing Prusa Mini in action:

BuildTak: Just a brief talk with Igor Gomes, about their new products and shared a bit of my stuff as laid out on this web-site.

Creality booth

Creality: . . . and there it was, a tiny small booth of Creality – 4 or 5 shy representatives sitting there, and I walked toward them and greeted them in english, and a smile rushed unto their faces (to my surprise), and I expressed my thankfulness of their move to Open Source the Ender 3 entirely, that this move or gesture really was acknowledged in the Open Hardware and 3D printing community in the “West”. In a way it was bizarre, there was this small booth, while in reality, this company had more impact than perhaps the rest of the exhibitors of the entire hall – nobody else ships as many 3D printers as this company as of 2019.

Misc Small Chinese Exhibitors:

Too little time to explore their products in more depth.

E3D Online: Just briefly glanced at their booth, as I watched already videos online of their tool changer, and I was already significantly exhausted.

E3D Online: Tool changing with metalbrush to clean the changing toolhead

NinjaTek: just passing by . . .

FelixPrinters: . . . also too little time and openness left from my side cut this visit short, but their printers looked very well thought out.

Belts

Printing Big

Misc Perls

Anyway, after 7 hours I was exhausted from all the impressions – it was too much of visual stimulis and constant noise – and I left the exhibition and headed back to Switzerland by train again, and arrive at midnight finally – it was worth my time.

That’s it.

CAD & 3D Printing: Parametric CAD with OpenSCAD

The past year (2018/2019) I printed with my own designed 3D Printers with various printheads and required for each variant a dedicated Part Cooler, and I realized it was worth the time to approach this in a parametric manner using OpenSCAD, using the “bull horn” design and so I came up with a general approach, and as a result was able to create various variants for my use-cases:

part-cooler-selection2

  • Custom Triple (& Dual) Micro Swiss hotends (3 nozzles, 3 heatsinks)
  • Chimera 2-in-2 (2 nozzles, 1 heatsink)
  • Cyclops NF 2-in-1 (2 intake, 1 nozzle, 1 heatsink, non-mixing)
  • E3D Volcano (1 nozzle, 1 heatsink, large nozzle diameter)
  • E3D V6 Lite (1 nozzle, 1 heatsink, small / medium nozzle diameter)
  • a few other specialized setups

Needless to say, the proven design allowed me to quickly design and print a new variant, and have expected results when using the part cooler – which is a huge time saver.

Yet, one drawback is obvious: in order to adapt a new variant, one requires the surrounding parts like heat sink and nozzle as a model or design it yourself (which can be time consuming as well) so the proper variables can be found to render the part cooler for the setup.

After I designed my 3D Printers also in parametric manner, like the Ashtar K (Prusa i3-like) 380x300x300mm build volume or Ashtar C (Core XY) 380x400x380mm build volume, using this parametric approach for a Part Cooler as well, turned out quite successful too.

It makes sense to develop and design a parametric piece which

  • maintains a few constraints, a general form, a base functionality
  • requires a few variables to adapt certain customization, sometimes it makes sense to introduce a lot of variables, and while testing and adapting customized pieces, some variables may become constants and unforeseen variables become more important

It certainly requires expertise about the piece in order to discern the constraints from the variable aspects while still maintaining its base functionality.

That’s it.

PS: See Parametric Part Cooler project page for new developments.