15185568ce
Rhinos Mirror/Copy/Array kopiert selektierte Objekte mit ihren UserString- Metadaten → Duplikat-IDs im Doc (z.B. zwei `wand_axis` mit gleicher `id=wall_xxx`). Resultat: unser System sieht beide als „dasselbe Element", fasst sie verkoppelt an, Pure-Transform wird konfus, Original wand_volume wandert mit weil bb-snapshot matched. Fix in `_on_command_end`, BEVOR Pure-Transform-Detection laeuft: 1. Snapshot speichert jetzt `obj_ids`-Set aller pre-Command Rhino-Object-Ids. 2. Pass A: alle neuen Sources (obj.Id nicht im Snapshot) deren UserString-id bereits in `sources_snap` existiert → identifiziert als Mirror/Copy- Duplikat, neue UUID generiert (gleicher Prefix wie bei Original-Erzeugung). 3. Pass B: alle neuen Volumes mit id = alter-renamed-Source → bekommen die neue ID + `oeff_parent` wird umgehaengt wenn ihre Eltern-Wand renamed. 4. Pass C: neue oeffnung_points kriegen `oeff_parent` auf renamed Wand umgehaengt. 5. Pass D: alle gesammelten Renames atomar via ModifyAttributes anwenden. Resultat: Mirror-Kopie ist nach CommandEnd ein vollstaendig eigenstaendiges Element mit eigenen IDs + intakter Parent-Cascade. Pure-Transform sieht saubere Snapshot-vs-aktuell-Bilanz (Originale=Identity, Kopien außerhalb des Snapshots → keine Action erforderlich, Rhino hat sie schon geometrisch korrekt platziert). Funktioniert generisch fuer Mirror, Copy, Array — alle dup-id-erzeugenden Operationen. Im Log: `[ELEMENTE] mirror/copy-Duplikate: N Objs neu-ID'd`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>