[FIX] Separator/Scanner erhalten ID sofort beim Insert (wie Kreisel/GF/VF)

ssg-id-generate wird bereits ueberall sonst direkt beim Einfuegen
aufgerufen (KreiselInsert.lsp, Gefaellestrecke.lsp, vf_core.lsp,
vf_linienzug.lsp, OmniModulInsert.lsp, TEFInsert.lsp). Separator/Scanner
waren die einzige Ausnahme: weder ils-insert-sensor (Produktion) noch
mubea:build-separator-one (Testharness) riefen es auf - ihre ID kam
bisher ausschliesslich aus dem einmaligen ssg-id-check-all-Durchlauf vor
dem Export. Das war vermutlich die Ursache fuer die beobachtete doppelte
ID (Kreisel und Separator teilten sich "0003").

- Lisp/SSG_LIB_Commands.lsp (ils-insert-sensor) und tests/test_mubea.lsp
  (mubea:build-separator-one) rufen jetzt ssg-id-generate direkt nach dem
  INSERT auf.
- ssg_id.lsp: ssg-id-set-and-verify prueft nach jedem ssg-attrib-set-on
  sofort zurueck und warnt laut, falls das Schreiben (z.B. mangels
  ID-ATTDEF an der Instanz) stillschweigend fehlschlaegt. Ausfuehrliches
  dbg-Logging (ssg-id-collect-blocks/-max/-generate/-check-all/-set-and-
  verify) fuer die weitere Diagnose.
- ssg-id-check-all bleibt als Sicherheitsnetz fuer Faelle, die kein
  Insert-Hook abfangen kann (Copy/Array/Spiegeln in BricsCAD, Drawing-
  Merges).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 11:47:14 +02:00
parent f6461aab0f
commit f2b72df6e0
3 changed files with 98 additions and 12 deletions
+12
View File
@@ -363,6 +363,14 @@
(command)
(princ (strcat "\n WARNUNG: INSERT von '" eff
"' nicht sauber beendet - abgebrochen."))))
;; Sofort beim Einfuegen eine eindeutige ID vergeben - wie bei allen
;; anderen Bau-Routinen (Kreisel/GF/VF, siehe deren ssg-id-generate-
;; Aufrufe). Separator/Scanner waren bisher die einzige Ausnahme und
;; bekamen ihre ID erst nachtraeglich durch ssg-id-check-all vor dem
;; Export - das ist der Fall, den ssg-id-check-all als Sicherheitsnetz
;; eigentlich nur fuer Kopier-/Array-/Spiegel-Faelle abfangen soll.
(if (atoms-family 1 '("ssg-id-generate"))
(ssg-id-generate (entlast)))
(mubea:ent-json tid "separator" (entlast)))
(progn
;; Kein Block gefunden -> sichtbaren Platzhalter zeichnen
@@ -444,6 +452,7 @@
;; ============================================================
(defun c:TEST_MUBEA ( / json-datei daten eintrag tid blk res r
results-list sep-idx anz-ok anz-fehler kind)
(dbgopen "mubea_id.dbg" "DXFM_LOG")
;; Benoetigte Feature-Module laden
(ssg-ensure "KreiselInsert")
@@ -470,12 +479,14 @@
(progn
(princ (strcat "\n[TEST_MUBEA] FEHLER: " json-datei " nicht gefunden!"))
(ssg-end)
(dbgclose)
(exit)))
(setq daten (ssg-load-json json-datei))
(if (null daten)
(progn
(princ "\n[TEST_MUBEA] FEHLER: Testdaten konnten nicht geladen werden.")
(ssg-end)
(dbgclose)
(exit)))
(princ "\n\n================================================================")
@@ -526,4 +537,5 @@
(ssg-end)
(princ "\n TEST_MUBEA abgeschlossen.")
(princ)
(dbgclose)
)