# ECONA: единая геометрическая основа ECONA

Дата проверки исходной версии: **10 октября 2026**.

Позже в этот же рабочий файл добавлена [симметричная обшивка поплавков](17_symmetric_skin.md). Ниже описана исходная геометрия до её добавления; исходные объекты сохранены. Рабочий файл — **ECONA_ECONA.FCStd**, открывается в FreeCAD. Это одна сводная модель со всеми полезными представленными данными, а не пять наложенных друг на друга экспортов.

Файл в проекте: `models/ECONA/ECONA_ECONA.FCStd`.

![Сводная модель в FreeCAD](../assets/geometry/ECONA-isometric.png)

## Что удалось установить

У катамарана два поплавка, соединяющая их палуба/мост, надстройка, внутренние поверхности и перегородки, остекление, погружённые элементы и кормовые площадки. Исходные экспорты содержат фасеточные поверхности и линии. Параметрических обводов, назначенных толщин обшивки, материалов конструкции и расчётного силового набора они не предоставляют. Цвета обозначают исходные материалы визуализации; цветная перегородка сама по себе не доказывает её несущую функцию.

Все координаты нормализованы в **миллиметры, масштаб 1:1**, без изменения формы и сглаживания. Система правая: **X к носу, Y к левому борту, Z вверх**. Начало X — крайняя кормовая точка экспортированных поверхностей, Y=0 — диаметральная плоскость; исходная отметка Z сохранена. **Z=0 не назначена ватерлинией**, а начало X не объявлено кормовым перпендикуляром.

Переход от осей STL/3DS/DXF: `X = 7404.7001953125 − Xисх`, `Y = −Yисх`, `Z = Zисх`. Для OBJ предварительно использовано `Xstl=Xobj`, `Ystl=−Zobj`, `Zstl=Yobj`. Масштабный коэффициент из заголовка 3DS не применялся: его числовые координаты уже совпадают с миллиметровыми STL и DXF.

| Параметр геометрии | Значение | Значение для проектирования |
|---|---:|---|
| Продольный диапазон обеих бортовых зон | 13 600,000 мм | Согласуется с номиналом ECONA; это измерение геометрии бортовых зон, а не длина по КВЛ |
| Общая длина основных поверхностей | 13 916,760 мм | Включает выступающий центральный носовой элемент, приблизительно на 316,760 мм впереди носов поплавков |
| Общая ширина | 7 398,000 мм | Габарит представленных поверхностей; не расчётная ширина каждого поплавка |
| Высотный диапазон основных поверхностей | 4 707,357 мм | Включает погружённые элементы; не осадка |
| Высотный диапазон с дополнительными элементами | 4 730,119 мм | Несколько вспомогательных элементов 3DS/DXF выступают выше основной сетки |
| Максимальная ошибка координат после сохранения и повторного открытия | 0,000489 мм | Погрешность записи координат основной сетки, а не точность реальных обводов |

## Как использованы пять файлов

| Источник | Результат сравнения | Роль в сводной модели |
|---|---|---|
| 3DS | 45 объектов, 12 120 треугольников. Первые пять объектов содержат ровно те же 11 962 треугольника, что STL, с совпадением координат | Основная геометрия, исходные группы и назначения цветов; дополнительные 40 объектов сохранены скрытыми |
| STL | 11 962 треугольника, 5 616 уникальных вершин | Независимая проверка основной поверхности; повторная копия поверхности не добавлялась |
| OBJ | 5 616 вершин, 4 785 полигонов, 11 962 треугольника при разбиении. Оси отличаются; после преобразования максимальное расхождение вершин со STL — 0,008275 мм | Проверка масштаба, координат и состава исходных групп. Альтернативное разбиение полигонов не наложено на основную сетку |
| DXF | Единицы — мм; 5 941 LINE и 5 821 трёхмерная POLYLINE, без готовых поверхностей | 5 620 дополнительных неповторяющихся отрезков сохранены скрытым слоем. Совпадающие с рёбрами основной геометрии и нулевые линии убраны |
| SKP | Прочитаны архивные метаданные, XML материалов и исходное превью | Восстановлены явные цвета и прозрачность. Проприетарный `model.dat` не декодирован, независимая проверка всей родной геометрии SKP не заявляется |

Отсутствующий в загрузке файл MTL не мешает восстановлению явных цветов из SKP. Для стандартного `FrontCol` задан нейтральный цвет отображения; исходный цвет этого стандартного материала не подтверждён. Текстура воды не включена: это не поверхность катамарана.

