К содержанию
IFC-RS
Viewer English
Wiki проекта ru

Ядро

Архитектурные слои

Слой 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. Подробнее: архитектура и профиль.