Model Coordination Pipeline

Upload multiple discipline models and prepare them for coordination review.

Workflow Overview

Source Models
Revit ARCH
Revit STRUCT
Revit MEP
IFC Other
RAPS Upload
raps object upload
APS Storage
OSS Bucket
Model Derivative
Translation SVF2
Outputs
Metadata JSON
Viewables SVF2
Thumbnails PNG
SourcesUploadStorageTranslateOutputs

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
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"
User
AI Assistant
RAPS MCP
APS Cloud
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: Complete
  • struct.rvt: Complete
  • mep.rvt: Complete