Tuesday, December 1, 2009

Flyout toolbars improvement

Flyout toolbars working OK with Windows, but not quite right with Ubuntu.

Sunday, November 29, 2009

OpenGL tree view

I made a tree view drawn with OpenGL for HeeksCAD.
This makes it quicker and it doesn't collapse each time something changes.

Thursday, November 19, 2009

open source tractor

Marcin asks "I was considering Blender. Can HeeksCAD do better?"

I haven't tried Blender for a while.
I like to think that HeeksCAD is easier to use, but that might just be because I wrote it.
Here is a video of me playing with HeeksCAD a few minutes ago.
HeeksCAD has plenty of bugs, but it is OK for making some solid models.
It doesn't do anything nice like fitting solids together.
Save the file every time you do something, preferably with a different file name each time, in case HeeksCAD crashes.


Saturday, November 14, 2009

Splines for pocketing

Sketches with splines work for pocketing operation too, now.

Spline Machining

You can now profile sketches with splines in HeeksCAD ( mostly from SVG file ), without needing to split them into little lines. They are converted into arcs for the python script, but they remain as splines in HeeksCAD. This is in the source code now; http://code.google.com/p/heekscad/source/browse/trunk/src/HSpline.cpp#417 This was inspired by Jeff Epler's biarc code, available here http://bitbucket.org/jst/inkscape-gcode/

Wednesday, October 21, 2009


I added an option "Use old solid fuse" and made it the default. When using the old method, it fixes the problem with unwanted edges.

I found this here http://www.opencascade.org/org/forum/thread_13599/
see 'Use Old Boolean Operations “BRepAlgo_Fuse” can avoid coplanar faces.'

However, apparently the new method is better in other ways, so I have made an option.

Wednesday, September 30, 2009

OCC offset

After "geo" from #cam mentioned using Open CASCADE's Test Harness and gave me an example, I produced these offsets, which look promising for pocketing with a permissive license. It seemed to produce the offsets very fast.

Wednesday, September 23, 2009

flyout toolbars again

I changed the flyout toolbars to use a popup window with a toolbar in it, instead of the popup menu I was using before. The tooltips don't seem to be working on the Windows version, though.

Graduated Background

I added a graduated background.
Feel free to suggest some better default colors.
The default is for the color to change from top to bottom, but I have added modes for single color, left to right shaded and four corner color setting.

Thursday, September 17, 2009

Flyout toolbars

I've added fly-outs menu to toolbars in HeeksCAD. Currently you have to press the little arrow button to get the popup menu. Then you have to click again on the menu item. I want it to work with a click and drag, rather than two clicks. Also, I want to get rid of the little arrow button and have click and drag work on the main toolbar button. Also, I want the button on the toolbar to change to the last used tool from the drop-down. I can't work out how to change the tool bitmap, though.

Thursday, August 13, 2009


As an owner of a Google Code project, I can set up Google Analytics and see who is looking at the web site. I have done this for HeeksCAD.
You can look at graphs and pie-charts. The coolest thing is the map with the visits shown on it.

Thursday, July 16, 2009

Necklace Disc

I spent the whole day making a necklace thing, made from stainless steel. My girlfriend has a necklace which is made from a piece of shell. It is a circle with a circular hole to put the string through. I measured it and drew it up in HeeksCNC. I added a couple of extra holes to lighten it a bit. I drew some text in Inkscape, wrapped around a curve. I got a bit of 3mm stainless steel from my Dad.
I made two NC files, one for the text and one for the circles.
I set the feedrates to 50.
I broke the tip of my first engraving tool.
I used another stronger engraving tool.
This did the text OK ( at 0.1mm deep ).
I did the text again, another 0.1mm deeper.
I changed the tool to the 3mm slot drill.
Again feedrates at 50. Depth of cut about 0.52mm ( 6 cuts down to 3.1mm deep )
On feeding down, it broke the tool.
I reprogrammed it with feedrates at 10 and bought a new cutter from my dad.
This worked better, but it was too slow to stand and watch. I changed the horizontal feedrate to 25, leaving the vertical feedrate at 10. Later I upped the horizontal feedrate to 40 and it was still OK. Even so, with 6 depths of cut for each profile, it took at least an hour to cut, with me standing there pouring coolant from a jug.

It hadn't cut all the way through, instead it had pushed the steel down into the wood in a bulge. I had to cut through this with a knife.
I filed the sharp edges and sanded it with "Wet and Dry".
The default vertical feedrate should be lower than the horizontal feedrate.
The profile operation, in HeeksCNC, is not remembering the previously entered feedrates.

Wednesday, July 1, 2009

hpgl in HeeksCNC

I have started making post-processors for hpgl plotters, for HeeksCNC, after a request from someone called Gary, who has some engraving machines.
In the picture is the toolpath from the sample file that Gary gave me.
I made it so that the machine is now chosen from a drop-down in the program properties.

Tuesday, June 23, 2009


I made a Code::Blocks project file for HeeksCAD.
I used this on my Dell Inspiron 530 running Ubuntu 9.04.
It works for me. I can edit a file, press "Build" and it only builds the file it needs to.
I can do "Find Declaration of" or "Find Implementation of".
I don't seem to be able to add breakpoints while it's running. I seem to have to add them before I start running.

