Für Omniflo Elemente eigene Funktion zur AUflösung des Pfades 2D3D oder 3D2D gebaut
This commit is contained in:
+59
-16
@@ -949,6 +949,56 @@
|
||||
;; Der Benutzer waehlt den Einfuegepunkt und Drehwinkel.
|
||||
;; ============================================================
|
||||
|
||||
;; --- Omniflo-Quelldatei fuer eine SivasNr aufloesen ---
|
||||
;; Sucht sivasnr-str.dxf, dann .dwg im aktuellen DXFM_OMNIFLO-Ordner
|
||||
;; (data/omniflo/<DXFM_DIM>/). Omniflo-Bloecke liegen - anders als die
|
||||
;; ILS-Bloecke in data/ils (Dimensionssuffix _2D/_3D im Dateinamen, flach in
|
||||
;; EINEM Ordner) - in GETRENNTEN Ordnern data/omniflo/2D/ und .../3D/ ohne
|
||||
;; Dimensionssuffix im Namen. Ist der 3D-Datensatz (noch) unvollstaendig
|
||||
;; (Stand 2026: nur BTMT-Beladung als 3D-DWG vorhanden), faellt diese
|
||||
;; Funktion auf den jeweils ANDEREN Dimensionsordner zurueck, statt mit
|
||||
;; "DXF nicht gefunden" abzubrechen - mit Warnmeldung, da das Ergebnis dann
|
||||
;; nicht die gewuenschte Dimension ist. Rueckgabe: Dateipfad oder nil.
|
||||
(defun omni:omniflo-datei-finden (sivasnr-str omniflo-pfad / dxf-pfad partner-pfad partner-dim basis pfad-norm)
|
||||
(setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dxf"))
|
||||
;; Fallback: manche Elemente (z.B. Ladeschleifen) liegen nur als DWG vor
|
||||
(if (and (not (findfile dxf-pfad))
|
||||
(findfile (strcat omniflo-pfad "/" sivasnr-str ".dwg")))
|
||||
(setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dwg"))
|
||||
)
|
||||
(if (findfile dxf-pfad)
|
||||
dxf-pfad
|
||||
(progn
|
||||
;; Fallback: anderer Dimensionsordner (2D<->3D), falls die gewuenschte
|
||||
;; Dimension fuer dieses Element (noch) nicht vorliegt. DXFM_OMNIFLO
|
||||
;; kommt aus setenv.bat mit Backslashes (%DXFMAKRO%\data\omniflo\%DIM%) -
|
||||
;; vor der Suche auf Forward-Slash normalisieren.
|
||||
(setq pfad-norm (vl-string-translate "\\" "/" omniflo-pfad))
|
||||
(setq partner-dim (cond ((vl-string-search "/3D" pfad-norm) "2D")
|
||||
((vl-string-search "/2D" pfad-norm) "3D")
|
||||
(t nil)))
|
||||
(if partner-dim
|
||||
(progn
|
||||
(setq basis (substr pfad-norm 1 (- (strlen pfad-norm) 2)))
|
||||
(setq partner-pfad (strcat basis partner-dim "/" sivasnr-str ".dxf"))
|
||||
(if (and (not (findfile partner-pfad))
|
||||
(findfile (strcat basis partner-dim "/" sivasnr-str ".dwg")))
|
||||
(setq partner-pfad (strcat basis partner-dim "/" sivasnr-str ".dwg"))
|
||||
)
|
||||
(if (findfile partner-pfad)
|
||||
(progn
|
||||
(princ (ssg-textf "omni-fallback-andere-dim" (list sivasnr-str partner-dim)))
|
||||
partner-pfad
|
||||
)
|
||||
nil
|
||||
)
|
||||
)
|
||||
nil
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; --- DXF-Datei als Block einfuegen ---
|
||||
;; sivasnr-str = SivasNr als String (Dateiname ohne .dxf)
|
||||
;; hoehe = Hoehe in mm als String (wird als HOEHE-Attribut gesetzt)
|
||||
@@ -963,15 +1013,10 @@
|
||||
nil
|
||||
)
|
||||
(progn
|
||||
(setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dxf"))
|
||||
;; Fallback: manche Elemente (z.B. Ladeschleifen) liegen nur als DWG vor
|
||||
(if (and (not (findfile dxf-pfad))
|
||||
(findfile (strcat omniflo-pfad "/" sivasnr-str ".dwg")))
|
||||
(setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dwg"))
|
||||
)
|
||||
(if (not (findfile dxf-pfad))
|
||||
(setq dxf-pfad (omni:omniflo-datei-finden sivasnr-str omniflo-pfad))
|
||||
(if (not dxf-pfad)
|
||||
(progn
|
||||
(princ (ssg-textf "omni-fehler-dxf-nicht-gefunden" (list dxf-pfad)))
|
||||
(princ (ssg-textf "omni-fehler-dxf-nicht-gefunden" (list (strcat omniflo-pfad "/" sivasnr-str ".dxf"))))
|
||||
nil
|
||||
)
|
||||
(progn
|
||||
@@ -1365,15 +1410,13 @@
|
||||
(setq new-drehung (rtos rotation 2 1))
|
||||
(setq sivasnr-str (omni:sivasid-to-str (omni:val new-eintrag "Sivasnr")))
|
||||
|
||||
;; 6. DXF-Datei pruefen (Fallback DWG wie in omni:insert-dxf)
|
||||
(setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dxf"))
|
||||
(if (and (not (findfile dxf-pfad))
|
||||
(findfile (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg")))
|
||||
(setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg"))
|
||||
)
|
||||
(if (not (findfile dxf-pfad))
|
||||
;; 6. DXF-Datei pruefen (gleiche Aufloesung inkl. 2D/3D-Fallback wie in
|
||||
;; omni:insert-dxf, siehe omni:omniflo-datei-finden)
|
||||
(setq dxf-pfad (omni:omniflo-datei-finden sivasnr-str (getenv "DXFM_OMNIFLO")))
|
||||
(if (not dxf-pfad)
|
||||
(progn
|
||||
(ssg-emsg (ssg-textf "omni-edit-dxf-nicht-gefunden" (list dxf-pfad)))
|
||||
(ssg-emsg (ssg-textf "omni-edit-dxf-nicht-gefunden"
|
||||
(list (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dxf"))))
|
||||
(ssg-end)
|
||||
(exit)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user