fix: KF_EDIT loeste den Block auf - Blocknummer jetzt ueber die Blocktabelle

KF_EDIT loescht beim Neuaufbau den alten Foerderer. kf-naechste-nummer zaehlte
nur die Referenzen im Modell und vergab dadurch dieselbe Nummer erneut, obwohl
die Block-Definition KF_<n> weiter in der Blocktabelle steht. _.-BLOCK traf auf
den vorhandenen Namen, die "Neu definieren?"-Abfrage verschluckte die
Folge-Eingaben, der Block entstand nicht und die Einzelteile blieben lose im
Modell liegen. GF_n und VF_n pruefen aus demselben Grund die Blocktabelle.

- kf-freie-nummer ueberspringt jede Nummer mit vorhandener Block-Definition
- kf-nummer-aus-name liest nur rein numerische Namen (KF_2D, KF_UM_26 und
  KF_LAENGE tragen dasselbe Praefix, atoi("2D") waere 2)
- KF_EDIT nutzt zuerst die vorgewaehlte Auswahl (Doppelklick), entsel nur als
  Rueckfall, und akzeptiert nur echte KF_<n>
- Unit-Tests fuer Namens-Parser und Nummernvergabe
- KF_2D.dwg: ueberarbeitete Draufsicht

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 12:17:06 +01:00
parent 989ee398ce
commit 61372e9104
4 changed files with 80 additions and 9 deletions
+29
View File
@@ -2863,6 +2863,35 @@
(tu-nil "kf-antriebsart/kein-komma"
(vl-string-search "," (kf-antriebsart '(("titel" . "x")))))
;; --- kf-nummer-aus-name: nur rein numerische Namen zaehlen ---
;; Die Bausteine heissen ebenfalls KF_...; atoi("2D") waere 2 und wuerde
;; die Nummernvergabe verschieben, sobald lose Teile in der Zeichnung liegen.
(tu-eq "kf-nummer/KF_1" 1 (kf-nummer-aus-name "KF_1"))
(tu-eq "kf-nummer/KF_12" 12 (kf-nummer-aus-name "KF_12"))
(tu-eq "kf-nummer/klein" 7 (kf-nummer-aus-name "kf_7"))
(tu-nil "kf-nummer/KF_2D" (kf-nummer-aus-name "KF_2D"))
(tu-nil "kf-nummer/KF_UM_26" (kf-nummer-aus-name "KF_UM_26"))
(tu-nil "kf-nummer/KF_LAENGE" (kf-nummer-aus-name "KF_LAENGE"))
(tu-nil "kf-nummer/nur-Praefix" (kf-nummer-aus-name "KF_"))
(tu-nil "kf-nummer/fremdes-Praefix" (kf-nummer-aus-name "GR_5"))
;; --- kf-freie-nummer: Nummern mit vorhandener Block-DEFINITION ueberspringen ---
;; Regression "Block aufgeloest": KF_EDIT loescht den alten KF_1, die
;; Referenzen im Modell sind weg (Start = 1), die Definition KF_1 lebt aber
;; weiter. Wurde 1 erneut vergeben, traf _.-BLOCK auf einen vorhandenen
;; Namen, die "Neu definieren?"-Abfrage verschluckte die Folge-Eingaben,
;; und die Einzelteile blieben lose im Modell liegen.
(tu-eq "kf-frei/nichts-belegt" 1
(kf-freie-nummer 1 '(lambda (n) nil)))
(tu-eq "kf-frei/Edit-Szenario" 2
(kf-freie-nummer 1 '(lambda (n) (member n '(1)))))
(tu-eq "kf-frei/mehrere-belegt" 4
(kf-freie-nummer 1 '(lambda (n) (member n '(1 2 3)))))
(tu-eq "kf-frei/Luecke-bleibt" 3
(kf-freie-nummer 1 '(lambda (n) (member n '(1 2 4)))))
(tu-eq "kf-frei/Start-mitten" 5
(kf-freie-nummer 3 '(lambda (n) (member n '(3 4)))))
;; --- kf-drehung-gesamt: Drehwinkel fuer KF_EDIT ---
;; Regression: der Drehwinkel wird beim Bau in die Geometrie eingerechnet,
;; die Blockreferenz selbst hat IMMER Drehung 0 (ssg-block-wrap-welt).