Model Coordination Pipeline
Upload multiple discipline models and prepare them for coordination review.
Workflow Overview
Source Models
Revit🏠RevitAutodesk's BIM software for architecture and construction.View in glossary ARCH
Revit STRUCT
Revit MEP
IFC🌐IFCOpen standard for BIM data exchange.View in glossary Other
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 SVF2🚀SVF2Current APS viewing format (improved performance).View in glossary
Outputs
Sources→Upload→Storage→Translate→Outputs
CLI Approach
Step 1: Create Project Bucket
raps bucket create --key coord-project-2024 --policy persistent --region US
Step 2: Upload Discipline Models
raps object upload coord-project-2024 ./models/architectural.rvt
raps object upload coord-project-2024 ./models/structural.rvt
raps object upload coord-project-2024 ./models/mep.rvt
Step 3: Translate All Models
for model in architectural structural mep; do
URN=$(raps object urn coord-project-2024 "${model}.rvt" --output plain)
echo "Translating ${model}..."
raps translate start "$URN" --format svf2 --wait
done
Step 4: Verify Translation Status
raps object list coord-project-2024 --output json | jq -r '.[].key' | while read key; do
URN=$(raps object urn coord-project-2024 "$key" --output plain)
STATUS=$(raps translate manifest "$URN" | jq -r '.status')
echo "$key: $STATUS"
done
CI/CD Pipeline
# .github/workflows/model-coordination.yml
name: Model Coordination Pipeline
on:
push:
paths:
- 'models/**/*.rvt'
- 'models/**/*.ifc'
env:
BUCKET_NAME: coord-${{ github.repository_id }}
jobs:
upload-and-translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install RAPS
run: cargo install raps
- name: Ensure bucket exists
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
raps bucket create --key "$BUCKET_NAME" --policy persistent --region US 2>/dev/null || true
- name: Upload changed models
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 -- 'models/**/*.rvt' 'models/**/*.ifc'); do
if [ -f "$file" ]; then
echo "Uploading: $file"
raps object upload "$BUCKET_NAME" "$file"
fi
done
- name: Translate models
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 -- 'models/**/*.rvt' 'models/**/*.ifc'); do
if [ -f "$file" ]; then
key=$(basename "$file")
URN=$(raps object urn "$BUCKET_NAME" "$key" --output plain)
raps translate start "$URN" --format svf2 --wait
echo "Translated: $key"
fi
done
- name: Generate coordination report
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
echo "# Coordination Report" > coordination-report.md
echo "Generated: $(date)" >> coordination-report.md
echo "" >> coordination-report.md
raps object list "$BUCKET_NAME" --output json | jq -r '.[] | "- \(.key)"' >> coordination-report.md
- name: Upload report artifact
uses: actions/upload-artifact@v4
with:
name: coordination-report
path: coordination-report.md
Pipeline Flow
Trigger
Push to models/
→
GitHub Actions🐙GitHub ActionsGitHub's built-in CI/CD platform.View in glossary
Checkout
Install RAPS
Create Bucket
Upload Models
Translate
Generate Report
→
Output
coordination-report.md
MCP Integration
Use natural language with AI assistants to coordinate models.
Upload and Translate
User: "Upload all the Revit models from the models folder and translate them for coordination review"
Upload models for coordination
→
aps_bucket_create()
→
Create bucket
→
For each model:
aps_object_upload()
→
Upload file
→
aps_translate_start()
→
Start translation
→
←
All 3 models uploaded and translating
Check Translation Status
User: "Check if all the models in the coordination bucket have been translated successfully"
AI Response:
All 3 models have been successfully translated:
- arch.rvt📊RVTRevit's native file format.View in glossary: Complete
- struct.rvt: Complete
- mep.rvt: Complete