mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-13 10:57:49 +00:00
0a027d47a3
Duplicating a circular or filleted-arc void in the profile CAD editor (Shift+D on the loop's vertices) reused the same IFCCIRCLE/IFCARCINDEX vertex group index for the new geometry, since Blender's mesh duplicate copies vertex group weights but does not allocate a new group. On exit from Edit Mode, auto_detect_profiles tallied group membership across the whole mesh rather than per loop, so a group meant to hold exactly 2 (circle) or 3 (arc) vertices ended up with double that, failing its sanity check and blocking the edit with an "INVALID PROFILE" popup. Fixes #6944. Scope the sanity check to each connected edge loop instead, matching how the loops are actually converted into IfcCircle/arc segments below. Also explicitly reject an arc/circle vertex tagged onto an isolated vertex with no edges at all, which the old whole-mesh count also caught. Verified live in headless Blender against the issue's repro file (IfcFurniture "Slab.004", IfcArbitraryProfileDefWithVoids with three IfcCircle voids): entering the profile editor, duplicating one void's 2-vertex loop and moving it produced an "INVALID PROFILE" popup before this change, and now produces a valid profile (the original 3 voids intact, plus the duplicate as a 4th void or a separate solid profile depending on whether it still falls inside the outer boundary). test/tool/test_model.py passes unchanged (32 passed, 1 pre-existing unrelated failure present on both before and after). Generated with the assistance of an AI coding tool.