[FEAT] VF-Linienzug: 2D/3D-Batch-Umschaltung implementiert

Bisher schaltete SSG_DIM_ALL_2D/3D die Linienzug-Foerderer nicht um
("gar nichts passiert"). Ursache: kein Dim-XDATA am VF_n-Block und
kein Konverter fuer die Marker "linienzug"/"linienzug2".

- Phase A: vfl-block-erstellen schreibt jetzt SSG_DIM-XDATA (deckt
  Modus 1/2/3 + Abbruch-Sicherung in einem Zug ab).
- Phase B: neuer nicht-interaktiver Konverter vfl-konvertiere-ent
  (stummer Journal-Replay mit *ssg-ils-dim*-Override, vl-catch-all
  abgesichert).
- Phase C: ssg-dim-alle-umwandeln dispatcht VF_-Bloecke nach Marker
  (Standard/Etage -> vf-konvertiere-ent, Linienzug -> vfl-konvertiere-ent,
  Altbestand -> skip); Fehlversuche zaehlen als skip.
- Phase D: Doppelklick-Edit (vfl-edit-ent/-ent2) baut dimensionstreu
  in der Bestandsblock-Dimension neu auf.

Phase 0 (VFL_KS_DIAG-Pruefung der 2D-KS) + Verifikation stehen noch aus
(nur in BricsCAD moeglich).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-30 09:00:34 +02:00
parent 64e8ebf6e1
commit 2147f817fc
2 changed files with 80 additions and 7 deletions
+14 -2
View File
@@ -307,7 +307,7 @@
;; SSG_DIM_ALL_2D / SSG_DIM_ALL_3D - alle GF/VF-Bloecke der Zeichnung
;; auf einmal in 2D bzw. 3D umwandeln (loeschen + neu aufbauen).
;; ============================================================
(defun ssg-dim-alle-umwandeln (ziel-dim / ss i enames ent bname akt n-gf n-vf n-skip)
(defun ssg-dim-alle-umwandeln (ziel-dim / ss i enames ent bname akt marker n-gf n-vf n-skip)
;; Feature-Module sicherstellen (Konverter-Funktionen + Bau-Logik)
(if (car (atoms-family 1 '("SSG-ENSURE")))
(progn (ssg-ensure "Gefaellestrecke") (ssg-ensure "VarioFoerderer")))
@@ -332,7 +332,19 @@
((wcmatch bname "GF_*")
(if (gf-konvertiere-ent ent ziel-dim) (setq n-gf (1+ n-gf))))
((wcmatch bname "VF_*")
(if (vf-konvertiere-ent ent ziel-dim) (setq n-vf (1+ n-vf))))))))
;; VF_-Bloecke nach Edit-Marker unterscheiden: Standard/Etage
;; ueber vf-konvertiere-ent, Linienzug (Modus 1/2) ueber den
;; Journal-Replay-Konverter vfl-konvertiere-ent. Altbestand ohne
;; bekannten Marker wird uebersprungen.
(setq marker (car (vfs-xdata-lesen ent)))
(cond
((member marker '("linienzug" "linienzug2"))
(if (vfl-konvertiere-ent ent ziel-dim) (setq n-vf (1+ n-vf))
(setq n-skip (1+ n-skip))))
((member marker '("standard" "etage"))
(if (vf-konvertiere-ent ent ziel-dim) (setq n-vf (1+ n-vf))
(setq n-skip (1+ n-skip))))
(t (setq n-skip (1+ n-skip)))))))))
)
)
(ssg-end)