Зачем автоматизировать
Проектировщик тратит до 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")
С чего начать
- Установите Python 3.10+ с python.org
- Выберите задачу, на которую тратите больше всего времени
- Начните с простого скрипта (выгрузка данных, подсчёт)
- Постепенно усложняйте
Полезные библиотеки
| Задача | Библиотека |
|---|---|
| AutoCAD | pyautocad, ezdxf |
| Revit | pyRevit, RevitPythonShell |
| Excel | openpyxl, pandas |
| PDF-чертежи | pdfplumber, PyMuPDF |
| Расчёты | numpy, scipy |
Нужен скрипт под вашу задачу? Спросите ATOM:
Напиши Python-скрипт для подсчёта площади помещений из DXF-файла