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).



Anonymous said...

I recently came accross your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.


Anonymous said...

I also enjoy reading these blog posts. They are very professional and don't contain any overt bias or marketing slant.

I've been doing history based all my career, but my current employer uses cocreate and so I'm starting to learn it.

I wonder how direct modelers perform vs. history based in the category of large assy management. If I open up a "large" assy in solidworks or pro/e, will the "same" assy in cocreate "regenerate" at the same speed? I wouldn't expect one to know the answer definitively, but would be interested to hear some thoughts...


Paul Hamilton said...

Thanks for the comments. It's always good to hear from readers.

I actually have a post and video I am working on regarding large assembly management with direct modeling. I have some very large assemblies that I have been testing with about 6 different CAD systems. You will be pleased with CoCreate. Very simply put, there is MUCH less data to manage with a history-free model.

Anonymous said...

First of all. Thanks very much for your useful post.

I just came across your blog and wanted to drop you a note telling you how impressed I was with the information you have posted here.

Please let me introduce you some info related to this post and I hope that it is useful for community.

Source: Selection methods

Thanks again