Monday, June 15, 2009


David Nicholls has added drilling to HeeksCNC.

Monday, June 8, 2009

Pictures on Menus

I have added pictures to menus.
This is using wxMenuItem::SetBitmap (Windows and GTK+ only).
I am hoping to add fly-out toolbars, sometime, but I don't know how to yet.

Monday, May 11, 2009

HeeksCAD Ubuntu installation

Installing HeeksCAD on Ubuntu is now easy.

You need Ubuntu 8.10 or later.
I tested it with Ubuntu 9.04.
You follow the instructions on the wiki on the HeeksCAD project page, http://code.google.com/p/heekscad/wiki/InstallingOnUbuntu, you only need the one called heekscad_0.7.0-svn0_i386.deb, and it just works. It even works in German, if you change Ubuntu's language to German!

Thursday, April 30, 2009


jonpry has made HeeksPython http://code.google.com/p/heekspython/
I had some trouble getting it to build, but now I have it running.
It adds a Python console window to HeeksCAD, which will allow us to do things more interesting than we can imagine. The first thing I did was make some lines in a pretty pattern.
This is only for Windows at the moment and isn't available in the current HeeksCAD 0.7.0 installation.

Friday, April 10, 2009

Phone Pocketing

My youngest daughter asked me to engrave her name on my phone, because her sister's name is already on there. I took the oportunity to use the pocketing operation. It was quite easy to use and I'm pleased with the result.
I made her name in Inkscape and opened it in HeeksCNC as a SVG file.
I got the heart shape as a SVG file from Wikipedia ( the page about love ) and imported it into HeeksCNC.
I drew the rectangle after measuring how much space there was on my phone.
I clamped a lump of wood in my machine's vice and machined it flat with a big tool, just using jog moves. I superglued the flexible battery cover from my phone onto the wood to make sure it was flat.

Monday, March 30, 2009


Perttu Ahola, who has contributed to HeeksCNC, has made some free software for stripboard/veroboard design called jukumagic, http://code.google.com/p/jukumagic/. He has copied some of my code from HeeksCAD. It looks like a good start.

Friday, March 27, 2009

solid datum arrows

A work colleague asked me about how we make sure the little "origin" appears on top of everything else, so I did some experiments by adding a solid datum with solid arrows and little X, Y, Z text in HeeksCAD.

Tuesday, March 10, 2009

bezier triangle meshes

I have made a separate add-in to HeeksCAD called HeeksArt.
It allows you to stretch some triangle patches using grippers.
You can split a triangle into two triangles to make more of them.
see http://code.google.com/p/heeksart/

Wednesday, March 4, 2009

Real machining again

celeron55 did some milling of wood with his homemade machine, using HeeksCNC software, which prompted me to do some machining on my machine. It was good being able to have my little Dell Mini 9 computer near to the machine, so that I could remember where the X0 Y0 position is in relation to the drawing. My machine requires a M3 code on the spindle speed line, otherwise the spindle doesn't start. It was a good thing I did a dry run 5mm above the material, first. See the video on http://www.youtube.com/watch?v=rH5VNbBSR-E

HeeksCNC Windows download

I made an installation HeeksCNC 0.6.0.exe, which also has Python2.5 with it, so that anyone can try it out. It's got loads of bugs in it, but you can make some toolpath and NC code.

Monday, March 2, 2009

sketch as boundary for adaptive roughing

You can now use a sketch as a boundary for adaptive roughing. I have hidden the cuboid that is under this sketch, because the toolpath was inside it. Thanks to celeron55.

Sunday, March 1, 2009

Profile a section of a sketch

I can now profile part of a sketch by specifying the start and end points in the profile operation's properties.
It has been a good weekend for HeeksCNC. Someone called celeron55 joined #cam chat channel on FreeNode and did lot of good work on HeeksCNC, including fixing the German decimal point problem and adding the Adaptive Roughing operation to the tree . Also "fenn" added a lot of easy to repeat bugs to the HeeksCAD bug list http://code.google.com/p/heekscad/issues/list

Friday, February 27, 2009

toroidal cutter - problems

celeron55 has done some work on zigzag operation. Now I have tried a zigzag operation with a toroidal cutter and it seems to have some problems, click on the picture for full size

Thursday, February 26, 2009

Pocketing and Profiling

I can pocket and profile a shape.
Profiling operation will start at the start of the shape. So, currently I need to draw the shape starting from the right place. It would be better if the profiling operation had start and end points, optionally.

Monday, February 23, 2009


My 6-year-old daughter asked me to carve a kitten out of wood.
I had some bits of an old apple tree from the top of the garden.
The chainsawing only took about 1.5 hours, the finishing could take as long as I'm prepared to give it.

Sunday, February 22, 2009

Island machining

To do islands, I have to make sure I draw the islands going the other way to the outside.
These examples all have outside clockwise, inside anti-clockwise.
There seems to be problems sometimes with using a rounding factor of 1.5 ( sharp corners for right angles ). Ignore all the red lines, I still have work to do, linking the paths together.

