Генерація креслень за допомогою Design Automation
Генерація 2D-креслень з 3D-моделей за допомогою Design Automation API.
Огляд процесу
Вхід
3D-модель Inventor/Revit
Design Automation
App Bundle Drawing Plugin
Activity GenerateDrawing
Work Item Execute
Обробка
Завантаження моделі
Застосування шаблону
Генерація видів
Додавання анотацій
Результат
2D-креслення .idw/.dwg/.pdf
Вхід→Налаштування DA→Обробка→Вихід
Підхід через CLI
Крок 1: Перелік доступних рушіїв
# List Inventor engines
raps da engine list | grep -i inventor
# Output example:
# Autodesk.Inventor+2024
# Autodesk.Inventor+2023
Крок 2: Створення App Bundle
# Package your drawing generation plugin
cd ./drawing-plugin
zip -r ../DrawingGenerator.zip ./*
# Upload app bundle
raps da appbundle create \
--id "DrawingGenerator" \
--engine "Autodesk.Inventor+2024" \
--file ../DrawingGenerator.zip
# Create alias
raps da appbundle alias create DrawingGenerator prod 1
Крок 3: Створення Activity
# Create activity definition
raps da activity create \
--id "GenerateDrawing" \
--engine "Autodesk.Inventor+2024" \
--appbundle "your-nickname.DrawingGenerator+prod" \
--command '$(engine.path)/InventorCoreConsole.exe /i $(args[inputFile].path) /al $(appbundles[DrawingGenerator].path) /s $(settings[script].path)'
# Create alias
raps da activity alias create GenerateDrawing prod 1
Крок 4: Відправлення Work Item
# Generate signed URL for input
INPUT_URL=$(raps object signed-url cad-library assembly.iam --minutes 60)
# Create output location
OUTPUT_BUCKET="drawing-output"
raps bucket create --key "$OUTPUT_BUCKET" --policy transient --region US
# Submit work item
WORK_ITEM=$(raps da workitem create \
--activity "your-nickname.GenerateDrawing+prod" \
--input-name "inputFile" \
--input-url "$INPUT_URL" \
--output-name "outputDrawing" \
--output-url "$(raps object signed-url $OUTPUT_BUCKET output.idw --minutes 60 --write)" \
--output json)
WORK_ID=$(echo "$WORK_ITEM" | jq -r '.id')
echo "Work Item ID: $WORK_ID"
Крок 5: Моніторинг прогресу
# Wait for completion
raps da workitem status "$WORK_ID" --wait
# Check final status
raps da workitem status "$WORK_ID" --output json | jq '.status'
CI/CD-конвеєр
# .github/workflows/drawing-generation.yml
name: Drawing Generation Pipeline
on:
workflow_dispatch:
inputs:
model:
description: 'Model file path in bucket'
required: true
template:
description: 'Drawing template name'
default: 'standard'
env:
ACTIVITY: ${{ secrets.DA_NICKNAME }}.GenerateDrawing+prod
jobs:
generate-drawing:
runs-on: ubuntu-latest
steps:
- name: Install RAPS
run: cargo install raps
- name: Generate drawing
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
# Get signed URLs
INPUT_URL=$(raps object signed-url cad-library "${{ inputs.model }}" --minutes 120)
OUTPUT_BUCKET="drawings-$(date +%Y%m%d)"
raps bucket create --key "$OUTPUT_BUCKET" --policy transient --region US 2>/dev/null || true
OUTPUT_NAME=$(basename "${{ inputs.model }}" | sed 's/\.[^.]*$/.idw/')
OUTPUT_URL=$(raps object signed-url "$OUTPUT_BUCKET" "$OUTPUT_NAME" --minutes 120 --write)
# Submit work item
WORK_ID=$(raps da workitem create \
--activity "$ACTIVITY" \
--input-name "inputFile" \
--input-url "$INPUT_URL" \
--output-name "outputDrawing" \
--output-url "$OUTPUT_URL" \
--output json | jq -r '.id')
echo "WORK_ID=$WORK_ID" >> $GITHUB_ENV
echo "OUTPUT_BUCKET=$OUTPUT_BUCKET" >> $GITHUB_ENV
echo "OUTPUT_NAME=$OUTPUT_NAME" >> $GITHUB_ENV
- name: Wait for completion
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
raps da workitem status "$WORK_ID" --wait
STATUS=$(raps da workitem status "$WORK_ID" --output json | jq -r '.status')
if [ "$STATUS" != "success" ]; then
echo "Work item failed with status: $STATUS"
raps da workitem report "$WORK_ID"
exit 1
fi
- name: Download result
env:
APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
run: |
mkdir -p ./drawings
raps object download "$OUTPUT_BUCKET" "$OUTPUT_NAME" --output ./drawings/
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: generated-drawing
path: ./drawings/
Потік конвеєра
Ручний запуск
вхід: модель + шаблон
→
Налаштування
Генерація підписаних URL
Створення вихідного бакета
→
Design Automation
Відправлення work item
Очікування завершення
→
Результат
Завантаження креслення
Вивантаження артефакту
Інтеграція з MCP
Генерація одного креслення
User: "Generate a 2D drawing from the gearbox assembly"
Користувач
AI-асистент
RAPS MCP
Design Automation
Користувач
Згенерувати креслення з gearbox.iam
AI
aps_object_signed_url(input)
MCP
Вхідний URL
AI
aps_da_workitem_create(activity, input, output)
MCP
Відправлення work item
DA
Work item ID
цикл: Очікування завершення
AI
aps_da_workitem_status(id)
MCP
Перевірка статусу
AI
Креслення успішно згенеровано
Відповідь AI:
Згенеровано 2D-креслення з gearbox.iam:
- Вихідний файл: gearbox.idw (2.4 МБ)
- Згенеровано видів: 4 (Front, Top, Right, Isometric)
- Час обробки: 45 секунд
- Завантажити: gearbox.idw
Пакетна генерація креслень
User: "Generate drawings for all assemblies in the release folder"
Відповідь AI:
Генерація креслень для 8 збірок…
Збірка Статус Час Результат gearbox.iam Завершено 45 с gearbox.idw housing.iam Завершено 38 с housing.idw shaft.iam Завершено 22 с shaft.idw bracket.iam В обробці - - … … … … Прогрес: 3/8 завершено, 1 в обробці
Розширене налаштування
Параметри шаблону
{
"template": "ANSI-B",
"views": [
{"type": "front", "scale": "1:2"},
{"type": "top", "scale": "1:2"},
{"type": "right", "scale": "1:2"},
{"type": "isometric", "scale": "1:4"}
],
"annotations": {
"dimensions": true,
"centerlines": true,
"titleBlock": {
"partNumber": "${PART_NUMBER}",
"revision": "${REVISION}",
"date": "${DATE}"
}
}
}
Вихід у PDF
# Generate PDF instead of IDW
raps da workitem create \
--activity "your-nickname.GenerateDrawingPDF+prod" \
--input-name "inputFile" \
--input-url "$INPUT_URL" \
--output-name "outputPDF" \
--output-url "$OUTPUT_URL" \
--param "outputFormat=pdf"
Кілька вихідних форматів
# Generate both IDW and PDF
raps da workitem create \
--activity "your-nickname.GenerateDrawing+prod" \
--input-name "inputFile" \
--input-url "$INPUT_URL" \
--output-name "outputIdw" \
--output-url "$IDW_URL" \
--output-name "outputPdf" \
--output-url "$PDF_URL"
Усунення неполадок
Перевірка звіту Work Item
# Get detailed report
raps da workitem report "$WORK_ID"
# View console output
raps da workitem report "$WORK_ID" --output json | jq -r '.reportUrl'
Типові проблеми
| Проблема | Причина | Рішення |
|---|---|---|
| Відсутні посилання | Деталі не включено | Завантажте всі пов’язані файли |
| Шаблон не знайдено | Невірний шлях | Перевірте шлях шаблону в activity |
| Таймаут | Складна модель | Збільште таймаут activity |
| Помилка автентифікації | Прострочені URL | Використовуйте довший термін дії підписаних URL |