Skip to content

Release/2.0.0 - #151

Merged
DamienGilliard merged 229 commits into
mainfrom
release/2.0.0
Sep 11, 2026
Merged

DamienGilliard merged 229 commits into
mainfrom
release/2.0.0

Conversation

@DamienGilliard

Copy link
Copy Markdown
Collaborator

This PR is the "mother" PR of diffcheck 2.
This branch is supposed to be the "main" during the development of diffCheck 2, and will be merged when The whole DF2 is ready

…nt_detection

Fix/plane detection and joint detection
a bit of defensive coding suggested by guithub copilot

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Several functional, serialization, geometry, dependency, and concurrency defects can break core workflows.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Expands diffCheck 2 with point-cloud operations, pose workflows, network ingestion, and supporting build/package updates.

Changes:

  • Adds cloud manipulation, segmentation, registration, and plane-fitting capabilities.
  • Introduces pose estimation/comparison and TCP, WebSocket, and HTTP components.
  • Updates packaging, build tooling, examples, tests, and documentation.
File summaries
File Description
tests/unit_tests/DFPointCloudTest.cc Tests RANSAC plane fitting.
test_save.ply Removes generated test artifact.
src/gh/examples/simple_ws_sender.py Adds WebSocket sender example.
src/gh/examples/simple_tcp_sender.py Adds TCP sender example.
src/gh/diffCheck/setup.py Adds WebSocket dependency.
src/gh/diffCheck/diffCheck/df_util.py Adds oriented bounding-box utility.
src/gh/diffCheck/diffCheck/df_poses.py Adds persistent pose models and utilities.
src/gh/diffCheck/diffCheck/df_joint_detector.py Supports curved joints and revised bounding geometry.
src/gh/diffCheck/diffCheck/df_gh_canvas_utils.py Centralizes Grasshopper canvas helpers.
src/gh/diffCheck/diffCheck/df_geometries.py Adds face areas and beam planes.
src/gh/diffCheck/diffCheck/df_error_estimation.py Adds pose-result analysis.
src/gh/diffCheck/diffCheck.egg-info/SOURCES.txt Updates packaged binding artifact.
src/gh/diffCheck/diffCheck.egg-info/requires.txt Records WebSocket dependency.
src/gh/diffCheck/diffCheck.egg-info/PKG-INFO Updates generated package metadata.
src/gh/components/DF_websocket_listener/metadata.json Defines WebSocket listener component.
src/gh/components/DF_websocket_listener/code.py Implements WebSocket point-cloud ingestion.
src/gh/components/DF_visualization_settings/code.py Reuses shared canvas utilities.
src/gh/components/DF_truncate_assembly/metadata.json Defines assembly truncation component.
src/gh/components/DF_truncate_assembly/code.py Implements assembly truncation.
src/gh/components/DF_tcp_listener/metadata.json Defines TCP listener component.
src/gh/components/DF_tcp_listener/code.py Implements TCP point-cloud ingestion.
src/gh/components/DF_pose_estimation/metadata.json Defines pose-estimation component.
src/gh/components/DF_pose_estimation/code.py Implements pose estimation and history.
src/gh/components/DF_pose_comparison/metadata.json Defines pose-comparison component.
src/gh/components/DF_pose_comparison/code.py Computes CAD-to-measured pose errors.
src/gh/components/DF_http_listener/metadata.json Defines HTTP PLY listener.
src/gh/components/DF_http_listener/code.py Downloads and imports remote PLY data.
src/gh/components/DF_csv_exporter/code.py Exports pose results to CSV.
src/gh/components/DF_cloud_union/metadata.json Defines cloud-union component.
src/gh/components/DF_cloud_union/code.py Merges point clouds.
src/gh/components/DF_cloud_split/metadata.json Defines cloud-splitting component.
src/gh/components/DF_cloud_split/code.py Splits clouds by boundary volume.
src/gh/components/DF_cloud_intersection/metadata.json Defines cloud-intersection component.
src/gh/components/DF_cloud_intersection/code.py Implements distance-based intersection.
src/gh/components/DF_cloud_difference/metadata.json Defines cloud-difference component.
src/gh/components/DF_cloud_difference/code.py Implements distance-based subtraction.
src/gh/components/DF_CAD_segmentator/metadata.json Expands segmentation inputs and outputs.
src/gh/components/DF_CAD_segmentator/code.py Adds ICP-assisted face segmentation.
src/gh/components/DF_build_assembly/metadata.json Adds curved-joint configuration.
src/gh/components/DF_build_assembly/code.py Applies curved-joint assembly construction.
src/diffCheckBindings.cc Exposes new cloud and segmentation APIs.
src/diffCheckApp.cc Contains whitespace-only adjustment.
src/diffCheck/segmentation/DFSegmentation.hh Extends segmentation interfaces.
src/diffCheck/segmentation/DFSegmentation.cc Revises cluster association logic.
src/diffCheck/IOManager.hh Declares additional test-data path.
src/diffCheck/IOManager.cc Implements additional test-data path.
src/diffCheck/geometry/DFPointCloud.hh Declares new cloud operations.
src/diffCheck/geometry/DFPointCloud.cc Implements fitting, cropping, and set operations.
src/diffCheck/geometry/DFMesh.cc Revises point-on-face calculations.
src/diffCheck.hh Adds Eigen and cilantro includes.
README.md Updates roadmap and workflow diagram.
pyproject.toml Adds Grasshopper import handling.
CMakeLists.txt Adds MSVC compatibility definitions.
cmake/external_tools.cmake Moves DLL discovery to build time.
cmake/copy_dlls_script.cmake Adds build-time DLL copy script.
.pre-commit-config.yaml Updates mypy and dependencies.
.gitmodules Redirects Eigen to the project mirror.
Review details
  • Files reviewed: 58/70 changed files
  • Comments generated: 20
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/diffCheck/segmentation/DFSegmentation.cc
Comment thread src/gh/components/DF_http_listener/code.py Outdated
Comment thread src/gh/components/DF_pose_estimation/code.py Outdated
Comment thread src/gh/components/DF_websocket_listener/code.py
Comment on lines +146 to +149
if ((u >= -epsilon) && (v >= -epsilon) && (u + v <= 1 + epsilon))
{
// Check if the point is close enough to the face
double maxProjectionDistance = associationThreshold * std::min({(v1 - v0).norm(), (v2 - v1).norm(), (v0 - v2).norm()}) ;
if ((projectedPoint - point).norm() < maxProjectionDistance)
if ((projectedPoint - point).squaredNorm() < associationThreshold * associationThreshold)
Comment thread src/gh/diffCheck/diffCheck/df_geometries.py
Comment on lines +539 to +543
df_faces = [face for face in self.faces]
sorted_df_faces = sorted(df_faces, key=lambda face: Rhino.Geometry.AreaMassProperties.Compute(face._rh_brepface).Area if face._rh_brepface else 0, reverse=True)
largest_side_face_normal = sorted_df_faces[0].normal
rh_largest_side_face_normal = rg.Vector3d(largest_side_face_normal[0], largest_side_face_normal[1], largest_side_face_normal[2])

Comment thread src/gh/diffCheck/diffCheck/df_poses.py
Comment thread src/gh/diffCheck/diffCheck/df_util.py
Comment thread src/gh/diffCheck/setup.py Outdated
DamienGilliard and others added 17 commits September 11, 2026 11:51
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…n scope)

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@DamienGilliard
DamienGilliard marked this pull request as ready for review September 11, 2026 11:41
@DamienGilliard
DamienGilliard merged commit dd72b2d into main Sep 11, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants