missing section wieder daz

This commit is contained in:
2025-09-02 16:31:51 +02:00
20 changed files with 308 additions and 81 deletions
+48
View File
@@ -40,6 +40,54 @@
"easy_positions.json" "easy_positions.json"
] ]
}, },
{
"name": "getpositions with easyhoehe.dxf",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"--filename",
"easyhoehe.dxf",
"--sensors",
"--rack",
"--console",
"--write",
"easyhoehe_positions.json"
]
},
{
"name": "getpositions with easysps.dxf",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"--filename",
"easysps.dxf",
"--sensors",
"--rack",
"--console",
"--write",
"easysps_positions.json"
]
},
{
"name": "getpositions with easy_hdiff_nb.dxf",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"--filename",
"easy_hdiff_nb.dxf",
"--sensors",
"--rack",
"--console",
"--write",
"easy_hdiff_nb_positions.json"
]
},
{ {
"name": "getpositions with ST500592_Omniflo.dxf", "name": "getpositions with ST500592_Omniflo.dxf",
"type": "debugpy", "type": "debugpy",
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"python.languageServer": "Pylance", "python.languageServer": "None",
"cSpell.words": [ "cSpell.words": [
"DXFATTRIBS", "DXFATTRIBS",
"ezdxf" "ezdxf"
-33
View File
@@ -1,33 +0,0 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
pushd %~dp0\..
set PROJECT=c:\Kabellaengen
set PROJECT_BIN=%PROJECT%\bin
set PROJECT_CFG=%PROJECT%\cfg
set PROJECT_DOC=%PROJECT%\doc
set PROJECT_LIB=%PROJECT%\lib
set PROJECT_DATA=%PROJECT%\data
set PROJECT_WORK=%PROJECT%\work
set PROJECT_TEST=%PROJECT%\testdata
set SIVAS_TEILESTAMM=\\195.243.223.3\sivas\jit\programme\KSbExcelExportSivasTeilestamm.exe
set SIVAS_EXCEL_EXPORT_DIR=%PROJECT_DATA%
if not exist %PROJECT%\work mkdir %PROJECT%\work
if not exist %PROJECT%\data mkdir %PROJECT%\data
set PROJECT_IO_RESULTS=Z:\Automatisierung\Konvertierungstools\4_io-Konvertierer
set PROJECT_BOM_RESULTS="Z:\Automatisierung\Konvertierungstools\3_Kabellängen-Konvertierer"
set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool"
set PATH=%PROJECT_BIN%;%PATH%
set NETWORK_INTERPRETER_PATH=U:\Programmierumgebung\Python312
popd
goto :eof
-29
View File
@@ -1,29 +0,0 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
pushd %~dp0\..
set PROJECT=C:\10-Develop\gitrepos\kabellaengen
set PROJECT_BIN=%PROJECT%\bin
set PROJECT_CFG=%PROJECT%\cfg
set PROJECT_DOC=%PROJECT%\doc
set PROJECT_LIB=%PROJECT%\lib
set PROJECT_DATA=%PROJECT%\data
set PROJECT_WORK=%PROJECT%\work
set PROJECT_TEST=%PROJECT%\testdata
set SIVAS_TEILESTAMM=\\195.243.223.3\sivas\jit\programme\KSbExcelExportSivasTeilestamm.exe
set SIVAS_EXCEL_EXPORT_DIR=%PROJECT_DATA%
if not exist %PROJECT%\work mkdir %PROJECT%\work
if not exist %PROJECT%\data mkdir %PROJECT%\data
set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool"
set PATH=%PROJECT_BIN%;%PATH%
popd
goto :eof
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
source manage_interpreter.sh activate_interpreter
python "$PROJECT_LIB/drawdxf.py" "$@"
source manage_interpreter.sh deactivate_interpreter
+5 -4
View File
@@ -6,6 +6,7 @@ for %%i in ("%~1") do (
set "EXT=%%~xi" set "EXT=%%~xi"
set "DIR=%%~dpi" set "DIR=%%~dpi"
) )
call C:\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME% REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT% REM echo Erweiterung: %EXT%
@@ -19,12 +20,12 @@ set ERROR_DOUBLE=%FILENAME%_errors.json
set EXCEL_RES=%FILENAME%_cables.xlsx set EXCEL_RES=%FILENAME%_cables.xlsx
set DXF_RES=%FILENAME%_cables.dxf set DXF_RES=%FILENAME%_cables.dxf
echo on if exist "%~dp0_setenv.bat" (
call C:\kabellaengen\bin\setenv.bat echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
if exist "_setenv_local.bat" ( call "%~dp0_setenv.bat"
call _setenv_local.bat
) )
echo on
echo. echo.
echo === Fetching Positions === echo === Fetching Positions ===
call getpositions.bat --filename %1 -s -r -w %JSON_POS% -e %ERROR_DOUBLE% call getpositions.bat --filename %1 -s -r -w %JSON_POS% -e %ERROR_DOUBLE%
+68
View File
@@ -0,0 +1,68 @@
#!/bin/bash
usage() {
echo "Usage: $0 <dxfinWorkOrdner.dxf>"
exit 1
}
if [ $# -eq 0 ]; then
usage
fi
INPUT_FILE="$1"
FILENAME=$(basename "$INPUT_FILE" .dxf)
DIR=$(dirname "$INPUT_FILE")
# Namen der Zwischenergebnis Dateien
JSON_POS="${FILENAME}_positionsdraw.json"
JSON_TODRAW="${FILENAME}_todraw.json"
# Namen der Ergebnisdateien
ERROR_DOUBLE="${FILENAME}_errors.json"
EXCEL_RES="${FILENAME}_cables.xlsx"
DXF_RES="${FILENAME}_cables.dxf"
source $HOME/dxf-calculator/kabellaengen/bin/setenv.sh
echo
echo "=== Fetching Positions ==="
./getpositions.sh --filename "$1" -s -r -w "$JSON_POS" -e "$ERROR_DOUBLE"
if [ -f "$PROJECT_WORK/$ERROR_DOUBLE" ]; then
echo "-failed- duplicate IDs in given layout"
read -p "Press any key to continue..."
mv "$PROJECT_WORK/$ERROR_DOUBLE" "$PROJECT_BOM_RESULTS"
exit 1
fi
if [ ! -f "$PROJECT_WORK/$JSON_POS" ]; then
echo "-failed- getpositions"
read -p "Press any key to continue..."
exit 1
fi
echo
echo "=== Creating Graph for Routing ==="
./routing.sh --filename "$JSON_POS" -w "$JSON_TODRAW"
if [ ! -f "$PROJECT_WORK/$JSON_TODRAW" ]; then
echo "-failed- routing"
read -p "Press any key to continue..."
exit 1
fi
echo
echo "=== Writing Output Files ==="
./draw_dxf.sh --filename "$JSON_TODRAW" --new "$DXF_RES" -x "$EXCEL_RES"
if [ ! -f "$PROJECT_WORK/$EXCEL_RES" ]; then
echo "-failed- draw_dxf"
read -p "Press any key to continue..."
exit 1
fi
echo
mkdir -p "$PROJECT_BOM_RESULTS/$FILENAME"
mv "$PROJECT_WORK/${FILENAME}_"* "$PROJECT_BOM_RESULTS/$FILENAME"
read -p "Press any key to continue..."
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# getpositions.sh
#!/bin/bash
source manage_interpreter.sh activate_interpreter
python "$PROJECT_LIB/getpositions.py" "$@"
source manage_interpreter.sh deactivate_interpreter
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
source setenv.sh
if [ ! -d "$PROJECT/.venv" ]; then
echo "Initialisiere Python virtual environment..."
python3 -m venv "$PROJECT/.venv" --upgrade-deps
echo "Erfolgreich."
source "$PROJECT/.venv/bin/activate"
echo "Installiere erforderliche Python Packages..."
pip install -r "$PROJECT_LIB/requirements.txt" -q
echo "Erfolgreich"
deactivate
else
echo "Erforderliche Python Packages bereits installiert!"
fi
+7 -2
View File
@@ -6,6 +6,7 @@ for %%i in ("%~1") do (
set "EXT=%%~xi" set "EXT=%%~xi"
set "DIR=%%~dpi" set "DIR=%%~dpi"
) )
call C:\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME% REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT% REM echo Erweiterung: %EXT%
@@ -18,8 +19,11 @@ REM Namen der Ergebnisdateien
set ERROR_DOUBLE=%FILENAME%_errors.json set ERROR_DOUBLE=%FILENAME%_errors.json
set RESULT_TIA=%FILENAME%-*_TIA.xlsx set RESULT_TIA=%FILENAME%-*_TIA.xlsx
if exist "%~dp0_setenv.bat" (
call C:\kabellaengen\bin\setenv.bat echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
echo. echo.
@@ -44,6 +48,7 @@ if not exist "%PROJECT_WORK%\%RESULT_TIA%" (
goto :eof goto :eof
) )
mkdir %PROJECT_IO_RESULTS%\%FILENAME% mkdir %PROJECT_IO_RESULTS%\%FILENAME%
echo move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME% move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
pause pause
goto :eof goto :eof
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
usage() {
echo "Usage: $0 <dxfinWorkOrdner.dxf>"
exit 1
}
if [ $# -eq 0 ]; then
usage
fi
INPUT_FILE="$1"
FILENAME=$(basename "$INPUT_FILE" .dxf)
DIR=$(dirname "$INPUT_FILE")
source $HOME/dxf-calculator/kabellaengen/bin/setenv.sh
# Namen der Zwischenergebnis Dateien
JSON_POS="${FILENAME}_positionsconv.json"
JSON_TODRAW="${FILENAME}_todraw.json"
# Namen der Ergebnisdateien
ERROR_DOUBLE="${FILENAME}_errors.json"
RESULT_TIA="${FILENAME}-*_TIA.xlsx"
echo
echo "=== Fetching Positions ==="
./getpositions.sh --filename "$1" -s -r -w "$JSON_POS" -e "$ERROR_DOUBLE"
if [ -f "$PROJECT_WORK/$ERROR_DOUBLE" ]; then
echo "== failed: duplicate IDs in given layout"
read -p "Press any key to continue..."
mv "$PROJECT_WORK/$ERROR_DOUBLE" "$PROJECT_IO_RESULTS"
exit 1
fi
if [ ! -f "$PROJECT_WORK/$JSON_POS" ]; then
echo "== failed: getpositions"
read -p "Press any key to continue..."
exit 1
fi
echo "=== Creating Excel Files for TIA, WSCAD, .. ==="
./portalexport.sh --filename "$JSON_POS" --outname "$FILENAME"
if [ ! -f "$PROJECT_WORK/$RESULT_TIA" ]; then
echo "== failed: creating .xlsx files"
read -p "Press any key to continue..."
exit 1
fi
mkdir -p "$PROJECT_IO_RESULTS/$FILENAME"
echo "move $PROJECT_WORK/${FILENAME}-* $PROJECT_IO_RESULTS/$FILENAME"
mv "$PROJECT_WORK/${FILENAME}"-* "$PROJECT_IO_RESULTS/$FILENAME"
read -p "Press any key to continue..."
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
activate_interpreter() {
if [ -f "$PROJECT/.venv/bin/activate" ]; then
source "$PROJECT/.venv/bin/activate"
else
echo "Virtual environment not found. Run install_py.sh first."
exit 1
fi
}
deactivate_interpreter() {
if [ -n "$VIRTUAL_ENV" ]; then
deactivate
fi
}
# Call function based on argument
case "$1" in
activate_interpreter)
activate_interpreter
;;
deactivate_interpreter)
deactivate_interpreter
;;
*)
echo "Usage: $0 {activate_interpreter|deactivate_interpreter}"
exit 1
;;
esac
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
source manage_interpreter.sh activate_interpreter
python "$PROJECT_LIB/portalexport.py" "$@"
source manage_interpreter.sh deactivate_interpreter
Executable
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
source manage_interpreter.sh activate_interpreter
python "$PROJECT_LIB/routing.py" "$@"
source manage_interpreter.sh deactivate_interpreter
+8 -4
View File
@@ -1,6 +1,8 @@
@echo off @echo off
REM falls Umlaute in den Pfaden sind:
chcp 65001 > nul
set PROJECT=c:\Kabellaengen set PROJECT=c:\kabellaengen
set PROJECT_BIN=%PROJECT%\bin set PROJECT_BIN=%PROJECT%\bin
set PROJECT_CFG=%PROJECT%\cfg set PROJECT_CFG=%PROJECT%\cfg
set PROJECT_DOC=%PROJECT%\doc set PROJECT_DOC=%PROJECT%\doc
@@ -19,11 +21,13 @@ set PROJECT_IO_RESULTS=Z:\Automatisierung\Konvertierungstools\4_io-Konvertierer
set PROJECT_BOM_RESULTS=Z:\Automatisierung\Konvertierungstools\3_Kabellaengen-Konvertierer set PROJECT_BOM_RESULTS=Z:\Automatisierung\Konvertierungstools\3_Kabellaengen-Konvertierer
set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool" set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool"
if exist "%~dp0_setenv.bat" (
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
set PATH=%PROJECT_BIN%;%PATH% set PATH=%PROJECT_BIN%;%PATH%
popd popd
goto :eof goto :eof
Executable
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash
export PROJECT=$HOME/dxf-calculator/kabellaengen
export PROJECT_BIN="$PROJECT/bin"
export PROJECT_CFG="$PROJECT/cfg"
export PROJECT_DOC="$PROJECT/doc"
export PROJECT_LIB="$PROJECT/lib"
export PROJECT_DATA="$PROJECT/data"
export PROJECT_WORK="$PROJECT/work"
export PROJECT_TEST="$PROJECT/testdata"
# Linux executable instead of Windows .exe
export SIVAS_TEILESTAMM="/usr/local/bin/KSbExcelExportSivasTeilestamm"
export SIVAS_EXCEL_EXPORT_DIR="$PROJECT_DATA"
# Create directories if they don't exist
mkdir -p "$PROJECT/work"
mkdir -p "$PROJECT/data"
# Samba shares (adjust mount points as needed)
export PROJECT_IO_RESULTS=$PROJECT_WORK
export PROJECT_BOM_RESULTS=$PROJECT_WORK
export INSTALL_DIR="$HOME/kabeltool"
# Add project bin to PATH
export PATH="$PROJECT_BIN:$PATH"
+1
View File
@@ -37,6 +37,7 @@ UNTERVERTEILER
# Layernames of Tunnels # Layernames of Tunnels
[GetPos-Layer_Tunnel] [GetPos-Layer_Tunnel]
Busverteiler-Kennzeichnung Busverteiler-Kennzeichnung
0-0_Tunnel
# Layernamen des Equipments (Sensoren, Motoren, etc.) # Layernamen des Equipments (Sensoren, Motoren, etc.)
+2
View File
@@ -83,3 +83,5 @@
200000375 = Halter mit Sensor für Abfrage VARIO Finger 200000375 = Halter mit Sensor für Abfrage VARIO Finger
720000007 = Sensor induk. M8x1, NO/ST-M12x1 4.pol, L=66 mm 720000007 = Sensor induk. M8x1, NO/ST-M12x1 4.pol, L=66 mm
829434306 = INKREMENTALGEBER 800 5V KPL. 829434306 = INKREMENTALGEBER 800 5V KPL.
[Missing]
+17 -3
View File
@@ -621,10 +621,11 @@ def check_file_in_work(work_dir: Path, filename: Path) -> tuple[Path, bool]:
mypath = filename mypath = filename
return mypath, fexists return mypath, fexists
def check_existance(res_mappings: dict, res_dist: dict, res_pos: dict) -> dict: def check_existance(res_mappings: dict, res_dist: dict, res_pos: dict, res_tunnel: dict) -> dict:
ret = dict() ret = dict()
ret["missing_distributors"] = list() ret["missing_distributors"] = list()
ret["missing_sensors"] = list() ret["missing_sensors"] = list()
ret["missing_tunnel"] = list()
for dname in res_mappings.keys(): for dname in res_mappings.keys():
if dname not in res_dist: if dname not in res_dist:
ret["missing_distributors"].append(dname) ret["missing_distributors"].append(dname)
@@ -632,7 +633,13 @@ def check_existance(res_mappings: dict, res_dist: dict, res_pos: dict) -> dict:
for s in lofsensors: for s in lofsensors:
if s not in res_pos: if s not in res_pos:
ret['missing_sensors'].append(s) ret['missing_sensors'].append(s)
for tname in res_tunnel.keys():
if len(res_tunnel[tname]) < 2 :
ret["missing_tunnel"].append(tname)
if len(res_tunnel[tname]) > 2 :
if "overdefined_tunnel" not in ret:
ret["overdefined_tunnel"] = list()
ret["overdefined_tunnel"].append(tname)
return ret return ret
def dxf_is_binary(dxf_path: Path) -> bool: def dxf_is_binary(dxf_path: Path) -> bool:
@@ -810,11 +817,18 @@ if __name__ == '__main__':
if args.write: if args.write:
basename = os.path.splitext(args.write)[0] basename = os.path.splitext(args.write)[0]
res_not_found = check_existance(res_mappings, res_dist, res_sens) res_not_found = check_existance(res_mappings, res_dist, res_sens, res_tunnel)
if args.errors and "overdefined_tunnel" in res_not_found:
print("unorrect tunnels found. Writing errors-file.")
err_ids = list(res_not_found["overdefined_tunnel"])
write_results(to_json(list(err_ids)), work_dir, args.errors)
added_warnings = merge_two_dicts(warnings, missing_attribs) added_warnings = merge_two_dicts(warnings, missing_attribs)
res_not_found["missing_attributes"] = added_warnings res_not_found["missing_attributes"] = added_warnings
output_results["not_found"] = res_not_found output_results["not_found"] = res_not_found
output_results["double_ids"] = res_double output_results["double_ids"] = res_double
write_results(to_json(output_results), work_dir, f"{basename}.json") write_results(to_json(output_results), work_dir, f"{basename}.json")
else: else:
+7 -5
View File
@@ -434,11 +434,13 @@ class Anlage():
die Rückage enthält ein Tuple, welche Tunnel keinem Rack zugeordnet werden konnten die Rückage enthält ein Tuple, welche Tunnel keinem Rack zugeordnet werden konnten
''' '''
for tname, pos in self._tunnels.items(): for tname, pos in self._tunnels.items():
tunbeg = pos[0] if len(pos) == 2:
tunend = pos[1] tunbeg = pos[0]
trackname = f"t-Rack-{tname}" tunend = pos[1]
self._racks.add_rack(tunbeg, tunend, trackname) trackname = f"t-Rack-{tname}"
self._racks.add_rack(tunbeg, tunend, trackname)
else:
raise Exception("Tunnel has more than one begin and end/ just one begin")
errors = list() errors = list()
for name, pos in self._tunnels.items(): for name, pos in self._tunnels.items():
p1 = self._tunnels[name][0] p1 = self._tunnels[name][0]