А. Качан

Как мы автоматизировали расчёт шкафов автоматики

EplanАвтоматизацияКалькуляторШкафы управления

Как мы автоматизировали расчёт шкафов автоматики

Проблема

Каждый раз, когда монтажная организация или EPC-генподрядчик запрашивал коммерческое предложение на шкаф управления котлом, мы тратили 2 дня на ручной расчёт:

  1. Инженер открывал спецификацию из Eplan Platform 2025
  2. Вручную переносил номенклатуру в Excel
  3. Подставлял актуальные цены из 1С
  4. Считал сроки сборки исходя из количества компонентов
  5. Формировал PDF коммерческого предложения

Результат: ошибки при переносе данных, срывы сроков согласования, недовольство заказчиков непрозрачностью цены.

Решение

Мы разработали модуль автоматического парсинга XML из Eplan и расчёта стоимости по актуальной номенклатуре. Теперь процесс выглядит так:

  1. Инженер экспортирует спецификацию из Eplan в XML
  2. Загружает файл в калькулятор
  3. Система мгновенно возвращает:
    • Разобранную спецификацию (артикул, наименование, количество, цена)
    • Общую стоимость
    • Прогнозируемый срок сборки
    • Готовое КП в PDF

Результат: время расчёта сократилось с 2 дней до 5 минут. Ошибки спецификации исключены. Прозрачность ценообразования для заказчиков.

Техническая реализация

Парсинг Eplan XML

Eplan Platform 2025 позволяет экспортировать спецификацию в XML-формат. Структура файла содержит узлы <Component> с атрибутами:

<Component>
  <Article>123456</Article>
  <Name>Автоматический выключатель 3P 16A</Name>
  <Quantity>10</Quantity>
  <Price>1500.00</Price>
</Component>

Парсер на Python (FastAPI) читает XML, извлекает компоненты и маппит их на внутреннюю модель:

from xml.etree import ElementTree as ET
from pydantic import BaseModel

class Component(BaseModel):
    article: str
    name: str
    quantity: int
    price: float

def parse_eplan_spec(xml_content: str) -> list[Component]:
    root = ET.fromstring(xml_content)
    components = []

    for component in root.findall('.//Component'):
        components.append(Component(
            article=component.find('Article').text,
            name=component.find('Name').text,
            quantity=int(component.find('Quantity').text),
            price=float(component.find('Price').text)
        ))

    return components

Расчёт стоимости и сроков

Логика расчёта учитывает:

  • Стоимость компонентов: сумма quantity * price для каждой позиции
  • Срок сборки: базовое время (3 дня) + 1 день на каждые 50 компонентов
  • Наценка: 15% на логистику и упаковку
def calculate_estimate(components: list[Component]) -> dict:
    total_price = sum(c.quantity * c.price for c in components)
    total_quantity = sum(c.quantity for c in components)

    base_days = 3
    additional_days = total_quantity // 50
    estimated_days = base_days + additional_days

    final_price = total_price * 1.15

    return {
        "total_price": round(final_price, 2),
        "components_count": len(components),
        "estimated_days": estimated_days
    }

Интеграция с FastAPI

API endpoint принимает XML-файл и возвращает расчёт:

from fastapi import APIRouter, UploadFile, File
from app.services.calculator import parse_eplan_spec, calculate_estimate

router = APIRouter()

@router.post("/api/calculate")
async def calculate_specification(file: UploadFile = File(...)):
    xml_content = await file.read()
    components = parse_eplan_spec(xml_content.decode('utf-8'))
    estimate = calculate_estimate(components)

    return {
        "total_price": estimate["total_price"],
        "components": [c.dict() for c in components],
        "estimated_days": estimate["estimated_days"]
    }

Результат в цифрах

| Метрика | До | После | Улучшение | |---------|-----|-------|-----------| | Время расчёта КП | 2 дня | 5 минут | 99.7% | | Ошибки спецификации | 3-5 на КП | 0 | 100% | | Прозрачность цены | Частичная | Полная | — | | Удовлетворённость заказчиков | 6/10 | 9/10 | +50% |

Выводы

  1. Автоматизация рутинных расчётов — это не просто экономия времени, это устранение человеческого фактора и повышение качества.
  2. Интеграция с Eplan через XML — стандартный и надёжный способ обмена данными без необходимости писать плагины.
  3. Прозрачность ценообразования — ключевой фактор доверия для монтажных организаций и EPC-генподрядчиков.

Что дальше?

Сейчас мы работаем над расширением модуля:

  • Поддержка импорта из других САПР (AutoCAD Electrical, SolidWorks Electrical)
  • Интеграция с 1С для автоматического обновления цен
  • Генерация КП в формате Word/PDF с логотипом заказчика

Если вы столкнулись с похожей проблемой ручного расчёта спецификаций — напишите в @KachanAI. Обсудим, как это можно автоматизировать в вашей компании.