aktuellsten Stand eingepflegt. Probleme mit dem PYLOAD noch nicht bereinigt

This commit is contained in:
2026-06-03 09:16:49 +02:00
parent 604cdaf81f
commit b8842957fc
5 changed files with 63 additions and 46 deletions
+57 -38
View File
@@ -106,59 +106,78 @@
;; DBLCLKEDIT deaktivieren (Block-Editor nicht bei Doppelklick oeffnen) ;; DBLCLKEDIT deaktivieren (Block-Editor nicht bei Doppelklick oeffnen)
(setvar "DBLCLKEDIT" 0) (setvar "DBLCLKEDIT" 0)
;; PyRx BRX-Plugin laden (benoetigt fuer PYLOAD-Befehl) ;; PyRx BRX-Plugin: wird via BricsCAD Startup-Suite geladen (nicht via arxload).
;; Grund: PyRxV25.0.brx muss vor dem LISP-Startup aktiv sein.
;; Einmalige Einrichtung: APPLOAD -> PyRxV25.0.brx -> "Startup Suite" hinzufuegen.
;;
;; Pyrx-Pfad: aus PYTHONHOME (system Python), nicht aus .venv
(if menu-pfad (if menu-pfad
(progn (progn
(setq pyrx-pfad (strcat menu-pfad "/.venv/Lib/site-packages/pyrx"))
;; BricsCAD-Version aus ACADVER ermitteln (z.B. "25.0.0.0" -> "25")
(setq acadver-str (getvar "ACADVER")) (setq acadver-str (getvar "ACADVER"))
(setq ver-punkt (vl-string-search "." acadver-str)) (setq ver-punkt (vl-string-search "." acadver-str))
(setq ver-major (if ver-punkt (setq ver-major (if ver-punkt (substr acadver-str 1 ver-punkt) "25"))
(substr acadver-str 1 ver-punkt) ;; Pyrx-Pfad: .venv (primaer, dort installiert), dann System/User Python
"25" (setq pyrx-pfad
)) (cond
(setq brx-datei (strcat pyrx-pfad "/RxLoaderV" ver-major ".0.brx")) ((findfile (strcat menu-pfad "/.venv/Lib/site-packages/pyrx/RxLoaderV" ver-major ".0.brx"))
(if (findfile brx-datei) (strcat menu-pfad "/.venv/Lib/site-packages/pyrx"))
(progn ((and (getenv "PYTHONHOME")
(setq brx-result (vl-catch-all-apply 'arxload (list brx-datei))) (findfile (strcat (getenv "PYTHONHOME") "/Lib/site-packages/pyrx/RxLoaderV" ver-major ".0.brx")))
(ssg-dbg-pyrx pyrx-pfad ver-major brx-datei brx-result) (strcat (getenv "PYTHONHOME") "/Lib/site-packages/pyrx"))
(princ (strcat "\n[SSG_LIB] PyRx BRX geladen (V" ver-major "): " brx-datei)) ((and (getenv "APPDATA")
(findfile (strcat (getenv "APPDATA") "/Python/Python312/site-packages/pyrx/RxLoaderV" ver-major ".0.brx")))
(strcat (getenv "APPDATA") "/Python/Python312/site-packages/pyrx"))
(t nil)
) )
(progn )
(princ (strcat "\n[SSG_LIB] FEHLER: PyRx BRX nicht gefunden: " brx-datei)) ;; Wenn PyRx noch nicht aktiv (nicht via Startup Suite geladen): arxload versuchen
(princ "\n[SSG_LIB] Versuche Fallback-Versionen...") (if (not (member (strcat "rxloaderv" ver-major ".0.brx") (arx)))
(foreach ver '("26" "25" "24") (if pyrx-pfad
(if (not (= ver ver-major)) (progn
(setq brx-datei (strcat pyrx-pfad "/RxLoaderV" ver-major ".0.brx"))
(setq brx-result (vl-catch-all-apply 'arxload (list brx-datei)))
(ssg-dbg-pyrx pyrx-pfad ver-major brx-datei brx-result)
(if (vl-catch-all-error-p brx-result)
(progn (progn
(setq brx-fallback (strcat pyrx-pfad "/RxLoaderV" ver ".0.brx")) (princ (strcat "\n[SSG_LIB] FEHLER: RxLoaderV" ver-major ".0.brx nicht geladen: "
(if (findfile brx-fallback) (vl-catch-all-error-message brx-result)))
(progn (princ "\n[SSG_LIB] HINWEIS: PyRx einmalig via APPLOAD -> Startup Suite einrichten.")
(arxload brx-fallback)
(princ (strcat "\n[SSG_LIB] PyRx BRX Fallback geladen (V" ver "): " brx-fallback))
)
)
) )
(princ (strcat "\n[SSG_LIB] PyRx RxLoader geladen (V" ver-major "): " brx-datei))
) )
) )
(princ (strcat "\n[SSG_LIB] WARNUNG: PyRxV" ver-major ".0.brx nicht gefunden."
"\n PYTHONHOME=" (if (getenv "PYTHONHOME") (getenv "PYTHONHOME") "nicht gesetzt")))
)
(progn
(dbgmsg "[PyRx] PyRx bereits via Startup-Suite aktiv")
(princ (strcat "\n[SSG_LIB] PyRx (V" ver-major ") via Startup-Suite aktiv."))
) )
) )
) )
) )
;; Python-Module laden (PyRx) ;; Python-Module laden (PyRx) - nur wenn PYLOAD verfuegbar
(dbgmsg "[PYLOAD] --- Python-Module ---") (dbgmsg "[PYLOAD] --- Python-Module ---")
(if menu-pfad (if (not (member "PYLOAD" (atoms-family 0)))
(foreach pymod '("eckrad" "kreisel" "dblclick" "omniflo" "omniflo_boegen" "omniflo_weichen") (progn
(if (findfile (strcat menu-pfad "/lib/elemente/" pymod ".py")) (dbgmsg "[PYLOAD] PYLOAD nicht verfuegbar - ueberspringe alle Module")
(progn (princ "\n[SSG_LIB] WARNUNG: PYLOAD nicht verfuegbar (PyRx nicht geladen).")
(dbgmsg (strcat "PYLOAD start: " pymod ".py")) (princ "\n[SSG_LIB] Python-Befehle (KreiselInsert etc.) nicht aktiv.")
(command "PYLOAD" (strcat menu-pfad "/lib/elemente/" pymod ".py")) )
(dbgmsg (strcat "PYLOAD done: " pymod ".py")) (if menu-pfad
(princ (strcat "\n[SSG_LIB] Python-Modul " pymod ".py geladen.")) (foreach pymod '("eckrad" "kreisel" "dblclick" "omniflo" "omniflo_boegen" "omniflo_weichen")
) (if (findfile (strcat menu-pfad "/lib/elemente/" pymod ".py"))
(progn (progn
(dbgmsg (strcat "PYLOAD skip: " pymod ".py -- nicht gefunden")) (dbgmsg (strcat "PYLOAD start: " pymod ".py"))
(princ (strcat "\n[SSG_LIB] HINWEIS: " pymod ".py nicht gefunden.")) (command "PYLOAD" (strcat menu-pfad "/lib/elemente/" pymod ".py"))
(dbgmsg (strcat "PYLOAD done: " pymod ".py"))
(princ (strcat "\n[SSG_LIB] Python-Modul " pymod ".py geladen."))
)
(progn
(dbgmsg (strcat "PYLOAD skip: " pymod ".py -- nicht gefunden"))
(princ (strcat "\n[SSG_LIB] HINWEIS: " pymod ".py nicht gefunden."))
)
) )
) )
) )
+6 -1
View File
@@ -30,10 +30,14 @@ set BRISCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe"
REM Python-Umgebung fuer PyRx (BricsCAD benoetigt PYTHONHOME + python312.dll im PATH)
set "PYTHONHOME=C:\Python312"
set "PATH=C:\Python312;%PATH%"
REM Python-Pfad erweitern (nur wenn noch nicht vorhanden) REM Python-Pfad erweitern (nur wenn noch nicht vorhanden)
echo %PYTHONPATH% | find /i "%DXFM_LIB%" >nul echo %PYTHONPATH% | find /i "%DXFM_LIB%" >nul
if errorlevel 1 ( if errorlevel 1 (
set "PYTHONPATH=%DXFM_LIB%;%PYTHONPATH%" set "PYTHONPATH=%DXFM_LIB%;%DXFMAKRO%\.venv\Lib\site-packages;%PYTHONPATH%"
) )
REM Ordner erstellen falls sie nicht existieren REM Ordner erstellen falls sie nicht existieren
@@ -53,6 +57,7 @@ REM Umgebungsvariablen anzeigen
echo. echo.
echo ================================================================ echo ================================================================
echo DXFMAKRO = %DXFMAKRO% echo DXFMAKRO = %DXFMAKRO%
echo PYTHONHOME = %PYTHONHOME%
echo PYTHONPATH = %PYTHONPATH% echo PYTHONPATH = %PYTHONPATH%
echo ================================================================ echo ================================================================
echo. echo.
-1
View File
@@ -16,7 +16,6 @@ from elemente.utils import (
get_data_path, get_data_path,
load_json_data, load_json_data,
get_block_path, get_block_path,
read_block_attribs,
ensure_block_from_dxf, ensure_block_from_dxf,
) )
-2
View File
@@ -6,8 +6,6 @@
import wx import wx
import PyRx as Rx import PyRx as Rx
import PyDb as Db
import PyEd as Ed
from elemente.omniflo import ( from elemente.omniflo import (
load_weichen, load_weichen,
-4
View File
@@ -4,7 +4,3 @@
ezdxf==1.4.1 ezdxf==1.4.1
pytest==9.0.2 pytest==9.0.2
# PyRx - BricsCAD Python API (liefert .brx Plugin-Dateien und Python-Wrapper)
# WICHTIG: Benoetigt Python 3.12 (py -3.12 -m venv)
cad-pyrx >= 2.0.0
wxpython >= 4.2.0