Brep.MergeCoplanarFaces() method almost always returns invalid Breps

Hello

We have migrated from Rhino 7.26 to Rhino 8.8.

We noticed that the Brep.MergeCoplanarFaces() method almost always returns invalid Breps (Brep.IsValid= false)

If the breps are invalid, we abort the processing, although we could not determine anything special with these breps.

The same works fine in Rhino7.

This is the code sample:

#! python 3

import Rhino
import scriptcontext
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from scriptcontext import doc


def RunCommand():
  object_enumerator_settings = ObjectEnumeratorSettings()
  object_enumerator_settings.IncludeLights = False
  object_enumerator_settings.IncludeGrips = False
  object_enumerator_settings.ObjectTypeFilter = Rhino.DocObjects.ObjectType.Brep;
  rhino_objects = doc.Objects.GetObjectList(object_enumerator_settings)

  currentObjectCount = 0
 
  for rhino_object in rhino_objects:
    currentObjectCount += 1
    brep = rhino_object.Geometry
    valid_before_merge = brep.IsValid
    faces_merged = brep.MergeCoplanarFaces(0.01, doc.ModelAngleToleranceRadians)
    valid_after_merge = brep.IsValid
    print("{0} {1} Brep valid_before_merge={2}, valid_after_merge={3}, faces_merged={4}".format(str(rhino_object.Id), str(currentObjectCount), str(valid_before_merge), str(valid_after_merge), str(faces_merged)))

  return Result.Success


if __name__ == "__main__":
  RunCommand()

The data:
rhino8_merge_coplanar_faces.zip (5.3 MB)

And the script output:

d2bb114d-95d0-4865-a0ae-b4f8a409bfb7 1 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
a37e94e1-2b44-432e-be6b-52c976eaf27f 2 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
8a2be563-b127-413b-9e58-9c2236952cd9 3 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
f355e509-1969-4dda-8e14-cb0c44984e87 4 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
c36d40ad-76b9-4110-bc72-8e2121a29f49 5 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=False
ec8b6a72-cd61-4292-aae3-8f7455bb73e7 6 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
9ea0ef9a-0964-4a34-a745-15c1a9851a9a 7 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=False
96763ee3-858d-4311-b078-064d5bfd22e4 8 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True
8df5ecd4-9c83-44c5-ba8d-40c78ccd72da 9 Brep valid_before_merge=True, valid_after_merge=False, faces_merged=True

Has anyone experienced the same?
Regards,
Thom

Hi @thomas.k,

I am able to repeat this, and I have logged the issue.

https://mcneel.myjetbrains.com/youtrack/issue/RH-83332

Thanks for reporting.

– Dale

1 Like

Thank you very much for your support @dale … as always, this went record-breaking fast :wink:

1 Like

Probaly the same issue:
Merge face component in Rh8 vs Rh7 below
MergeFacesInvalid.gh (685.9 KB)



@dale update coming out soon?

@KelvinC
Fixed in next update?

I opened MergeFacesInvalid.gh in 8.8 and the internal 8.12. I do see the fix in 8.12.

1 Like