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

Витяг метаданих

Отримання метаданих з транслятованих моделей Revit для аналізу або звітності.

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

Вхідні дані

Транслятована модель
SVF2 URN

Model Derivative API
Отримати метадані
Отримати дерево
Отримати властивості
Отримати вигляди
Результати
metadata.jsonGUID, інфо
tree.jsonІєрархія
properties.jsonBIM-дані
views.jsonСписок виглядів
Експорт
Звіти
CSV
База даних
Вхід→API→Результати→Експорт

Підхід CLI

Крок 1: Отримання URN моделі

URN=$(raps object urn my-bucket building.rvt --output plain)

Крок 2: Перевірка статусу трансляції

raps translate manifest "$URN"

Крок 3: Витяг усіх метаданих

# Метадані моделі (GUID, вигляди тощо)
raps derivative metadata "$URN" --output json > metadata.json

# Ієрархія моделі
raps derivative tree "$URN" --output json > model-tree.json

# Усі властивості (BIM-дані)
raps derivative properties "$URN" --output json > properties.json

# Доступні вигляди
raps derivative views "$URN" --output json > views.json

Крок 4: Аналіз даних

# Підрахунок елементів за категорією
cat properties.json | jq 'group_by(.category) | .[] | {category: .[0].category, count: length}'

# Експорт конкретних властивостей у CSV
cat properties.json | jq -r '
  ["ObjectId", "Name", "Category"],
  (.[] | [.objectid, .name, .category])
  | @csv' > elements.csv

CI/CD-конвеєр

# .github/workflows/metadata-extraction.yml
name: BIM Metadata Extraction

on:
  workflow_dispatch:
    inputs:
      bucket:
        description: 'Bucket name'
        required: true
      model:
        description: 'Model filename'
        required: true

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

      - name: Extract all metadata
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          URN=$(raps object urn "${{ inputs.bucket }}" "${{ inputs.model }}" --output plain)

          mkdir -p ./metadata-export

          raps derivative metadata "$URN" --output json > ./metadata-export/metadata.json
          raps derivative tree "$URN" --output json > ./metadata-export/tree.json
          raps derivative properties "$URN" --output json > ./metadata-export/properties.json
          raps derivative views "$URN" --output json > ./metadata-export/views.json

      - name: Generate summary
        run: |
          echo "# Metadata Summary" > ./metadata-export/summary.md
          echo "Model: ${{ inputs.model }}" >> ./metadata-export/summary.md
          echo "Elements: $(jq 'length' ./metadata-export/properties.json)" >> ./metadata-export/summary.md
          echo "Views: $(jq 'length' ./metadata-export/views.json)" >> ./metadata-export/summary.md

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: bim-metadata-${{ github.run_id }}
          path: ./metadata-export/

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

Ручний запуск

workflow_dispatch
bucket + model

Витяг
Отримання URN
metadata.json
tree.json
properties.json
views.json
Аналіз
Генерація зведення
Артефакти
bim-metadata.zip

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

Витяг та зведення

User: "Extract all metadata from building.rvt and summarize the room count"
Користувач
AI-асистент
RAPS MCP
Хмара APS
Витягти метадані, підсумок приміщень
→
aps_object_urn()
→
Отримати URN
→
←
URN
aps_derivative_properties()
→
Отримати властивості
→
←
Properties JSON
Фільтрація приміщень, розрахунок площ
←
Зведення приміщень за поверхами

Відповідь AI:

Знайдено 47 приміщень у моделі:

  • Поверх 1: 15 приміщень (320 м² загалом)
  • Поверх 2: 18 приміщень (390 м² загалом)
  • Поверх 3: 14 приміщень (288 м² загалом)

Порівняння моделей

User: "Compare the element counts between v1 and v2 of the building model"

Відповідь AI:

Порівняння моделей:

Категоріяv1v2Зміна
Стіни245258+13
Двері8992+3
Вікна1561560
Приміщення4752+5

Типові запити

Підрахунок за категорією

cat properties.json | jq '
  group_by(.category) |
  map({category: .[0].category, count: length}) |
  sort_by(-.count)'

Пошук конкретних елементів

# Знайти всі двері
cat properties.json | jq '[.[] | select(.category == "Doors")]'

# Знайти елементи за шаблоном назви
cat properties.json | jq '[.[] | select(.name | test("Wall.*Exterior"))]'

Експорт у формат бази даних

# Генерація SQL-вставок
cat properties.json | jq -r '.[] |
  "INSERT INTO elements (id, name, category) VALUES (\(.objectid), '\''\(.name)'\'', '\''\(.category)'\'');"'

Пов’язане