The management of CAD files, revisions, releases, documentation, bill of materials, and other product files, is usually done in a proprietary system called a PLM (Product Lifecycle Management). These are large, cumbersome tools used in large organizations for the robustness of documentation and traceability, and usually require a dedicated PLM team to manage.
For personal projects or even small startups, you don't need all that. But once you have somewhere between 10-1000 parts, you need some kind of system.
Sam Feller, from AwkwardEngineer.com , has an excellent guide for practical and agile BoM management (website here and direct link here). The following is my implementation of his BoM principles.
First, our goals for this homebrew PLM system:
Easy to use PLM system for projects with about 500 parts or so.
Know two things: what we've built, and the current state of our design.
Project files can be broken down into three categories:
Design files - the CAD design files themselves.
Specification files - the specification that defines a mechanical part. STEP file and CAD drawings. You can think of this as a "Release".
Manufacturing files - low level files used to run manufacturing machines, like G-code.
-
Next, let's talk about software vs hardware file management.
Software is essentially text. You can duplicate the code, edit one section, and merge it back to the master file at any time, because the git revision management tool can check for the differences between the two versions of the code. Saving multiple copies of every revision is trivial, with very small file sizes.
CAD data is way more complicated, and two versions cannot be easily compared the way text can. You also cannot have two people working on the same part at the same time, which leads to the PLM "check in/check out" process.
Sam's idea has two components:
You have a master "in development" design branch, and you branch off a "Release" copy any time you do anything. Official public releases, unofficial prototype testing, hardware hacking, small subassembly testing, etc.
You only need to save the final end state of each release build branch.
Releases can be official releases (whatever you define as "freezing and releasing"), or unofficial releases for miscellaneous builds.
This allows you to track what you've built in the past, as well as track where you are with the main design.
FOLDER CONTENTS
The Design Folder
Contains the most current, up to date version of the design files. Nothing else.
You must periodically clean the design folder of unused files.
Delete what you are comfortable deleting, especially if there is a backup in a Release Folder already.
All other unused files can be stored under an "ARCHIVE" folder in the design folder.
The Release Folders
Create a Release Folder anytime you want to make a snapshot in time of the design.
Store both design and manufacturing files, including BoMs, RFQs, builds, and POs.
Store haphazard info such as receipts, photos, and build notes as well.
INFORMAL RELEASE
Make a new sequentially numbered release folder.
Take a snapshot of the design by storing a copy.
Store receipts, photos, and other notes in the release folder.
FORMAL RELEASE
Make a new, sequentially numbered entry in the release folder.
Export a BOM spreadsheet from the top level assembly CAD model of the product. (NOTE: I model everything, this is why!)
Make a snapshot of the design by storing a copy in the release folder.
Make sure all design files and specification files are revision controlled and marked “READ ONLY”.
Store purchase orders, receipts, photos, and other notes
My Setup
RULES
All parts MUST be modeled in the CAD.
The CAD is the source of truth for you BoM, and you should only generate BoM's directly from the CAD software.
I am calling the main branch "MAIN Development Design", and the release branches "RELEASE".
Part Numbers
Format: PXXX_NOUN_ADJ_DESCRIPTORS.sldprt
Letters
A for Assembly and Subassemblies
P for Part
REF for References
A reference part relative to your design but not in the design (a CAD file of a monitor for a webcam mount, for example)
A reference part or part body used in some way, but is not an actual final part (such as boolean negatives for bearing races).
Numbers
Assign them sequentially. This system does not assign PNs any meaning.
NOUN/ADJECTIVES/DESCRIPTORS
Describe your part from big picture to small details. If there are many similar parts of the same name, add a modifier to the NOUN to describe it. Examples:
A0001_ASSEMBLY_PROJECT_NAME.sldasm
P0001_STRUCTURE_BASE.sldprt
P0002_BEARING_OD4.5_RACE_OUTER.sldprt
Parts use all caps and underscores in accordance with industry best practices.
REVISIONS
Revisions need to be handled in the CAD software, assigned as metadata to your part/assembly files themselves.
Only once you create a RELEASE branch and you modify a file differently from the main branch should you add both revision number and branch number.
Revision Nomenclature: A01
Major revision (A, B, C), minor revision (01, 02)
Branch Revision Nomenclature: A01_branch01
MAIN
A0001_ASSEMBLY_PROJECT_NAME.sldasm (in Solidworks, stated as Revision A03)
BRANCH 01
A0001_ASSEMBLY_PROJECT_NAME_A03_BRANCH01.sldasm
P0004_BRACKET_SHOULDER_A01_BRANCH01.sldprt
Since I modified the bracket, I need to rename the bracket and the assembly it's in to reflect the branch update.
More Tips:
I use a Solidworks macro to run a “Pack-and-go” process on the top
level assembly. It exports all the files in the assembly to a flat folder
and it changes the file name to include the revision. Once the file
leaves my system, it’s not my revision control, hence the need to tag
the file name.
● It is also possible to release portions of a product in this fashion, for example, circuit boards, or mechanical subassemblies. They can each get their own release folder.
● I use a either a fresh tab, or a completely fresh spreadsheet for each build.
● There are techniques for organizing CAD models and also special tools within Solidworks to manage BOMs. These tips are important enough and complicated enough to warrant their own section. See below.