SuperAPI AI Directory

solidworks-design-vault-cad

Design & creation

View repository

Updated 10-16 01:49

About this skill

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

# Clone 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

# Example: Accessing part metadata (pseudo-code for automation scripts)
import os

part_path = "Parts/Sprockets/Double_Pitch_40_Bore.sldprt"

# Check file exists
if os.path.exists(part_path):
    print(f"Part located: {part_path}")
    # Open in SolidWorks API or convert to neutral format

Understanding Design Tables

Design tables allow configuration switching within a single file:

  1. Open Double_Pitch_40_Bore.sldprt
  2. Right-click on "Design Table" in Feature Manager
  3. Select configuration from dropdown (e.g., "1/2 inch bore", "12mm bore")
  4. 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

# Navigate to assembly directory
cd Assemblies/Linear_Actuator/

# Files you'll find:
# - Linear_Actuator_Main.sldasm (top-level)
# - Drive_Screw.sldasm (sub-assembly)
# - Motor_Mount.sldprt
# - Ball_Nut.sldprt

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

# Example: Extracting BOM data for manufacturing
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

# Export to CSV
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:

  1. File → Save As
  2. Select format: .STEP (AP214 for machining), .IGES, .STL
  3. Options → Check "Export as one file" for assemblies
  4. 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
    
    # Open document
    doc = sw.OpenDoc(sldprt_path, 1)  # 1 = Part document
    
    # Set STEP export options
    output_path = os.path.join(output_dir, 
                               os.path.basename(sldprt_path).replace('.SLDPRT', '.STEP'))
    
    # Save as STEP AP214
    doc.SaveAs(output_path)
    sw.CloseDoc(doc.GetTitle())
    
    return output_path

# Usage
export_part_to_step(
    "Parts/Sprockets/Double_Pitch_40_Bore.sldprt",
    "/export/cnc_models/"
)

Configuration Management

Parametric Modification

// Example: Modifying global variables programmatically
// (SolidWorks API - JavaScript via Node.js with edge-js)

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); // "Parameter updated"
});

Design Table Templates

Create custom configurations:

<!-- Design Table in Excel format embedded in .SLDPRT -->
<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

# 1. Select base part
cd Parts/Sprockets/

# 2. Open in SolidWorks
# File: Double_Pitch_40_Bore.sldprt

# 3. Modify design table for your shaft size
# Right-click Design Table → Edit Table

# 4. Export to 3D printer format
# File → Save As → .STL
# Resolution: Fine (0.01mm deviation)

# 5. Generate 2D drawing for documentation
# Make Drawing from Part → Template: ANSI_B

Pattern 2: Assembly Integration

# Workflow for integrating vault parts into custom assembly

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

<!-- Custom material XML for SolidWorks material database -->
<material name="AISI_1045_Normalized">
  <density>7850</density> <!-- kg/m³ -->
  <elastic_modulus>200000</elastic_modulus> <!-- MPa -->
  <poisson_ratio>0.29</poisson_ratio>
  <yield_strength>530</yield_strength> <!-- MPa -->
  <thermal_expansion>11.5e-6</thermal_expansion> <!-- /°C -->
</material>

Troubleshooting

Issue: File Won't Open

Cause: SolidWorks version mismatch (file created in newer version)

Solution:

# Check SolidWorks version required
# Look in file properties or README

# Option 1: Update SolidWorks to 2021+
# Option 2: Request STEP export from repository maintainer

Issue: Missing References in Assembly

Cause: External component paths broken

Solution:

# Fix broken references
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:

# Reduce file size for exports
# SolidWorks → Tools → Options → Export

# STL Settings:
#   Resolution: Coarse (0.1mm for prototypes)
#   Binary format: YES (smaller than ASCII)

# STEP Settings:
#   Protocol: AP203 (simpler than AP214 for viewing)
#   Spline to polyline: YES (reduces complexity)

Advanced Usage

FEA Preparation

# Prepare models for Finite Element Analysis
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')
        
        # Using SolidWorks Task Scheduler (command line)
        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"

# Usage
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

# Fork repository
git clone https://github.com/YOUR_USERNAME/SolidWork-Design-Vault.git
cd SolidWork-Design-Vault

# Create feature branch
git checkout -b feature/new-planetary-gearbox

# Add your files
cp ~/MyDesigns/Planetary_Gearbox/*.sldprt Parts/Gearboxes/

# Commit with descriptive message
git add .
git commit -m "Add planetary gearbox with 3:1, 5:1, 10:1 ratios"

# Push and create PR
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.