Here’s a detailed breakdown of our automated CAD-to-BOM synchronization implementation:
Architecture Overview
We built a Windows service in C# that runs on a dedicated integration server with access to both SolidWorks and Aras Innovator. The service monitors Aras for CAD file check-in events and processes assemblies asynchronously to avoid blocking user operations.
Key Implementation Components:
1. Automated CAD-BOM Sync Process
When an engineer checks in a SolidWorks assembly:
// Pseudocode - Key implementation steps:
1. Detect CAD file check-in event via Aras event subscription
2. Download assembly file to integration server temp location
3. Open assembly in SolidWorks API (background process)
4. Extract assembly structure and component metadata
5. Build BOM hierarchy matching CAD assembly tree
6. Create/update BOM items in Aras via REST API
7. Link BOM items to source CAD files
8. Validate sync results and log any discrepancies
// See documentation: SolidWorks API Assembly Traversal Guide
2. Attribute Mapping Configuration
We store attribute mappings in a custom Aras ItemType called CAD_Property_Mapping:
- source_property: SolidWorks custom property name
- target_field: Aras BOM item property name
- transformation_rule: Optional data transformation (unit conversion, format change)
- validation_rule: Data validation before sync
Engineers can modify mappings through the Aras UI without touching integration code. The service loads mappings at startup and caches them for performance.
3. Revision Handling Strategy
Our integration implements intelligent revision synchronization:
- CAD Revision Changed: Create new BOM revision in Aras using standard versioning API, preserving complete revision history
- Component Changes Only: Update existing BOM revision in place (quantity changes, property updates, component additions/removals)
- Major Assembly Restructure: Flag for engineering review before automatic sync, preventing unintended BOM changes
We extract the revision from SolidWorks custom properties and compare it to the current BOM item revision in Aras. This keeps CAD and PLM revision histories perfectly synchronized.
4. Duplicate Prevention and Component Matching
To prevent duplicate BOM items when assemblies are reorganized:
- Primary Key: SolidWorks component GUID (unique identifier that persists across assembly changes)
- Secondary Key: Part number + revision combination
- Matching Algorithm: Check GUID first, fall back to part number if GUID unavailable
- Conflict Resolution: If multiple matches found, flag for manual review rather than creating duplicates
This approach handles component moves between sub-assemblies, part renames, and assembly restructuring without creating duplicate items.
5. Complex Assembly Performance Optimization
For assemblies with 500+ components:
- Process assembly structure in parallel threads (one per sub-assembly)
- Batch BOM item creation using Aras bulk operations API
- Cache frequently accessed data (material definitions, standard parts)
- Implement incremental sync that only processes changed components
- Use asynchronous processing with progress notifications to engineers
Our largest assembly (847 components) syncs in approximately 3 minutes, compared to 4-6 hours of manual BOM creation.
6. Data Validation and Error Handling
Before committing BOM changes:
- Validate all required properties are populated
- Check component quantities are positive integers
- Verify material codes exist in Aras material library
- Confirm unit of measure consistency
- Validate parent-child relationships don’t create circular references
Validation failures generate detailed error reports emailed to the responsible engineer, with specific guidance on fixing CAD file issues.
Results and Benefits:
- 75% reduction in BOM data entry errors
- Product release cycle time decreased by 40% (eliminated BOM reconciliation phase)
- Engineering time saved: ~15 hours per major product release
- Perfect synchronization between CAD assembly structure and PLM BOM hierarchy
- Audit trail linking every BOM item to source CAD file and sync timestamp
Implementation Lessons Learned:
- Start with simple assemblies to validate the core sync logic before tackling complex products
- Invest heavily in duplicate detection - it’s harder than it seems and critical to data integrity
- Make attribute mappings configurable from day one; hardcoded mappings become maintenance nightmares
- Implement comprehensive logging and error reporting; engineers need visibility when sync fails
- Test revision handling thoroughly across multiple CAD revision scenarios
- Build monitoring dashboards showing sync success rates and common failure patterns
The automated CAD-to-BOM sync transformed our product development process by eliminating manual data entry, reducing errors, and ensuring CAD and PLM data stay perfectly synchronized throughout the product lifecycle.