[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:
@@ -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)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user