# ours-1.6 — наш оверлей поверх апстрима 1.6.0 Ветка `ours-1.6` = тег **v1.6.0** (`cdb1063`, released 1.6.0 lineage) + наш патч, ранее живший в 1.5.1 (`/opt/data/autocad-mcp-build/patch/`, прод-контейнер `:30015`). Перенос сделан **трёхсторонним слиянием с ветвью `ours-1.5`** (v1.5.1 + оверлей), а не копированием файлов: 30 конфликтов разрешены по смыслу. Копирование файлов оверлея 1.5.1 поверх 1.6.0 затирало бы новые модули 1.6.0 — этот путь исключён. Дельта к 1.5.1: 10 изменённых + 2 новых файла, +3207 / −152 строк. ## Что перенесено (наше) | Область | Что именно | |---|---| | Инструменты | `titleblock_apply_gost_form3`, `file_put`, `file_get`, `drawing_open_base64`, `drawing_save_base64`, `entity_create_attdef`, `block_get_attdefs`, `textstyle_ensure`, `text_apply_style`, `text_style_report`, `dimstyle_ensure`, `layout_set_paper` | | Параметр `layout` | адресация в пространство листа — 36 инструментов, включая геометрию (`entity_create_line/polyline/circle/arc`), `block_insert`, `block_create_from_entities`, `dimension_*`; в COM — `_activate_layout()` | | `inline_font` | ГОСТ-шрифт ISOCPEUR прямо в MTEXT/таблицы — 5 инструментов | | ГОСТ-стиль | стиль по умолчанию `GOST_A` при `drawing_new` / `drawing_open` | | Атрибуты | ATTDEF → ATTRIB: `block_insert` вставляет **именованный** блок (не `*U`), `block_set_attributes` достраивает отсутствующие ATTRIB из определений | | Отчётность | `filled` / `unknown_tags` / `created_tags`, штамп стиля на ATTRIB | | PDF | `page_size` (`layout` — страница равна формату листа 1:1, `extents` — по содержимому), настоящий текстовый слой (`pdf.fonttype=42`), текст через видовые экраны, предупреждения о мелких надписях | | Новые файлы | `engineering/gost_titleblock.py` (ГОСТ Р 21.1101-2013, форма 3), `_fonts/isocpeur.ttf` | ## Что уступили апстриму (дубли удалены) - `drawing_export_pdf`: рамка листа считается `_paper_frame()` из 1.6.0 (масштаб, plot area, поворот, поля) вместо нашего `_layout_paper_mm()`; наш текстовый слой и `page_size` наложены сверху. - Размерные стили: `_current_dimstyle_name()` из 1.6.0; наш `_current_dimstyle()` оставлен — им пользуется отчёт о стилях. - Таблицы (ezdxf и COM): объединённая строка-заголовок, «span», масштабируемый отступ ячеек и `SetCellTextHeight()` из 1.6.0 + наши `inline_font` / style. - `block_insert`: структура вставки и многострочные ATTRIB из 1.6.0 + наша отчётность. - Экспорт DWG/xref/image_attach/профили и группы `arch` (12), `pid` (9), `mech` (6), `sheet`, `understand` — сохранены целиком, 1.6.0 ничего не потерял. ## Три структурные правки после слияния Найдены pyflakes и аудитом дерева (git сшил код механически): 1. `com_backend`: наша подпись `drawing_export_pdf` попала в тело `xref_attach` и дублировала метод — вставка убрана, `text_layer`/`page_size` перенесены в настоящую COM-функцию; 2. `_space_name` в ezdxf-бэкенде был занят дважды — наш переименован в `_reply_space_name` (иначе затенял хелпер апстрима); 3. `entity_create_text`: ключ `"style"` в `dxfattribs` стоял дважды — оставлен наш (разрешённый `resolved_style`). Итого pyflakes: 8 предупреждений — столько же, сколько в чистом 1.6.0, новых нет. ## Проверка Образ `autocad-mcp:1.6.0-ours`, контейнер `autocad-mcp-160ours`, порт **30041** (`:30015` — прод, `:30040` — чистый апстрим 1.6.0; оба не тронуты). - `tools_inventory.py 30041` → **254** инструмента (апстрим даёт 242), все наши доработки на месте, `layout` у 36, `inline_font` у 5; - `mcp_acceptance_test.py --base-url http://10.26.5.108:30041/mcp` → **15/15 PASS**; - живой вызов 1.6.0-новинки `drawing_understand` → ok (entities, units, extents, clusters, rooms, blocks, layouts, title_block); - прод `:30015` → 161 инструмент, не тронут.