Macro to add Revisions to Drawing Revision block table

A while ago, I created a SolidWorks macro that allows the user to quickly add new revisions to a drawing’s revision block table. It’s called RevBlockControl. I’m fairly proud of this macro because of its flexibility and easy of use. Within SolidWorks, it can be used for any ASME Y14.35M-1997 compliant revision block table and even supports not so compliant layouts. One cool feature is that it supports revision block tables that start either from the top or bottom of a drawing. The macro even provides an option to update a revision custom property (though the name of the custom property is stored in the code). This one function, of course, is not as useful for those who update their custom properties within the part model. Another requested feature that was included is the addition of buttons to insert some common special characters like line feed and the +/- symbol.

RevBlockControl 1.01

Image of an early version of the RevBlockControl

This macro will not work with manually drawn or excel based revision blocks. It only works with a SolidWorks revision block table.  One area of the macro needing improvement is that of settings. Currently, the settings are stored within the code itself, or user selected each time the macro is run. Also, it does not validate if the current revision block table matches the user selected settings. However, it does have clear instructions within a detailed help area that will allow even a novice user to quickly modify the code to establish their settings preferences. There is currently only one known bug involving the form X button. Use the actual Cancel button if quitting the macro without making changes to the revision block table.

One big plus of the macro is that it has a simple preview area that allows the user to visualize how their revision entry will appear. The preview updates to match whatever settings are selected, and any data entered into the input fields.

The macro may be downloaded here: RevBlockControl.  It may be freely distributed. For additional details, see its .txt file and its help area.  Feedback is always welcome.

SWW8 Free Admission to Exhibit Hall

Well, thank you to SolidMentor for breaking the news from the SWW8 registration site about the free Exhibit Hall Only passes.  I didn’t know whether or not I could say anything about the free passes in my previous post.  That doesn’t matter now since it was officially announced here:

SWW8 Preparation

I’m ready for my first trip to SolidWorks World 2008 (SWW8).   Yes, I’m mildly excited.   I got my coach flight picked, my hotel (not very many steps up from being a motel) reserved, got my economy class car rental reserved, and more importantly, I have all of my breakout and hands-on sessions “purchased “.   I was actually lucky to select one hands-on session, for reasons I shall not go into here.   [Insert maniacal laugh here].
I went back to the SWW8 registration site a couple of days after the announcement that the Session Preference Page was live.   After only a couple of days, I found every hands-on session fully booked with wait lists filled to the gills; except for one.   It doesn’t appear that the topic of how to link SolidWorks to ECAD systems with the IDF file format is very popular.   If someone is interested in Circuitworks, this seems like a good opportunity to get exposure on how to use it with SolidWorks.
I just went back to the Session Preference Page again today to find that apparently new hands-on session was added to Monday for those of us interested in SolidWorks API.   It’s meant as an introduction to API, so if anyone is interested in getting first time exposure, that session may be the ticket.
Two of the sessions to look forward to are Matt Lombard’s “Hybrid Modeling Techniques“, and Chris MacCormack’s “Using the Power of 3D to Teach GD&T“.   These are breakout sessions.
I found out the hard way that once you have a session booked for a particular time slot, you are pretty much locked into it.   I didn’t want to change my sessions, so this was fine with me.   I found out because I first thought my sessions had to be reselected when adding new sessions.   (The Session Preference Page isn’t all that clear about how it works when it comes to modifying one’s schedule.   It just gives you errors messages when you do something it doesn’t like.)   I guess if someone wanted to make a change, they’d have to contact the group that is organizing SWW8.
In addition to the Monday – Weds sessions, I’m also participating in at least two focus groups on Sunday, starting first thing in the morning.     That means I have to fly in on Saturday, instead of early Sunday.
Also, for those people who may be interested in just seeing the exhibit hall (maybe for just one day), I highly recommend contacting their VAR for possible deals before attempting to purchase the Exhibit Hall Only Pass from the SWW8 site.  This is especially true if you are attending with a full pass, but wish to bring along a co-worker who isn’t interested in the sessions but still wants to see the exhibit hall.
See you there! chrismaccormack

Materials Database Library

Click here for the download page of the updated ctopher SolidWorks material database library.

Have you ever needed a material database that has more than the standard materials that comes with SolidWorks? Over the past eight years I have created solid models for military and commercial designs that required accurate 3D models to send to our customers for weight and FEA analysis.I have weighed the actual against the calculated weight from SolidWorks and the parts were very accurate, 98-100% accurate. Major aerospace companies were pleased.I created my own material database based on the materials used in these industries; it is available on my site for free download: Materials.[Updated 9/2016 ML]

Sometime in the near future, I plan on expanding the material database to include materials requested by other SolidWorks users and friends. [Update 9/2016 is now available at the link above. ML]

Create a SolidWorks Drawing Watermark

For whatever reason, watermarks are sometimes necessary, even on drawings. Since SolidWorks has no watermark feature, and does not allow the user to change the order of drawing entities, a workaround is necessary. Here’s a method I recently discovered.(I am currently using SolidWorks 2007 SP3.1.)


  1. Open the drawing.
  2. Edit Sheet Format
  3. Use Annotation Note to create and place the text that will become the watermark.
  4. Edit the properties of the Note to adjust its font, angle, size, etc as desired.
  5. Highlight the Note and change its color using the Line Color function.For best results, assign a very light color to the Note.
  6. Right Mouse Button click on the Note and select Make Block and accept.
  7. Edit Sheet.


The Note will now appear underneath all other objects on the Drawing Sheet. This tip is based on the SolidWorks Forum discussion which can be found here:


I have written an article detailing a more advanced method that will link the text of the watermark directly to a custom property here: Create a SolidWorks Drawing Watermark (with linked value).


UPDATE for SolidWorks 2013

SolidWorks 2013 now has the ability to set any annotation note on the sheet format to appear underneath all drawing elements to act as a watermark.  The method mentioned above is no longer necessary to achieve the desired results. Please see SolidWorks 2013 What’s New – Display Note Behind Sheet.

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.