Friday, February 20, 2009

Arc output

I have made the "area" code convert the little lines back to arcs, so the NC code now has arc moves in it.

Home made Miller

This machine was originally built by my Dad, when he was younger than I am now.
We tried to make it CNC. I got Dad to make the gearboxes for the stepper motors. Later, I tried servo motors ( slot-car motors ). I was always being too cheap, using motors that were too small. I never had it reliably working. It is still useful as a manual miller, like it always was. The weights are to remove backlash.

Tuesday, February 10, 2009

Dell Mini 9

I bought a Mini 9 from Dell for £279, which comes with Ubuntu 8.04
HeeksCAD works well on it.

The Open CASCADE package from http://www.opennovation.org/ubuntu/ wouldn't download.
It said Failed to fetch http://www.opennovation.org/ubuntu/dists/hardy/Release
Unable to find expected entry main/binary-lpia/Packages in
Meta-index file (malformed Release file)
So, I had to download the Open CASCADE source code and build it. It took over 6 hours to build.
But it worked.

Saturday, February 7, 2009

HeeksCNC structure

( Click on picture to make it bigger )
#cam guys are having trouble with plugins again, for HeeksCNC.
The only plugin needed for HeeksCAD is the HeeksCNC dll ( or .so file ).
HeeksCNC adds the "Program", "Operations", "Profile", "Pocket", "ZigZag", "NC Code" object types to HeeksCAD. It uses these to create a script and then copies that script to a Python file "post.py". This file is a stand-alone Python file, that can be run outside HeeksCNC ( for testing, for example ), but it will need various Python modules to do this.
kurve.so, actp.so and area.so, are Python modules.
They should not be added as plugins to HeeksCAD, they are not HeeksCAD plugins.
They just need to be built and put in the right place.
At the moment, post.py expects kurve.so and area.so to be copied to HeeksCAD\HeeksCNC.
If you use the ZigZag operation, it creates script which expects the pycam stuff to be in a structure like this: HeeksCAD\HeeksCNC\PyCam\trunk\pycam\Geometry

When post.py is run, it should create the nc file ( test.tap for example ).

When post.py has been run from the "G0" button in HeeksCNC's program window, it then calls nc/iso_read.py to make an xml file ( test.tap.nc.xml for example ) which contains a list of NC code blocks and their associated toolpath. This is then imported into HeeksCNC so that it can display the NC code and the toolpath. I hope this makes things clearer.

Friday, February 6, 2009

arc pocketing

I've made arc input work for area clearance. The output is still lots of little lines, where it looks like arcs, though. The toolpath is calculated in about 1 second.

area clearance Ubuntu

It builds for Linux too now, although with loads of warnings. Here it is working in HeeksCNC.
The default values cause 90 degree or blunter corners to be offset with lines. I'll have to make this an option in my CArea::Offset function.

area clearance

I have been trying to work out how to use the polygon boolean operations from http://boolean.klaasholwerda.nl/bool.html
It took me a while to see that the Offset function is actually called "Correction".
There are comments that tell me that, but I wasn't reading the comments.

I can now almost do area clearance machining.
I have made a class CArea to make these functions work the way I expect, it is not finished yet.
I have made a Python module.

It have added a Google Code project called libarea http://code.google.com/p/libarea/
I have added my latest work to it.

Thursday, February 5, 2009

I have added a load of functions to the Python module of libactp, to set the parameters and set the outside boundary. ( see the wiki page http://code.google.com/p/libactp/wiki/PythonReference )

Wednesday, February 4, 2009

nine cones

This example work OK now the start point is in the right place.

adaptive pocketing

It works OK, if you define the solid in the right way.

trying to do pocketing

DanielFalck from #cam has found where to edit the start point, so we hope to do pocketing.
In this example, I simply made a cuboid 20x20x20. In CoreRoughGeneration::FindGoStart(), I changed a0 and a1 to be
P2 a0(10.0, 10.0);
P2 a1(12.0, 10.0);
This is this result ( click on picture ). It looks like the algorithm doesn't car if it goes outside the boundary, so long as everything inside the boundary is cleared.

Sunday, February 1, 2009

adaptive roughin in Linux

I made a Linux build for the adaptive roughing.
Also I added some options in HeeksCNC for NC code colours.
I made nine cones and tried adaptive roughing on them.
It doesn't do the inside region.
Should it?

Friday, January 30, 2009


I grouted the tiles in my bathroom. The next step will be to put the toilet and sink back in.

adaptive roughing

I got adaptive roughing to work in HeeksCNC for Windows using the Python module of libactp ( http://code.google.com/p/libactp/ ). I need to make a Python function that does the toolpath extracting loops instead of having the loop in each machining program, then I need a tree icon.

Thursday, January 22, 2009

Profile operation

I now have profile operation working.
Draw some sketches and then press the Profile button on the toolbar in the "Program" window.
Edit the properties of the operation in the "Properties" window. Then press the "Python" button to make the text program ( I will skip this step eventually ), then press the "Post-Process" button to make the NC code and see the toolpath. The operation has been added in the "Objects" window in the tree under "Operations" which is under "Program".