Подписи секций в DXF привязаны по левому-нижнему углу к центроиду, а не отцентрованы на нём #1600

Closed
opened 2026-06-16 17:16:26 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: rendering · Файл: backend/app/services/generative/exporters/dxf.py:99-105

Файл backend/app/services/generative/exporters/dxf.py:99-105. text = msp.add_text(label, ...); text.set_placement((centroid.x, centroid.y)) вызывается без аргумента align. Эмпирически подтверждено на ezdxf 1.4.2: set_placement без align даёт TextEntityAlignment.LEFT (привязка левого-нижнего угла/baseline к точке), get_placement() возвращает (LEFT, Vec3(x,y), None). То есть номер секции стоит вверх-и-вправо от центра пятна, а не над центром. Импакт: для плотных вариантов (тестовый участок размещает 70-88 секций) смещённые подписи могут попадать на соседние footprints и перекрывать их, делая для архитектора неоднозначным, к какой секции относится номер. Чисто косметика/читаемость, потери данных нет. Фикс: text.set_placement((cx, cy), align=TextEntityAlignment.MIDDLE_CENTER) (импортировать ezdxf.enums.TextEntityAlignment).

Почему баг: For dense variants (the test parcel places 70-88 sections) the offset labels can land on or overlap neighbouring footprints, making the architect read-out ambiguous about which section a number belongs to. Purely cosmetic / readability, no data error — hence low.

Как чинить: Pass an explicit alignment, e.g. text.set_placement((cx, cy), align=ezdxf.enums.TextEntityAlignment.MIDDLE_CENTER), so the label is centred on the footprint.


deep-audit backend v2 (после PR #1543) · verify+harden, confidence 0.7 · unit B28

**Severity:** low · **Категория:** rendering · **Файл:** `backend/app/services/generative/exporters/dxf.py:99-105` Файл backend/app/services/generative/exporters/dxf.py:99-105. text = msp.add_text(label, ...); text.set_placement((centroid.x, centroid.y)) вызывается без аргумента align. Эмпирически подтверждено на ezdxf 1.4.2: set_placement без align даёт TextEntityAlignment.LEFT (привязка левого-нижнего угла/baseline к точке), get_placement() возвращает (LEFT, Vec3(x,y), None). То есть номер секции стоит вверх-и-вправо от центра пятна, а не над центром. Импакт: для плотных вариантов (тестовый участок размещает 70-88 секций) смещённые подписи могут попадать на соседние footprints и перекрывать их, делая для архитектора неоднозначным, к какой секции относится номер. Чисто косметика/читаемость, потери данных нет. Фикс: text.set_placement((cx, cy), align=TextEntityAlignment.MIDDLE_CENTER) (импортировать ezdxf.enums.TextEntityAlignment). **Почему баг:** For dense variants (the test parcel places 70-88 sections) the offset labels can land on or overlap neighbouring footprints, making the architect read-out ambiguous about which section a number belongs to. Purely cosmetic / readability, no data error — hence low. **Как чинить:** Pass an explicit alignment, e.g. text.set_placement((cx, cy), align=ezdxf.enums.TextEntityAlignment.MIDDLE_CENTER), so the label is centred on the footprint. --- <sub>deep-audit backend v2 (после PR #1543) · verify+harden, confidence 0.7 · unit B28</sub>
bot-backend added the
week ревью 1
label 2026-06-16 17:16:26 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1600
No description provided.