,

banner perso

Some links about me. Many of my 3D designs are free. I also post on Google+ and in another blog, oz4.us
review (32) general (26) issue (16) mechanical (16) replacement (14) software (13) addon (12) bowden tube (10) business (10) consumables (10) heat (10) feeder (8) hot end (8) weird (7) motor (6) off-topic (6) trick (6) electric (4) bed (3) cnc (2)
Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Sunday, May 7, 2017

Replacing LinuxCNC with a Smoothieboard for CNC milling. Not as easy as for 3D printing!

I was running LinuxCNC for the last years and I wanted a smaller setup, with room for improvement. Since I had a Smoothieboard around, which is a very capable 32 bit ARM controller for 3D printers, I thought it would be a good idea to give it a try.
A bulky, obsolete but usual milling setup with a PC running LinuxCNC (a parallel-port is required),
versus a Pipo X8 which is interfaced to a Smoothieboard (hidden in the CNC driving box itself).
But the move is not a piece of cake when you expect a drop-in replacement. In fact, I must admit this board is somehow hostile as a firmware for milling in its current status (Smoothieware), even though the hardware is fully capable (Smoothieboard). In this post, I wanted to share my experience so far. Sure I could have asked for help (and yes, I did RTFM eventually). But it takes time, it will not solve the issues below and I think most people would have done like me: just try, then investigate.

With time, I think it may be sorted out, probably with help from others if they are welcomed (and hopefully without breaking more mill bits). But my expectation here was to benefit from Smoothie as much as one can benefit from it for 3D printers. Even though my current overall hardware setup is much convenient and lighter, the milling process ends up requiring more manual and careful operations than before. More annoyingly, I would end up having to tweak and modify an existing CAM tool just to handle the specific "milling behaviors" of this board. I would think that the reciprocal would benefit everybody though.

Saturday, May 16, 2015

Messy code, branches with a lack of guidelines and comments are killing Marlin!

Marlin no more exists as a single, readable, common branch!

Where shall I go now?

In a previous post, I described a tiny contribution I made to the 3D printer firmware Marlin. The deal was to help with the calibration of a Delta printer thanks to a manual Z-probe (calibration really is the drawback of Delta printers, due to their weird geometry as compared to easier cartesian X-Y bots like the usual printers). It was already painful for such a small, one-time improvement to the code source, and given the invested time, I tried to make it broader by implementing multi-line comments (and to learn about git by the way).
http://www.dailymotion.com/video/x2gp98t_hal-fixing-a-light-bulb_fun


This is how I feel when I want to code something in Marlin!
(Malcom in the Middle, fixing a light bulb)

So I worked in mainstream Marlin. My idea was that it could benefit to existing variants of Marlin as well, when they decide to get changes from the "official" parent. But it does not work so well in reality.

This experience unveiled another, deeper, issue related to the many Marlin variants, and I think it is due to the fundamental way github works, in addition to git own complexity. In my opinion, Marlin is just dying because of this, together with the limits of the Arduino platform.


Tuesday, January 27, 2015

Contributing to projects hosted on github: a step by step howto, and an illustration with Marlin (3D printer firmware).

Git is powerful... and very painful the first time! / Github contribution howto / Tweaking Marlin for better 3D printer menus.

Git mess, only partially resumed by Oliver Steele.
Indeed, the upstream higher repository is not shown here,
as seen on this other bigger, clean and useful cheat sheet.
I eventually wrote a feature to fix something that annoyed me for years: allow multi-line commands in the LCD menus of Marlin, a very well known firmware for 3D printer.

I needed it for my Delta printer: these printer do require precise calibration, often with a sequence of gcode commands (check the end of this post for more and why I wanted these to be in my menus and not as initialization files on all my SD cards nor on a PC over a USB cable).

Now, Marlin is hosted on github, a community front end to many other open source projects. Actually, the linux kernel itself is developed with git so it works, for sure.

I often tried to use github, but I never went past a simple git clone of a repository. It was still better than to download a zip archive, because you can easily get the new stuff with a git pull. But here and partially out of curiosity, I wanted to try and contribute to a project at the source.

