88fc00a5c0
Unter Windows 11 traf ein blankes "python" den WindowsApps-Platzhalter (kein echter Interpreter, Exitcode 49). Der Export schrieb die JSON, aber nie eine CSV - ohne jede Fehlermeldung, da "fire and forget" per startapp. - export:python-exe: Aufloesungsreihenfolge cfg/export.cfg [python] interpreter= -> DXFM_PYTHON -> Projekt-venv -> %SystemRoot%/py.exe -> "python"; WindowsApps-Platzhalter werden verworfen - export:run-python: synchroner Aufruf per WScript.Shell.Run, stdout/stderr nach DXFM_LOG/export_python.log, Exitcode-Auswertung - export:log-ausgeben: erste Logzeilen in die BricsCAD-Kommandozeile - setenv.bat setzt DXFM_PYTHON (venv oder py-Launcher) - cfg/export.cfg: neue Sektion [python] - lang/de_DE.json, lang/en_GB.json: neue Meldungstexte (exp-python-exe, exp-export-done, exp-python-error, exp-python-store-hint, exp-csv-missing, exp-python-call-failed) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
136 lines
5.2 KiB
Batchfile
136 lines
5.2 KiB
Batchfile
@echo off
|
|
|
|
REM ================================================================
|
|
REM TEST - Umgebungsvariablen Setup
|
|
REM ================================================================
|
|
|
|
echo Setting up environment variables for DXFMAKROS ...
|
|
|
|
REM Basis-Projektpfad (aktueller Ordner)
|
|
set "DXFMAKRO=%~dp0.."
|
|
if "%DXFMAKRO:~-6%"=="bin\.." set "DXFMAKRO=%DXFMAKRO:~0,-6%"
|
|
if "%DXFMAKRO:~-1%"=="\" set "DXFMAKRO=%DXFMAKRO:~0,-1%"
|
|
|
|
REM Pfade fuer verschiedene Komponenten
|
|
set "DXFM_BIN=%DXFMAKRO%\bin"
|
|
set "DXFM_LIB=%DXFMAKRO%\lib"
|
|
set "DXFM_DATA=%DXFMAKRO%\data"
|
|
set "DXFM_LANG=%DXFMAKRO%\lang"
|
|
set "DXFM_TESTS=%DXFMAKRO%\tests"
|
|
set "DXFM_TESTDATA=%DXFM_TESTS%\testdata"
|
|
set "DXFM_TESTOUT=%DXFM_TESTS%\output"
|
|
set "DXFM_TESTREF=%DXFM_TESTS%\reference"
|
|
set "DXFM_CFG=%DXFMAKRO%\cfg"
|
|
set "DXFM_LOG=%DXFMAKRO%\logs"
|
|
set "DXFM_LISP=%DXFMAKRO%\Lisp"
|
|
set "DXFM_DCL=%DXFMAKRO%\dcl"
|
|
set "DXFM_RESULTS=%DXFMAKRO%\results"
|
|
|
|
REM 2D/3D-Modus: Standard ist 3D (alle Module nutzen data\ils\3D\)
|
|
set "DXFM_DIM=3D"
|
|
|
|
REM Python-Interpreter fuer die Export-Skripte (EXPORTCSV/EXPORTSIVAS).
|
|
REM WICHTIG: BricsCAD erbt diese Umgebung, aktiviert aber kein venv. Ein blankes
|
|
REM "python" trifft unter Windows 11 den WindowsApps-Platzhalter (kein echter
|
|
REM Interpreter, bricht mit Exitcode 49 ab) - deshalb hier explizit setzen.
|
|
set "DXFM_PYTHON="
|
|
if exist "%DXFMAKRO%\.venv\Scripts\python.exe" (
|
|
set "DXFM_PYTHON=%DXFMAKRO%\.venv\Scripts\python.exe"
|
|
) else (
|
|
for /f "delims=" %%P in ('py -c "import sys;print(sys.executable)" 2^>nul') do (
|
|
if not defined DXFM_PYTHON set "DXFM_PYTHON=%%P"
|
|
)
|
|
)
|
|
if not defined DXFM_PYTHON (
|
|
echo HINWEIS: Kein Python gefunden - bin/install_py.bat ausfuehren, sonst
|
|
echo liefern EXPORTCSV/EXPORTSIVAS keine CSV-Datei.
|
|
)
|
|
|
|
set BRICSCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe"
|
|
|
|
if exist "C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" (
|
|
set "BRICSCAD=C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe"
|
|
) else if exist "C:\Program Files\Bricsys\BricsCAD V22 de_DE\bricscad.exe" (
|
|
set "BRICSCAD=C:\Program Files\Bricsys\BricsCAD V22 de_DE\bricscad.exe"
|
|
) else if exist "D:\Programme\BricsCAD\bricscad.exe" (
|
|
set "BRICSCAD=D:\Programme\BricsCAD\bricscad.exe"
|
|
) else (
|
|
echo Keine BricsCAD-Installation gefunden.
|
|
)
|
|
|
|
REM Diff-Tool fuer Referenzvergleich (run_tests.bat --diff_references) ermitteln
|
|
set "DXFM_DIFFTOOL="
|
|
for /f "delims=" %%D in ('where meld 2^>nul') do (
|
|
if not defined DXFM_DIFFTOOL set "DXFM_DIFFTOOL=%%D"
|
|
)
|
|
if not defined DXFM_DIFFTOOL (
|
|
if exist "C:\Program Files\Meld\Meld.exe" set "DXFM_DIFFTOOL=C:\Program Files\Meld\Meld.exe"
|
|
)
|
|
if not defined DXFM_DIFFTOOL (
|
|
echo HINWEIS: Kein Diff-Tool ^(meld^) gefunden - run_tests.bat --diff_references steht nicht zur Verfuegung.
|
|
)
|
|
|
|
REM Ueberladen von Umgebungsvariablen durch _setenv.bat (z.B. DXFM_DIM=3D)
|
|
if exist "%~dp0_setenv.bat" (
|
|
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
|
|
call "%~dp0_setenv.bat"
|
|
)
|
|
|
|
REM Kommandozeilenparameter hat hoechste Prioritaet
|
|
if /i "%1"=="3D" set "DXFM_DIM=3D"
|
|
if /i "%1"=="2D" set "DXFM_DIM=2D"
|
|
|
|
REM Abhaengige Pfade nach Override berechnen
|
|
REM ILS-Bloecke liegen seit dem Flach-Refactor direkt unter data\ils
|
|
REM (Dimension steckt im Dateinamen, z.B. AN8_2D.dwg) - kein <DIM>-Unterordner mehr.
|
|
set "DXFM_BLOCKS=%DXFMAKRO%\data\ils"
|
|
set "DXFM_OMNIFLO=%DXFMAKRO%\data\omniflo\%DXFM_DIM%"
|
|
|
|
|
|
REM Ordner erstellen falls sie nicht existieren
|
|
if not exist "%DXFM_BIN%" mkdir "%DXFM_BIN%"
|
|
if not exist "%DXFM_CFG%" mkdir "%DXFM_CFG%"
|
|
if not exist "%DXFM_LIB%" mkdir "%DXFM_LIB%"
|
|
if not exist "%DXFM_DATA%" mkdir "%DXFM_DATA%"
|
|
if not exist "%DXFM_LANG%" mkdir "%DXFM_LANG%"
|
|
if not exist "%DXFM_BLOCKS%" mkdir "%DXFM_BLOCKS%"
|
|
if not exist "%DXFM_OMNIFLO%" mkdir "%DXFM_OMNIFLO%"
|
|
if not exist "%DXFM_LISP%" mkdir "%DXFM_LISP%"
|
|
if not exist "%DXFM_LOG%" mkdir "%DXFM_LOG%"
|
|
if not exist "%DXFM_RESULTS%" mkdir "%DXFM_RESULTS%"
|
|
if not exist "%DXFM_TESTDATA%" mkdir "%DXFM_TESTDATA%"
|
|
if not exist "%DXFM_TESTOUT%" mkdir "%DXFM_TESTOUT%"
|
|
if not exist "%DXFM_TESTREF%" mkdir "%DXFM_TESTREF%"
|
|
|
|
REM Hinweis: setx (dauerhaft) wird hier nicht verwendet.
|
|
REM Variablen gelten nur fuer diesen Prozess und Kindprozesse (z.B. BricsCAD).
|
|
REM Falls dauerhafte Registry-Eintraege benoetigt werden: setenv.bat --persist aufrufen.
|
|
if /i "%1"=="--persist" (
|
|
echo Setze Umgebungsvariablen dauerhaft in der Registry ^(setx^)...
|
|
setx DXFMAKRO "%DXFMAKRO%" >nul
|
|
setx DXFM_LISP "%DXFM_LISP%" >nul
|
|
setx DXFM_DATA "%DXFM_DATA%" >nul
|
|
setx DXFM_LANG "%DXFM_LANG%" >nul
|
|
setx DXFM_DCL "%DXFM_DCL%" >nul
|
|
setx DXFM_CFG "%DXFM_CFG%" >nul
|
|
setx DXFM_LOG "%DXFM_LOG%" >nul
|
|
setx DXFM_DIM "%DXFM_DIM%" >nul
|
|
setx DXFM_BLOCKS "%DXFM_BLOCKS%" >nul
|
|
echo Dauerhaft gesetzt. Gilt fuer alle neuen Prozesse.
|
|
)
|
|
|
|
REM Umgebungsvariablen anzeigen
|
|
echo.
|
|
echo ================================================================
|
|
echo DXFMAKRO = %DXFMAKRO%
|
|
echo DXFM_DIM = %DXFM_DIM%
|
|
echo DXFM_BLOCKS = %DXFM_BLOCKS%
|
|
echo DXFM_OMNIFLO = %DXFM_OMNIFLO%
|
|
echo DXFM_DIFFTOOL = %DXFM_DIFFTOOL%
|
|
echo DXFM_PYTHON = %DXFM_PYTHON%
|
|
echo ================================================================
|
|
echo.
|
|
|
|
REM Optionally keep window open
|
|
if "%1"=="--keep-open" pause
|