Python для проектировщика: автоматизация рутины за 30 минут

Зачем автоматизировать

Проектировщик тратит до 40% времени на рутину: подсчёт площадей, заполнение спецификаций, оформление штампов. Python позволяет автоматизировать это за часы вместо дней.

AutoCAD + Python (pyautocad)

Установка

pip install pyautocad

Пример: подсчёт длины кабельных трасс

from pyautocad import Autocad, APoint

acad = Autocad(create_if_not_exists=True)

total_length = 0
for obj in acad.iter_objects("Polyline"):
    if "КАБЕЛЬ" in obj.Layer.upper():
        total_length += obj.Length

print(f"Общая длина кабельных трасс: {total_length/1000:.1f} м")

Пример: экспорт координат точек в Excel

import openpyxl
from pyautocad import Autocad

acad = Autocad()
wb = openpyxl.Workbook()
ws = wb.active
ws.append(["Имя", "X", "Y", "Z"])

for obj in acad.iter_objects("Point"):
    coords = obj.Coordinates
    ws.append([obj.Layer, coords[0], coords[1], coords[2]])

wb.save("coordinates.xlsx")

Revit + Python (pyRevit / RevitPythonShell)

Пример: выгрузка всех помещений с площадями

# Для RevitPythonShell / pyRevit
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory

doc = __revit__.ActiveUIDocument.Document
rooms = FilteredElementCollector(doc)\
    .OfCategory(BuiltInCategory.OST_Rooms)\
    .WhereElementIsNotElementType()\
    .ToElements()

for room in rooms:
    name = room.get_Parameter(BuiltInParameter.ROOM_NAME).AsString()
    area = room.get_Parameter(BuiltInParameter.ROOM_AREA).AsDouble() * 0.0929  # ft² → m²
    print(f"{name}: {area:.1f} м²")

Excel + Python (openpyxl)

Пример: автозаполнение спецификации оборудования

import openpyxl

wb = openpyxl.load_workbook("specification_template.xlsx")
ws = wb["Спецификация"]

equipment = [
    ("Приточная установка", "Systemair SAVE VTC 700", 2, "шт"),
    ("Вытяжной вентилятор", "Systemair KV 315M", 8, "шт"),
    ("Воздуховод ∅315", "Оцинковка 0.7мм", 120, "м.п."),
    ("Шумоглушитель", "ГТП 315-600", 8, "шт"),
]

for i, (name, mark, qty, unit) in enumerate(equipment, start=4):
    ws.cell(row=i, column=1, value=i-3)
    ws.cell(row=i, column=2, value=name)
    ws.cell(row=i, column=3, value=mark)
    ws.cell(row=i, column=4, value=qty)
    ws.cell(row=i, column=5, value=unit)

wb.save("specification_filled.xlsx")

С чего начать

  1. Установите Python 3.10+ с python.org
  2. Выберите задачу, на которую тратите больше всего времени
  3. Начните с простого скрипта (выгрузка данных, подсчёт)
  4. Постепенно усложняйте

Полезные библиотеки

Задача Библиотека
AutoCAD pyautocad, ezdxf
Revit pyRevit, RevitPythonShell
Excel openpyxl, pandas
PDF-чертежи pdfplumber, PyMuPDF
Расчёты numpy, scipy

:light_bulb: Нужен скрипт под вашу задачу? Спросите ATOM: Напиши Python-скрипт для подсчёта площади помещений из DXF-файла