CAD Translation Pipeline
Process various CAD📐CADSoftware for creating technical drawings and 3D models.View in glossary formats (Inventor, Fusion, STEP🔧STEPISO standard for 3D CAD data exchange.View in glossary, IGES📜IGESLegacy neutral CAD exchange format.View in glossary) for web viewing.
Workflow Overview
CAD Sources
Inventor IAM/IPT
Fusion 360
STEP/STP
IGES/IGS
SolidWorks
RAPS🌼RAPSRust CLI for Autodesk Platform Services.View in glossary Upload
raps object upload
APS☁️APSAutodesk Platform Services - cloud APIs for CAD/BIM automation.View in glossary Storage
OSS📦OSSAPS cloud storage for files and models.View in glossary Bucket🪣BucketContainer for storing objects in OSS.View in glossary
Model Derivative🔄Model DerivativeAPS service for translating and extracting CAD data.View in glossary
Translation⚙️Translation JobBackground process converting CAD files to viewable formats.View in glossary Engine
Outputs
SVF2🚀SVF2Current APS viewing format (improved performance).View in glossary Viewable🖥️ViewableTranslated model output for web viewing.View in glossary
Thumbnails
Metadata
Input→Upload→Storage→Translate→Output
CLI Approach
Step 1: Create CAD Bucket
raps bucket create --key cad-library --policy persistent --region US
Step 2: Upload CAD Files
# Inventor assembly
raps object upload cad-library assembly.iam
# Inventor part
raps object upload cad-library part.ipt
# STEP file
raps object upload cad-library model.stp
# IGES file
raps object upload cad-library legacy.igs
Step 3: Translate to SVF2
# Get URN and translate
URN=$(raps object urn cad-library assembly.iam --output plain)
raps translate start "$URN" --format svf2 --wait
Step 4: Verify Translation
# Check manifest
raps translate manifest "$URN"
# Get available views
raps derivative views "$URN" --output json
Supported Formats
| Format | Extension | Notes |
|---|---|---|
| Inventor Assembly | .iam | Full assembly hierarchy |
| Inventor Part | .ipt | Single part files |
| STEP | .stp, .step | AP203/AP214 |
| IGES | .igs, .iges | Legacy format |
| SolidWorks | .sldprt, .sldasm | Parts and assemblies |
| Fusion 360 | .f3d | Direct from Fusion |
CI/CD Pipeline
# .github/workflows/cad-translation.yml
name: CAD Translation Pipeline
on:
push:
paths:
- 'cad/**/*.iam'
- 'cad/**/*.ipt'
- 'cad/**/*.stp'
- 'cad/**/*.igs'
env:
BUCKET: cad-library-${{ github.repository_id }}
jobs:
translate-cad:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install RAPS
run: cargo install raps
- name: Setup bucket
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
raps bucket create --key "$BUCKET" --policy persistent --region US 2>/dev/null || true
- name: Upload and translate
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
for file in $(git diff --name-only HEAD~1 HEAD -- 'cad/**'); do
[ -f "$file" ] || continue
echo "Processing: $file"
raps object upload "$BUCKET" "$file"
key=$(basename "$file")
URN=$(raps object urn "$BUCKET" "$key" --output plain)
raps translate start "$URN" --format svf2 --wait
echo "Translated: $key"
done
- name: Generate translation report
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
echo "# CAD Translation Report" > report.md
echo "Date: $(date)" >> report.md
echo "" >> report.md
raps object list "$BUCKET" --output json | jq -r '.[].key' | while read key; do
URN=$(raps object urn "$BUCKET" "$key" --output plain)
STATUS=$(raps translate manifest "$URN" 2>/dev/null | jq -r '.status // "pending"')
echo "- $key: $STATUS" >> report.md
done
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: translation-report
path: report.md
Pipeline Flow
Git Push
CAD files changed
→
Processing
Upload to OSS
Start Translation
Wait for Complete
→
Output
translation-report.md
MCP Integration
Translate Single File
User: "Upload and translate the new assembly.iam file for web viewing"
User
Translate assembly.iam
AI
aps_object_upload(bucket, file)
MCP
Upload file
APS
Upload complete
AI
aps_object_urn(bucket, key)
MCP
URN🔗URNUnique identifier for objects in APS.View in glossary
AI
aps_translate_start(urn, format=“svf2”)
MCP
Start translation
loop: Wait for completion
AI
aps_translate_manifest(urn)
MCP
Check status
AI
Translation complete
AI Response:
assembly.iam has been uploaded and translated successfully.
- File size: 45 MB
- Components: 234 parts
- Translation time: 2m 34s
- Viewer URL: https://viewer.autodesk.com/…
Translate Multiple Formats
User: "I have STEP and IGES files from a supplier. Translate them all for review."
AI Response:
Translating 5 files from supplier folder:
File Format Status Time bracket.stp STEP Complete 45s housing.stp STEP Complete 1m 12s shaft.igs IGES Complete 32s gear.igs IGES Complete 28s mount.stp STEP Complete 55s All files ready for viewing.
Format-Specific Options
STEP Translation
# Standard STEP translation
raps translate start "$URN" --format svf2 --wait
# With specific output views
raps translate start "$URN" --format svf2 --views "3d"
Inventor Assembly with References
# Upload assembly with all referenced parts
raps object upload cad-library assembly.iam
raps object upload cad-library part1.ipt
raps object upload cad-library part2.ipt
# Translate assembly (references resolved automatically)
URN=$(raps object urn cad-library assembly.iam --output plain)
raps translate start "$URN" --format svf2 --wait
ZIP Package with Root File
# Create zip with assembly and parts
zip -r model-package.zip assembly.iam *.ipt
# Upload package
raps object upload cad-library model-package.zip
# Translate with root file specified
URN=$(raps object urn cad-library model-package.zip --output plain)
raps translate start "$URN" --format svf2 --root "assembly.iam" --wait