SWW09: Skeletons and Modelling Horizontally (live, nearly)

I’m rudely blogging live from a breakout session.  Of all people, it’s Matt Lombard I’m doing this to.  He will appreciate the ironic nature of this activity.  Will he hate me for it when he finds out?  No, unless my typing annoys him right now.

OK, I’m far enough back in the room where this doesn’t seem to be an issue, though there may be people around me that might be annoyed.  Again, no one seems to care.  (If the person next to me is trying to hint to me to stop by clearing your throat, let me apologize now.  Anyways, here we go!)

Matt says people are error phobic.  They worry if they have errors in a model.  This may cause unnecessary worry about finding errors in models.

Horizontal modelling is taking things to the extreme to protect your modelling data to avoid errors in the model.  Someone interested in this type of modelling approach is interested in trying to solve a problem they are experiencing.  The two methods to address such problems are to 1) ignore them when they crop up, or 2) presumptively stop daisy chaining references.  Link to objects that don’t break, such as sketches and planes.  Don’t link to solid faces, edges and vertices.

He compares a model created through regular practice with the same part modelled with horizontal modeling.  The relationships between features are all over the place with the regular methods, compared with clean results from horizontal modeling.  In the HM model, origin planes form the foundation, when are linked to reference places, then linked to reference sketch, with independent features that are all linked back to the reference sketch; at the end are the fillets.

Design intent is described by the edges.  HM allows one to lay out design intent with a set of sketches.  Features created from this will not fail if they are re-ordered (except for fillets).  Matt then demonstrate that HM doesn’t work quite by accident, so we continue the demonstration “theoretically”.  I think the failure to achieve the desired results shows just how hard it is to implement HM effectively.  Thank god watching Matt is entertaining because this type of issue in any other session would result in very boring dead time.  Matt actively engages the audience, which is now trying to address why SolidWorks created unintended relationships in his demonstration model.  Going through this process is interesting, but distracting.

In a question from Matt about who is using HM, the audience answers.  One person states they use HM for multiple configuration components, but would not bother in a simple single configuration part.  Another individual states it is also useful in in-context model assemblies.  HM may also be useful in 2D drawings.  Of course, now the audience is trying to discuss the demonstration model.  There doesn’t really seem to be a consensus; again pointing back to issues with trying to employ HM.  Of course, maybe that just means there are more than one way to achieve stable HM.

HM models are modelled to live forever through changes.  Concept modelling may not be able to employ HM techniques since the part may not be fully understood at the time when modelling is started.

In an almost conclusionary lament, Matt states that everything in SolidWorks is like a balance between stability versus speed of use.  Using HM modelling techniques is a tool to use at the appropriate situation, such as well understood production items where the design is complete before modelling begins.

OK, just for the record (Matt), the only reason I’m live blogging is because I really do not have the time to get all the articles done that I want to this day.  I promise I will not do this in the future.  Thank you for your presentation.

Capturing function in a model assembly

To expand on my previous post, methodology in using SolidWorks should employ strategies that capture function (not just form and fit). This is true at the individual model level, and at the model assembly level. There are likely many ways to capture function within a model assembly. If used in a particular way, Horizontal Modeling can be employed. Other methods are Top-Down and Bottom-Up. Given the names of these methods, it is easy to see where the name “Horizontal” came from. The methods described here are for engineering environment where much of the design is custom or discrete parts, where similar componentry is rare. (As presented here, this is not the best methodology for creating model assemblies where componentry is very similar for a multitude of products, though some individual methods covered in this article might still be useful in that environment.)  I don’t presume that what I’ve written here some sort of final say.  My ideas have evolved over the years, and I’m sure they will continue to evolve as SolidWorks will evolve.

So, my preferred method doesn’t really have a name, per se. I use which ever methods are best for the particular task at hand, within certain given rules. For example, when working with model assemblies, it’s usually not a good idea to solidly use Top-Down methods. That is, do not create models at the assembly level and work down from there. It’s not that this is conceptually bad. It’s just that SolidWorks doesn’t do a good job at handing this method in the extreme examples. It creates relationships that are unnecessary and hard to detect during troubleshooting. (Yes, I realize this goes against the whole idea of parametrics, upon which SolidWorks, Pro-E and other applications are supposedly based.) However, some level of thought has to be put into building a model assembly that does resemble Top-Down methodology. To capture the function of an assembly within SolidWorks, an understanding of how the components interact with each in the real world must be considered. This is tempered by the need to create as much of a stable and editable model assembly as possible.

To do this, parts must be modelled with their most significant function as the core. This is the feature that is the most functionally laden. This is often the feature where the most important interfacing with other components occurs. Center that feature about the default reference geometry (the three default planes). Think about how the part is to interface with other parts. For example for a basic part, relative to the top view of the feature to its function, the feature should be centered on the X and Y plans, with the Z plane assigned to the mounting surface. Other methods also exist. The idea is to model the feature in the most functionally meaning way. If this is done consistently on all models within a model assembly, mating those components together using Horizontal Modeling methods will be much easier to execute and edit.

Once parts are modelled in this way, the model assembly is a simple matter. The reference geometry of that very same core feature can now be used at the assembly level. Before starting the design and modelling, determine the most significant part. This is the part that carries the highest functional burden. This can be the component to which most other components mate (such as a base plate). It can also be the component that interfaces with another model assembly or critical component. Other possibilities exist too.


Whatever type of part you decide is the significant component in your assembly, it is that part which should be first inserted into the model assembly. Align that model’s reference geometry to the three default planes of the model assembly, but do not mate the model to the model assembly’s reference geometry. In fact, never mate any model to the model assembly’s three default planes. Instead, fix the most significant component. This is the component to which all other parts will be mated, directly or indirectly. There are three main reasons for this. First, this functionally establishes the part as the core of the assembly. Second, this significantly reduces the chances that unnecessary or unintended relationships will occur in the assembly. Third, it allow the assembly more degrees of editability should realignment of this or other portions need to occur.


Only mate components to other fully defined components. All mating should be driven by function. Mate components to the core model as they would be in real life. This means using a logical combination of both reference geometry and feature geometry. If two faces functionally mate flush to each other in real life, then make the surfaces coincident in the model assembly. If a component is to be centered on a mounting plate, don’t use the mounting holes to mate the part together. Use the models center planes and the interfacing surface. Yes, apply the best method. Don’t use only features or only reference geometry. There is no preference between the two methods. Use the method that best captures the function. This may be counter-intuitive to some people. However, if it is understood that this is how a model assembly was built, I feel that this is the most intuitive methodology. Build the assembly based on function.


More important functions take precedent over lesser functions. If a model is fully defined, do not apply more mates to it to capture further function.  This would be both redundant to the primary function(s), and cause over-defining errors very quickly in SolidWorks. This is part of the general rule for all modelling methods, avoid establishing unnecessary relationships. Having them will ruin any attempts of any good practices methodology.


By using this methodology (or combinations of methodologies, actually), one can capture a parts form, fit and its function within the SolidWorks environment.