Now... what a huge and painful procedure just to give a hand! Seriously, it is mind boggling how much crap and megabytes need to be handled just to help and submit a few dozen f*king lines of code to an opensource project hosted on github. This is too bad since I am sure many programmers would be glad to give a hand to project they stumble upon (like me, often), but without this need to become administrators of complex and shared projects themselves!

This article is all about posting and contributing to a project hosted on github. You'll get the calibration g-code line I used at the end of the post if you really ask yourself.

Sunday, November 23, 2014

How to use Openscad (4): children and advanced topics

Part 4/5: children, factorized placement and chained hulls

Yes, it was made with Openscad and it is parametric!
(extreme collaborative work, picture by N.Goodger)
Previously in this tutorial for the Openscad CAD software, we talked only about modules that behaved as shapes.


A powerful and often ignored feature of Openscad is that modules can also behave as if they were operators, exactly like the translate()or color() operators. They do not create shapes on their own, but they modify the subsequent commands.

In Openscad, it is possible through the use of children. But first, let us create and discuss a bit about a common-case example.



Saturday, November 22, 2014

How to use Openscad (3): iterations, extrusions and more modularity!

Part 3/5: iteration, extrusion and useful parametrized CSG techniques

Repeating shapes

As we saw in the previous article, repeating a shape by copy/pasting its Openscad definition is a bad practice. It increases the risk of mistakes just because of the slight changes that have to be made on each of the copies. And any "regularity" should be factorized: let the computer do our work!


The former way we built a (partially) rounded cube. Four copy/pastes? Boo!

See how the four columns really are all the same cylinder, where only the position changes? This is where we can and we should use loops instead. And once again there are different ways to do so.


Thursday, September 11, 2014

How to use Openscad (2): variables and modules for parametric designs

Part 2/5: Variable and parametric design

The previous part addressed the basics of Openscad. It relied mostly on "immediate values": we were providing dimensions as explicit numbers. If you want to tweak the design dimensions, then you need to parse the scad source code and fix the numbers all everywhere.

In fact "hard coded" numbers must be avoided. As opposed to "static" designs, parametric designs give the flexibility to tune the numbers very efficiently at one place only. The good point is that Openscad is one of the best tool to do so.

A larger mug by using the scale operator (from the "basic" tutorial).
This is still not parametric, as numbers are hard-coded (a bad practice).
See how the numbers in our mug design above depends on each other? If the cube is to be made taller for any reason, then the intersecting sphere and hollow cylinder must be tuned accordingly in the source code. And this is exactly something a computer can do better than us.

So let us first convert this design to a parametric version, i.e. a design that can be tweaked with a small set of parameters that all have a clear role (width, height and so).


How to use Openscad (1), tricks and tips to design a parametric 3D object

Part 1/5: Introduction to constructive solid geometry with Openscad

Some technical and non-technical people keep asking me how I create new designs. As often, after a few personal replies, I end up heading to the blog to share the answer as they keep asking for more.

Also, I long wanted to write a pragmatic and step-by-step introduction, howto and tutorial to Openscad. The idea is to help people even with no programming skills (mostly in this part) and to bring newcomers to a point that they can design their own 3D objects (part two). Interestingly, Vicariously, Openscad is very interesting to get a glimpse at what programming is because you get an immediate, visual feedback of your actions (even my mother, a former history teacher, was eventually able to get a clue at what my job was about). Once understood these concepts, it may be much easier to move to other languages.

Now, if only a few readers become "designers" by reading this I will be quite happy. If some people realize that programming is not that obscure I will be happy also. Meanwhile, I will have given a detailed answer to my friends and contacts!

A non-obvious GoPro mount of mine, that is fully customizable thanks to Openscad.
It looks complex, but it is still exclusively made of spheres, cylinders, and cubes with a few basic "joints".
A forthcoming last part will deal with the complex features of Openscad. This one is for people that either learn fast or for those that are already proficient with the usual features of Openscad.
  1. Introduction to constructive solid geometry with OpenSCAD
  2. Variables and modules for parametric designs
  3. Iteration, extrusion and useful parametrized CSG techniques
  4. Children, factorized placement and chained hulls

