Tag Archives: Homework

Travel, Lisp, etc.

I’m currently visiting with family in the US, will be heading back to home in a few days. The talk in Madison that prompted this trip went fairly well, and I’ve spent the last several days catching up with family and friends – quite nice overall, and beautiful springtime weather!

I’ve not done a lot with FreeCAD so far on this trip; during the ‘work’ segment in Wisconsin I was too busy, and have been trying to treat the second part as more of a vacation. This is, after all, an experiment to see if working as an open source developer can serve as employment, and any reasonable employment must include vacation ;).

That said, there has been a little tinkering here-and-there with some smaller items in FreeCAD, and I’ve been trying to keep abreast of the forum. I suppose a screenshot of the work on editable texts in Drawing hasn’t made it onto the blog yet – some of this work was done on the trip:Screen Shot 2015-05-07 at 12.50.29 pm

Unrelated to FreeCAD; I’ve finally spent a couple afternoons starting to learn some Common Lisp, which I’ve meant to do for a while now. It’s been a very interesting process so far; the language itself has been fun to start learning, but the history behind it is quite interesting as well. This evening, I was reading about interesting uses of Lisp and came across SHRDLU, which was done 45 years ago! http://hci.stanford.edu/winograd/shrdlu/ and then watch video of the real thing https://www.youtube.com/watch?v=bo4RvYJYOzI Amazing!



Today was spent on a few different aspects of the project, with a brief interlude to deal with some external (car) stuff. First thing, I got caught up on emails/forums, then did a bit of shopping*, then on to programming! For better or worse, the changes I made aren’t involved in any new features, and didn’t address any specific bugs that I’m aware of (though, I did find a couple possible sources of bugs). But, I think it was a valid use of time because I learned a bit more about the internals of FreeCAD, and think I’ve also cleaned up those internals to a degree.

In object oriented programming, there’s a distinction between “is a” and “has a” relationships. My project today involved splitting one class into two, to make this particular area a bit more consistent and to allow for the use of one piece of functionality provided by the original class without the other.

Specifically, FreeCAD has several classes descended from a parent class Property, which are used to store various pieces of information to be saved into configuration or project files. These are the things that are modified by the Property Viewer. The refactoring I did today took a descendent of the PropertyInteger class – PropertyEnumeration – and made it instead derive directly from Property and contain a (new) Enumeration object. So, PropertyEnumeration now “is a” Property that “has an” Enumeration.

There are a number of reasons I worked on this, none of them is terribly compelling if taken alone, but to me it fell into a category of “things that I’d want a professional programmer to fix, but that I wouldn’t bother with as a hobbyist”. So, the project for tomorrow is to try out those changes in the Drawing-dev branch (which is where I came across a use case for them), then clean up and submit them for testing if they seem worth the trouble.

Also intend to tie up a couple loose ends in Drawing. I’d like to try a couple different options for constraining the position of the new isometric views, then there’s a bug that causes newly added views to not be scaled appropriately sometimes.

Oh! This evening I went over to the maker space and learned a couple interesting things. First, there’s a possibility that I can get access to some machine tools in town! Second, that it’s possible to print nylon with filament type 3D printers, and that some neat things can be done by designing air bubbles into 3D printed nylon parts. That’s got me thinking about a project that was discussed at South Pole – making a 3D ice printer. I’m sure someone has done it already, but it does seem like a fun party trick regardless.

* As for that shopping; I’ve arranged to buy a monitor (2nd hand local), and bought a 3D mouse (amazon). I’m quite intrigued by these 3D mice, looking forward to having one to play with aside from the obvious need to have one for work purposes.

Tax Day summary

Mainly this morning was devoted to things outside of FreeCAD, but I made a bit of progress on a couple bugs too.

It took a while to get started, as some other changes to FreeCAD broke the new Drawing module. I’ve been trying to keep the new Drawing module up-to-date with the rest of FreeCAD, to avoid a giant merge headache at the end, so this morning was one of the temporary smaller headaches that are a consequence of that decision.

Bug hunting/fixing involved implementing a small change I figured out yesterday (to fix the dragging bug), and re-working of some code for handling B-Splines (to prevent some exceptions that I think are related to problems in other areas). More to come, but not today!

Startup Weekend

My last few days have been devoted to a Startup Weekend event here in Dunedin, where I went for networking and to learn about starting a company in New Zealand. It was an interesting event, though if I were to do it again, I’d do it a bit differently.

