Thursday, July 8, 2010

Are you a Designer or a Programmer?

I don’t mean to imply that if you are a “programmer” you are not a “designer” or visa-versa. The question is; as a CAD user do you spend more time designing or programming?

Most CAD users are very familiar with history-based CAD. It is probably what they were initially trained on, and may be the only thing they have ever used. Relatively, very few people have used or understand history-free CAD. They may be familiar with direct editing, but history-free CAD is much more than the direct editing. Every week I personally witness more and more people catching on to the value and benefit of history-free CAD. Most had no clue that such power was available in such an easy and flexible tool.

So what’s the difference? Here’s one way to look at it.

With history-based CAD, users create a “program” typically called a history-tree. This program is created by defining 2D sketches, modeling features, and relationships using specific methods and structure. When the “program” runs, 3D geometry is created. In a history-based system, users do not create 3D geometry, but rather create a program that creates 3D geometry. In the same sense, users do not modify 3D geometry, but rather modify the program that will then create different 3D geometry. The program (history-tree) is the master.

History-based CAD can be a very powerful tool in the right hands, but there are some key requirements and best practices that must be followed. These requirements and best practices are very similar to those found in software development. Here are just a few of them:

  • Have a clear understanding of the end goal, or intent, before you start
  • Maintain a clear and consistent structure such that others can follow
  • Be sure the structure supports the intent
  • Define small-manageable components that are well organized
  • Pay close attention to references and relationships

There are also similar challenges with developing a good history tree and developing a good program. Here are a few:

  • Debugging the program
  • Translating a program from one language to another
  • Collaboration at the program level
  • Reusing an old program that someone else wrote
  • Managing references and relationships between programs
  • Managing very large programs

With history-free CAD, users are not creating a program but are rather directly creating and manipulating geometry. Since you are directly interacting with geometry there is no language to learn, no need to plan ahead, no need to understand how the geometry was created or what tool was used to create it, and no need to develop and manage complex references and relationships. What you see is what you get. Geometry is the master. There are certainly challenges yet to be solved with history-free CAD, but the technology is improving rapidly. It is a technology that has been around for many years, but if you haven't tried it recently you need to do so.

History-based CAD is certainly the dominant CAD technology used today for product design and engineering. It is a very powerful tool when properly aligned with the design process. It can also be a very problematic tool when misaligned. One thing to consider is the amount of effort that goes into “programming” vs. “designing”. If the resulting program yields value exceeding effort, then use it to the maximum. Programmatic development and control of geometry can be of high value in the right context. If however the program, including the typical challenges that come with “programming”, get in the way of progress and yield little future value, then consider the alternative.

History-free CAD is being used today by thousands of companies around the globe, as both an alternative and a compliment to history-based CAD. Here are some of the reasons why these companies are using history-free CAD:

  • If you need a tool that can help you more quickly review a variety of concepts you will want to consider history-free CAD.
  • If you have a need to involve more people besides the CAD experts in product design, you will want to consider the ease and flexibility of history-free CAD.
  • If you have a need to interact with geometry coming from a variety of CAD tools, you should be considering history-free CAD.
  • If your product life cycles are short, there may not be a return on your "programming" investment.
  • If you need to obsolete your products before your competitors do, you may not have time to develop well structured programs.
  • If you work with large assemblies (30,000+ parts) you need to consider history-free CAD.
  • If you need to leverage, reuse and share design data, it is likely easier and more intuitive to do so with 3D models rather than programs.


(To try out the most mature and capable history-free modeling at no cost, check out PTC CoCreate Modeling Personal Edition: