Ядро
Архитектурные слои
| Слой | Crate | Назначение |
|---|---|---|
| источник | ifc-source |
заимствованные, владеющие и mapped bytes |
| scanner | ifc-scan |
границы STEP-сущностей и диагностика без regex |
| значения/схема | ifc-value, ifc-schema |
ленивые STEP-значения и metadata EXPRESS |
| индексы | ifc-index |
type, GUID, references, spatial, Pset |
| модель | ifc-model |
единая schema-aware модель и запросы |
| изменения | ifc-edit |
транзакции, revision, Patch Overlay, undo/redo |
| запись | ifc-write |
новый IFC с сохранением неизменённых диапазонов |
| топология | ifc-brep |
bounded clipping и canonical BRep topology core |
| геометрия | ifc-geometry |
placements, profiles, extrusion, mapped items, mesh |
| facade | ifccore |
минимальный стабильный Rust API |
| адаптер | ifc-wasm |
browser/Node boundary и IFCG/2 |
Поток данных
IFC bytes → scanner → ranges/type table → ленивые индексы → query/geometry
↓
transaction/Patch Overlay
↓
writer → новый IFC
Открытие не изменяет исходный буфер. Query декодирует только нужные записи. Writer копирует неизменённые диапазоны и сериализует затронутые сущности.
Геометрия
Результат для продукта классифицируется как exact, fallback, unsupported
или invalid; объект не должен исчезать молча. Фактическое покрытие находится в
матрице геометрии.
ifc-brep содержит независимую от IFC-парсера цепочку
Solid → Shell → Face → Wire → HalfEdge. Она детерминированно строит несколько
тел и проверяет ownership, ориентацию и manifold-инцидентность. Stage 2 добавляет
schema-aware импорт замкнутого полигонального IfcFacetedBrep, а Stage 3 —
bounded IfcFacetedBrepWithVoids с canonical outer/void roles и conservative
convex-profile gates до tessellation. Stage 4 добавляет собственные bounded
pure-Rust/WASM polygonal UNION, INTERSECTION и DIFFERENCE: успешный результат
содержит watertight mesh и canonical topology, а пустой результат представлен
явно. Stage 5 добавляет собственный bounded exact-sign orient3d через expansion
arithmetic и не смешивает представимые sub-tolerance зазоры. Пересечения всё ещё
строятся в f64. Stage 6 добавляет общий bounded DIFFERENCE: convex BRep × BRep,
BRep × half-space, nested clipping, последовательные cuts и typed empty.
Stage 7 добавляет bounded healing для UNION/INTERSECTION: conservative sewing,
удаление duplicate/degenerate sliver faces, reconstructed shells, coplanar merge
и отдельную диагностику open/non-manifold результата. Stage 8 добавляет bounded
pure-Rust/WASM tessellation cylinder, cone, sphere и non-self-intersecting torus,
а также circle/ellipse и parameter-trimmed conics в profile path.
Выход за проверенный профиль передаётся exact backend или диагностируется;
IfcAdvancedBrep, arbitrary surface trims, B-Spline/NURBS и универсальные exact
booleans не заявлены.
Подробнее: BRep topology Stage 1,
IfcFacetedBrep Stage 2 и
void shells Stage 3,
polygonal booleans Stage 4 и
exact predicates Stage 5 и
general difference Stage 6,
bounded healing Stage 7 и
analytic surfaces Stage 8.
Границы стабильности
Стабильны facade ifccore и закреплённая WASM boundary. Низкоуровневые crates —
внутренняя поверхность workspace. Fragments, container, MCP и AI bridge — preview.
Подробнее: архитектура и
профиль.