Skip to content

Conversation

@DamienGilliard
Copy link
Collaborator

@DamienGilliard DamienGilliard commented Sep 20, 2024

This PR concerns the modifications to the joint segmentator needed to have metrics for each joint face

It modifies the DFJointSegmentator:

  • It outputs a list of lists of pointclouds, representing all the joints and the faces they contain. The structure is thus: [[face_1_joint_1, face_2_joint_1, ...], [face_1_joint_2, face_2_joint_2, ...], ..., [face_1_joint_n, face_2_joint_n...]]
  • The list of faces has been registred to the reference, so we can accurately evaluate the face individually. This reflects the case where the faces might be correctly cut, but the whole joint badly placed in the beam/piece. Therefore we re-align the faces to the reference joint before evaluating them individually. Obviously all the faces of a joint follow the same transformation.
  • The max correspondance distance parameter needed for the small ICP is exposed to the user, with a standard value of 5mm (assuming Rhino workspace is in meters)
    image

when flattening the list of lists:
image

It also modifies a bit the DFCADSegmentator, because it also uses the same c++ back-end that has been slightly modified and thus requires some tweeking but only on the surface.

@DamienGilliard DamienGilliard marked this pull request as draft September 20, 2024 19:36
@DamienGilliard DamienGilliard linked an issue Sep 20, 2024 that may be closed by this pull request
@DamienGilliard DamienGilliard self-assigned this Sep 20, 2024
@DamienGilliard
Copy link
Collaborator Author

DamienGilliard commented Sep 20, 2024

@eleniv3d , @9and3 , @mariklad This PR still needs the documentation (which I will do tomorrow, saturday, I promise), but the rest is working fine: we have the data to make a face-per-face analysis !
As always I shot myself in the foot for a few hours so it comes a bit late (it turns out deleting the .nuget folder at the same time as the .rhinocode one when you troubleshoot is a BAD idea, it cost me at least 2 hours )

I leave it as "Draft" until the documentation is done

@9and3
Copy link
Contributor

9and3 commented Sep 21, 2024

@eleniv3d , @9and3 , @mariklad This PR still needs the documentation (which I will do tomorrow, saturday, I promise), but the rest is working fine: we have the data to make a face-per-face analysis ! As always I shot myself in the foot for a few hours so it comes a bit late (it turns out deleting the .nuget folder at the same time as the .rhinocode one when you troubleshoot is a BAD idea, it cost me at least 2 hours )

I leave it as "Draft" until the documentation is done

Hello @DamienGilliard thank you a lot for this push! I'll take care of the documentation and few fixes no worries, many thanks again it looks already very nice! 👐

Copy link
Contributor

@9and3 9and3 left a comment

Choose a reason for hiding this comment

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

Made some tiny cleaning, I also believe that there are parts in the segmentation backend that could be refactored to improove the performance but this is for another day :)

the major point I modified is this one:

when flattening the list of lists:
image

I fixed this @DamienGilliard (and for later @eleniv3d ). Now faces export ghtrees by converting it to ghtree, it's acutally quite simple:

import ghpythonlib.treehelpers as th
gh_tree = th.list_to_tree(py_nlist)

Maybe @eleniv3d in the computational error component you will have to reconvert it and you might have some surprise to deal with the input types (since this can be now a ghtree and hot only ghlist). In any case I am merging this, thanks again @DamienGilliard !

@9and3 9and3 marked this pull request as ready for review September 21, 2024 07:37
@9and3 9and3 merged commit 6548095 into main Sep 21, 2024
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.

per-face metric when analysing the joints

3 participants