| name | solidworks-design-vault-cad |
| description | Access and utilize production-ready SolidWorks parametric 3D CAD models with manufacturing intelligence for mechanical design projects. |
| triggers | ["open a SolidWorks model from the design vault","find a parametric CAD assembly for manufacturing","load a gear or sprocket model with design tables","get a production-ready SolidWorks part file","access mechanical CAD templates with BOM automation","use SolidWorks files with manufacturing constraints","configure a parametric assembly from the vault","export CAD models with material properties"] |
SolidWorks Design Vault CAD Skill
Skill by ara.so — Design Skills collection.
Overview
The SolidWorks Design Vault is a curated repository of production-ready parametric 3D CAD models built for professional mechanical design. It contains .SLDPRT (part files), .SLDASM (assembly files), and .SLDDRW (drawing files) optimized for real-world manufacturing with GD&T principles, tolerance analysis, and material-conscious geometry.
Each model features:
- Parametric DNA: Global variables and linked dimensions for automatic updates
- Manufacturing Intelligence: Draft angles, wall thickness, thread forms (ASME B1.1, ISO 68-1)
- Design Tables: Multiple configurations for common variations
- BOM Automation: Auto-populated bills of materials with material density and machining time
- Multi-format Export: STEP, IGES, STL outputs with proper face normals
Installation
Download the Repository
git clone https://github.com/fgiafrica/SolidWork-Design-Vault.git
cd SolidWork-Design-Vault
Access via Web Interface
Visit the project page and use the download button:
https://fgiafrica.github.io/SolidWork-Design-Vault/
File Requirements
- SolidWorks Version: 2021 or later recommended
- File Extensions:
.SLDPRT, .SLDASM, .SLDDRW
- Dependencies: Some assemblies reference standard parts libraries
Repository Structure
SolidWork/
├── Assemblies/ # Multi-body interlocking systems
│ ├── Linear_Actuator/ # Ball screw mechanism with preload
│ └── Vise_Grip/ # Compound leverage simulation
├── Parts/ # Standalone manufacturable elements
│ ├── Sprockets/ # ISO-standard tooth profiles
│ └── Gaskets/ # Compressed elastomer shapes
├── Templates/ # Custom property tabs & BOM formats
│ └── Sheet_Metal/ # Bend allowance tables included
└── Drawings/ # 2D representations with ordinate dims
└── Gearbox_Exploded/ # Ballooned view for assembly instructions
Working with Part Files
Opening a Basic Part
import os
part_path = "Parts/Sprockets/Double_Pitch_40_Bore.sldprt"
if os.path.exists(part_path):
print(f"Part located: {part_path}")
Understanding Design Tables
Design tables allow configuration switching within a single file:
- Open
Double_Pitch_40_Bore.sldprt
- Right-click on "Design Table" in Feature Manager
- Select configuration from dropdown (e.g., "1/2 inch bore", "12mm bore")
- Model regenerates with updated hub geometry and keyway
Key Parameters in Design Tables:
Bore_Diameter: Shaft size
Hub_Length: Axial engagement
Keyway_Width: Per ISO 2491 or ANSI B17.1
Material: Steel, Aluminum, Nylon
Custom Properties
Each part contains manufacturing metadata:
Custom Properties:
├── Vendor_Part_Number: "SPK-40-2P-B12"
├── Material_Grade: "AISI 1045 Steel"
├── Surface_Finish: "125 RMS"
├── Weight: Auto-calculated from density
└── Estimated_Cost: Based on material volume
Working with Assemblies
Loading an Assembly
cd Assemblies/Linear_Actuator/
Assembly Mate Structure
Assemblies use disciplined mating:
- Concentric mates: For shaft/bore relationships
- Coincident mates: For planar surfaces
- Distance mates: With limit constraints
- NO "Width" or "Symmetric" mates (per contributing protocols)
BOM Extraction
import csv
def extract_bom(assembly_path):
"""
Parse SolidWorks custom properties for BOM generation
Note: Requires SolidWorks API or pre-exported CSV
"""
bom_data = {
'part_number': 'LA-001',
'description': 'Linear Actuator Assembly',
'components': [
{'name': 'Drive_Screw', 'qty': 1, 'material': 'AISI 4140'},
{'name': 'Ball_Nut', 'qty': 1, 'material': 'Bronze'},
{'name': 'Motor_Mount', 'qty': 2, 'material': 'AL 6061-T6'}
]
}
return bom_data
bom = extract_bom("Linear_Actuator_Main.sldasm")
with open('bom_export.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['name', 'qty', 'material'])
writer.writeheader()
writer.writerows(bom['components'])
Export Workflows
Convert to Neutral Formats
For CNC programming or FEA analysis:
SolidWorks GUI Method:
- File → Save As
- Select format:
.STEP (AP214 for machining), .IGES, .STL
- Options → Check "Export as one file" for assemblies
- Confirm face normals are outward-pointing
Automated Export (SolidWorks API - VBA Example):
Sub ExportToSTEP()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim filePath As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
filePath = "C:\Export\" & swModel.GetTitle & ".STEP"
' Export with AP214 protocol
swModel.SaveAs3 filePath, 0, 0
End Sub
Python Automation with pywin32
import win32com.client
import os
def export_part_to_step(sldprt_path, output_dir):
"""
Automate SolidWorks export using Windows COM interface
Requires SolidWorks installed and pywin32 package
"""
sw = win32com.client.Dispatch("SldWorks.Application")
sw.Visible = True
doc = sw.OpenDoc(sldprt_path, 1)
output_path = os.path.join(output_dir,
os.path.basename(sldprt_path).replace('.SLDPRT', '.STEP'))
doc.SaveAs(output_path)
sw.CloseDoc(doc.GetTitle())
return output_path
export_part_to_step(
"Parts/Sprockets/Double_Pitch_40_Bore.sldprt",
"/export/cnc_models/"
)
Configuration Management
Parametric Modification
const edge = require('edge-js');
const modifyParameter = edge.func(`
async (input) => {
var swApp = (SldWorks.SldWorks)System.Activator.CreateInstance(
System.Type.GetTypeFromProgID("SldWorks.Application"));
var doc = swApp.ActiveDoc;
// Access equation manager
var eqnMgr = doc.GetEquationMgr();
// Update global variable (e.g., gear module)
int index = eqnMgr.FindEquation("\"Module\"");
eqnMgr.SetEquationValue(index, (double)input.value);
doc.ForceRebuild3(true);
return "Parameter updated";
}
`);
modifyParameter({ value: 2.5 }, (error, result) => {
console.log(result);
});
Design Table Templates
Create custom configurations:
<table>
<tr>
<th>Configuration</th>
<th>Bore_Diameter@Sketch1</th>
<th>Hub_Length@Boss-Extrude1</th>
<th>Material</th>
</tr>
<tr>
<td>Config_12mm</td>
<td>12</td>
<td>30</td>
<td>Steel_1045</td>
</tr>
<tr>
<td>Config_1/2in</td>
<td>0.5in</td>
<td>1.25in</td>
<td>Aluminum_6061</td>
</tr>
</table>
Common Patterns
Pattern 1: Rapid Prototyping Workflow
cd Parts/Sprockets/
Pattern 2: Assembly Integration
def integrate_vault_part(vault_part_path, custom_assembly_path):
"""
Add a vault component to your custom assembly
"""
steps = [
"1. Open your target assembly in SolidWorks",
"2. Insert → Component → Existing Part/Assembly",
f"3. Browse to: {vault_part_path}",
"4. Place component at desired location",
"5. Add mates: Concentric (shaft to bore), Coincident (faces)",
"6. Verify clearances with Interference Detection"
]
return "\n".join(steps)
print(integrate_vault_part(
"Parts/Sprockets/Double_Pitch_40_Bore.sldprt",
"MyProject/CustomGearbox.sldasm"
))
Pattern 3: Material Library Linkage
<material name="AISI_1045_Normalized">
<density>7850</density>
<elastic_modulus>200000</elastic_modulus>
<poisson_ratio>0.29</poisson_ratio>
<yield_strength>530</yield_strength>
<thermal_expansion>11.5e-6</thermal_expansion>
</material>
Troubleshooting
Issue: File Won't Open
Cause: SolidWorks version mismatch (file created in newer version)
Solution:
Issue: Missing References in Assembly
Cause: External component paths broken
Solution:
def fix_assembly_references(assembly_path):
"""
Update file paths for moved components
"""
print("In SolidWorks:")
print("1. File → Find References")
print("2. Browse to new component locations")
print("3. Save assembly to update paths")
print("Alternative: Use Pack and Go to collect all files")
fix_assembly_references("Assemblies/Linear_Actuator/Linear_Actuator_Main.sldasm")
Issue: Design Table Not Updating
Cause: Excel link broken or cell formulas incorrect
Solution:
' Rebuild design table
Sub RefreshDesignTable()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDesignTable As SldWorks.DesignTable
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDesignTable = swModel.GetDesignTable
' Force update
swDesignTable.Edit True
swDesignTable.UpdateModel
End Sub
Issue: Export File Size Too Large
Cause: Unnecessary detail in STL/STEP export
Solution:
Advanced Usage
FEA Preparation
def prepare_for_fea(part_path):
"""
Export with mid-surface extraction for shell elements
"""
instructions = {
'sheet_metal_parts': [
'Insert → Surface → Mid-Surface',
'Select all sheet metal faces',
'Export mid-surface as separate body'
],
'solid_parts': [
'Simplify geometry: Suppress small fillets',
'Remove cosmetic features',
'Export as Parasolid (.x_t) for solver import'
]
}
return instructions
print(prepare_for_fea("Parts/Gaskets/O-Ring_Housing.sldprt"))
Batch Processing
import os
import subprocess
def batch_convert_to_pdf(drawings_dir):
"""
Convert all .SLDDRW files to PDF for manufacturing
Requires SolidWorks batch converter or API
"""
drawings = [f for f in os.listdir(drawings_dir) if f.endswith('.SLDDRW')]
for dwg in drawings:
input_path = os.path.join(drawings_dir, dwg)
output_path = input_path.replace('.SLDDRW', '.PDF')
cmd = [
'C:\\Program Files\\SOLIDWORKS\\swScheduler.exe',
'/task:ExportFiles',
f'/input:{input_path}',
f'/output:{output_path}',
'/format:PDF'
]
subprocess.run(cmd)
return f"Converted {len(drawings)} drawings"
batch_convert_to_pdf("Drawings/Gearbox_Exploded/")
Contributing to the Vault
File Preparation Checklist
Before submitting new models:
- [ ] Design table with ≥3 configurations
- [ ] Custom properties filled (Vendor_Part_Number, Material_Grade)
- [ ] Mates use only Concentric/Coincident/Distance (no Width/Symmetric)
- [ ] Mass properties calculated (Tools → Mass Properties)
- [ ] Drawings follow ASME Y14.5 dimensioning standards
- [ ] README.md in model directory with design intent notes
Pull Request Template
git clone https://github.com/YOUR_USERNAME/SolidWork-Design-Vault.git
cd SolidWork-Design-Vault
git checkout -b feature/new-planetary-gearbox
cp ~/MyDesigns/Planetary_Gearbox/*.sldprt Parts/Gearboxes/
git add .
git commit -m "Add planetary gearbox with 3:1, 5:1, 10:1 ratios"
git push origin feature/new-planetary-gearbox
Resources
License
MIT License - Free for commercial use with attribution. Design intent notes must remain accessible in redistributed files.