Sat, 03/23/2024 - 19:35
It seems that in the 7.8.0 release the algorithms for IntUnifyFaces() and ReconstructMissedSeam() have received total overhaul and I ran in a possible bug. After extensive debugging I reached to a quick-patch solution which looks like fixes my test-cases. I've attached the modifed source-file with a diff-snapshot (I built from a .tar package using cmake+vs2019 and currently don't use git at all for OCCT, frankly this is the first time I build it from source):
However I don't have the time to figure out how to run through the test sets to verify if it breaks something else, or if my point is valid in general. I've done my best to understand the underlying algorithm, but I'm not that well versed in the OpenCASCADE code logic, so I share my findings for anyone out there who is willing to investigate deeper and has more insider knowledge of the framework.
Also attached are two .Brep files that return without any simplification when runing "unifysamedom [shapename]" in DRAW or hit the 'return' when NextEdge is NULL after all attempts to recover the seam (ref to commit eb2be8b below).
In OCCT 7.6.0 - "Case A" works, while "Case B" results in a twisted topology and invalid shape after unification.
P.S. Commit eb2be8b / (bug 0033421) on github is related to the original crashes I had in 7.7.0 before I went looking into the issue, and 195aac3 (bug 0033193) might be something simillar
Sun, 03/24/2024 - 11:25
Thank you for your research.
The issue will created and tested from our side.
Best regards, Dmitrii