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"
]
},
{
"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",
"type": "debugpy",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"python.languageServer": "Pylance",
"python.languageServer": "None",
"cSpell.words": [
"DXFATTRIBS",
"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 "DIR=%%~dpi"
)
call C:\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT%
@@ -19,12 +20,12 @@ set ERROR_DOUBLE=%FILENAME%_errors.json
set EXCEL_RES=%FILENAME%_cables.xlsx
set DXF_RES=%FILENAME%_cables.dxf
echo on
call C:\kabellaengen\bin\setenv.bat
if exist "_setenv_local.bat" (
call _setenv_local.bat
if exist "%~dp0_setenv.bat" (
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
echo on
echo.
echo === Fetching Positions ===
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 "DIR=%%~dpi"
)
call C:\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT%
@@ -18,8 +19,11 @@ REM Namen der Ergebnisdateien
set ERROR_DOUBLE=%FILENAME%_errors.json
set RESULT_TIA=%FILENAME%-*_TIA.xlsx
call C:\kabellaengen\bin\setenv.bat
if exist "%~dp0_setenv.bat" (
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
echo.
@@ -44,6 +48,7 @@ if not exist "%PROJECT_WORK%\%RESULT_TIA%" (
goto :eof
)
mkdir %PROJECT_IO_RESULTS%\%FILENAME%
echo move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
pause
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
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_CFG=%PROJECT%\cfg
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 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%
popd
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
[GetPos-Layer_Tunnel]
Busverteiler-Kennzeichnung
0-0_Tunnel
# Layernamen des Equipments (Sensoren, Motoren, etc.)
+2
View File
@@ -83,3 +83,5 @@
200000375 = Halter mit Sensor für Abfrage VARIO Finger
720000007 = Sensor induk. M8x1, NO/ST-M12x1 4.pol, L=66 mm
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
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["missing_distributors"] = list()
ret["missing_sensors"] = list()
ret["missing_tunnel"] = list()
for dname in res_mappings.keys():
if dname not in res_dist:
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:
if s not in res_pos:
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
def dxf_is_binary(dxf_path: Path) -> bool:
@@ -810,11 +817,18 @@ if __name__ == '__main__':
if args.write:
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)
res_not_found["missing_attributes"] = added_warnings
output_results["not_found"] = res_not_found
output_results["double_ids"] = res_double
write_results(to_json(output_results), work_dir, f"{basename}.json")
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
'''
for tname, pos in self._tunnels.items():
tunbeg = pos[0]
tunend = pos[1]
trackname = f"t-Rack-{tname}"
self._racks.add_rack(tunbeg, tunend, trackname)
if len(pos) == 2:
tunbeg = pos[0]
tunend = pos[1]
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()
for name, pos in self._tunnels.items():
p1 = self._tunnels[name][0]