Etage: Batch-2D/3D-Umschaltung + Nachruest-Befehl fuer Bestandsbloecke
vf-konvertiere-ent waehlt die Einfuege-Funktion jetzt per XDATA-Typ aus der Registry (standard/etage) statt fest variofoerderer-einfuegen -> SSG_DIM_SWITCH schaltet auch Etage-Bloecke um. Neuer Befehl VARIOFOERDERER_NACHRUESTEN (Alias VF_NACHRUESTEN, + Menueeintrag): markiert bestehende, vor der Marker-Einfuehrung gebaute VF_n-Bloecke nachtraeglich mit SSG_VF_EDIT (Typ aus Attributen erkannt, Baurichtung hz abgefragt) - danach editier- und dim-umschaltbar. Schreibt nur XDATA, keine Geometrieaenderung. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+74
-9
@@ -1096,17 +1096,21 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; Nicht-interaktive Umwandlung EINES bestehenden Standard-VF-Blocks in die
|
||||
;; Zieldimension (fuer die Batch-Umschaltung "Alle auf 2D/3D"). Liest alle
|
||||
;; Parameter aus XDATA/Attributen (ohne Winkel-Dialog), erzwingt die Zieldim
|
||||
;; per Override und baut am selben Startpunkt neu auf. Rueckgabe: T/nil.
|
||||
(defun vf-konvertiere-ent (ent ziel-dim / ed bname xd attribs startpunkt hz
|
||||
;; Nicht-interaktive Umwandlung EINES bestehenden VF-Blocks (Standard ODER
|
||||
;; Etage) in die Zieldimension (fuer die Batch-Umschaltung "Alle auf 2D/3D").
|
||||
;; Liest alle Parameter aus XDATA/Attributen (ohne Winkel-Dialog), erzwingt die
|
||||
;; Zieldim per Override und baut am selben Startpunkt neu auf. Der Typ-Marker
|
||||
;; der XDATA ("standard"/"etage") waehlt die passende Einfuege-Funktion aus der
|
||||
;; Typ-Registry (beide haben dieselbe Signatur). Rueckgabe: T/nil.
|
||||
(defun vf-konvertiere-ent (ent ziel-dim / ed bname xd typ einfuege-fn attribs startpunkt hz
|
||||
deltaL deltaH richtung seite best-winkel L_GF_m-teile
|
||||
L_GF1 L_GF2 L_VF hoehe-von hoehe-bis lastEnt vf-insert vf-nummer
|
||||
geruest-einzelmodul geruest-typ motorseite)
|
||||
(setq ed (entget ent) bname (cdr (assoc 2 ed)))
|
||||
(setq xd (vfs-xdata-lesen ent))
|
||||
(if (and (wcmatch bname "VF_*") xd (= (car xd) "standard"))
|
||||
(setq typ (if xd (car xd)))
|
||||
(setq einfuege-fn (if typ (nth 2 (assoc typ *vf-typ-registry*))))
|
||||
(if (and (wcmatch bname "VF_*") (member typ '("standard" "etage")) einfuege-fn)
|
||||
(progn
|
||||
(setq attribs (ssg-attrib-read ent))
|
||||
(setq startpunkt (cdr (assoc 10 ed)))
|
||||
@@ -1132,14 +1136,15 @@
|
||||
(setq *vf-motorseite* motorseite)
|
||||
(entdel ent)
|
||||
(setq lastEnt (vf-lastent-ohne-attribute))
|
||||
(variofoerderer-einfuegen deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt seite hz)
|
||||
(apply einfuege-fn
|
||||
(list deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt seite hz))
|
||||
(setq vf-nummer (vf-next-number))
|
||||
(setq vf-insert
|
||||
(vf-block-erstellen "standard" seite vf-nummer 0
|
||||
(vf-block-erstellen typ seite vf-nummer 0
|
||||
hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2
|
||||
richtung best-winkel startpunkt lastEnt hz
|
||||
geruest-einzelmodul geruest-typ))
|
||||
(if vf-insert (vfs-xdata-schreiben vf-insert hz))
|
||||
(if vf-insert (vf-edit-xdata-schreiben vf-insert typ hz))
|
||||
(setq *ssg-ils-dim* nil)
|
||||
(setq *vf-motorseite* nil)
|
||||
(if vf-insert T nil))
|
||||
@@ -1259,6 +1264,66 @@
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; VARIOFOERDERER_NACHRUESTEN - Bestandsbloecke markieren
|
||||
;; ============================================================
|
||||
;; Versieht bestehende VF_n-Bloecke, die noch KEINEN SSG_VF_EDIT-Marker tragen
|
||||
;; (vor Einfuehrung der Dialog-/Edit-Unterstuetzung erzeugt), nachtraeglich mit
|
||||
;; dem Marker (Typ + Baurichtung hz). Danach sind sie per Doppelklick editierbar
|
||||
;; (c:VARIOFOERDERER_EDIT) und per SSG_DIM_SWITCH 2D/3D-umschaltbar
|
||||
;; (vf-konvertiere-ent).
|
||||
;;
|
||||
;; Es wird NUR die XDATA geschrieben - keine Geometrie veraendert. Der Typ wird
|
||||
;; aus den Attributen erkannt (Etage traegt GF_Bogen_R_60/L_60, sonst Standard).
|
||||
;; Die Baurichtung hz laesst sich NICHT aus den Attributen rekonstruieren und
|
||||
;; wird deshalb pro Block abgefragt (Default = zuletzt eingegebener Wert; bei
|
||||
;; Neuanlage 0). Wer hz nicht kennt: der Wert steht in der urspruenglichen
|
||||
;; Bau-Eingabe (z.B. mubea.json "hz") bzw. ergibt sich aus der Ausrichtung.
|
||||
;; Bereits markierte Bloecke und Nicht-VF-Bloecke werden uebersprungen.
|
||||
(defun c:VARIOFOERDERER_NACHRUESTEN ( / ss i ent ed bname attribs xd typ hz
|
||||
n-neu n-skip default-hz)
|
||||
(ssg-start "VARIOFOERDERER_NACHRUESTEN" nil)
|
||||
(princ "\n=== VF-Bestandsbloecke nachruesten (SSG_VF_EDIT-Marker) ===")
|
||||
(setq ss (ssget '((0 . "INSERT") (2 . "VF_*"))))
|
||||
(if (null ss)
|
||||
(progn
|
||||
(princ "\nKeine VF_n-Bloecke ausgewaehlt - abgebrochen.")
|
||||
(ssg-end)
|
||||
(exit)))
|
||||
(setq i 0 n-neu 0 n-skip 0 default-hz 0.0)
|
||||
(while (< i (sslength ss))
|
||||
(setq ent (ssname ss i))
|
||||
(setq ed (entget ent) bname (cdr (assoc 2 ed)))
|
||||
(setq xd (vfs-xdata-lesen ent))
|
||||
(cond
|
||||
;; Schon markiert (standard/etage) -> ueberspringen
|
||||
((and xd (member (car xd) '("standard" "etage")))
|
||||
(princ (strcat "\n " bname ": bereits markiert (" (car xd) ") - uebersprungen"))
|
||||
(setq n-skip (1+ n-skip)))
|
||||
(t
|
||||
(setq attribs (ssg-attrib-read ent))
|
||||
;; Typ-Erkennung: Etage traegt die Gefaellebogen-Zaehler GF_Bogen_R/L_60.
|
||||
(setq typ
|
||||
(if (or (assoc "GF_Bogen_R_60" attribs) (assoc "GF_Bogen_L_60" attribs))
|
||||
"etage" "standard"))
|
||||
(princ (strcat "\n " bname ": erkannt als Typ '" typ "'"))
|
||||
(setq hz (getreal (strcat "\n Baurichtung hz in Grad [" (rtos default-hz 2 1) "]: ")))
|
||||
(if (null hz) (setq hz default-hz))
|
||||
(setq default-hz hz)
|
||||
(vf-edit-xdata-schreiben ent typ hz)
|
||||
(princ (strcat " -> markiert (hz=" (rtos hz 2 1) ")"))
|
||||
(setq n-neu (1+ n-neu)))
|
||||
)
|
||||
(setq i (1+ i))
|
||||
)
|
||||
(princ (strcat "\n=== Fertig: " (itoa n-neu) " markiert, " (itoa n-skip) " uebersprungen ==="))
|
||||
(ssg-end)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; Kurz-Alias
|
||||
(defun c:VF_NACHRUESTEN () (c:VARIOFOERDERER_NACHRUESTEN))
|
||||
|
||||
;; ============================================================
|
||||
;; REGISTRIERUNG
|
||||
;; ============================================================
|
||||
|
||||
Reference in New Issue
Block a user