Free and open-source computer-aided design

From AdCiv
Revision as of 22:10, 2 January 2012 by CharlesC (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Renault rendered in Blender 3D modelling software

One of the core components necessary for open collaborative design to truly take flight is an advanced free and open-source computer-aided design (CAD) program to allow anyone to easily generate new designs or customise existing ones. The program should include a special browser to enable finding and importing open-source components and machines from the 'universal commons' as well as analytical tools and 'physics engine' 11px-Wikipedia_logo.jpg which allow a significant amount of simulation and testing to be done 'virtually', saving significant amounts of time when it comes to construction.

The availability of user-friendly open source CAD software will be essential to allow the widest number of people to engage in this creative activity, which should help create a more diverse ecosystem of objects, machines and solutions. There is no reason, with thoughtful implementation, why this software shouldn't be intuitive enough for children to use easily. It could explain mechanical and engineering principles along the way if the user wished, and also be a place to store detailed contextual development notes, wiki style, to help others understand the workings and decisions made.

The virtual nature of the designs mean that far-flung people via the internet can easily work together on the same design, either working individually on various sub-assemblies of the whole or collaborating directly on the same part. The restrictions of having to finding people local to yourself with similar interests and desires becomes much less of an issue.




Universal artefact commons

With many people contributing to open design projects, as happens currently with software, a universal commons will emerge made up of vast libraries of designs for everything from components and sub-assemblies through to complete artefacts, machines and complex systems, available for anyone to download and incorporate into their own designs, or help evolve as part of a wider project.

As in software, it would be useful for components and assemblies to be as 're-usable' as possible in the sense of being able to be incorporated in many different machine designs. To aid this it should be possible to specify the vital dynamic functions of a component or assembly in the CAD software, so that it can easily be modified in shape and scale so it can be incorporated into a new design while ensuring it still works correctly.

This will enable a huge reduction in duplication of effort and allow people to focus their efforts on creating new machines of increasing complexity and building on the work of others.

One interesting side-effect of open collaboration is that it tends to lead to highly modular design. FireFox and Linux are examples of this. Modularity also leads to a high degree of reusability; someone designing a new piece of hardware or software can pick-and-mix parts of existing projects. This works well in software, but may have to be abstracted somewhat to work in physical systems where dimensions are obviously important to fit with other components.


Simulation and analysis

Newton cradle.jpg

Modules for analysing and testing how objects should behave in the real world.


What exists already?

Screenshot of 'FreeCAD' parametric CAD program performing boolean operations on 3D shapes
Screenshot of 'FreeCAD' constraints-based parametric sketcher module
FreeCAD robot simulation workbench
OpenSCAD (showing part from RepRap/Hydraraptor)

There are many proprietary CAD programs on the market that range widely in cost and capability, but we are focusing on free and open-source software here.

There are some two-dimensional (2D) open-source CAD programs such as QCAD but these really only replicate the methods that were used to create hand-drawn paper engineering drawings and lack the advantages and power that modern 3D CAD offers.

BRL-CAD is a 3D CAD package that came out American Military ballistics research and can be traced back to the 1970s. It is based on the older constructive solid geometry 11px-Wikipedia_logo.jpg (CSG) paradigm which isn't quite as sophisticated as the 'B-rep'-based 11px-Wikipedia_logo.jpg software used by most modern CAD programs, although it is highly suited to physical analysis, which is what it was originally designed for.

OpenSCAD is procedural geometry construction program using scripting to generate 3D models via CSG or extruded 2D drawings (DXF). Designed for programmers to use. The nice thing about a script-based CAD system is that it is compatible with distributed version control systems 11px-Wikipedia_logo.jpg which many open-source software projects use these days.

The best of both worlds would be a CAD system that could interchangably be used with scripting or Graphical User Interface (where edits using the GUI are captured/simplified as procedural code) and also incorporate visual diffs and deal with merging.

However there is a real need to create (or evolve) a really sophisticated, easy to use, open-source CAD (or more ambitiously product lifecycle management 11px-Wikipedia_logo.jpg) application that is highly intuitive to use, powerful, extendible and importantly hooks in to what should be a rapidly growing ecosystem of designs and physical systems available to all in the 'universal commons'.

FreeCAD is designed to be a feature based parametric CAD modeller and CAE 11px-Wikipedia_logo.jpg platform, employing the OpenCASCADE geometric modelling kernel libraries. Extensions framework and integrated Python interpreter for powerful scripting capabilities. The images on the the right are from FreeCAD. Video overview showing current capabilities (as of early 2012) Film_icon.png here.

HeeksCAD is a 3D modeller initially aimed at designed parts for CNC machining. Also based on OpenCascade. This has the ability to create 3D parts from 2D sketches using the graphical user interface. (Although Dan Heeks has recently indicated it will never be a general purpose parametric CAD platform like FreeCAD).

PythonOCC is a development framework that makes all the OpenCASCADE functionality available for the python programming language, good for prototyping and experimentation

Other open-source modelling programs

The following are capable 3D modelling programs that although they are designed for graphics and animation, it is possible to use them to create parts for physical designs. However they do not possess many features required for advanced mechanical CAD design.

Blender 11px-Wikipedia_logo.jpg is a powerful 3D modelling, animation and rendering program designed primarily to create sophisticated computer graphics rather than being tailored for design and engineering. It is an advanced and capable piece of software, and might well form a good basis for a dedicated open-source CAD application – such are the possibilities when the software is open-source. There have been some attempts to create scripts extending Blender in this direction, but they are either no longer active or do not yet go far enough. The user interface is not known for being particularly intuitive, however those that know their way around it (including the many vital keyboard shortcuts) say it is very effective.

Art of Illusion 11px-Wikipedia_logo.jpg is another interesting open-source 3D modelling and rendering application, although perhaps not quite as advanced as Blender. However the user interface is much more intuitive. Similarly it is designed for creating computer graphics rather than as a CAD program, but the required features could be added. The RepRap open-source 3D printer project are currently using this for their 3D modelling with some additional scripting.

Other interesting modelling programs

TinkerCAD is a web-based program (employing hardware accelerated WebGL canvas which is a new capability in modern open-source browsers - i.e. Firefox and Google Chrome). This is proprietary software but gives a hint at some of the things that are becoming possible. Quite simple and aimed at people who are making geometry for 3D printing. Not a full CAD system that is needed to define sophisticated components and assemblies.

There is an interesting Google Tech talk giving an overview of how it looks but also how it works underneath the hood as a client-server system and the technologies and techniques employed to get it working in a web browser. Film_icon.png See here


What is computer-aided design

Computer-aided design (CAD) is a general term for the powerful tools used for creating, viewing and analysing designs on a computer.

In the early days of CAD the software mimicked the manually produced two dimensional engineering drawings but as the graphical power of computer increased three dimensional CAD has become the norm.

With modern CAD programs component parts are usually built up from 2D 'sketches' which are 'parameterised' and assigned dimensional or geometric constraints which captures the 'design intent', and they are then extruded into the third dimension. 'Assemblies' are then built up from component parts.

CAD software showing a cross-section through a highly detailed model (click to enlarge)

'Direct editing' is an emerging paradigm which allows for more flexible manipulation of parameters in a complex 3D model which is not bound by the 'history' of the way the object has been constructed. It is also able to work with 'dumb solids' imported from other programs without any construction history and assume a certain amount of design intent implicitly. Both 'parametric history-based modelling' and 'direct editing' have their strengths and weaknesses.

Modern computers with powerful graphic processors and high-end software make it possible to manipulate almost photo-realistic models with very smooth motion and manipulate the view in sophisticated ways such as pushing a cross-sectional plane through a complex object in real-time.

For further information, see the Wikipedia article 11px-Wikipedia_logo.jpg on CAD which goes into a lot more detail and links to many related topics.


Creating an advanced open-source CAD application

There needs to be an effort to create a high quality open-source CAD program with capabilities matching those of high-end commercial CAD packages. This is key to opening up the full potential of open collaborative design.

There should be serious effort put in to making the application as intuitive as possible from the outset for people who are new to 3D design, by giving them a simplified user-interface, built-in tutorials, animated overviews and access to a wiki-compiled handbook. It is very important not to put users off while taking their first exploratory steps, as it is easily done. The more people that take part in open collaborative design, the richer the 'universal commons' will be for all.

Picking from the universal commons

Easy access to tagged and categorised parts, assemblies and whole machines from an indexed 'copylefted' 'universal commons' through a browser panel built-in to the CAD program. This should make it easy to create a starting point for a new project by re-using bits and pieces that other people have already made. Most of the effort of a new project can then go towards creating new parts and evolving the concept, rather than duplicating the effort others have already done.

Commercial components

Proprietary off-the-shelf components and assemblies could be browsed and incorporated into the user's model too, although they would not be part of the freely available universal commons. It might be that these items just show the external envelope of the part, it's interfaces, connections, mass and volume, but not commercially sensitive internal details.

Collaborative features

  • Text, audio comments and recorded model manipulation can be attached to a part to explain the function, concept or decision relating to it.
  • Wiki-type features relating to all changes to part or its meta-data. Meaning: Log of all changes to the part (and by who) giving an unlimited 'undo' history. This applies to comments and notes too.
  • Shared sessions with Voice over IP and multiple pointer representation. Meaning: multiple users can look at the same model, talk to each other and point and select things on the model at the same time.
  • Distributed revision control allowing and encourage massive parallel development with visual 'diffing' and merging capability




It would be useful to have a copyright license manager to aid combining components and assemblies that may have different copyleft or commercial licenses, and this would dictate ultimately what copyright license the final item can be released under. Some copyleft licences are incompatible with each other due to conflicting terms, or one overrides other licenses in dictating the terms of the completed artefact.

The 'universal commons' browser should have a feature to filter the contents by license in a hierarchically structure. So objects could be filtered at a high level (i.e. open source, commercial or public domain), medium level (strong copyleft or weak copyleft), down to individual licenses. Users may determine from the outset what level of licensing they would like for their project and have the commons browser only show compatible items.

Some licenses such as weak copyleft - where the item is freely available for use in open-source or commercial projects (but the actual copyright still remains with the creator) - and public domain - where there is no copyright at all - are broadly compatible with any other license.

There is also the possibility of dual licensing or multi-licensing which is sometimes used, where an item may freely used for non-commercial purposes under a copyleft license or alternatively it can be incorporated into a proprietary project using a commercial license but for a fee.


Virtual environments for scenario modelling

Environment from Second Life virtual world

This feature enables a virtual 'location' to be selected (or created) in order to show an item in context in its intended environment. Other people could even be invited to gather in this virtual space to see demonstrations of a machine for example.

This kind of scenario modelling might be similar to the way 3D computer games are rendered in real-time. It is a similar concept to machinima which use 3D computer game environments and their characters to speedily create animated films on a normal computer, or a virtual world such as Second Life 11px-Wikipedia_logo.jpg. Open Cobalt, under development by Mark McCahill, Alan Kay and others, is an open-source virtual world. As of May 2010, a provisional version is available for download here.

However with off-line rendering over longer periods, these animations could be of superior quality and realism – and perhaps not much longer if idle computers on the same network could be commandeered to create an ad-hoc peer-to-peer render farm.

Aside from creating physical designs, this is also an incredibly easy and powerful way to create illustrative images or animations for their own sake. With environments quick to select and artefacts easily plucked from the commons, with any moveable parts set to particular positions, it would be an incredibly quick way to put together a high quality image. Almost photo-realistic images could be created as easily as creating a diagram.

20px-Printer.jpg[print version] 20px-Update.png[update] 20px-Logo.png [site map]

Detailed tour: Left_arrow.png previous page | next page Right_arrow.png