I am making a free ( permissive license ) CAD package using wxWidgets and Open CASCADE for Windows. Download and try my latest version HeeksCAD 0.3.0 ( it's not finished yet ) here http://code.google.com/p/heekscad/downloads/list

trillion's picture

It's pretty works, but The package corrupted in my system. Can I download the sourcecode?

Dan Heeks's picture

Yes the source code is on my Google Code project, you need to use SVN.

memscad's picture

It's really a good job! Have you use ocaf technologies to manage the modeling processes?

Dan Heeks's picture

Thanks. No, I don't know what OCAF is.
What is OCAF? I have read about it now. "OCAF helps to implement such functions as undo and redo, copy, cut and paste, storage and retrieval of documents"
"undo, redo." I do this by not deleting the solids, I just don't show them, if my objects are deleted. I have my own undo history.
"storage and retrieval of documents". I do this by writing a STEP file and then putting the text in my "heeks" file ( an XML file )
"copy, cut and paste". same as "storage and retrieval of documents"

William Jones's picture

I am aware of your project, although I have yet to download it. OCAF is far more that a means to supply undo/redo. OCAF is what should be used to develop a true feature based parametric modeler. Such is something truly needed by the open source community.

Dan Heeks's picture

I'll have a better look at it. What's the best documentation for it? Is there an example I can copy?

Torsten Sadowski's picture


the best point to start is


But the new Object Oriented extensions in 6.3 sound really interesting. Just look into the release notes and in the OCC documentation.

The biggest problem is the design of a useful logical document structure.

Cheers, Torsten

Svetlozar Kostadinov's picture

It's very pretty. Congratulations! What kind of visualization engine you use and how do you render the OCC data structures?


Dan Heeks's picture

Thank you. wxWidgets makes an OpenGL window. I use code I copied from the Open CASCADE source code and from this forum to do the OpenGL commands.
See the CFace::glCommands in this file of mine, http://code.google.com/p/heekscad/source/browse/trunk/src/Face.cpp
This is mostly copied from AIS_TexturedShape::Compute in C:\OpenCASCADE6.3.0\ros\src\AIS\AIS_TexturedShape.cxx

Paul Jimenez's picture

I wanted to take a look at your application, but, when it finished downloading, Norman antivirus detected a Trojan and removed it right away.

I'll just try to build it from SVN...

Dan Heeks's picture

I'm sorry to hear your antivirus software thought it was a Trojan. It downloads OK on my work computer ( uses Avira antivirus ). Good luck building the source code. Let me know if you have a problem. Maybe you can download the installation on a different computer?

Paul Jimenez's picture

I was able to build it, after downgrading the solution to VS2005 and compiling tinyXML (also downgrading the solution file to VS2005). However, it crashes on start (I don't even see the interface).

I decided to download it again, and this time Norman didn't complain. The trojan magically disappeared. I played a bit with it, and it's nice to see those little details that you achieved using OCC. However, now the application crashed on exit, but at least I could give it a try.

Dan Heeks's picture

Paul, I have now added my tinyxml2005.lib to the source code to make this easier.
I build it on VS2005 on my work computer and VS2008 Express ( it is free ) on my own computer.
Do you have the call stack?
Thanks for trying it. I know about it crashing on exit. I have added a bug report to my issue list, already ( number 26 http://code.google.com/p/heekscad/issues/list ).
Dan. danheeks@gmail.com

Paul Jimenez's picture

Sorry, I don't have a call stack (I ate them all).

I'll probably give it another try and see if I can get a call stack for you.

Jun WANG's picture

That is amazing. Would you please send me your sourcecode for studying. Thank you very much. email: junwang@ucdavis.edu

Dan Heeks's picture

Thanks. It is a Google Code project. You need SVN. http://code.google.com/p/heekscad/source/checkout. Dan. danheeks@gmail.com

P Dolbey's picture



I've downloaded and built from svn - and linked to wxWidgets 2.8.9.

The reason for the crash on exit is that the call "glFontDestroy(&m_gl_font);" in OnExit ends up calling "free(Font->Char);". However this memory has not been alloctaed as you haven't called the corresponding malloc that's in glFontCreate (neither breakpoint or statics code analysis showed this happening).

Anyway commenting out the "glFontDestroy(&m_gl_font);" fixes for now.

My next job - convert to Qt??? ;)


Dan Heeks's picture

Thanks Pete,
I have now fixed this problem, thanks for your contribution.
It's not the problem in the installation, though, it's too recent.
There will be many problems yet, while I am in a hurry to add functionality.

>> convert to Qt???
I have avoided Qt, because the free version of Qt license is GPL. This means that I wouldn't be allowed to use HeeksCAD as the basis of a commercial application.
The tools I have used ( wxWidgets, Open CASCADE, glFont ) all have permissive licenses, so anyone can make commercial add-ins for HeeksCAD, or adapt HeeksCAD into a commercial application.

P Dolbey's picture

If only Qt's license was that simple - it becomes complicated with the Trolltech / Nokia GPL Exceptions, see http://doc.trolltech.com/snapshot/license-gpl-exceptions.html .

I've interpreted the exception to say that QtOPENCASCADE can be released on an LGPL license, so that it can be incorporated into commercial code (that was developed under Qt commercial license) without forcing the entire app to become GPL.

But I'm not a lawyer...


Dan Heeks's picture

Yes, fine, if you've already paid for Qt commercial license.
I'm quite happy for you to use my source code to make a Qt version of it, but let me know if you fix my bugs.

Dan Heeks's picture

HeeksCAD works on Linux too. http://code.google.com/p/heekscad/
I am also making open source CAM add-on to HeeksCAD:
HeeksCNC http://code.google.com/p/heekscnc/

Pierre Juillard's picture

Hi Daniel!

Actually, I have the feeling that HeeksCAD follows a similar path to FreeCAD (http://free-cad.sourceforge.net/). There is some python in your code, it is based on OCC, and previously in the thread has even been discussed Qt.

Wouldn't it be interesting to consider a collaborative work, or why not, even a kind of merging between both projects? It may boost the developments, and could lead to a greater open source CAD software!
(FreeCAD is actually looking for a new name. That could be an excellent occasion!)

Well, that is just a suggestion. I do not wish to bother anyone, and am actually not a member of the developer team of FreeCAD. I have thus no real right to speak.
But as a tester/user, I think that both projects may really benefit from a close team work!



Robert Hill's picture

Hi Dan,

I've recently downloaded the latest version. Looks like you've added quite a bit of functionality. Good job. I have a couple of questions if you don't mind answering them.

1) Have you incorporated OCAF into the application? If not, what mechanism do you use to ID parts?

2) I notice your coordinate system icons remain at essentially a constant scale when zooming in or out. How did you accomplish that?

Thanks in advance for any replies. I appreciate it.

Best regards, R. Hill

Dan Heeks's picture

1) No, I don't use OCAF. But faces and edges are always made in the same order, so I save separate data in my XML file and map them back to faces and edges when I load my file.

