If you’re the kind of person who needs to have things perfectly nailed down and defined, you might possibly be better served by some other blog. I sometimes get involved in conjecture, which means that I’m looking for facts rather than presenting facts. It seems there are a few people out there who do not understand the difference, or don’t accept that conjecture is a valid pursuit.
Anyway, you’ve been warned.
We’re closing in on it. We’ve talked about several topics surrounding the Direct Editing craze that is making its way through the blogger, press and analyst circuit. Users are not silent on the issue, but what they have to say so far sounds relatively uninformed. More on that later. For now, on with the show.
From a previous post, history modeling brings advantages as well as disadvantages. There is both downside and upside when you separate history from the rest of the attributes that we normally associate with history modeling. I think we tolerate history modeling primarily because we don’t know anything else. It isn’t clear to me that history modeling is necessarily the best way of looking at all types CAD models. This is all I’ll have to say about history modeling for this post.
Parametrics, on the other hand, I think has clearly demonstrable advantages. The ability to make geometric relations, using equations, dimensions, etc. This is the kind of thing we use to establish “design intent” or an “intelligent model”.
What interests me today is if you can separate parametrics from history, and if you can, what would the result look like? What is parametrics? It’s just the use of “parameters”, right? We have come to think of “parameters” as dimensions, numbers (for patterns), equations, relationships, stuff like that. So what if you took that stuff and just attached it to the finished model? Is there any reason why you can’t attach dimensions and relations to the finished model instead of to sketches and in dialog boxes?
If you look at SolidWorks, you can put dimensions on the finished model, but they are driven dimensions, reference dimensions, they just measure, they don’t drive. I understand the interface for doing this doesn’t exist within SolidWorks, but let’s just say that you’re God for the moment, ok, maybe not God, but at least the head of a talented bunch of programmers, and you can do anything. Is there any logical reason that would prevent you from applying dimensions to a 3D model, and when the dimensions are changed, the part geometry changes to match? It’s such an obvious thing to do, why aren’t people doing this?
Let’s do a little homework. Just assume for the time being that you have a fully “intelligent” SolidWorks model in one window, and in another window, you have that same SolidWorks model, exported as a Parasolid and reimported. The reimported file is what is commonly known as a “dumb” solid. It is imported. It has no features or sketches. It is dumb because you can’t edit it. So right there, side by side, one imported and one native, the same geometry, but one is intelligent and the other is not.
The funny thing about this is that the final geometry, the Parasolid body, is described inside the SolidWorks file in exactly the same way. So the finished model is exactly the same, regardless if it is imported or native. Let that sink in. I believe it’s true, or close enough for our purposes.
SolidWorks currently has a feature called Move Face. It enables you to select a face or set of faces from a solid or surface model, regardless of how the face was created and translate, rotate or offset the faces. This tool has limitations, and the interface is comparatively primitive, but it works, and it works on both native models and imported models.
There are some aspects of the Move Face tool that are kind of funny. First of all, it is essentially a direct modeling tool being used inside a history-based modeling scheme. It creates a history-based feature which resides in the feature tree, and is rebuilt along with the rest of the features. I wrote about this contradiction over a year ago in a post called Stepping outside of the parametric feature-based paradigm with SolidWorks. (If you read that post, it might look like some of my ideas about this have evolved over the last year and a half, and there’s a reason for that – because they have.) There are all sorts of best practice concerns about mixing history-based paradigm and direct editing methods. I’ve heard some top users say bad things about using Move Face, calling it sloppy practice and worse. I don’t disagree. But the fact is that it works, and when it works, it typically saves you a lot of time when compared to the monkeying around that you would need to do in order to do the job “correctly”.
I used to spin my wheels a lot trying to follow arbitrary rules. It took me a while to realize that it is better to have rules you can live with than to just follow rules because they are there. I think the same applies to this Move Face functionality. History-based best practice rules declare that Move Face is an abombination, sloppy, hack-and-whack modeling. So try to imagine a set of rules where saving time and brain power is a good thing.
Just think that if the Move Face interface were improved, and instead of it working through a PropertyManager dialog box, instead you were just able to put a dimension on the model and make changes, think of how convenient that would be. You wouldn’t have to mess with the feature order, or the FeatureManager or parent/child relations. You wouldn’t have to worry about other features failing. This would just be the interface change because the inner workings of the software using the Parasolid kernel to calculate the geometry would still be the same.
So, do you still think that parametrics can’t exist without history? Here’s the kicker. I already knew the answer before I asked the question. The answer is yes, parametrics without history can and in fact does alreadyexist. Check this out:
This model was created in SolidWorks, by the way, but it really doesn’t matter. This is just a teaser. And no, I didn’t use any demo jock voodoo on this. It is just what it looks like it is, putting dimensions on an imported model, and changing the imported model.
There I hope that puts that one to rest. For now you’ll have to trust me that you can do geometric relations as well as dimensions, but if you watch you can see the sides of the rib that are tangent to the top cylinder change when the outer cylinder gets bigger, so it is maintaining tangency, which is done in the Live Rules panel in the upper left. You really can’t see that, but it’s there, and can be either added to or disabled according to your needs. Really, the video just scratches the surface. You’ll see more of this from me in various places.