Repository navigation
RU codex docs scan reverse engineering
Контракт расширяет рабочий процесс Document Model v7: восстановление CAD-модели по треугольной сетке заканчивается редактируемой конструкцией. Версия сохраняемого документа не меняется. Новые операции используют имеющиеся объекты тел, элементов, эскизов, точек и линий и существующий конвейер OCCT для loft, булевых операций и скруглений.
Для обратного проектирования по сетке import_scan (PLY из workspace) или import_project_scan (PLY в проекте) создаёт проверенную треугольную сетку cadyx-mesh-v1 с помощью CPU-моста Open3D (реконструкция облака либо очистка сетки). Отдельная команда import_project_point_cloud сохраняет PLY только с точками как связанное с исходником облако точек, не реконструируя поверхность. Ограничения на количество точек нет: CADYX потоково проверяет все точки и их координаты, вычисляет полные границы и SHA-256 источника, сохраняя неизменённый PLY полного разрешения в проекте.
Для отображения тело хранит не более 125000 детерминированно выбранных точек; браузер независимо ограничивает число отрисовываемых точек и потоково показывает PLY-превью. Облако только с точками можно просматривать и отображать, но оно не содержит треугольников, необходимых align_scan, извлечению сечений или сравнению тела со сканом. Для этих операций сначала восстановите треугольную сетку. Ни один импорт не создаёт редактируемую OCCT B-rep. Команды обратного проектирования по сетке строят эскизы, которые затем можно передать обычным операциям создания тела.
Физические единицы по координатам PLY не выводятся. align_scan сохраняет явно заданные агентом/пользователем единицы и численный масштаб. Модель, построенная по эскизам скана, получает полученный масштаб координат по построению; схема документа при этом не объявляет единицу.
compare_body_to_scan выполняет выборочную геометрическую проверку относительно триангулированных поверхностей. Она полезна для итеративной реконструкции, но не является исчерпывающим точным доказательством расстояния до B-rep, сертификатом метрологии, доказательством производственных допусков или гарантией посадки.
Обязательно: body_id исходного тела reconstruct_scan.
Необязательные параметры:
-
mode:pca(по умолчанию) илиexplicit. -
long_axis:X,YилиZв режиме PCA; по умолчаниюY, потому что станции XZ с нормалью Y можно напрямую передать вloft_sketches. -
basis: в явном режиме — три правые ортонормированные оси XYZ. Каждая строка задаёт целевую ось в координатах источника. -
origin: начало отсчёта в координатах исходника. В режиме PCA приcenter=trueпо умолчанию используется центроид выборки; в режимеexplicit—[0,0,0]. -
center: логическое поле только режима PCA, по умолчаниюtrue. -
axis_signs: три значения+1/-1; их произведение должно быть положительным, что разрешает разворот базиса на 180° без зеркального отражения. -
scale: положительный множитель координат, по умолчанию1. -
units:unitless,mm,cm,mилиin; по умолчаниюunitless. -
translation: итоговый перенос XYZ, по умолчанию[0,0,0]. -
ground_z: логическое поле, по умолчаниюtrue; после выравнивания сдвигает скан так, чтобы минимальная Z была равна нулю. -
name: необязательное новое имя тела.
PCA использует ограниченную детерминированную выборку вершин сетки, вычисление собственных значений симметричной матрицы ковариации 3×3, детерминированные знаки осей и правый базис. Команда меняет сетку исходного тела на месте, чтобы пассивный viewport не показывал дублирующие исходное и выровненное тела. Элемент reconstruct_scan сохраняет запись alignment и ссылку на исходный артефакт. Если команда set_scan_parameter впоследствии перестраивает сетку, Command System повторно применяет сохранённое выравнивание до фиксации ревизии.
Повторный align_scan сначала заново создаёт скан из неизменённого источника с прежним SHA-256 и только затем применяет новое преобразование. Поэтому преобразования не накапливают численные ошибки.
Обязательно: body_id и конечный offset.
Необязательные параметры:
-
normal_axis:Y(по умолчанию) илиZ. -
join_tolerance: допуск соединения концов; по умолчанию определяется границами скана. -
simplify_tolerance: допуск RDP-упрощения замкнутого контура; по умолчанию0. -
max_points: не менее 16 точек на контур, по умолчанию512. Если предел меньше числа исходных точек контура, длинные циклы равномерно пересэмплируются по длине дуги. -
max_contours: необязательное положительное ограничение количества создаваемых эскизов; если не задано, остаются все подходящие контуры. При заданном пределе сначала сохраняются контуры с наибольшей охватываемой площадью. -
min_area,min_perimeter: неотрицательные фильтры шума. -
name: префикс имени эскиза.
Сетка пересекается с указанной плоскостью по одному треугольнику. Концы отрезков соединяются в граф с учётом допуска. Эскизы строятся только для замкнутых компонент без ветвлений. Число открытых, ветвящихся и шумовых компонент возвращается агенту, чтобы он мог изменить плоскость или допуск вместо молчаливого принятия разомкнутого профиля.
Станция с нормалью Y становится эскизом XZ с section_normal_axis="Y" и точным section_offset; её можно сразу передать в loft_sketches. Станция с нормалью Z становится эскизом XY. Преобразование станции с нормалью X в неверную плоскость эскиза YZ намеренно не имитируется; пока нативные эскизы YZ недоступны для этой операции, используйте явное перевыравнивание.
Для каждого возвращённого контура указаны площадь, знаковая площадь, периметр, центроид, двумерные границы, число точек и ID эскиза. В метаданных сгенерированного эскиза сохраняются исходное тело скана и допуски сечения.
Пакетный вариант той же операции. offsets содержит любое число строго возрастающих станций. Команда возвращает:
-
section_groups: по одному списку ID эскизов на станцию, в том числе при нескольких контурах на станции; - общий список
sketch_ids; - измерения контуров и количество отклонённых компонент по каждой станции.
Для станций с нормалью Y список section_groups можно напрямую передать в loft_sketches. Существующая реализация loft принимает один или несколько контуров на станцию, нормализует соответствие профилей и требует строго возрастающий section_offset.
Обязательно: body_id редактируемого немешевого тела и scan_body_id скана.
Необязательные параметры:
-
max_samples: 64–20000, по умолчанию4096. -
tolerance: положительный порог в единицах совмещённых координат скана/модели. -
bidirectional: по умолчаниюfalse; приtrueдополнительно сравниваются вершины триангуляции тела и сетка скана.
Команда строит иерархию ограничивающих объёмов по треугольникам-целям и измеряет расстояния выборочных точек до треугольников. scan_to_body сообщает число точек выборки, среднее, RMS, P95, максимальное отклонение и десять наихудших точек. При заданном tolerance возвращается также число и процент точек в пределах допуска. Двусторонний режим добавляет body_to_scan и выборочный максимум в обе стороны.
B-rep оценивается по текущей viewport-триангуляции. Идентификатор метода — sampled-point-to-tessellated-triangle-bvh-v1. Всегда указывайте это ограничение рядом с численным результатом.
- Импортируйте источник командой
import_scan, настраивая параметры реконструкции и сохраняя исходный PLY. - Запустите
align_scan; оставьтеunits: "unitless", пока масштаб неизвестен. Для вытянутых деталей совместите главную ось с глобальной Y и сохраняйтеground_z=true, если датум изделия не требует другого. - Проверьте границы выровненного тела. Если известен физический размер, повторно выровняйте скан с
scale = target_dimension / measured_scan_dimensionи явно укажитеunits. - Создайте стратегически расположенные станции с нормалью Y через
create_scan_sections. Добавляйте станции там, где меняются кривизна, рёбра жёсткости, защёлки, бобышки или топология контура. - Постройте основную редактируемую B-rep через
loft_sketches; добавляйте местные тела, вырезы и скругления существующими командами CADYX, вместо переноса шума скана в топологию CAD. - Выполните
compare_body_to_scan, изучите P95/максимум и точки наибольшего отклонения, затем уточните станции/элементы и повторите сравнение. - Осмотрите готовую B-rep целиком и viewport, затем, если запрошено, используйте
export_brepдля проверяемой передачи STEP/STL.
Цель обратного проектирования — чистая редактируемая модель конструкции, соответствующая измеренной геометрии референса в заявленном выборочном допуске, а не преобразование каждого треугольника сканерного шума в отдельную сущность CAD.