Experimental “Offset” support in LibreCAD

I merged initial experimental support into LibreCAD yesterday.

Some basic features of Offset still need to be implemented:

1, loop, self-intersection awareness;

2, Generate a spline fit, if the offset envelop is not in simple entities(straight line, arc, and ellipse);

3, More options to initiate Offset.

If you find a bug in LibreCAD, or simply want LibreCAD to do more, please file a feature request/bug report at our sourceforge trackers:


The LibreCAD team

Morley’s trisector theorem by LibreCAD’s new snap system

Morley's trisector theorem

Morley's trisector theorem

The 2.0.0 series (the master branch on github.com) of LibreCAD uses a new snap system which is designed to be more efficient in use.

For example, snap by middle points is extended to multiple equidistant points on entities. Using this new feature, trisecting an angle is now possible, albeit in LibreCAD.

To demonstrate this new interesting feature, 6 trisecting lines of a triangle are drawn, and Morley’s trisector theorem says the deep blue triangle formed is an equilateral triangle.

The LibreCAD Team

Common tangent line of two ellipses

LibreCAD tangent2

Common tangent line of ellipses

LibreCAD supports isometric grids now.

Also added to LibreCAD (targeting 2.0.0 version), drawing common tangent lines of two ellipses. Again, we use our own quartic equation solver to construct the tangent line. Actually, some cleanup still needed for the equation solver part, nonetheless, the feature is stable enough for general use.

The LibreCAD Team

Initial support for simplified Chinese fonts

LibreCAD Simplified Chinese fonts

LibreCAD Simplified Chinese fonts

After Rallaz and and zxq9 added font support for Japanese. Rallaz and I added some support for simplified Chinese fonts.

Full CJK font support is planned, but we need to figure out a more efficient way to to handle the 30,000+ characters.

If you find a bug in LibreCAD, or simply want LibreCAD to do more, please file a feature request/bug report at our sourceforge trackers:


The LibreCAD team

1.0.0-rc4 released


Today we have released 1.0.0-rc4 of LibeCAD, no we didn’t skip rc3 but at that moment we got a message from Ribbonsoft that we are not allowed to include the fonts and documentation into LibreCAD. Apparently the fonts and documentation were not released as GPLv2 and we were asked to remove that from our distribution. We included the qCAD fonts and docs previously, because Ubuntu, Debian, Red Hat, openSuse and many other distributions and QCad forms have (had?) that included.

I personally strongly believe I was in my right to use the qCAD docs and fonts because no exception was made in the open source CE download section of the Ribbonsoft site and no exception was made in any of the license files and readme within the tarball, therefore, I just included it, I am not a lawyer so, there we go…

So with 1.0.0-rc4 we have removed all fonts and docs from qCAD and have created our own font format called LFF, this was done by one of the developers, Rallaz, who did an awesome job here. LibreCAD is still backwards compatible with QCad’s original CXF fonts, so in case you created your own CXF fonts you can still use them, from now on all LibreCAD fonts are releases as GPLv2 or higher.

Unfortunately, we don’t have new documentation but we are working on to organize this as a new project within LibreCAD. I am afraid though we will not be able to make this for our first 1.0.0 release, as all our developers are busy working on other exciting development areas.

Have fun using LibreCAD!

Draw Inscribed circles and ellipses

While the spline/text speed has improved substantially, more work is still needed on them, and a code review is undergoing.

Aside from the text insertion speed, there’s an independent long-term goal of adding C++11 support. We will do more than simply making it look like C++11, instead, performance, code readability and correctness of implementation should be among our goals.

Now, some new features implemented in the master branch. Please help testing them!

Several new drawing methods for ellipses/circles:

  • Ellipse inscribed in a convex quadrilateral, i.e., the ellipse tangential to four given lines;
  • Ellipse with given foci, a point on ellipse or the total distance to foci;
  • Ellipse with given center, three points on ellipse;
  • Ellipse with major axis in x-/y-directions with given center, and two points on ellipse;
  • Ellipse with major axis in x-/y-directions and four given points on ellipse;
  • Circle inscribed in a triangle, i.e., tangential to three given lines.

Please note the complexity of these new construction algorithms, so, we do expect bugs for certain drawing conditions.

If you find a bug in LibreCAD or you would like LibreCAD to do more, please file your report/request at our tracker on sourceforge:


The LibreCAD team

Tweaking for speed of text insertion in LibreCAD

I should write something about what we are doing now. At least to assure users that we are working hard to make LibreCAD better.

While doing the never ending task of testing, Claude, our quality control master from Quebec,  exposed the issue of text insertion speed in LibreCAD, and it turned out to be a bug hard to fix.

We have made some progress, but the battle is not over yet.

First, I did a code review for math functions, rewrote many math functions, and many core math functions are now at least 100% faster, and 400% faster in some cases by my own benchmarking. I enabled using of 2D vectors, instead of 3D vectors for our core vector class, in hope of processing one third less of data. Still, the speed improvement is not enough.

Then, there was a turning point. Rallaz  identified excessive creation of new preview for text in the drawing part, and fixed it in a simple and elegant patch. For a while, we celebrated the catch, and called it a win.

To our surprise, Claude reported speed trouble once again. It turned out the previous fast text insertion in testing of Rallaz’s patch was coincident with an error in container’s move() function (bug#3420260). After we fixed the bug#3420260, the speed issue resurfaced again. Rallaz fixed a serious speed bug, but it’s still not enough.

Performance tweaking is going on for the spline class, which is used heavily in text processing.

Ries wants LibreCAD to be fast and lite, and that’s exaclty what we are doing now!

If you would like to help, please join the team!

UPDATE: spline/text draw() methods updated, preview procedure also updated. The speed of text/spline handling has improved significantly. Code review is still going on.

August 1.0.0rc2 released

It’s been already two months ago since our 1.0.0rc1 release, but we haven’t been sitting still.

We have had over 200 commits from rc1 to rc2 and change keep coming in. We have had even more reports on our bug trackers on sf.net and more developers have been joining the project.

Also worth to mention is that our mailing/forum list is used on a day-by-day base with over 250 messages in 2 months.

One of the more notisable items solved is that the help file should work now for all users, OSX, Windows and Linuxs. The reason for this working under some situations and sometimes not was because I forgot to add the sqlite drivers to the installation packages. Because of this no help was displayed. For the persons where the help did display the double-click needed to activate a page was not always disc offered so we change this to a single click.

I want to thank the following people for there help:

  • Rallaz, he is our expert in Qt and DXF file formats, he does a tremendous jobs porting to pure qt4 and fixing bugs in the dxf parser
  • Li is our math wizard, he has been optimizing the ellipse functions and is working on more of the math related items within LibreCAD
  • Claude has been submitting more reports then I can count, he is helping on the mailing list and even get’s his hands dirty on some code and making patches
I can’t thank you enough guys for helping with this project!
What’s next is that we will properly make a rc3. There are still 20 bugs that we need to take a look at and that might need to get fixed into our very first release.

LibreCAD 1.0.0rc1 Release (Get It While It’s Still Hot)


we are very happy to announce that we created a our first release candidate 1.0.0rc1 to be precise and we created installer packages for both Windows and OSX you can download. Linux users are advised to use there distributions package management. More information can be found here for Debian and Ubuntu, RPM packages for OpenSuse, Mandriva and Fedora. If you know or have packages or installation methods for other distributions, please get in touch with us so we can add the information or link to you.

What has changed?

Many things has happened since our beta5. To name a few:

  1. Created new Logo thanks to Diego
  2. Create new icons thanks to pablo
  3. Many translations has been added, we are now at 24 translations, WOW!!! http://translate.librecad.org
  4. Lot’s of bugfixes that where reported by users through sourceforge. Bug Tracking
  5. Rallaz is working on a plugin interface he is doing great work.
  6. A inline help file (the original QCad) help file is now included.
  7. LibreCAD has now a official website where general (non developer) information can be found.
  8. A plugin interface is being added, this is still work in progress….
  9. And last but not least, we added a donation option. hint….hint

We see a lot if blogs talking about LibreCAD something that’s very positive and when doing general google searches we see the number of results just on LibreCAD increasing, this is just great!

Source Repository

Our currently official source repository is now located at github. If you don’t know git or github well, not to fear, there is a download option available that can give you a tarbal of one of the tags, or simple the latest version available. We also keep the SVN repository at source forge in sync with github, but it won’t contain any tags and it might be outdated with a couple of commits. This is currently a manual job to sync this up. For any package maintainers, please use github, that will always give you the latest version and a proper tag if you have any specific git questions please let us know.

User and developer communication

We are now using Nabble as our official developer and user communication method and we embedded the forum on teh website for easy access. You can use as a forum if you like forums better, but it’s also possible to use your mail client to submit questions and receive answers. The forum is located here. The forum at SF is still available for reference, but we prefer the Nabble system for user and developer communication.

If you have any patches (plain diffs) or bug you would like to discuss you use the source forge trackers over here. If you did clone our github repo at github, you can simple send us pull requests we will review and apply. We will however keep en eye on both trackers it’s just that github’s issue tracker is like sticky notes compared to source forge bugtracker. It’s just that github’s git integration rocks!

Special thanks

I would like to put a special thanks to the following persons:

  • Scott for helping adding LibreCAD into Ubuntu and Debian distributions
  • Rallaz for supporting and adding new features to LibreCAD and for his RPM repository, he is working on a plugin interface aswell!
  • Diego and Pablo for supplying the program icons and splash screens, as promised you are mentioned in the about of LibreCAD.
  • All translators, they are doing a great job translating LibreCAD into new languages and improving the current translations.
  • All submitters of patches and bugs into a bugtrack. Some items I simply don’t find because I don’t use a specific OS or don’t use a specific feature.

Let us know what you thing!

Have a great weekend


June developer update

This is a quick post to let people know what has happened in May.

  1. Translations: THANK YOU to all our translators! LibreCAD has been translated (or updated translations of) the following languages: Chinese (Simplified and Traditional), Dutch, Finnish, French, Greek, Indonesian, Japanese, Norwegian, Polish, Spanish, and Ukraine in addition to the languages that existed in the previous release. This is a phenominal effort by the volunteers at http://translate.librecad.org
  2. A huge amount of activity on github (over 100 commits last month). Highlights include adding Windows and Mac OSX installer .exe and .pkg for easy installation, Rallaz added a plugin interface to extend LibreCAD and is porting from Qt3 Support libraries to pure Qt4, adding translations, fixing a crasher bug, and the new icons logo and splash screen.
  3. Development of a new home page that is explain LibreCAD and point users to download, installation instructions, and support mailing lists (which are also being set up)
  4. LibreCAD is growing!  500 downloads a day from Sourceforge, and getting close to 10,000 installs on Linux distributions.

The current plan is to finish the new website and then release a Release Candidate (RC1). You can always grab the code from github to build yourself (instructions are on that site) to see a preview of the current state of LibreCAD.

Thanks again to all the contributors and developers!