So first, what is Openscad? Within the CAD family, it is a 3D modeler: a software that helps you to create 3D objects. There are many such tools, but this one is used extensively in the 3D printing community, not only because it is free but because is it really efficient for some kind of objects.

It may or may not suit your mind, but with time I am able to "see" the shape I describe, not as text but directly as shapes. I guess it depends on people, but I am sure there are people that are not programmers that can think alike. And if you are already a programmer with no industrial goal then you really should give it a try. It will be a breeze to use up to a productive level, especially if you do not want to invest time in a new and hellish interactive user interface!

The official manual is OK but it does not really work as an introduction. The navigation is also sometimes difficult to the point google is more useful. There is a nice raw cheat sheet also but it has no link to the respective functions (what a pity!) (update: it does now!). In any case, these fail to help to learn Openscad quickly in my humble opinion.


Tuesday, January 28, 2014

Fixing Cura broken linux packages (slicing fails silently)

How to build Cura's slicer "SteamEngine" from scratch

Cura releases for Linux are often broken, probably because the author better implements features than packages (which is a good thing!) and because supporting Windows and MacOS is already painful enough ;)

One of the last issues kept happening due to the linux package made only for 64 bit architectures, which is stated nowhere and not checked during installation. So slicing cannot run when your PC is running a 32 bit linux OS. The easiest fix is to rebuild the slicer, which is a piece of cake compared to 3D printing!

Update (jan, 2014): full instructions on how to build Cura from scratch (see the last chapter).


Friday, January 3, 2014

Fixes and howto for the DIY Fabscan 3D scanner

The fabscan is cheap... but it can be made to work.
For my curiosity, I bought a DIY "Fabscan" to try scanning small objects cheaply.

Update (2016): this post is very old. Many bugs were fixed since and I was told most of the improvements I list below were made in between. So make sure to get the latest software and doc from the official website, even before reading. And better even: the project is still active!

And it proved to be cheap, in all the possible ways.
In my opinion, the most annoying thing was the totally unusuable FabScan Ubuntu Live CD software.

This post is mostly about how to get it to produce an STL with the Ubuntu Live USB distribution specifically made for the fabscan.








Tuesday, February 12, 2013

How to run a (Cura) Python plugin on STL files without Cura?


Here is a geekier post about how to tweak Cura plugins and convert them to standalone Python scripts that post-process your g-code without Cura nor Skeinforge.

After I designed and used my wood gradient plugin, people naturally started to ask for the source code. I was a bit lazy first, because it was made for Cura 12.08: the patch I released was not very convenient, and Cura had evolved with a better and simpler plugin system, and included my own plugin.

Then, I got the time to fix it. Here is how I converted it to a standalone Python script that runs on its own, asking nothing to nobody.

Tuesday, October 30, 2012

How to write a Cura / Skeinforge plugin

First, do you really really want to write a Skeinforge plugin ?


Preliminary notes: some sites such as wired link to this post, but you may like to read my less technical review about temperature gradients applied to wood first. Also, you could check this post if you just want to try it.

Now, read on if you are a programmer and want to write your own plugin for Skeinforge. Note also that Cura no more uses Skeinforge as it has a much easier plugin system (that cannot do as much as what can be done with Skeinforge though).

Indeed and contrary to what was being done so far, I did not want to manually insert the M104 temperatures changes in the file sent to the printer, nor stay close to the ulticontroller. So I designed a plugin for the Cura / Skeinforge software pair.

Since that was not trivial, I document the procedure here.


Thursday, October 25, 2012

Review : settings for Cura (3D printing front end and slicer)

What are the most important settings in Cura ?

I switched to Cura as the unique front end to print with my 3D printer. This excellent software from Daid is handling all the printing work for you: displaying and scaling the objects, slicing them into layers, sending them to the printer. It will not help you design or modify your object though.


This is called stringing (overfeeding, bad settings)
but it gives an usable part and an interesting piece of art in the end

Tuesday, October 23, 2012

Review : which software for 3D printers?

A short review of 3D-printing softwares


Example: Cura as a smart front end to show, scale, slice and print