Wednesday, August 26, 2009

Editing 3D Geometry - Summary

So what do the previous posts regarding direct and indirect editing mean to product design?

As history-based modeling has been the dominant technology for many years it gets used for a wide variety of design. As history-free modeling becomes more robust and useful we now have two very viable and very different technologies to choose from. As this choice impacts the data or “intellectual property” of your company and will impact your product development process, the choice should be based on something more than just user preference.


With history-based technology, editing is typically indirect and the layer of intelligence used to drive the edit is created at the time the model is created. It’s all about creating a properly structured history tree. This environment naturally demands consistent modeling methodology and close attention to what and how the model may need to be changed in the future. The basic benefit of such an environment is that by appropriately recording every modeling step, anyone of the steps can be edited resulting in a different model. The basic challenge with this environment is that it requires consistency in modeling practices, can be very inflexible, can be difficult to learn and will require a good knowledge of the structure before utilizing the data. What you "see" is not what you get with history-based modeling. From a process point of view you need to make sure that the value you gain from a well structured history tree is worth the investment.

Direct editing will continue to be added to history-based modeling and will bring some added benefits, but as long as it is history-based it will be somewhat limited in capabilities.

If your process and products demand highly structured engineering data and this data will have a lifespan and utilization that will justify the investment, then history-based modeling may be a good fit.


With history-free technology, editing is typically direct. There is by default no data in the model that would describe how the model was created or that would drive one feature to influence another (parent/child). With history-free modeling what you see is what you get. It provides a very fast and flexible modeling environment with no requirement to understand design intent before beginning the modeling process. The basic challenge with history-free technology is in the editing of complex shapes. While the technology is rapidly improving, editing a shape that consists of B-spline or NURB surfaces with lots of rounds and filets can sometimes be difficult. Again, it goes back to topology. Keeping these surfaces “connected” during stretches and moves is not trivial. These complex shapes can certainly be modified with history-free technology, but it’s not as simple as changing a parameter and replaying the history, (assuming the history will support the edit).

We will continue to see more indirect editing capabilities in history-free modeling. PTC CoCreate has been using the D-Cube DCM technology for many years to drive its indirect editing capabilities. LEDAS has also developed very similar technology and you can now see this technology working in Rhino.

From a process point of view, if you just need to get designs done as fast as possible with as much flexibility as possible, then history-free technology may be the best fit. It is also a very lean technology. There is simply much less data involved with history-free technology. Large assembly in-context design is a natural fit.

The above comments have more to do with the use-model of the tool. From a use-model point of view there are many differences and these differences will certainly impact the design process. Of even greater importance than use-model is “data”. While both history-based and history-free technologies create solid B-Rep models, there is significant difference in the actual data that is being created. This data is valuable intellectual property (IP). This IP carries with it the results of a significant investment in product development. It is at the core of your product development and may have a lifespan measured in decades.

With history-free technology the 3D B-Rep solid is the master document. Without it you have nothing. With history-based technology the B-Rep model is just a by-product of the history tree. The history tree is the master document. In the context of history-based modeling, without the history tree you have nothing - but a “dumb” solid. The biggest and most significant issue regarding maintaining a history tree as the master document is that a history tree is proprietary. There is no industry standard for exchanging this data. As such it is likely that much “history-based” engineering IP (the history tree) is going to have a “relatively” short lifespan. Pay close attention to the IP of product development, the investment you put into it, and how it may impact your future product development.

It is interesting that some CAD companies talk about combining history-based technology with history-free technology. It will be interesting to see what they come up with. Today CAD data is either history-based or it is not. Once history is gone, it is gone. Recreating a history tree from a history-free model will be similar to recreating a photo album that has been destroyed in a fire. History-free and history-based CAD systems can certainly coexist and complement each other, but it must be well understood how this environment, and IP, will be managed.

Now that these two choices exist and are both very capable, people should take a close look at their product development process and consider which technology best fits their current and future needs. There are many characteristics to consider.


Thursday, August 20, 2009

Editing 3D Geometry - Direct Editing

In the previous post I discussed the technology around "indirect" editing. With this post I hope to review some of the technology around "direct" editing.

