Free CAD / CAM / CNC combination | OpenJSCAD + Kiri:Moto + Machinekit

855 views
Skip to first unread message

Jakob Flierl

unread,
Jun 21, 2016, 10:31:41 AM6/21/16
to Machinekit
I just milled some wood gears with the free CAD / CAM / CNC combination:


Here's a quick video of the CAD / CAM / CNC process:


What's your favourite CAD / CAM / CNC combination?

Mathias Giacomuzzi

unread,
Jun 21, 2016, 2:50:39 PM6/21/16
to Machinekit
Very Nice.


Dave Cole

unread,
Jun 21, 2016, 3:15:23 PM6/21/16
to machi...@googlegroups.com
This may have been brought up before, but Autocad's Fusion 360 solid modeling program can generate Gcode for LinuxCNC/Machinekit.
My newphew has a small Sherline CNC modeling lathe and mill and I put together some new controls for it a while back using LinuxCNC.
He recently visited and brought his machines with him and we set them up in my shop. 
We both downloaded the Fusion 360 software for the first time and ran it, and in less than a day he had created (with minimal help) a complete design complete with 3D rendering of the model and few designs for parts to run on his lathe. 
The next day we dumped the Gcode into LinuxCNC and the lathe was cutting parts. 
There is a post for LinuxCNC which is broken but there is also a post for Tormach's Pathpilot mill and lathe and that worked fine. 
My newphew is a near genius, so his results will not be typical.  He had never run any Cad/Cam software before so everything was new.  But I was really impressed by how easy the software is to use.
Autocad Fusion 360 is licensed software but they grant free licenses for startups and hobbyists.   The license is very generous IMO and I am sure it has thrown a big wrench into the 3D modeling design commercial marketplace.   The software is geared to be run when online but it also works fine offline as well and then resyncs when an internet connection is made.

Dave

On 6/21/2016 2:50 PM, Mathias Giacomuzzi wrote:
Very Nice.


--
website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups "Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+...@googlegroups.com.
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.



Avast logo

This email has been checked for viruses by Avast antivirus software.
www.avast.com


Andrew

unread,
Jun 21, 2016, 3:55:46 PM6/21/16
to Machinekit
I also use Fusion 360. Its CAM is basically Autodesk's HSMWorks without 5-axis machining.
It's pretty simple, it generates nice toolpaths and it has editable LinuxCNC/Machinekit/Pathpilot postprocessors.
Fusion 360 / HSMWorks is basically my CAM at the moment.

The only major problem... they won't support Linux. There's rumor that Autodesk is biased against Linux. No money there as they think.

Andrew

Daniel Rogge

unread,
Jun 21, 2016, 9:28:52 PM6/21/16
to Andrew, Machinekit

For those who like Fusion and don't enjoy Windows:


http://projectleopard.com/


Rogge

Mathias Giacomuzzi

unread,
Jun 23, 2016, 3:12:10 AM6/23/16
to Machinekit, pkm...@gmail.com, dro...@tormach.com

By signing up for the Project Leopard Beta you fully agree to the termsNDA and:

  1. You do not work for or represent a competitor of Autodesk
  2. You use CAD for work or study
  3. You will give us feedback on your experience in the appropriate forums
  4. You agree to receive future communications about Project Leopard & Autodesk Fusion 360

So that's really bad for a hobbyist.

 

Bas de Bruijn

unread,
Jun 23, 2016, 5:32:56 AM6/23/16
to Mathias Giacomuzzi, Machinekit, pkm...@gmail.com, dro...@tormach.com
Why is that bad for a hobbyist?

Mathias Giacomuzzi

unread,
Jun 23, 2016, 6:37:33 AM6/23/16
to Machinekit, eca...@gmail.com, pkm...@gmail.com, dro...@tormach.com
Point 2. 

You use CAD for work or study => but I will try it.

Andrew

unread,
Jun 23, 2016, 6:45:43 AM6/23/16
to Machinekit
Left my email there but nothing yet.
I guess it's Autodesk's Fusion in browser, right? Like Onshape?

Jakob Flierl

unread,
Jun 23, 2016, 7:24:10 AM6/23/16
to Machinekit
Yesterday I learned, that Kiri:Moto is well integrated as a free CAM app into http://onshape.com

I was in contact with the author of Kiri:Moto – he asked me if Machinekit is open-source. I sayed "yes" :-) , and we talked about integrating Kiri:Moto's https://github.com/stewartoallen/grid-print function into Machinekit. The idea is: from the Kiri:Moto web UI the ngc file gets sent to the grid-print daemon. The grid-print daemon runs an optional filter and forwards the modified G-Code to a running Machinekit instance.

I know axis-remote, https://gist.github.com/mhaberler/ba6030d75a67c113907b and https://github.com/badidea/MachinekitCLI , but don't know howto integrate this – Any ideas? It would be nice to have a queue function inside Machinekit similar to cancel(1),  lp(1),  lpq(1),  lprm(1),  lpstat(1).

Michael Haberler

unread,
Jun 23, 2016, 7:45:29 AM6/23/16
to Jakob Flierl, Machinekit
axis-remote is a one-off hack which only works with Axis, so I would not recommend that

in linuxcnc parlance, such a print dequeuer would be a "user interface" - with pretty much full control of the machine

my recommendation would be to start with the Python linuxcnc module: http://www.machinekit.io/docs/common/python-interface/ - I am a bit fuzzy what grid-print actually provides (node = terra incognita) and where the queuing function is

that said - a program which takes a g-code file and pushes it into the linuxcnc stack based on the python API should be straightforward

Jakob Flierl

unread,
Jun 23, 2016, 10:39:58 AM6/23/16
to Michael Haberler, Machinekit
> my recommendation would be to start with the Python linuxcnc module: http://www.machinekit.io/docs/common/python-interface/ - I am a bit fuzzy what grid-print actually provides (node = terra incognita) and where the queuing function is

Thank's for the pointer, Michael. I just wrote ngc-submit.py that is
supposed to submit an ngc file to a running Machinekit instance:
https://gist.github.com/6faf5592e3dfe01d05af8a2763b7a891

I can confirm, that the file gets loaded inside the interpreter:
https://gist.github.com/koppi/6faf5592e3dfe01d05af8a2763b7a891#file-ngc-submit-py-L36
but inside MachinekitClient the newly loaded ngc file does not show
up. Quick Video of the issue:
https://www.youtube.com/watch?v=29rAY7wHuu4

– Does MachinekitClient receive an event, when a new ngc file gets
loaded by an external program?

Michael Haberler

unread,
Jun 23, 2016, 11:17:50 AM6/23/16
to Jakob Flierl, Machinekit
that is kind of a grey zone - the NML stack does permit several clients to connect to a 'server' (task in this case), but the semantics are fuzzy and the feature is a rich source of bugs, see https://github.com/machinekit/machinekit/issues/114

so to nail this I suggest tracking the command/reply serials and make sure the clients use different ranges so collisions are avoided

that excluded, it could also be just a missing change detection and notification in mkwrapper (which is just the zeromq/protobuf adapter ontop of the linuxcnc Python module)



looking at https://github.com/machinekit/machinekit/blob/master/src/emc/usr_intf/axis/extensions/emcmodule.cc it seems all linuxcnc module clients start at the same serial (see next_serial()) and that is bound to create confusion; it might help to add a method to set the initial serial number

but then this is just a kludge around a NML design defect - this stuff has to go


-m

Jakob Flierl

unread,
Jun 23, 2016, 3:59:59 PM6/23/16
to Michael Haberler, Machinekit
IMO you have a distributed state machine and need to apply the
https://en.wikipedia.org/wiki/Paxos_(computer_science) distributed
consensus algorithm by Leslie Lamport in order for this to work
properly, but I'm not an expert in the field and maybe wrong.

Michael Haberler

unread,
Jun 23, 2016, 5:07:41 PM6/23/16
to Jakob Flierl, Machinekit
the solution is actually much simpler (the issue got a bit over the top and academic)

what is needed for uniqueness is:
- clients obtain unique serial ranges from whomever they are requesting services from (in this case - task)
- if a range is used up, a new one needs to be retrieved
- server side keeps track of ranges (boils down to the complex task of managing a single integer ;)

As such, it "just needs to be done" including fixup of any fallout.

Jakob Flierl

unread,
Jun 23, 2016, 6:22:11 PM6/23/16
to Michael Haberler, Machinekit
https://github.com/willemt/ticketd is a C implementation of a
distributed durable unique 64bit ID server on top of
https://github.com/willemt/raft which has it's theoretical roots on
Paxos but is more practical for implementation ( – most Paxos protocol
implementations in fact look more similar to the
https://en.wikipedia.org/wiki/Raft_(computer_science) protocol).

This could be useful, if you want to synchronize IDs among tasks of
two distributed Machinekit instances. But for the simple use-case
above, the techinque with allocating serial ranges is probably a good
choice as a trade-off between implementation complexity and feature
completeness.

Michael Haberler

unread,
Jun 24, 2016, 2:13:16 AM6/24/16
to Jakob Flierl, Machinekit

> Am 24.06.2016 um 00:21 schrieb Jakob Flierl <jakob....@gmail.com>:
>
> https://github.com/willemt/ticketd is a C implementation of a


recorded for posteriority ;) https://github.com/machinekit/machinekit/issues/114#issuecomment-228265426

excellent find!

I gave a heads-up to the zeroMQ folks as this would be an obvious and very generic zeroMQ application

-m

matthew venn

unread,
Jul 27, 2016, 10:41:17 AM7/27/16
to Machinekit
Another +1 for fusion360 for cad and cam.
Reply all
Reply to author
Forward
0 new messages