2D/3D-Umschaltung pro GF/VF-Block (Dialog-Auswahl + Auto-Erkennung via XDATA) und Batch Alle auf 2D/3D
This commit is contained in:
@@ -17,12 +17,11 @@
|
||||
|
||||
;; --- ILS / Zusatzmodul: Sensoren (Scanner / Separator) einfuegen ---
|
||||
|
||||
;; Ermittelt den Pfad zu einer Sensor-Blockdatei. Die Sensor-Bloecke
|
||||
;; werden fest aus data/ils/3D geladen (unabhaengig von der
|
||||
;; 2D/3D-Umschaltung).
|
||||
(defun ils-sensor-pfad (fname / p)
|
||||
(setq p (strcat (getenv "DXFMAKRO") "\\data\\ils\\3D\\" fname ".dwg"))
|
||||
(if (findfile p) p nil)
|
||||
;; Ermittelt den Pfad zu einer Sensor-Blockdatei. Folgt der 2D/3D-Umschaltung
|
||||
;; (DXFM_DIM) mit automatischem 3D-Fallback - Scanner/Separator sind in 2D und
|
||||
;; 3D identisch, laden also in beiden Modi korrekt.
|
||||
(defun ils-sensor-pfad (fname)
|
||||
(ssg-ils-block-datei fname)
|
||||
)
|
||||
|
||||
;; Fuegt einen Sensor-Block wiederholt ein, bis der Benutzer mit
|
||||
@@ -31,7 +30,7 @@
|
||||
(setq pfad (ils-sensor-pfad fname))
|
||||
(if (null pfad)
|
||||
(princ (strcat "\n>>> FEHLER: Blockdatei '" fname ".dwg' nicht gefunden."
|
||||
" (in data/ils/3D pruefen)"))
|
||||
" (in data/ils/<DXFM_DIM> bzw. data/ils/3D pruefen)"))
|
||||
(progn
|
||||
(setq oldattreq (getvar "ATTREQ"))
|
||||
(setvar "ATTREQ" 0)
|
||||
@@ -187,6 +186,47 @@
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; 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)
|
||||
;; Feature-Module sicherstellen (Konverter-Funktionen + Bau-Logik)
|
||||
(if (car (atoms-family 1 '("SSG-ENSURE")))
|
||||
(progn (ssg-ensure "Gefaellestrecke") (ssg-ensure "VarioFoerderer")))
|
||||
(setq enames '() n-gf 0 n-vf 0 n-skip 0)
|
||||
(ssg-start "SSG_DIM_BATCH" '(("OSMODE") ("ATTREQ") ("ATTDIA")))
|
||||
(setvar "OSMODE" 0)
|
||||
;; Erst alle enames sammeln (entdel veraendert die Zeichnung waehrend der Iteration)
|
||||
(setq ss (ssget "X" '((0 . "INSERT") (2 . "GF_*,VF_*"))))
|
||||
(if ss
|
||||
(progn
|
||||
(setq i 0)
|
||||
(while (< i (sslength ss))
|
||||
(setq enames (cons (ssname ss i) enames))
|
||||
(setq i (1+ i)))
|
||||
(foreach ent enames
|
||||
(if (entget ent) ; noch vorhanden?
|
||||
(progn
|
||||
(setq bname (cdr (assoc 2 (entget ent))))
|
||||
(setq akt (cond ((ssg-dim-xdata-lesen ent)) ("3D")))
|
||||
(cond
|
||||
((equal akt ziel-dim) (setq n-skip (1+ n-skip))) ; schon Zieldim
|
||||
((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))))))))
|
||||
)
|
||||
)
|
||||
(ssg-end)
|
||||
(princ (ssg-textf "dim-batch-fertig"
|
||||
(list ziel-dim (itoa n-gf) (itoa n-vf) (itoa n-skip))))
|
||||
(princ)
|
||||
)
|
||||
|
||||
(defun c:SSG_DIM_ALL_2D ( / ) (ssg-dim-alle-umwandeln "2D"))
|
||||
(defun c:SSG_DIM_ALL_3D ( / ) (ssg-dim-alle-umwandeln "3D"))
|
||||
|
||||
;; ============================================================
|
||||
;; SSG_SPRACHE - Sprache umschalten (Deutsch/Englisch)
|
||||
;; Setzt *ssg-lang* live und persistiert ueber DXFM_LANG
|
||||
|
||||
Reference in New Issue
Block a user