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.
|
;; 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 ---
|
;; --- DXF-Datei als Block einfuegen ---
|
||||||
;; sivasnr-str = SivasNr als String (Dateiname ohne .dxf)
|
;; sivasnr-str = SivasNr als String (Dateiname ohne .dxf)
|
||||||
;; hoehe = Hoehe in mm als String (wird als HOEHE-Attribut gesetzt)
|
;; hoehe = Hoehe in mm als String (wird als HOEHE-Attribut gesetzt)
|
||||||
@@ -963,15 +1013,10 @@
|
|||||||
nil
|
nil
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
(setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dxf"))
|
(setq dxf-pfad (omni:omniflo-datei-finden sivasnr-str omniflo-pfad))
|
||||||
;; Fallback: manche Elemente (z.B. Ladeschleifen) liegen nur als DWG vor
|
(if (not dxf-pfad)
|
||||||
(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))
|
|
||||||
(progn
|
(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
|
nil
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
@@ -1365,15 +1410,13 @@
|
|||||||
(setq new-drehung (rtos rotation 2 1))
|
(setq new-drehung (rtos rotation 2 1))
|
||||||
(setq sivasnr-str (omni:sivasid-to-str (omni:val new-eintrag "Sivasnr")))
|
(setq sivasnr-str (omni:sivasid-to-str (omni:val new-eintrag "Sivasnr")))
|
||||||
|
|
||||||
;; 6. DXF-Datei pruefen (Fallback DWG wie in omni:insert-dxf)
|
;; 6. DXF-Datei pruefen (gleiche Aufloesung inkl. 2D/3D-Fallback wie in
|
||||||
(setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dxf"))
|
;; omni:insert-dxf, siehe omni:omniflo-datei-finden)
|
||||||
(if (and (not (findfile dxf-pfad))
|
(setq dxf-pfad (omni:omniflo-datei-finden sivasnr-str (getenv "DXFM_OMNIFLO")))
|
||||||
(findfile (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg")))
|
(if (not dxf-pfad)
|
||||||
(setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg"))
|
|
||||||
)
|
|
||||||
(if (not (findfile dxf-pfad))
|
|
||||||
(progn
|
(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)
|
(ssg-end)
|
||||||
(exit)
|
(exit)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user