Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською

Навігація по проєкту

Навігація ієрархією проєктів ACC/BIM 360 для пошуку та доступу до ресурсів.

RAPS project navigation demo

Огляд робочого процесу

Автентифікація
3-Legged OAuth
Ієрархія проєкту
Хаби→Проєкти→Кореневі теки→Підтеки→Елементи→Версії
Операції
Перелік
Деталі
Завантаження

Підхід через CLI

Крок 1: Автентифікація

# Login with browser-based OAuth
raps auth login

# Check authentication status
raps auth status

Крок 2: Перелік хабів

# List all available hubs (accounts)
raps hub list

# Output:
# ID                                    | Name            | Type
# b.12345678-1234-1234-1234-123456789abc | Acme Corp      | BIM 360
# b.87654321-4321-4321-4321-cba987654321 | Beta Inc       | ACC

Крок 3: Перелік проєктів

HUB_ID="b.12345678-1234-1234-1234-123456789abc"

# List projects in hub
raps project list "$HUB_ID"

# Get project details
PROJECT_ID="b.project-id"
raps project info "$PROJECT_ID"

Крок 4: Перегляд тек

PROJECT_ID="b.project-id"

# List top-level folders (Plans, Project Files, etc.)
raps folder list "$PROJECT_ID" --top

# Output:
# ID                                      | Name           | Type
# urn:adsk.wipprod:fs.folder:abc123       | Plans          | folder
# urn:adsk.wipprod:fs.folder:def456       | Project Files  | folder
# urn:adsk.wipprod:fs.folder:ghi789       | Photos         | folder

# Browse specific folder
FOLDER_ID="urn:adsk.wipprod:fs.folder:abc123"
raps folder list "$PROJECT_ID" "$FOLDER_ID"

Крок 5: Пошук та доступ до елементів

# List items in folder
raps folder list "$PROJECT_ID" "$FOLDER_ID" --output json > items.json

# Get item details
ITEM_ID=$(jq -r '.[0].id' items.json)
raps item info "$PROJECT_ID" "$ITEM_ID"

# List item versions
raps item versions "$PROJECT_ID" "$ITEM_ID"

CI/CD-конвеєр

# .github/workflows/acc-navigation.yml
name: ACC Project Navigator

on:
  workflow_dispatch:
    inputs:
      project_name:
        description: 'Project name to search for'
        required: true
      folder_path:
        description: 'Folder path (e.g., "Project Files/Models")'
        required: false

jobs:
  navigate:
    runs-on: ubuntu-latest
    steps:
      - name: Install RAPS
        run: cargo install raps

      - name: Authenticate
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
          APS_ACCESS_TOKEN: ${{ secrets.APS_ACCESS_TOKEN }}
          APS_REFRESH_TOKEN: ${{ secrets.APS_REFRESH_TOKEN }}
        run: |
          raps auth login --token "$APS_ACCESS_TOKEN" --refresh-token "$APS_REFRESH_TOKEN" --non-interactive

      - name: Find project
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          # Find hub
          HUB_ID=$(raps hub list --output json | jq -r '.[0].id')

          # Find project by name
          PROJECT_ID=$(raps project list "$HUB_ID" --output json | \
            jq -r '.[] | select(.name | contains("${{ inputs.project_name }}")) | .id' | head -1)

          echo "HUB_ID=$HUB_ID" >> $GITHUB_ENV
          echo "PROJECT_ID=$PROJECT_ID" >> $GITHUB_ENV

      - name: Navigate to folder
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          # List top folders
          raps folder list "$PROJECT_ID" --top --output json > folders.json

          # Navigate path if specified
          if [ -n "${{ inputs.folder_path }}" ]; then
            IFS='/' read -ra PARTS <<< "${{ inputs.folder_path }}"
            CURRENT_FOLDER=""

            for part in "${PARTS[@]}"; do
              if [ -z "$CURRENT_FOLDER" ]; then
                CURRENT_FOLDER=$(cat folders.json | jq -r ".[] | select(.name == \"$part\") | .id")
              else
                raps folder list "$PROJECT_ID" "$CURRENT_FOLDER" --output json > folders.json
                CURRENT_FOLDER=$(cat folders.json | jq -r ".[] | select(.name == \"$part\") | .id")
              fi
            done

            raps folder list "$PROJECT_ID" "$CURRENT_FOLDER" --output json > contents.json
          fi

      - name: Generate report
        run: |
          echo "# Project Navigation Report" > report.md
          echo "Project: ${{ inputs.project_name }}" >> report.md
          echo "" >> report.md

          if [ -f contents.json ]; then
            echo "## Folder Contents" >> report.md
            jq -r '.[] | "- \(.name) (\(.type))"' contents.json >> report.md
          else
            echo "## Top Folders" >> report.md
            jq -r '.[] | "- \(.name)"' folders.json >> report.md
          fi

      - name: Upload report
        uses: actions/upload-artifact@v4
        with:
          name: navigation-report
          path: report.md

Потік конвеєра

Вхідні дані
project_name
folder_path
Навігація
Автентифікація
Пошук хабу
Пошук проєкту
Навігація за шляхом
Результат
Вміст теки
Звіт

Інтеграція з MCP

Перегляд проєкту

User: "Show me what's in the Main Street project"
КористувачAI-асистентRAPS MCPACC Cloud
Корист.Показати вміст проєкту Main StreetAI
AIaps_hub_list()MCP
AIaps_project_list(hub_id)MCP
AI: Пошук проєкту “Main Street”
AIaps_folder_list(project_id, top=true)MCP
AIСтруктура проєктуКорист.

Відповідь AI:

Структура проєкту Main Street:

  • Plans (12 елементів)
  • Project Files (45 елементів)
    • Models/ (8 файлів)
    • Drawings/ (23 файли)
    • Specs/ (14 файлів)
  • Photos (156 елементів)
  • Issues (34 відкриті)

Бажаєте переглянути якусь з цих тек?

Пошук конкретного файлу

User: "Find the latest architectural model in Main Street project"

Відповідь AI:

Знайдено архітектурну модель у проєкті Main Street:

Файл: MainStreet-Architectural.rvt Розташування: Project Files/Models/ Версія: 42 Останні зміни: 14 лютого 2024 р., John Smith Розмір: 156 MB

Бажаєте завантажити або отримати додаткові деталі?


Допоміжні інструменти навігації

Рекурсивний перелік тек

#!/bin/bash
# list-recursive.sh

list_folder() {
  local project_id=$1
  local folder_id=$2
  local prefix=$3

  raps folder list "$project_id" "$folder_id" --output json | \
    jq -r '.[] | "\(.type)|\(.id)|\(.name)"' | while IFS='|' read type id name; do
      echo "${prefix}${name}"
      if [ "$type" = "folders" ]; then
        list_folder "$project_id" "$id" "${prefix}  "
      fi
    done
}

# Usage
PROJECT_ID="b.project-id"
list_folder "$PROJECT_ID" "" ""

Пошук за назвою

# Search for files matching pattern
PATTERN="*.rvt"

raps folder list "$PROJECT_ID" "$FOLDER_ID" --output json | \
  jq -r --arg pattern "$PATTERN" '.[] | select(.name | test($pattern)) | .name'

Отримання повного шляху

# Build full path for an item
get_path() {
  local project_id=$1
  local item_id=$2

  # This would require traversing parent folders
  # Implementation depends on item metadata
  raps item info "$project_id" "$item_id" --output json | jq -r '.path // .name'
}

Пов’язане