Lab LogoFletch's Fab Academy 2014 Blog

02. Computer Aided Design

This week we discussed computer aided design.  The assignment is to model, and possibly simulate something.  As part of this I will need to try various tools and choose a 2D / 3D tool chain that I'm happy with.  Once again my nemesis this week was time management, I've spent far too long looking into different tools rather than just picking one and learning to use it effectively.

02.1 2D Raster Tools

Sketch Book Express: I've been using Sketch Book Express for the past few weeks as it's free and works well with the pressure sensitivity of my Wacom tablet. It's great for doing more artistic conceptual sketches.
GIMP: I've been using GIMP to re-scale, colour reduce and format convert my images.  For this blog I've re-scaled images to 640x480 and re-saved as JPEG.  If I start to get a large number of similar images I may investigate 'Image Magic' for the batch processing / conversion of images.

02.2 2D Vector Tools

InkScape: I'll be using InkScape for 2D vector graphics.

02.3 3D Tools

There are a huge number of similar tools available here.  To find one where the workflow fits my design process and the feature set contains everything I want requires quite a bit of time trying tools.  Ultimately I'm unhappy with my choice of SketchUp here, at first I thought that it was great but I've since found it frustrating.  As a follow on task I plan to try some of the other 3D CAD tools over the next couple of weeks.

SketchUp: I've used SketchUp a few time before and thought that it would be a good starting point, especially as it's free.  However the further I went with it the more it frustrated me, particularly the way that it splits of joins faces when I don't want it too and the lack of built in animation facility.

I've modeled some parts of a simple marble logic gate as an exploration of the features of SketchUp, .skp file here.  This part is based on this excellent mechanical clock design.

Sketch Up Image of T Piece

I had planned on animating a marble falling through this set of gates, however the most recent versions of SketchUp don't have built in object animation.  SketchUp has also cross linked sections of my mesh that I didn't want it to, meaning that when I move sections of the design the mesh now becomes distorted.

Kokopelli: I think that the concepts of hierarchical and parametric design are absolute musts for any larger design project.  Without them it will become impossible to maintain the design.  For this reason I next tried Kokopelli .  I decided to model the LED cube concept as it is a replication of identical objects that lends itself nicely to being parametrized.  The .ko file is here.

Screen Shot of Kokopelli LED Cube

This is a very simple design that just creates an LED shape from 2 cylinders and a sphere and then replicates that into a grid structure.  I've added sliders to control some of the parameters such as LED spacing and number of LED's in each direction.

My comments on Kokopelli are:
1) Lack of documentation.  I had to pull apart the example files to work out what the shape definitions were.
2) Error handling.  Errors are just reported as 'Math Error in CAD', it would be nice to at least get a line number for the error to help debug the design.
3) This model should have a cuboid base, but I haven't yet worked out why that isn't being displayed.

Antimony: After my experiences with Kokopelli, I decided to try Antimony.  I needed to instal Qt 4.8 and PySide in order to get it working.  Again lack of documentation meant that I just had to play with it to work out how to link objects together etc.  I decided to construct a very simple CSG object representing one of the marble logic gate 'T pieces' used in the SketchUp model.  The .sb file is here.

Screen Shot of T Piece in Antimony

Once you understand Antimony it's very nice to use.  I've added a single variable 'Thickness' that allows you to control the material thickness of the piece.  However this isn't yet robust as it doesn't control the thickness of the cut-outs.  This could be achieved by either adding a set of 'maths' functions for variables or by be basing all objects on a scaled piece of material.

Simple Physics Simulation

A simple physics simulation of the 'T Piece' marble logic gate (requires HTML5 and JavaScript). It uses Box2DWeb a simple game oriented physics engine that is optimised for speed rather than accuracy.
Currently most of the javascript code (found here) is used to setup the world, it would be good to be able to import this world setup directly from CAD files.
Due to my lazyness I didn't get around to setting the initial angle of the 'TPiece' correctly, so you have to drop the first marble in to knock it into place.

Your browser needs to support HTML5 Canas for this Simulation to run

Whilst a lot more work is required I've discovered from a simulation even as simple as this that the size and shape of the TPiece is quite critical to getting the marble to 'flow' correctly through the system.