## Состав рабочего файла

В документе 96 объектов, из них **82 объекта поверхностей**. Основная геометрия хранится в 42 объектах Mesh; 40 мелких дополнительных объектов 3DS — в виде точных плоских CAD-граней, чтобы не терять микроскопические элементы при округлении координат сетки.

- **00 Паспорт модели** — единицы, оси, назначение, ограничения, полный встроенный реестр источников с SHA-256 и результаты аудита.
- **01 Основная геометрия** — 11 729 треугольников. Разделена на левую, правую и центральную географические зоны, внутри сохранены исходные Mesh01–Mesh05 и обозначения материалов.
- **02 Дополнительные элементы 3DS** — 158 треугольных CAD-граней, скрыты по умолчанию. В основном это тонкие вспомогательные элементы; их конструктивное назначение не назначалось автоматически.
- **03 Дополнительные линии DXF** — 5 620 CAD-отрезков, скрыты. Линии не считаются обшивкой или силовым набором.
- **04 Диагностика** — граничные рёбра красным, рёбра с более чем двумя гранями пурпурным; скрыта.
- **05 Координатные оси** — X красная, Y зелёная, Z синяя; скрыты.

Зоны выделены по расположению граней относительно Y=±1800 мм. Центральная зона включает грани, пересекающие границы зон. Такое деление позволяет ориентироваться в сборке, но **не выделяет автоматически отдельные замкнутые гидростатические оболочки поплавков**. Неизвестные назначения отдельных исходных деталей сохранены как неизвестные.

## Очистка и ограничения для расчётов

Из 12 120 исходных треугольников удалены **184 вырожденных** (площадь не более 10⁻⁷ мм²) и **49 точных повторов**, без достраивания отверстий. Остаётся 11 887 треугольных граней. При совпадении повторных граней предпочтение отдано явно назначенному цвету перед стандартным.

В основной объединённой сетке после очистки остаются **980 граничных рёбер** и **1 117 рёбер, принадлежащих более чем двум граням**. Сборка не замкнута; ориентация граней не везде согласована. Она включает внутренние поверхности и оборудование, поэтому эти числа **не доказывают сами по себе наличие отверстий во внешней обшивке каждого поплавка**. FreeCAD при загрузке предупреждает о дефектах топологии семи подгрупп сетки; предупреждения учтены, скрытого «исправления» формы нет.

С этой основой можно измерять расстояния, размещать оборудование, снимать сечения и восстанавливать обводы. Для водоизмещения, остойчивости и сопротивления следующим этапом нужно выделить внешние оболочки поплавков, согласовать нормали и замыкание, определить КВЛ и варианты загрузки. Для прочности потребуется построить конструктивную модель с материалами, толщинами, соединениями и нагрузками. Объём всей импортированной сборки не используется как водоизмещение.

## Как открыть и работать

В FreeCAD: **Файл → Открыть → ECONA_ECONA.FCStd**. Модель также уже открыта на компьютере. Раскрывайте группы в дереве; клавиша **пробел** скрывает или показывает выбранные объекты. **0** включает аксонометрию, последовательность **V, F** вписывает вид. Для расчётного скрипта координаты основной сетки доступны через `obj.Mesh.Topology`, дополнительных CAD-граней и линий — через `obj.Shape`. Контрольные числа и происхождение доступны через свойства `ModelPassport`.

Исходные экспорты и промежуточная версия FCStd удалены в системную корзину после проверки. В рабочем проекте остаётся одна модель. SHA-256, исходные имена и объёмы файлов сохранены в паспорте; наличие исходных файлов на флешке этим действием не изменяется.

## Проверки и воспроизводимость

Сохранённый FCStd открыт отдельным процессом FreeCADCmd и повторно в GUI. Проверены количества граней каждого объекта, соответствие всех треугольников исходной очищенной геометрии независимо от порядка вершин, максимальное отклонение координат, количество линий DXF, корректность CAD-граней/линий и встроенный паспорт.

Реестры: `research/geometry/ECONA_audit.json`, `ECONA_validation.json`, `ECONA_cleanup.json`. Скрипты: `tools/geometry/prepare_arrow.py`, `build_arrow_freecad.py`, `verify_arrow_freecad.py`, `compare_arrow_roundtrip.py`. Для повторной сборки из экспортов потребуется восстановить исходники и выполнить подготовку временного payload; готовый FCStd самодостаточен и исходников для открытия не требует.
