Условные обозначения по электрике: библиотека блоков + описание примитивов

- library/электрика_блоки.dxf — 4 блока (СВ_ВСТР, СВ_БРА, РОЗ_2, ВЫКЛ_3) для вставки
- symbols/ + preview/ — по файлу и картинке на символ
- docs/примитивы-электрики.md — разбор по примитивам, атрибутам, слоям, порядок сборки через MCP, грабли
- docs/условные-обозначения.md, conventions/*.json — легенда из эталона (правило: на лист не ставить)
- docs/электрические-планы-ГОСТ.md — накопленные правила оформления
- scripts/build_symbols_mcp.py (проверен на живом MCP 1.6.0-ours, 0 анонимных блоков), scripts/inspect_dxf.py
- examples/plan_el_final.dxf/.pdf/.png — пример применения (14 вставок)
This commit is contained in:
2026-10-05 18:51:32 +03:00
commit 14f82e550d
19 changed files with 53587 additions and 0 deletions
@@ -0,0 +1,156 @@
# Что сделано с примитивами по электрике
Документ описывает, **из чего и как собраны** наши условные обозначения по электрике в AutoCAD:
каждый символ разобран по примитивам, указаны атрибуты, слои, последовательность вызовов
MCP-сервера и проверки. Дата работы: **01.10.2026**, оформлено 05.10.2026.
## 1. Общая схема
Символ = **блок AutoCAD**, собранный из простых примитивов (`CIRCLE`, `ARC`, `LINE`),
с **атрибутами (ATTDEF)**, которые несут маркировку. Такой блок:
- вставляется как единый объект (одна вставка `INSERT`, а не набор линий);
- несёт данные (марка, тип, высота, группа включения) — из них собирается ведомость;
- переиспользуется на всех планах, поэтому правка символа меняет все вставки.
Слои (по назначению):
| Слой | Что на нём |
|---|---|
| `СО_СВЕТИЛЬНИКИ` | символы освещения |
| `СО_ВЫКЛЮЧАТЕЛИ` | символы выключателей |
| `ЭО_РОЗЕТКИ` | символы розеток |
| `СО_ГРУППЫ` | подписи групп включения |
| `АР_ПОДЛОЖКА` | архитектурная подложка (стены, перегородки) |
| `ВЕДОМОСТЬ`, `РАЗМЕРЫ` | таблица и размеры |
| `00 БЛОКИ АННОТАЦИЙ` | подписи/выноски (стиль ОСНОВНОЙ, isocpeur) |
| `RAMKA`, `STAMPS` | рамка и основная надпись (форма 3) |
## 2. Разбор символов по примитивам
Все блоки имеют базовую точку `(0,0)`. Размеры — в единицах чертежа (мм плана).
### `СВ_ВСТР` — светильник встраиваемый (слой `СО_СВЕТИЛЬНИКИ`)
| Примитив | Параметры |
|---|---|
| `CIRCLE` | центр `(0,0)`, R = 150 |
| `LINE` | `(−106,−106) → (106,106)` |
| `LINE` | `(−106,106) → (106,−106)` |
Атрибуты (ATTDEF):
| Тег | Подсказка | Позиция | Высота | Значение по умолчанию |
|---|---|---|---|---|
| `МАРКА` | Марка светильника | (−60, 200) | 120 | `Т1` |
| `ТИП` | Тип по спецификации | (−300, −320) | 90 | `встраиваемый` |
| `ВЫСОТА` | Высота от пола, мм | (−120, −450) | 90 | `0` |
| `ГРУППА` | Группа включения | (−60, 350) | 90 | `1.1` |
### `СВ_БРА` — бра (настенный светильник, слой `СО_СВЕТИЛЬНИКИ`)
| Примитив | Параметры |
|---|---|
| `ARC` | центр `(0,0)`, R = 150, углы 0°…180° |
| `LINE` | `(−150,0) → (150,0)` |
| `LINE` | `(0,0) → (0,−120)` |
Атрибуты: `МАРКА` (−60, 220) h120 = `Т10`; `ТИП` (−300, −350) h90 = `бра`;
`ВЫСОТА` (−120, −480) h90 = `1800`; `ГРУППА` (−60, 360) h90 = `1.1`.
### `РОЗ_2` — розетка двойная с заземляющим контактом (слой `ЭО_РОЗЕТКИ`)
| Примитив | Параметры |
|---|---|
| `ARC` | центр `(0,0)`, R = 150, углы 0°…180° |
| `LINE` | `(−150,0) → (150,0)` |
| `LINE` | `(0,0) → (0,200)` |
| `LINE` | `(−60,200) → (60,200)` |
Атрибуты (пять): `МАРКА` (−60, −250) h120 = `S1`; `ТИП` (−300, −380) h90 = `розетка двойная с з/к`;
`ВЫСОТА` (−120, −510) h90 = `300`; `НАЗНАЧ` (−150, −640) h90 = `общее`;
`ГРУППА` (−60, 260) h90 = `1.1`.
### `ВЫКЛ_3` — выключатель трёхклавишный (слой `СО_ВЫКЛЮЧАТЕЛИ`)
| Примитив | Параметры |
|---|---|
| `CIRCLE` | центр `(0,0)`, R = 150 |
| `LINE` | `(0,0) → (0,300)` |
| `LINE` | `(−100,300) → (100,300)` |
Атрибуты: `МАРКА` (−60, −250) h120 = `V1`; `ТИП` (−300, −380) h90 = `выключатель 3-клавишный`;
`ВЫСОТА` (−120, −510) h90 = `900`; `ГРУППЫ` (−200, −640) h90 = `1.1;1.2;1.3`.
> Замечание по подписям: атрибуты заданы **столбцом под знаком** (и группа — над знаком).
> Это осознанная схема «замаркировки» для плана 1:100: марка читается рядом со знаком,
> тип/высота/назначение — строкой ниже. Если для конкретного проекта нужна подпись в строчку
> или со стрелкой-выноской, координаты ATTDEF подстраиваются в блоке (правка блока меняет все вставки).
## 3. Порядок сборки через MCP-сервер (как это делалось)
Символы собраны не руками в AutoCAD, а командами MCP-сервера `autocad-mcp-pro`
(у нас: `10.26.5.108:30015` — рабочая сборка; `:30041` — сборка 1.6.0 с нашим патчем).
Последовательность для каждого символа:
```
1. drawing_new — новый чертёж
2. layer_create name=<слой> — слой символа (CO_СВЕТИЛЬНИКИ / ЭО_РОЗЕТКИ / ...)
3. entity_create_circle / entity_create_arc / entity_create_line
— примитивы будущего знака (параметры из раздела 2)
4. block_create_from_entities
name=<БЛОК> handles=[...] base_x=0 base_y=0
— из примитивов делается ИМЕНОВАННЫЙ блок
5. entity_create_attdef block_name=<БЛОК> tag=МАРКА x=.. y=.. height=.. default=..
(по разу на каждый тег: МАРКА, ТИП, ВЫСОТА, [НАЗНАЧ], ГРУППА/ГРУППЫ)
6. block_insert name=<БЛОК> x=.. y=.. layer=<слой> attributes={"МАРКА":"Т1", "ТИП":"...", ...}
— вставки на плане, значения атрибутов подставляются
7. drawing_save_as / drawing_export_pdf — сохранение DXF/PDF
```
Готовый скрипт, повторяющий сборку: `scripts/build_symbols_mcp.py` (можно запускать на другом
чертеже/сервере, параметры символов вынесены в начало файла).
## 4. Проверки, которые выполнялись (и как повторить)
| Что проверяем | Команда MCP | Ожидаемый результат |
|---|---|---|
| Блоки именованные, а не анонимные | `block_list {"compact": true}` | в списке `СВ_ВСТР`, `СВ_БРА`, `РОЗ_2`, `ВЫКЛ_3`, нет `*U…` |
| Атрибуты у блока есть | `block_get_attdefs {"name": "<БЛОК>"}` | по 4–5 тегов на символ |
| Значения читаются обратно | `block_get_attributes {"handle": <вставка>}` | `{"МАРКА": "Т15", "ТИП": "светильник", …}` |
| Вставки на плане | `block_find_references {"name": "<БЛОК>"}` | 14 вставок на плане-примере |
| Файл валиден в AutoCAD | открытие в `accoreconsole` (офисный ПК) | `rc=0`, стиль `ГОСТ A` = `isocpeur.ttf` |
Локальная инвентаризация без AutoCAD: `scripts/inspect_dxf.py` (ezdxf).
## 5. Грабли (собраны на живых прогонах)
1. **Анонимные блоки `*U`. **Если собрать примитивы и не создать именованный блок, `block_insert`
вставляет `*U`-блок: он не переиспользуется, не имеет атрибутов и не попадает в ведомость.
Лечение: сначала `block_create_from_entities` с именем, только потом вставки. Проверять
`block_list` на отсутствие `*U`.
2. **ATTDEF до вставок.** Если объявить атрибуты после вставок, старые вставки остаются без
атрибутов (`block_get_attributes` вернёт `{}`).
3. **Отдельный файл — только удалением.** Когда нужно выделить из большого DXF один символ/зону,
нельзя собирать новый документ копированием: `MTEXT` ссылается на текстовый стиль, которого
в новом файле нет, и AutoCAD отвечает `rc=53 «неправильный или неполный DXF»`. Правильно —
открыть исходный файл и удалить лишнее (`e.destroy()`): таблицы стилей, слоёв и блоков остаются.
Тот же приём спас при сборке этого репозитория: при удалении блока-стрелки `_ARCHTICK`
размерные стили ссылаются на несуществующий блок и файл не сохраняется — блоки с именами
на `_` (стрелки и маркеры размеров) удалять нельзя.
4. **PDF: формат листа.** Раньше PDF «подгонялся» по содержимому и A3 превращался в 167×122 мм.
В нашей сборке лист задаётся явно и проверяется медиабокс: A3 = **420×297 мм** (допуск ±2).
5. **Текст в PDF.** Для читаемого PDF нужен настоящий текстовый слой (инлайн-кодировка шрифта)
— иначе в PDF остаются кривые и текст не ищется/не копируется.
6. **Легенду на лист не ставить.** Прямое правило Павла: «условные обозначения» выносить
отдельным файлом (`docs/условные-обозначения.md`), на листе не держать.
7. **Штриховка/подложка.** Архитектурная подложка — отдельный слой (`АР_ПОДЛОЖКА`), её видимость
регулируется, чтобы знаки читались.
## 6. Что можно улучшить (следующие шаги)
- Привести подписи к варианту «в строчку» со выноской, если так принято в проекте заказчика.
- Добавить растровые превью в сами DXF (эскиз блока) для палитры AutoCAD.
- Расширить набор: светильники (подвесной, бра, точечный), розетки (1/2/3-местные, IP), выключатели
(1/2/3-клавишные, проходные), щиты, датчики — та же схема (примитивы + ATTDEF + слои).
- Собрать из этих блоков ведомость автоматически (по атрибутам `МАРКА`/`ТИП`/`ГРУППА`).
@@ -0,0 +1,22 @@
# Условные обозначения (вынесены из образца отдельно)
В лист не добавляются — применять по необходимости отдельным блоком справа от плана.
Все подписи — стиль isocpeur, высота 3 мм, с инлайновым кодом шрифта.
| № | Текст обозначения |
|---|---|
| 1 | {\C256;\c0;ПРОЕКТ ###############################} |
| 2 | {\fISOCPEUR|b1|i0|c204|p34;\H1.25x;\C256;\c0;ИП Николашкин П.В.\fISOCPEUR|b0|i0|c204|p34;\ |
| 3 | {\fISOCPEUR|b1|i0|c204|p34;\Q0;Условные обозначения} |
| 4 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Демонтированные стены и перегородки} |
| 5 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Вновь возведенные стены и перегородки} |
| 6 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Существующие стены и перегородки} |
| 7 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Устройство проемов в существующих стенах} |
| 8 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Заделка проемов} |
| 9 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Радиатор отопления} |
| 10 | {\fISOCPEUR|b0|i0|c204|p34;\Q0;Вентиляционный канал} |
Машинная версия: `условные_обозначения.json`.
В образце раздел стоит справа от плана; графические образцы линий — в блоке `A$C5672f958`.
Дополнительно в скилле: `образец_листа_форма3.md`, `шаблон_листа_форма3.json`, `образец_листа.dxf`.
@@ -0,0 +1,111 @@
# Комплект чертежей по ГОСТ из данных — а не «картинкой от нейросети»
Класс задач: «получить комплект планов (электрика, полы, потолки, демонтаж) уровня рабочей документации, сгенерированный автоматически». Собран 01.10.2026 по поводу ролика Михаила Жилина (дизайнер интерьера, ТОП-100 AD) — «Я попросил GPT-6 Astra нарисовать чертежи электрики квартиры 100 м²» (https://www.youtube.com/watch?v=Sto1bDtOlY8, 26.09.2026, 15:18, 14 439 просмотров).
## 1. Что именно показал ролик (референс «планки качества»)
Автор дал модели 4 исходника: 2D-планировку, свою же 3D-модель, комплект визуализаций и **пример рабочей документации как образец**. Получил **4 согласованных листа по электрике за ≈35 минут** (первые два — 9 мин 42 сек, вторые два — 27 мин).
| № | Лист | Содержание |
|---|---|---|
| 1 | План расстановки светового оборудования | световые точки с привязками + ведомость световых точек |
| 2 | План маркировки светового оборудования | спецификация типов светильников (споты, треки, бра, настольные лампы) |
| 3 | План выключателей и групп включения света | мастер-кнопка при входе + группы по зонам (обозначения V03) |
| 4 | План расстановки электрического оборудования | розетки, выводы под технику, ТВ, интернет (S40), драйверы (E08) |
**Приёмы, которые стоит забирать (работают и без всякой Astra):**
1. **«Сделай по образцу»** — дать пример готовой РД, а не описывать словами. Это то, что дало состав и оформление листов.
2. **Опираться на промежуточный наглядный артефакт** — модель «прочитала» свои же визуализации и расставила точки по ним. Аналог у нас: сначала растровая подложка/эскиз, потом координаты.
3. **Комплект, а не один лист.** Ценность — в наборе из 4 согласованных листов (расстановка → маркировка → группы → розетки).
**Косяки, которые у него остались (ровно то, что в AutoCAD ловится кодом):** светильники «съехали» с оси в 2 местах; высота бра на листе (1 800) не бьётся с визуализацией; выключатель поставлен в угол вместо фартука; **розетка над варочной поверхностью — лишняя**; выключатели не размечены по расстоянию от проёма.
**Экономика по словам автора:** 35 минут и подписка $20/мес против 2 недель работы дизайнера студии и более 100 000 ₽. Год назад на этой задаче было «полный мрак».
**Ключевое допущение (не цитата автора — вывод из ролика):** DWG, слои, блоки и сохранённый файл в ролике не упоминаются ни разу; единственный способ правки — «попросить его в чате исправить». То есть листы — это **растровые сгенерированные изображения**, а не рабочая документация в открытом формате. Отсюда и весь разрыв с AutoCAD-подходом: у нас на выходе редактируемый DWG со слоями и блоками, где символ перетаскивается мышкой и атрибут правится в свойствах.
## 2. Норматив (что брать за основу символов и оформления)
| Документ | Что даёт | Ссылка |
|---|---|---|
| **ГОСТ 21.210-2014** «СПДС. Условные графические изображения электрооборудования и проводок на планах» | таблицы изображений выключателей, переключателей, штепсельных розеток **с размерами в мм** — источник символов | docs.cntd.ru/document/1200115052 |
| **ГОСТ 21.614-88** | заменён 21.210-2014 — применять новый | ruscable.ru/info/snip/Data1/3/3117/index.htm |
| **ГОСТ Р 21.1101-2013** СПДС | основная надпись **форма 3** (и 5, 6), оформление листов | mt-r.ru/upload/blok-skhemy/GOST_Р_21_1101-2013_SPDS.pdf |
| **ГОСТ Р 21.101-2020** | актуальная редакция СПДС вместо 21.1101-2013 | fkr-spb.ru (PDF) |
⚠️ **ГОСТ ≠ ISO.** Встроенный в MCP `titleblock_apply_iso_a3` — это **ISO 7200**, другая таблица. Для РФ нужен свой блок рамки со штампом по форме 3.
## 3. Пять технологий AutoCAD, которые дают результат
1. **Блоки с атрибутами** (`BLOCK`/`ATTDEF`/`INSERT`). Символ розетки — одна сущность с полями тип/высота/группа/монтаж. Для параметрики — **динамические блоки** (набор видимости: одинарная/двойная/скрытая). Через наш MCP — `block_insert` с `attributes`.
2. **Извлечение данных** `DATAEXTRACTION` → нативная таблица прямо в чертеже + выгрузка в Excel/CSV. Ведомость **всегда сходится с чертежом**, потому что считается из него. Документация Autodesk: help.autodesk.com, справка AutoCAD 2025 (`GUID-D1433C93…`). В ezdxf-мире аналог — обход `INSERT` и `entity_create_table`.
3. **Слои и стили.** Нужны свои: `СПДС-СО.Светильники`, `СПДС-СО.Выключатели`, `СПДС-ЭО.Розетки`, `СПДС-ЭО.Группы`, `АР.Подложка-мебель`, `Штамп`, `Размеры`. Встроенный `template_apply_layers(electrical)` (7 слоёв, IEC-логика под схемы) для этого **не годится**.
4. **Лист:** Layout + Viewport + рамка со штампом; модель чертится 1:1, масштаб задаётся видовому экрану (`viewport_create(scale=1/50)`).
5. **Preflight кодом** вместо «глаза проверяющего»: розетка в зоне варочной/мойки → ошибка; у каждого символа заполнены обязательные атрибуты; количество символов типа == строка ведомости; светильники одной группы на одной оси; нет символов «на слое 0».
**Мелочь, дающая «то самое» ощущение чертежа:** подложка мебели приглушённым цветом (ACI 250/8) на отдельном слое + порядок отрисовки.
## 4. Готовые решения (проверено 01.10.2026)
| Решение | Что даёт | Статус |
|---|---|---|
| **U-C4N/Autocad-MCP** (`autocad-mcp-pro`) | наш текущий сервер, 149 инструментов: блоки с атрибутами, нативные таблицы, листы, HATCH, размеры, preflight, `system_run_lisp` | 113★ / 34 форка / обновлён 24.09.2026 / MIT |
| **Igualguana/AUTOCAD-ELECTRICAL-MCP** | MCP прямо под AutoCAD Electrical: 46 инструментов — electrical (7), wires (5), components (6), reports (5), project (6); COM, нужен живой AutoCAD | 16★ / 1 форк / 15.04.2026 / AGPL-3.0 |
| **harrissohail6/AutoCAD-Automation-Scripts** | ezdxf-скрипты ровно под эту задачу: `block_inserter` (вставка символов по CSV координат), `bom_generator` (спецификация из блоков в Excel), `layer_manager`, `cable_schedule`, `title_block_updater`, `symbol_library`. **Брать как образец вместо написания с нуля** | 3★ / 1 форк / 05.12.2025 / MIT |
| **dell4valt/gost_template** | рамки и основные надписи по ГОСТ Р 21.1101-2013 (формы 3, 5, 6, титульные листы), PDF/PNG/SVG/Visio, шрифт ISOCPEUR | 25★ / 7 форков / 2020 / без лицензии |
| **dwg.ru/dnl/15570** | динамический блок рамки со штампами уже по **ГОСТ Р 21.101-2020** (актуальнее, чем 21.1101-2013) | dwg.ru |
| **severin.su** | шаблон ГОСТ Р 21.1101-2013 под AutoCAD: формы 3/4/5/6, масштаб А4–А0×3, атрибуты из подшивки | severin.su |
| **AutoCAD Electrical (toolset)** | автонумерация проводов, генерация обозначений компонентов, автоматические отчёты и спецификации. По блогу Hagerman (27.04.2026) отчёты/BOM **на 97% быстрее**, чем в чистом AutoCAD. Входит в подписку AutoCAD 2027 — **стоит проверять, установлен ли toolset в AutoCAD 2023 RU на офисном ПК** | Autodesk |
| **Zoo Text-to-CAD** | пример правильного подхода «текст → CAD»: на выходе редактируемые параметрические модели, а не картинки | для сравнения подходов |
## 5. Пайплайн: 5 слоёв
```
Слой 1 Библиотека символов по ГОСТ 21.210-2014 (разово)
один DXF с блоками + ATTDEF: ТИП, ВЫСОТА, ГРУППА, МОНТАЖ, ПРИМЕЧАНИЕ
↓
Слой 2 Модель данных объекта (JSON): rooms[], lights[], sockets[], switches[]
— НЕ «координаты линий», а описание объекта с привязками и группами
↓
Слой 3 Скрипт-сборщик (детерминированный, без участия LLM на этом шаге)
ГОСТ-слои → block_insert(+attributes) → dimension_* → таблица-ведомость
(строки считает КОД) → layout_create + viewport_create + свой ГОСТ-штамп
→ drawing_export_dxf / drawing_export_pdf
↓
Слой 4 Preflight-проверки (drawing_preflight + свои правила, см. §3.5)
↓
Слой 5 Живой AutoCAD на Windows-ПК: динамические блоки, .dwt, подшивка .dst
(ezdxf это не умеет) — через COM + system_run_lisp
```
Пример JSON-модели:
```json
{
"object": "квартира 100 м2",
"rooms": [{"id": "R1", "name": "Кухня-гостиная", "poly": [[0,0],[6.2,0],[6.2,7.4],[0,7.4]]}],
"lights": [{"block": "LIGHT_SPOT", "room": "R1", "x": 1.2, "y": 1.4, "h": 0, "group": "3.1"},
{"block": "LIGHT_PENDANT","room": "R1", "x": 3.1, "y": 5.6, "h": 0, "group": "3.3"}],
"sockets": [{"block": "SOCK_DOUBLE", "x": 0.15, "y": 1.10, "h": 1100, "use": "фартук"}],
"switches":[{"block": "SWITCH_3G", "x": 6.05, "y": 1.05, "h": 900,
"groups": ["3.1","3.2","3.3"]}]
}
```
**Группа включения обязана быть АТРИБУТОМ, а не текстом.** Иначе не построить ни схему групп, ни автопроверку по зонам.
## 6. План внедрения (3 этапа — предлагать Павлу именно так)
| Этап | Что делаем | Результат |
|---|---|---|
| 1. Библиотека + один лист | библиотека символов по ГОСТ 21.210-2014 с атрибутами; сборщик строит **один план расстановки света** из JSON блоками вместо линий | DXF/DWG с блоками, высотами, подложкой мебели |
| 2. Ведомость и комплект | авто-ведомость из атрибутов + листы «маркировка», «выключатели и группы», «розетки»; рамка и штамп форма 3 | тот же комплект из 4 листов, но редактируемый |
| 3. Preflight и приёмка | правила проверок + приёмка на живом объекте | комплект без вычитки вручную |
## 7. Риски и ограничения (проговаривать честно)
- Библиотеку символов **нельзя сгенерировать «на глаз»** — она должна быть по ГОСТ 21.210-2014, иначе чертёж не примут. Это ручная работа один раз.
- **Локальная модель (qwen3.8) не пишет длинный код** (проверено 18.08.2026: `finish_reason='length'`, зацикливание). Расстановку планирует модель, а строит **готовый скрипт**.
- `system_run_lisp` работает только на COM-бэкенде, т.е. при живом AutoCAD на Windows (`192.168.50.91`, AutoCAD 2023 RU) — из Docker недоступно.
- ezdxf не создаёт динамические блоки с параметрами и не работает с подшивкой `.dst`.
- Штамп: ISO 7200 ≠ ГОСТ Р 21.1101 — встроенный инструмент MCP здесь не подойдёт.