I’m going through some of my old Dezignstuff blog posts and republishing some of the less embarrassing ones. It’s fun to watch my point of view evolve over time. I might edit some of them here and there. For those of you out there who are going through the discovery of history-free CAD, some of the ideas in these posts might feel familiar to you.
This particular article was one where I started to question the supremacy of history-based systems, although I may not have thought about it that way at the time. Just to put it in historical perspective, this was written in April 2007, seven years ago.
If you remember an old post that was primarily technical that you’d like to see again, let me know and I’ll try to dig it up.
SolidWorks is a parametric feature-based, history-based solid modeler. Whatever that means. In SolidWorks, and other similar software, a model is usually edited by going back to the original feature used to create it, and changing the parameters defining the certain aspects of the feature. In most situations, this way of working is more than adequate and works well. The history-based nature means that features listed after the one changed will update to match the changes in any earlier features. This system of defining and creating features and building features into parts depends on you following a process. Both creation and editing require following steps in this modeling process. None of this is news to anyone who has used the software. Some CAD software packages do not follow this way of doing things. Rhino is probably the best known example of a non-feature based modeler. In Rhino, you just make and edit surfaces, either by defining curves that drive the surface, or by creating a “primitive” (pre-defined shape such as a cylinder or sphere), and tug-and-pulling that into whatever shape you like as if it were a lump of clay. The advantage that users get is that there is no “process”. You just edit the geometry directly. There is no history. There are no features, just different techniques for making and editing curves and surfaces.
One of the strengths of tools of this sort is that they can deal with imported geometry in the same way as native geometry. It is all just NURBS after all.
If this freestyle design concept strikes your fancy, you can model in SolidWorks while ignoring the feature tree. I’ve seen people do this. One industrial designer and one aeronautical engineer (who shall remain nameless) have been guilty of giving me models created as if SolidWorks were not a parametric history modeler. Essentially, the models had material added, and then cut away (instead of edited or deleted). One of the models got to the end of a complex and confusing set of features, and then used a Delete Body feature (which is a history-based technique for limiting access to solid or surface bodies), and then started all over again. Another one modeled an entire assembly as a single part, and then cut off everything except a tiny little detail.
I’m sure this happens far more frequently than anyone will admit to (have you ever heard anyone admit to changing dimension display values in AutoCAD without updating the actually geometry?) In both cases, everything they did, an entire record of their sins, remained in the feature tree. One of the same guys did a complex model and realized he couldn’t control it, so he saved it as a parasolid and brought it back in and then proceeded to add more features. Don’t be a dork. Don’t do this. Please. I know when you are just concepting, it can be tempting to hack-and-slash, which is ok if it’s a first run concept and you’re just trying to get an idea into the computer, but really, for your own sake, don’t let those kind of models leave your own computer. You can lose a lot of credibility by sending out something like that. That said, there are ways of stepping outside of the rigidly structured parametric feature-based modeling paradigm enforced by SolidWorks which are still controversial, but not in the “reckless disregard for best practice” category of the previous examples.
Move Face is a feature which enables you to translate, offset or rotate a face of a solid or surface model, and still maintain the integrity of the body. This is not the Offset Surface feature, which makes a copy, this alters the existing body. The original feature(s) that created the face(s) being moved is not affected at all. The Move Face feature sits in the tree like any other history based feature, but it is not using the original parametric feature to edit the geometry. It is basically editing the geometry directly instead of through a parametric feature. The Move Face feature works the same regardless of how the faces being moved were built or whether they belong to a single or multiple features. It can add or remove material, it cannot push a boss into a part to make a cut, although it can completely remove a feature.Move Face is found through the menus at Insert, Face, Move, or is part of the Features set of toolbar buttons, not on the toolbar by default, use Tools, Customize to add it. This function is difficult to find in the SolidWorks Help, and doesn’t appear if you use the index. Once you do find it there is no example, and no screen shot of the interface. Someone needs to help the people writing the help.
One of the major implications of this feature is that it enables you to easily edit imported models. You can change the size of fillets using the offset option, move bosses, elongate faces, and many other things, all without leaving the comfortable world of solid modeling.
Move Body feature can be used to position bodies within a part relative to the origin, relative to their original location or relative to one another using either coordinate values or mates. Don’t think of this as a replacement for an assembly. It is not. There are situations where using multibody parts as a surrogate for an assembly is a practical approach.
Delete Face is a feature that can turn a solid body into a surface body, or maintain the body type whether it is solid or surface. If the Delete And Patch option is used, SolidWorks tries to extend or trim neighboring faces so that the selected face can be removed from the model. This makes the Delete Face feature seem like a wonderfully magic tool, and it is, but you should pay attention to how it is used, because you pay a performance price for using it. Using the Delete option will turn a solid into a surface, or remove faces from a surface body. This is not creating a copy of the body like the Offset or Knit commands. Again, one of the most impressive things about using Delete Face is its ability to edit imported geometry. A good understanding of the boundary representation concept is important to understand how Delete face works, especially when using the Delete and Patch option.
Delete Hole is a specialized feature which works on surface bodies to remove holes within the surface boundary. This is accessed by clicking on the edge of a hole and pressing the Delete key on the keyboard. It is essentially the same as an Untrim, which restores the underlying geometry of a surface body by removing imposed boundaries.
Delete Body mentioned earlier is not actually a delete function at all. It is just another history-based feature that sits in the FeatureManager. Before the Delete Body feature in the tree, the user has access to the body, and after the feature in the tree, the body cannot be accessed. The body or bodies in question are not deleted at all, they still exist inside the SolidWorks file but they are simply no longer available to the user if the feature is unsuppressed. Performance and file size are not improved by using Delete Body to get rid of unneeded bodies, except display performance, but still the improvement is no greater than simply hiding the body. The only difference between a hidden body and a deleted body is that the user or automated functions cannot access the deleted body at all without rolling back, deleting or suppressing the Delete Bodies feature.
The Delete Body feature can be found in the menus at Insert, Feature, Delete Body. The toolbar button is in the Features set and is called Delete Solid/Surface. Why do some features have different names in the menus vs the toolbars? Dunno.
Flex is another feature which edits the model geometry directly. This can be used to twist, bend, stretch and taper a model, again without regard to features used to create the geometry originally, and also works equally well on imported models.
Deform is a feature which enables various ways of deforming all or part of a model based on several different methods. The most useful method is the Curve To Curve deformation which enables you to create a sketch or 3D curve and force a model edge to match that curve.
You may find many of these tools useful in various techniques, but keep in mind that the shortest possible path is not always the best way. The Deform feature can be dreadfully approximate, and while it can produce interesting shapes, you don’t really have much control and the results can’t be said to be “intentional”, especially the Surface Push option. Flex can be useful for creating “looks like” representations of flexible models in various positions which might be incredibly difficult to create using other methods, but the quality of the resulting geometry is pretty poor.
All of these methods are described in more detail in the SolidWorks Bible. More importantly, best practice considerations are explored for each one. Best practice is never an absolute set of commands, but rather a vague set of principles which need to be applied in various situations and weighed against competing/conflicting considerations.
Stepping outside of the traditional history/feature-based modeling paradigm in SolidWorks does give you a lot of power, especially when it comes to editing imported data, but these techniques need to be applied thoughtfully when working with native data and when considering that your work may be shared with others or even when you must extensively edit your own models, which is when “best practice” concepts need to be applied.
Just in the line of commentary on my own stuff, you can see that I was just starting to question the whole history-free concept, and that I didn’t understand it yet. I was still making excuses about how you could shoe-horn a history-based program into a tortured workflow to make it work like something more useful.
With the benefit of hindsight, it’s easy to see that some features help a history-based system emulate a history-free system, but do it with a lot of bad side effects primarily including rebuild time. And use a lot of artificial rules such as “best practice” and “design intent”.
For me going back to read this stuff reminds me of how archaic history-based modeling really is.