Direct editing is now available in most history-based systems and is of course available in history-free systems (direct modeling). Direct editing requires no intelligence to be assigned or managed in the model. This technology provides the ability to interact directly with the 3D B-Rep geometry. In most cases any B-Rep solid model regardless of where or how it was created can be modified with direct editing capabilities. Directly manipulating a B-Rep model is however not trivial, but the technology has been developing over the last twenty years and is very mature.

Just a quick review. Boundary representation solid models (B-Rep's) are defined based on connectivity. Very simply put, points are connected with edges, edges are connected to form faces, and faces are connected to form "water-tight" solids. The way in which a model is "connected" is referred to as topology. If a direct edit forces a change to the topology, i.e. adding or removing faces, edges or points, a Boolean operation must be performed. In the case that the edit does not force a change to topology, a local operation can be used. As we attempt to drive a particular geometry change through a direct edit the system needs to be intelligent enough to know what function is going to provide the best and most “expected” result, reliably.

Unlike indirect editing, direct editing will require the user to "explicitly" define "what" will change (the geometry)  and "how" it will change (the transformation).

Specifying the “What”. In the simplest form a user will simply click on a face to select it. This defines the “what”. If the modification involves more than one face, the CAD system may provide a multi-selection function so that many faces can be selected. Some systems also utilize real-time feature recognition to assist the user in selecting multiple faces that represent a boss, pocket, rib or slot. User defined features may also be available. There is also some emerging technology to help with the “what” that is based on conditional assumptions that the system can make for the user. Perhaps a planar face is selected; the system may make the assumption that all other co-planar faces should be selected. Or perhaps the system can make the assumption that all adjacent faces that are tangent should be selected, for example. There is enough intelligence in the basic B-Rep model for the system to recognize these types of conditions. With some advanced systems, geometry selection may be possible across multiple parts, thus maintaining relationships between parts during the edit.

Specifying the “How”. Now that we have defined what is going to change we need to specify how it will change, i.e. the “transformation”. This usually comes down to defining a 3D axis or a 3D direction vector along with a distance or angle. Many systems will provide some sort of 3D icon/tool to help define the transformation. With this type of tool the user will be able to select a direction vector or an axis and then drag the selected geometry some distance or angle to define the transformation.

The transformation tool in Solid Edge ST

The transformation tool in CoCreate Modeling

Once the direction or axis has been specified, the distance or angle must be specified. Different CAD systems have different capabilities for specifying this information as well. Certainly all will allow you to drag a distance or angle. Most will allow you to type in a number. Some may even allow you to reference other geometry. In some advanced systems this referenced geometry may be geometry in the model you are currently editing or may be geometry of another part in the assembly.

With the “what” and “how” specified, the modification can be completed. Geometry is immediately modified as the modification applies directly to the B-Rep solid model.

The benefit of this technology is that the user does not need to be concerned with how intelligence or parameters are defined or structured. They can simply manipulate the geometry regardless of where and how it was created.

Direct Editing; History-Based

This technology is fairly new to most CAD users. It provides the ability to interact directly with the "resulting" B-Rep of the model/history tree. Each direct edit must be captured in the tree as each time an indirect edit is made a new B-Rep is created, and all direct edits will need to be reapplied.

Don’t confuse the "Instant" or "Dynamic" or "Direct-Shape" editing of parameters with direct editing. These are "indirect" edits that dynamically and in real-time modify parameters that control features. This technology is certainly useful, but like any indirect edit, the results are subject to the pre-defined feature definition and order.

During a direct edit in a history-based system it is unlikely that the system will utilize any of the geometrical relationship found in the B-Rep topology as this may be changed by modifications to features that occur earlier in the model/history tree. As such most direct editing in a history-based system will be somewhat limited in several different ways. There may not be powerful selection methods such as multi-face selection or feature recognition, and selection across parts will most likely not be allowed. There may not be powerful tools for specifying transformations, and the system may not be able to handle complex topology changes.

Direct editing in a history-based system is also complicated by the fact that these edits must be captured and structured into the tree. In reality when you perform a direct edit in a history-based system you are adding a step in the tree. This step must be ordered and maintained as with any other element in the tree. As such the tree can get more complex. Direct edits can be impacted by parent features and will impact child features. In reality direct editing in a history-based system may result in more issues than value. As such it may be best to avoid direct editing in a history-based model until late in the model development. It is certainly nice however to have the capability when working with imported models.

Direct Editing; History-Free

If you use a direct modeling tool like CoCreate Modeling, KeyCreator or SpaceClaim, this is the environment that you are most familiar with. It is the default method of changing 3D geometry in a history-free direct modeling CAD system. In this case users interact directly with the B-Rep geometry. As there is no history tree, the edit is a one-time event and is not recorded in anyway.

As this is the primary method of manipulating geometry in history-free systems, it is important for there to be a variety of powerful tools and methods for selecting geometry. Tools and methods may include things like multi-select, box select, feature recognition, conditional selection, user defined features, patterns, selection lists/filters and so on. Selection across parts should be possible. Once the required geometry has been selected it is necessary to specify the transformation, and these systems should certainly have a variety of tools and methods for doing this as well. Multiple transformations in one operation may also be available. Intelligently interrogating the B-Rep and utilizing the information within is critical to the process of robust direct editing.

Of course after the selection and transformation has been defined, it is critical that the resulting modification be the expected one as there are often multiple solutions. Some examples of this are covered in an earlier post titled: "Getting Expected Results With Direct Editing".

Direct editing is certainly gaining momentum in our industry.  It provides a giant leap in flexibility over indirect editing, especially history-based indirect editing.  With some of the advanced selection methods that are now available in a few of the history-free systems, direct editing can even maintain relationships between parts and assemblies - something typically only done through indirect editing.

In the next and last post on this topic I will try to give some summary statements on what all of this can mean to product development, (although that is really up to you to determine).


Monday, August 17, 2009

Editing 3D Geometry – Indirect Editing

Indirect editing is typically used in parametric modeling, or history-based systems. With indirect editing, parameters, dimensions and other intelligence is associated to the 3D model and can be used to define possible transformations and relationships. In a history-based system this intelligence is captured in the history-tree at the time the model is being created. In contrast, with a history-free system the intelligence is captured in the B-Rep model, during or after model creation. In either case (history-based or history-free) this intelligence can be used to specify geometry transformations. The added intelligence describes “what” will change, i.e. the geometry, and “how” it will change, i.e. the transformation.

By modifying and processing this intelligence, the resulting 3D geometry will be different. What geometry is actually changed is completely dependent on how the intelligence is setup and structured. It is “indirect transformation” of 3D geometry.

The benefit of this technology (indirect editing) is that you can capture and/or assign a specific behavior to the model. In a situation where you can predict or anticipate future changes this technology can be very useful. It is also useful if it is important to tightly control relationships between faces, features and parts during edits.

Indirect Editing; History-Based

This is the environment that most 3D CAD users are familiar with. It is the standard method of changing 3D geometry in a history-based CAD system. Parameters at the 3D level are managed within the history tree and are structured in a parent/child relationship. Structure, relationships and parameters are always being created and ordered in the tree as the model is being developed. The process of properly organizing and managing this structure is not optional. It is something that every history-based CAD user must learn to be profecient with the tool . With history-based modeling you are either adding structure or modifying structure (indirect editing). When changes are made to the history (sketches, parameters, features, order) the tree/model is regenerated and is solved linearly based on the structure of the tree.

In this case it is important to know what the structure is and how a change will impact any child features. As it is linear there will be a “ripple” effect with this technology and as such it is important to know the structure before getting too aggressive with changes. In many cases the ripple effect is desired and equally in many cases it is not.

History tree in Pro/ENGINEER – ordered and structured

With history-based modeling users are actually editing the process and structure, or “recipe” that was defined at the time the model was created. You do not actually modify 3D geometry, but rather modify the recipe and then let the system rebuild the 3D geometry based on the modified recipe. In this context 3D geometry is always being recreated from the recipe rather than being modified.

As with any indirect editing capabilities, it is certainly possible to drive a change that can invalidate the model. Knowing how to work through these issues is critical to good history-based modeling.

This technology has recently been getting a bit of a facelift with what is called “dynamic” or “Instant” modification. With this capability a user can directly select a face or feature of a history-based model and dynamically modify the intelligence (parameters, dimensions) associated with the selected geometry. The intelligence is still solved linearly, but processing is more real time, or “instant”. It looks something like direct editing, but it is still indirect and as with any indirect edit, the results are completely dependant on the structure of the intelligence.

Indirect Editing; History-Free

This technology is not new but it is foreign to most CAD users. It provides the ability to indirectly manipulate 3D B-Rep geometry through added intelligence (parameters, dimensions) similar to indirect history-based modeling. However in this case parameters are not captured in a tree structure, but are rather captured, or “tagged” directly to the elements of the B-Rep model, i.e. points, edges or faces. Rather than being solved linearly these relationships are solved synchronously, or “nonlinear”. The order in which the parameters are assigned has no influence. With this technology there is no ripple effect based on a parent/child relationship, however one relationship can certainly drive another if desired.

Relations Browser in CoCreate Modeling – no order

With history-free indirect editing 3D geometry is actually being modified rather than being recreated as is the case in history-based modeling. There are several different technologies that can be used to modify B-Rep solid models. When modifications of a B-Rep are driven indirectly, the resulting transformation must not invalidate the B-Rep solid model. As we attempt to drive a particular geometry change through an indirect edit the system needs to be intelligent enough to provide the “expected” result, reliably.

As is the case with indirect history-based editing, changing a parameter will result in some change to the geometry. Knowing how the parameters are structured is important in order to make good use of the intelligence and achieve the desired results. As it is not order dependant (linear) it is relatively easy to manipulate this intelligence.

Today there are not many history-free CAD systems that provide this capability. PTC CoCreate Modeling is one of the few that does provide it. Here is an example of history-free indirect editing in CoCreate Modeling that I posted in a previous article:"Design Intent with History Free Modeling"

There are pros and cons to each; history-free indirect editing and history-based indirect editing. Understanding which one can best support your requirements can be a challenge, but will be worth the analysis.

In the next post we will review Direct Editing.


Thursday, August 13, 2009

Editing 3D Geometry (Introduction)

While history-based systems are learning how to interact directly with geometry and are becoming more “explicit”, history-free systems are learning how to drive geometry indirectly, or “parametrically”.

So what’s involved with editing 3D geometry? When we use a 3D CAD tool for design purposes we are basically describing and transforming 3D geometry in a virtual environment. Today this process is done “directly” or “indirectly”. Indirect describes the typical methods where structure and intelligence is defined and later modified to drive 3D geometry. Direct describes the “explicit” methods of interacting directly with 3D geometry. Interestingly enough, today both of these interaction models exist whether the 3D CAD system is history-based or history-free.

This article turned out a bit long so I’m going to break it up into a few parts. With these posts I want to specifically review the details of how 3D geometry is edited and modified in a 3D CAD system. I think that as we CAD users learn more about what is going on in our CAD systems and why, it can make us better users. I hope this discussion will help.

In the next two posts I will discuss these two technologies in detail. We will first take a look at how “indirect” editing works in the history-based environment and how it works in the history-free environment. Then we will take a look at how “direct” editing works in each of these two environments.

Watch for the following two posts in the near future. You can click on the follow-me link on the right side to be informed when they are posted.

Editing 3D Geometry – Indirect

With indirect editing, parameters, dimensions and other intelligence is added to the model that will define possible transformations and relationships. In a history-based system this intelligence is captured in the history-tree at the time the model is being created. With a history-free system the intelligence is captured in the B-Rep model during or after model creation. In either case this intelligence can be used for maintaining geometric relationships and for specifying geometry transformations.

  • Indirect Editing; History-Based
  • Indirect Editing; History-Free

Editing 3D Geometry – Direct

Direct editing requires no intelligence to be assigned or managed. This technology provides the ability to interact directly with the 3D B-Rep geometry. Directly manipulating a B-Rep model is not trivial but we are getting much smarter at it. As the edit is being done directly, geometry must be selected to edit and transformations must be explicitly defined.

  • Direct Editing; History-Based
  • Direct Editing; History-Free

At the end of these posts I will provide a quick summary and review of how these technologies can impact your product development process. Hopefully you will have a better idea of where these technologies can provide value.


Part 2 = Editing 3D Geometry - Indirect Editing

Part 3 = Editing 3D Geometry - Direct Editing

Part 4 = Editing 3D Geometry - Summary