The event is, to a degree, a competition where teams compete to create the best startup as judged by a panel. Judging criteria are set out early-on, with a third being based on having a good product model by the demo at the end of the weekend. My mistake (well, one of them) was to stay largely focused on producing a working demo in the allowed time, at the expense of networking. In the end, we didn’t even get to show the demo to the judges.

Oh well. I intend to get back into FreeCAD work for the next few days as I get caught up on sleep, so hopefully will have some more posts here or more importantly some improvements to the Drawing module.

As for this experiment, I’ve cancelled the premium wordpress account that allows me to update the info on the right, but I do intend to put a few more days in to FreeCAD fulltime to fill out the two working weeks discussed earlier. We’ll see how it goes.


Hopefully nobody is reading this closely enough to catch on, but I’ve got a somewhat odd schedule day-to-day due to some external obligations. Mostly, I’m up fairly late, but sometimes quite early – not the best arrangement for mental capacity… On the positive side, those external obligations line up nicely with a holiday here on Monday, so I’ll be taking a few days “off” Monday-Wednesday this week to enjoy Fiordland in the autumn. Since I’ve been taking Tuesdays and Wednesdays as my weekend, there shouldn’t be much impact to this experiment except for a shorter day today and no work tomorrow.

Then, the startup weekend I mentioned earlier is starting on Friday, I’ve signed up for that for networking/job hunting purposes. Not totally sure what the weekend entails yet, so I may have some time to work on FreeCAD then, maybe not.

Summary: Day 6

Saturday mornings in Dunedin bring the farmer’s market, which is a great way to get tasty food (including, oddly enough, the best bagels in New Zealand) and catch up with local friends. After a relatively quick trip to the farmer’s market, I had a few errands to take care of which were mostly unrelated to this project, but did include a stop at a thrift store to invest $2NZD!


The mouse has helped a bit with productivity – it’s certainly nicer for development and for driving FreeCAD than the touchpad on my laptop. This got me to thinking about how often different input devices are actually used for FreeCAD, or just 3D CAD in general. Specifically, I wonder how common it is for people to use just the trackpad on a laptop, or a 3D “spaceball” type mouse?

In terms of actual development work, the day was largely devoted to getting started on the Drawing module as discussed on Drawing Workbench – Initial Thoughts, and a couple tangentially-related tasks. There was also a bit of time following up on the forum, maintaining the blog, etc.

One of the tangentially-related tasks deserve a brief mention. From a developer’s perspective, I find source code documentation to be very important. Especially when starting out with a project, finding the bit of code that provides a specific functionality can be a daunting task without a nice way to browse through source. Something like doxygen goes a long way towards providing a nice interface into the source code, so I spent some time on fixing up the doxygen setup in FreeCAD.

Drawing Workbench – Initial Thoughts

Drawing first impression

I’ve built a development branch for an updated version of the Drawing workbench, with the intention to do a bit of work on it. This is another part of FreeCAD that I haven’t had much to do with, so with this post I hope to record some initial thoughts. I find it’s sometimes handy to look back at notes like this, as they can give a “fresh pair of eyes”.

Overall, I’m impressed with the workbench – seems like things are going in the right direction! Quite a few little things need fixing before it feels usable though. And, this testing has shown that I have what’s perhaps a more pressing issue with the Property Editor on Mac – it’s nearly unusable on my computer…


  • What’s with the floating OpenGL view?  It doesn’t seem to respond to the mouse at all.
    • Confirmed that the same thing does not happen in my Linux virtual machine, which is mostly similar to my Mac in terms of library versions and such.
    • Right clicking and changing Renderer to OpenGL fixes that issue, but results in screen flashing white and generally behaving strangely. Renderer = Image still broken.
  • Some operations seem really slow.
  • Automatic scaling of the Orthographic projection draws the object off the paper.
    • Also doesn’t update the “Custom Scale” field below it.
    • Ditto the scale field on the sheet.
  • Need a visual cue that clicking and dragging the bounding boxes of ortho projections will let the user reposition on the sheet, but dragging elsewhere moves the sheet.
    • Is there a need for moving the sheet at all?
  • Changing to a scale that’s too “zoomed-in” can make the different ortho projections overlap (shown below).
  • Waving the dimension around leaves repaint artefacts (below).
  • SVG export has a couple obvious issues
    • Font size of the circle dimension is different.
    • Bounding boxes and their labels (Top, Side, Front, etc) of ortho projection aren’t shown.
      • Should they be?  If not, then I think it needs to be more obvious in FreeCAD.
  • “Drawing Viewer” doesn’t resize (Cascade windows before opening a drawing),

Some Drawing Bugs

Cost: A few hours worth of monkeying around with git, looking through code, setting up a Linux VM, playing with Drawing module.