2) constant scale when zooming in or out: I have a "pixel_scale" variable, so I can do glScaled(s, s, s) before drawing my coordinate system.

Sorry for late reply. HeeksCAD questions can be asked here: http://groups.google.com/group/heekscad-devel ( but you have to register to log in ). Or email me at danheeks@gmail.com

jeff shanab's picture

Thanks for this effort. I have been wanting for years to combine WxWidgits and Opencascade into an opensource 3D parametric modeler. (OpenSolids).
It built on my amd64 but has some linking issues.
HeeksCAD: Symbol `_ZTV16Standard_Failure' has different size in shared
object, consider re-linking
...and 6 more

For other Gentoo'ers.
I installed Opencascade-6.3-r2
svn co heekscad
cd heekscad-read-only/src
edit the Makefile changing $CASROOT/../inc ---> $CASROOT/inc

jeff shanab's picture

Follow up.
Move to 32 bit Gentoo that is fully updated as of 4/18/2010 and it builds,installs and runs with only the single change in the makefile :
(after emerging opencasade 6.3 and wxGTK and eselecting wxGTK-2.8)
svn co ...
cd heekscad-read-only/src
vi Makefile
change $CASROOT/../inc to $CASROOT/inc
make install

jeff shanab's picture

The new svn up to #1240 eliminates the need for the previous note.

The linking errors I had about relinking turned out to be an opencascade problem.

Old versions of opne cascade put libs in /usr/lib, newer versions uses /usr/local/lib and the most recent $CASROOT/ros/lin/lib

The other dirs are still required for normal operation and early package management didn't clean them out. Manually removing libraries and regenerating the ldcache and heekscad is running on amd64 and Gentoo.

make clean mentioned in ubuntu wiki IS REQUIRED.
.o files have been checked in and make gets confused and breaks build if you don't.

Yves Masquelier's picture


I am new on this forum, using some 3D cad softwares, 3D printers and CNC.

I am using Heekscad/Heekscnc V1.1 for at least one year without trouble, adding python modules (interfacing for GRBL) to help people of the model club I am a member tu use CNC. Today I encounter some trouble because Heekscad fall in a endless loop while making a sketch from a face (as well as an edge) of an oval (as well as an ellipse) imported as a STEP file (see attachement).

Can somebody help ?

Best regards, Yves.

Dan Heeks's picture

Are you using my Windows download?

It works ok for me ( v1.1 ). I tried all of the faces, one at a time. I also tried one edge.

Has the software locked? ( can you rotate the view ).

I have attached the file with sketches made. I had to rename its suffix to xml. Please rename it sketches.heeks. Can you open it ok?

Feel free to email me,  danheeks@gmail.com

Gauthier BRIERE's picture

Hello Yves,

Perhaps it's not an OpenCascade problem but only an Heekscad bug...
Your step file open fine with FreeCAD which also use OpenCascade.
Perhaps it's time for you to test, try and embrace the last version of FreeCAD which have made very good job with the "Path" module for the CNC milling.
You can find all information for FreeCAD here : https://www.freecadweb.org/
The community is very active, and you will find many help on the forum : https://forum.freecadweb.org/

Best regards,

Yves Masquelier's picture

Hello Gauthier,

For now I'm sure it's not an OpenCascade problem nore an Heekscad bug.

Maybe a system config weakness (old DELL OPTIPLEX 740/windows XP and OPTIPLEX 745/windows 10 with internal display chipsets).

I found a work around by simplifying the STEP file replacing arcs by short segments => work fine.

I am not a FreeCAD fan, I am using SolidWorks, TurboCAD and AutoDesk softwares, at 70 years old uses are hard to bypass!

I am open to try FreeCAD and addons for milling path generation but the ease of use of HeeksCAD/HeeksCNC and the addons facility to implement is very pleasant.

Best regards,