diff --git a/Editor2DLibrary/SSG/shapes/props/834342001.txt b/Editor2DLibrary/SSG/shapes/props/834342001.txt
index e610e66..8c2597b 100644
--- a/Editor2DLibrary/SSG/shapes/props/834342001.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834342001.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Einfach 22.5° rechts M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834342002.txt b/Editor2DLibrary/SSG/shapes/props/834342002.txt
index e2363ec..24b633b 100644
--- a/Editor2DLibrary/SSG/shapes/props/834342002.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834342002.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Einfach 22.5° rechts P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834342011.txt b/Editor2DLibrary/SSG/shapes/props/834342011.txt
index c977eba..719c1ba 100644
--- a/Editor2DLibrary/SSG/shapes/props/834342011.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834342011.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Einfach 22.5° links M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834342012.txt b/Editor2DLibrary/SSG/shapes/props/834342012.txt
index 049cd76..2cc48d7 100644
--- a/Editor2DLibrary/SSG/shapes/props/834342012.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834342012.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Einfach 22.5° links P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372001.txt b/Editor2DLibrary/SSG/shapes/props/834372001.txt
index 1aba42a..b78f488 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372001.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372001.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 350/700 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372002.txt b/Editor2DLibrary/SSG/shapes/props/834372002.txt
index dd57843..9611c58 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372002.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372002.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 350/700 links P",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372004.txt b/Editor2DLibrary/SSG/shapes/props/834372004.txt
index 033aa42..c81e3d0 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372004.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372004.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 350/700 rechts M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372005.txt b/Editor2DLibrary/SSG/shapes/props/834372005.txt
index d3c1e9f..3dd8a74 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372005.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372005.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 350/700 rechts P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372007.txt b/Editor2DLibrary/SSG/shapes/props/834372007.txt
index b93966e..cf4c7c1 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372007.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372007.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 400/750 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372008.txt b/Editor2DLibrary/SSG/shapes/props/834372008.txt
index 2d44f30..5d380b4 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372008.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372008.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 400/750 links P",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372010.txt b/Editor2DLibrary/SSG/shapes/props/834372010.txt
index 3d0ce6c..91136b9 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372010.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372010.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 400/750 rechts M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372011.txt b/Editor2DLibrary/SSG/shapes/props/834372011.txt
index 817190a..5c42f32 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372011.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372011.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 400/750 rechts P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372021.txt b/Editor2DLibrary/SSG/shapes/props/834372021.txt
index 4c8aeaf..d29a934 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372021.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372021.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 500/600 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372022.txt b/Editor2DLibrary/SSG/shapes/props/834372022.txt
index f2dc81d..e5492b4 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372022.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372022.txt
@@ -5,6 +5,7 @@
"icon": "SSG/shapes/img/Weiche_90_500_600_L_P_834372022_32px.png",
"iconBig": "SSG/shapes/img/Weiche_90_500_600_L_P_834372022_64px.png",
"srcSVG": "SSG/shapes/svg/834372022.xml",
+ "src3D": "SSG/shapes/obj/834372022.stl",
"width": 2092.989,
"height": 2347.965,
"depth": 415.748,
diff --git a/Editor2DLibrary/SSG/shapes/props/834372024.txt b/Editor2DLibrary/SSG/shapes/props/834372024.txt
index d01e4bd..252e951 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372024.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372024.txt
@@ -5,6 +5,7 @@
"icon": "SSG/shapes/img/Weiche_90_500_600_R_M_834372024_32px.png",
"iconBig": "SSG/shapes/img/Weiche_90_500_600_R_M_834372024_64px.png",
"srcSVG": "SSG/shapes/svg/834372024.xml",
+ "src3D": "SSG/shapes/obj/834372024.stl",
"width": 2092.989,
"height": 2347.965,
"depth": 415.748,
diff --git a/Editor2DLibrary/SSG/shapes/props/834372027.txt b/Editor2DLibrary/SSG/shapes/props/834372027.txt
index a242d6f..5ec1790 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372027.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372027.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 700/700 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372028.txt b/Editor2DLibrary/SSG/shapes/props/834372028.txt
index d70e4cd..2db845f 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372028.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372028.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 700/700 links P",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372030.txt b/Editor2DLibrary/SSG/shapes/props/834372030.txt
index 5740030..42893f9 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372030.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372030.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 700/700 rechts M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372031.txt b/Editor2DLibrary/SSG/shapes/props/834372031.txt
index 1a179d3..7bfd7ad 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372031.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372031.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 700/700 rechts P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372047.txt b/Editor2DLibrary/SSG/shapes/props/834372047.txt
index d17f2bb..2dc9fa4 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372047.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372047.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach Parallel 200/750 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372048.txt b/Editor2DLibrary/SSG/shapes/props/834372048.txt
index e9cc8be..5d19d28 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372048.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372048.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach Parallel 200/750 links P",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372050.txt b/Editor2DLibrary/SSG/shapes/props/834372050.txt
index 43684f6..1c1602c 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372050.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372050.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach Parallel 200/750 rechs M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372051.txt b/Editor2DLibrary/SSG/shapes/props/834372051.txt
index a022e92..5031746 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372051.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372051.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach Parallel 200/750 rechs P",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/834372100.txt b/Editor2DLibrary/SSG/shapes/props/834372100.txt
index 45cca22..164d731 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372100.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372100.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 45° 350/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372101.txt b/Editor2DLibrary/SSG/shapes/props/834372101.txt
index d9f474c..c76b264 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372101.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372101.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 45° 350/700 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372103.txt b/Editor2DLibrary/SSG/shapes/props/834372103.txt
index 55d186a..98d7e41 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372103.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372103.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 45° 400/750 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372104.txt b/Editor2DLibrary/SSG/shapes/props/834372104.txt
index aeff0b4..cb23f23 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372104.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372104.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 45° 400/750 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372106.txt b/Editor2DLibrary/SSG/shapes/props/834372106.txt
index d242bdb..828474f 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372106.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372106.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 90° 500/600 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372107.txt b/Editor2DLibrary/SSG/shapes/props/834372107.txt
index c904332..f8219d9 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372107.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372107.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 90° 500/600 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372109.txt b/Editor2DLibrary/SSG/shapes/props/834372109.txt
index 1f2b316..89c413d 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372109.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372109.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 90° 700/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372110.txt b/Editor2DLibrary/SSG/shapes/props/834372110.txt
index dfe469f..7b808d2 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372110.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372110.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 90° 700/700 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372115.txt b/Editor2DLibrary/SSG/shapes/props/834372115.txt
index 27251ea..24c531c 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372115.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372115.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel Parallel 200/750 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372116.txt b/Editor2DLibrary/SSG/shapes/props/834372116.txt
index bb318f0..b482c37 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372116.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372116.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel Parallel 200/750 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372200.txt b/Editor2DLibrary/SSG/shapes/props/834372200.txt
index a8ca754..d74c2a9 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372200.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372200.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 45° 350/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372201.txt b/Editor2DLibrary/SSG/shapes/props/834372201.txt
index 1685e2b..0f45ca8 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372201.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372201.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 45° 350/700 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372203.txt b/Editor2DLibrary/SSG/shapes/props/834372203.txt
index 7763858..d099837 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372203.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372203.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 45° 400/750 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372204.txt b/Editor2DLibrary/SSG/shapes/props/834372204.txt
index 7b536ce..f1076db 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372204.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372204.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 45° 400/750 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372206.txt b/Editor2DLibrary/SSG/shapes/props/834372206.txt
index 5e77f8f..4ee3726 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372206.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372206.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 90° 500/600 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372207.txt b/Editor2DLibrary/SSG/shapes/props/834372207.txt
index affd611..e53c034 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372207.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372207.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 90° 500/600 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372209.txt b/Editor2DLibrary/SSG/shapes/props/834372209.txt
index dce7218..6f1e8d5 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372209.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372209.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 90° 700/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372210.txt b/Editor2DLibrary/SSG/shapes/props/834372210.txt
index f60ace4..534c48e 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372210.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372210.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 90° 700/700 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372215.txt b/Editor2DLibrary/SSG/shapes/props/834372215.txt
index 020c837..9bdece2 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372215.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372215.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege Parallel 200/750 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372216.txt b/Editor2DLibrary/SSG/shapes/props/834372216.txt
index 621a292..75ea0a3 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372216.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372216.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege Parallel 200/750 P",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372400.txt b/Editor2DLibrary/SSG/shapes/props/834372400.txt
index 5aaa3a0..6fcd06e 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372400.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372400.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Delta 1400/700 M",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372401.txt b/Editor2DLibrary/SSG/shapes/props/834372401.txt
index 6cb5b9c..31ddcbb 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372401.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372401.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Delta 1400/700 P",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372403.txt b/Editor2DLibrary/SSG/shapes/props/834372403.txt
index f1703aa..3c19e25 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372403.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372403.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Delta 1600/800 M",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372404.txt b/Editor2DLibrary/SSG/shapes/props/834372404.txt
index 817c417..8088a5a 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372404.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372404.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Delta 1600/800 P",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/834372420.txt b/Editor2DLibrary/SSG/shapes/props/834372420.txt
index adfbd21..7eca6bd 100644
--- a/Editor2DLibrary/SSG/shapes/props/834372420.txt
+++ b/Editor2DLibrary/SSG/shapes/props/834372420.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Star 1400/1400 M",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFDeltaWeiche.txt b/Editor2DLibrary/SSG/shapes/props/OFDeltaWeiche.txt
index 04754af..64da224 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFDeltaWeiche.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFDeltaWeiche.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Delta 1400/700 M",
"family": "OFWeiche",
@@ -25,7 +25,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 0.0,
+ "direction": 0,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel45.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel45.txt
index 5ee71d3..b90d8a2 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel45.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel45.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 45° 350/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel90.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel90.txt
index 5af4858..00755e3 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel90.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheDoppel90.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Doppel 90° 700/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege45.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege45.txt
index c03c663..dd00fbd 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege45.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege45.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 45° 350/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 45.0,
+ "direction": 45,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege90.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege90.txt
index d93caf2..286dd9e 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege90.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheDreiwege90.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Dreiwege 90° 700/700 M",
"family": "OFWeiche",
@@ -44,7 +44,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 90.0,
+ "direction": 90,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach45.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach45.txt
index e5987f1..2914352 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach45.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach45.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 45° 350/700 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 315.0,
+ "direction": 315,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach90.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach90.txt
index 8cf4ec1..b2e792d 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach90.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheEinfach90.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach 90° 700/700 links M",
"family": "OFWeiche",
@@ -63,7 +63,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 270.0,
+ "direction": 270,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeicheParallelEinfach.txt b/Editor2DLibrary/SSG/shapes/props/OFWeicheParallelEinfach.txt
index 2588840..48706c5 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeicheParallelEinfach.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeicheParallelEinfach.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Einfach Parallel 200/750 links M",
"family": "OFWeiche",
@@ -62,7 +62,7 @@
"zMin": "",
"zMax": "",
"zStep": "",
- "direction": 360.0,
+ "direction": 360,
"linkClass": "Omniflo",
"label": "",
"isDimension": true
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDoppel.txt b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDoppel.txt
index 3a8da07..7a3afce 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDoppel.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDoppel.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Doppel 22.5° M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDreiwege.txt b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDreiwege.txt
index 3d93397..fad4c04 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDreiwege.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperDreiwege.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Dreiwege 22.5° M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperEinfach.txt b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperEinfach.txt
index d370116..03c90b3 100644
--- a/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperEinfach.txt
+++ b/Editor2DLibrary/SSG/shapes/props/OFWeichenkoerperEinfach.txt
@@ -1,4 +1,4 @@
-{
+{
"shapeMode": 0,
"name": "Weichenkörper Einfach 22.5° links M",
"family": "OFWeiche",
diff --git a/Editor2DLibrary/SSG/shapes/svg/834372022.xml b/Editor2DLibrary/SSG/shapes/svg/834372022.xml
index cf2b51f..f047108 100644
--- a/Editor2DLibrary/SSG/shapes/svg/834372022.xml
+++ b/Editor2DLibrary/SSG/shapes/svg/834372022.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/Editor2DLibrary/SSG/shapes/svg/834372024.xml b/Editor2DLibrary/SSG/shapes/svg/834372024.xml
index b4254be..896cae2 100644
--- a/Editor2DLibrary/SSG/shapes/svg/834372024.xml
+++ b/Editor2DLibrary/SSG/shapes/svg/834372024.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/SVGs/Omniflo/python/OFWeiche/1_omniflo_weichen.py b/SVGs/Omniflo/python/OFWeiche/1_omniflo_weichen.py
index c0079ee..add4a7e 100644
--- a/SVGs/Omniflo/python/OFWeiche/1_omniflo_weichen.py
+++ b/SVGs/Omniflo/python/OFWeiche/1_omniflo_weichen.py
@@ -1,6 +1,7 @@
import json
import math
import os
+
def modify_json_values(json_file):
# Constant definitions
WeichenKoerperWidth = 32.5437
@@ -11,19 +12,15 @@ def modify_json_values(json_file):
# Read JSON file
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
- process_einzelweiche_items(data,WeichenKoerperWidth, WeichenkProfileWidth,BogenProfileWidth, WeichenGerade)
-
- process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade)
+ process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth, BogenProfileWidth, WeichenGerade)
+ process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade)
process_deltaweiche_items(data, WeichenkProfileWidth)
- # Ask for save confirmation
- save_choice = input("\nSave all changes? (Press Enter to save, 'n' to cancel): ").lower()
- if save_choice == 'n':
- print("All changes discarded")
- else:
- with open(json_file, 'w', encoding='utf-8') as f:
- json.dump(data, f, indent=2, ensure_ascii=False)
- print("All changes saved!")
+
+ # Save changes without confirmation
+ with open(json_file, 'w', encoding='utf-8') as f:
+ json.dump(data, f, indent=2, ensure_ascii=False)
+ print("All changes saved automatically!")
def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth, BogenProfileWidth, WeichenGerade):
# Filter matching items with additional Sivasnr check
@@ -36,60 +33,21 @@ def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth,
]
print(f"Found {len(filtered_items)} matching records with numeric Sivasnr")
- print("="*50)
# Process each item
- for idx, item in enumerate(filtered_items, 1):
- print(f"\nItem {idx}:")
- print(f"Sivasnr: {item['Sivasnr']}")
- print(f"ProfilTyp: {item['ProfilTyp']}")
- print(f"Schaltungstyp: {item['Schaltungstyp']}")
-
- # Process OFWeiche_center_line_width_mm
- current_value = item.get("OFWeiche_center_line_width_mm")
- print(f"\nCurrent OFWeiche_center_line_width_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_width_mm"]
- item["OFWeiche_center_line_width_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_width_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
- else:
- print("Skipping modification")
-
- # Process OFWeiche_center_line_height_mm
- current_value = item.get("OFWeiche_center_line_height_mm")
- print(f"\nCurrent OFWeiche_center_line_height_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_height_mm"]
- item["OFWeiche_center_line_height_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_height_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
- else:
- print("Skipping modification")
-
+ for item in filtered_items:
# Calculate related values
if (item["OFWeiche_center_line_width_mm"] is not None and
item["OFWeiche_center_line_height_mm"] is not None):
angle_rad = math.radians(item["KurvenWinkel"])
- # Calculate and print basic values
- old_width = item.get("Objekt_width_mm")
- item["Objekt_width_mm"] = round(WeichenKoerperWidth+
+ # Calculate basic values
+ item["Objekt_width_mm"] = round(WeichenKoerperWidth +
(BogenProfileWidth/2 * math.cos(angle_rad)) +
item["OFWeiche_center_line_width_mm"] +
WeichenkProfileWidth/2, 3)
- print(f"\nObjekt_width_mm calculated update: {old_width} → {item['Objekt_width_mm']}")
- old_height = item.get("Objekt_height_mm")
if item["KurvenWinkel"] == 22.5:
item["Objekt_height_mm"] = round(
item["OFWeiche_center_line_height_mm"], 3)
@@ -97,46 +55,34 @@ def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth,
item["Objekt_height_mm"] = round(
(BogenProfileWidth/2 * math.sin(angle_rad)) +
item["OFWeiche_center_line_height_mm"], 3)
- print(f"Objekt_height_mm calculated update: {old_height} → {item['Objekt_height_mm']}")
- # Calculate and print CP point coordinates
- old_cp1x = item.get("OFWeiche_CP1_x_mm")
+ # Calculate CP point coordinates
item["OFWeiche_CP1_x_mm"] = round(
(BogenProfileWidth/2 * math.cos(angle_rad)) +
item["OFWeiche_center_line_width_mm"], 3)
- print(f"OFWeiche_CP1_x_mm calculated update: {old_cp1x} → {item['OFWeiche_CP1_x_mm']}")
- old_cp1y = item.get("OFWeiche_CP1_y_mm")
item["OFWeiche_CP1_y_mm"] = round(
item["Objekt_height_mm"] - WeichenGerade, 3)
- print(f"OFWeiche_CP1_y_mm calculated update: {old_cp1y} → {item['OFWeiche_CP1_y_mm']}")
item["OFWeiche_CP2_x_mm"] = round(item["OFWeiche_CP1_x_mm"], 3)
- print(f"OFWeiche_CP2_x_mm set: {item['OFWeiche_CP2_x_mm']}")
item["OFWeiche_CP2_y_mm"] = round(item["Objekt_height_mm"], 3)
- print(f"OFWeiche_CP2_y_mm set: {item['OFWeiche_CP2_y_mm']}")
item["OFWeiche_CP3_x_mm"] = round(
BogenProfileWidth/2 * math.cos(angle_rad), 3)
- print(f"OFWeiche_CP3_x_mm calculated update: {item['OFWeiche_CP3_x_mm']}")
item["OFWeiche_CP3_y_mm"] = round(
BogenProfileWidth/2 * math.sin(angle_rad), 3)
- print(f"OFWeiche_CP3_y_mm calculated update: {item['OFWeiche_CP3_y_mm']}")
- # NEW: First find exact ProfilTyp matches and update them
+ # Update items with identical ProfilTyp
current_profil = item["ProfilTyp"]
exact_matches = [x for x in data
if x["ProfilTyp"] == current_profil and
- x is not item and # Exclude the current item
+ x is not item and
x.get("SivasnrTEF") is None]
if exact_matches:
- print(f"\nFound {len(exact_matches)} items with identical ProfilTyp")
for match in exact_matches:
- print(f"Updating identical ProfilTyp item: {match['Sivasnr']}")
-
fields_to_copy = [
"OFWeiche_center_line_width_mm",
"OFWeiche_center_line_height_mm",
@@ -151,12 +97,9 @@ def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth,
]
for field in fields_to_copy:
- old_val = match.get(field)
match[field] = item[field]
- print(f" {field}: {old_val} → {match[field]}")
- else:
- print("No similar items with identical ProfilTyp found")
- # 1. Find similar items with Schaltungstyp=P (update all CP points)
+
+ # Find similar items with Schaltungstyp=P
if "S" in current_profil:
prefix = current_profil.rsplit(" ", 1)[0]
@@ -167,13 +110,65 @@ def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth,
x.get("SivasnrTEF") is None and
x.get("Schaltungstyp") == "P"]
- if similar_items_p:
- print(f"\nFound {len(similar_items_p)} similar items with Schaltungstyp=P")
- for similar in similar_items_p:
- print(f"Updating similar item: {similar['ProfilTyp']} (Sivasnr: {similar['Sivasnr']})")
+ for similar in similar_items_p:
+ fields_to_copy = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm",
+ "OFWeiche_CP1_x_mm",
+ "OFWeiche_CP1_y_mm",
+ "OFWeiche_CP2_x_mm",
+ "OFWeiche_CP2_y_mm",
+ "OFWeiche_CP3_x_mm",
+ "OFWeiche_CP3_y_mm"
+ ]
- # Update all fields including CP points
- fields_to_copy = [
+ for field in fields_to_copy:
+ similar[field] = item[field]
+
+ # Find L→R similar items with KurvenRichtung=2
+ if "S" in current_profil and "-L-" in current_profil:
+ r_profil = current_profil.replace("-L-", "-R-")
+
+ similar_items_r = [x for x in data
+ if x["ProfilTyp"] == r_profil and
+ x.get("SivasnrTEF") is None and
+ x.get("KurvenRichtung") == 2 and
+ x.get("Schaltungstyp") == "M"]
+
+ for similar in similar_items_r:
+ # Copy basic values
+ base_fields = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm"
+ ]
+
+ for field in base_fields:
+ similar[field] = item[field]
+
+ # Calculate R-type specific CP points
+ similar["OFWeiche_CP1_x_mm"] = round(WeichenKoerperWidth+WeichenkProfileWidth/2, 3)
+ similar["OFWeiche_CP1_y_mm"] = round(item["Objekt_height_mm"] - WeichenGerade, 3)
+ similar["OFWeiche_CP2_x_mm"] = similar["OFWeiche_CP1_x_mm"]
+ similar["OFWeiche_CP2_y_mm"] = round(item["Objekt_height_mm"], 3)
+ similar["OFWeiche_CP3_x_mm"] = round(
+ similar["OFWeiche_CP1_x_mm"] + item["OFWeiche_center_line_width_mm"], 3)
+ similar["OFWeiche_CP3_y_mm"] = round(
+ BogenProfileWidth/2 * math.sin(angle_rad), 3)
+
+ # Find P-type counterparts for this R-type item
+ r_p_profil = r_profil.replace("MIT M", "MIT P")
+
+ similar_items_r_p = [x for x in data
+ if x["ProfilTyp"] == r_p_profil and
+ x.get("SivasnrTEF") is None and
+ x.get("Schaltungstyp") == "P"]
+
+ for similar_r_p in similar_items_r_p:
+ fields_to_copy_r_p = [
"OFWeiche_center_line_width_mm",
"OFWeiche_center_line_height_mm",
"Objekt_width_mm",
@@ -186,110 +181,9 @@ def process_einzelweiche_items(data, WeichenKoerperWidth, WeichenkProfileWidth,
"OFWeiche_CP3_y_mm"
]
- for field in fields_to_copy:
- old_val = similar.get(field)
- similar[field] = item[field]
- print(f" {field}: {old_val} → {similar[field]}")
-
- else:
- print("No similar items with Schaltungstyp=P found")
-
- # 2. Find L→R similar items with KurvenRichtung=2
- if "S" in current_profil and "-L-" in current_profil:
- r_profil = current_profil.replace("-L-", "-R-")
-
- similar_items_r = [x for x in data
- if x["ProfilTyp"] == r_profil and
- x.get("SivasnrTEF") is None and
- x.get("KurvenRichtung") == 2 and
- x.get("Schaltungstyp") == "M"]
-
- if similar_items_r:
- print(f"\nFound {len(similar_items_r)} L→R similar items (KurvenRichtung=2)")
- for similar in similar_items_r:
- print(f"Updating R-type similar item: {similar['ProfilTyp']} (Sivasnr: {similar['Sivasnr']})")
-
- # Copy basic values
- base_fields = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm"
- ]
-
- for field in base_fields:
- old_val = similar.get(field)
- similar[field] = item[field]
- print(f" {field}: {old_val} → {similar[field]}")
-
- # Calculate and print R-type specific CP points
- old_cp1x = similar.get("OFWeiche_CP1_x_mm")
- similar["OFWeiche_CP1_x_mm"] = round(WeichenKoerperWidth+WeichenkProfileWidth/2, 3)
- print(f" OFWeiche_CP1_x_mm (R-type): {old_cp1x} → {similar['OFWeiche_CP1_x_mm']}")
-
- old_cp1y = similar.get("OFWeiche_CP1_y_mm")
- similar["OFWeiche_CP1_y_mm"] = round(item["Objekt_height_mm"] - WeichenGerade, 3)
- print(f" OFWeiche_CP1_y_mm (R-type): {old_cp1y} → {similar['OFWeiche_CP1_y_mm']}")
-
- similar["OFWeiche_CP2_x_mm"] = similar["OFWeiche_CP1_x_mm"]
- print(f" OFWeiche_CP2_x_mm (R-type): Set to {similar['OFWeiche_CP2_x_mm']}")
-
- old_cp2y = similar.get("OFWeiche_CP2_y_mm")
- similar["OFWeiche_CP2_y_mm"] = round(item["Objekt_height_mm"], 3)
- print(f" OFWeiche_CP2_y_mm (R-type): {old_cp2y} → {similar['OFWeiche_CP2_y_mm']}")
-
- old_cp3x = similar.get("OFWeiche_CP3_x_mm")
- similar["OFWeiche_CP3_x_mm"] = round(
- similar["OFWeiche_CP1_x_mm"] + item["OFWeiche_center_line_width_mm"], 3)
- print(f" OFWeiche_CP3_x_mm (R-type): {old_cp3x} → {similar['OFWeiche_CP3_x_mm']}")
-
- old_cp3y = similar.get("OFWeiche_CP3_y_mm")
- similar["OFWeiche_CP3_y_mm"] = round(
- BogenProfileWidth/2 * math.sin(angle_rad), 3)
- print(f" OFWeiche_CP3_y_mm (R-type): {old_cp3y} → {similar['OFWeiche_CP3_y_mm']}")
-
- # 3. Find P-type counterparts for this R-type item
- r_p_profil = r_profil.replace("MIT M", "MIT P")
-
- similar_items_r_p = [x for x in data
- if x["ProfilTyp"] == r_p_profil and
- x.get("SivasnrTEF") is None and
- x.get("Schaltungstyp") == "P"]
-
- if similar_items_r_p:
- print(f"\nFound {len(similar_items_r_p)} R-type P-type counterparts")
- for similar_r_p in similar_items_r_p:
- print(f"Updating R-type P-type counterpart: {similar_r_p['ProfilTyp']} (Sivasnr: {similar_r_p['Sivasnr']})")
-
- fields_to_copy_r_p = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm",
- "OFWeiche_CP1_x_mm",
- "OFWeiche_CP1_y_mm",
- "OFWeiche_CP2_x_mm",
- "OFWeiche_CP2_y_mm",
- "OFWeiche_CP3_x_mm",
- "OFWeiche_CP3_y_mm"
- ]
-
- for field in fields_to_copy_r_p:
- old_val = similar_r_p.get(field)
- similar_r_p[field] = similar[field]
- print(f" {field}: {old_val} → {similar_r_p[field]}")
+ for field in fields_to_copy_r_p:
+ similar_r_p[field] = similar[field]
- save_choice = input(f"Confirm update for this item? (Enter to confirm, 'n' to cancel): ").lower()
- if save_choice == 'n':
- print("Update for this item cancelled")
- # Restore original values
- for field in fields_to_copy_r_p:
- if field in similar_r_p:
- similar_r_p[field] = old_val
- else:
- print("No R-type P-type counterparts found")
- else:
- print("No L→R similar items found")
def process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade):
# Filter Doppelweiche type items with numeric Sivasnr check
filtered_items = [
@@ -300,100 +194,45 @@ def process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade):
str(item.get("Sivasnr", "")).isdigit())
]
- print(f"\n\nFound {len(filtered_items)} Doppelweiche type records with numeric Sivasnr")
- print("="*50)
+ print(f"\nFound {len(filtered_items)} Doppelweiche type records with numeric Sivasnr")
# Process each Doppelweiche item
- for idx, item in enumerate(filtered_items, 1):
- print(f"\nDoppelweiche item {idx}:")
- print(f"Sivasnr: {item['Sivasnr']}")
- print(f"ProfilTyp: {item['ProfilTyp']}")
- print(f"Schaltungstyp: {item['Schaltungstyp']}")
- print(f"KurvenWinkel: {item['KurvenWinkel']}")
-
- # Process OFWeiche_center_line_width_mm
- current_value = item.get("OFWeiche_center_line_width_mm")
- print(f"\nCurrent OFWeiche_center_line_width_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_width_mm"]
- item["OFWeiche_center_line_width_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_width_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
- else:
- print("Skipping modification")
-
- # Process OFWeiche_center_line_height_mm
- current_value = item.get("OFWeiche_center_line_height_mm")
- print(f"\nCurrent OFWeiche_center_line_height_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_height_mm"]
- item["OFWeiche_center_line_height_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_height_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
- else:
- print("Skipping modification")
-
+ for item in filtered_items:
# Calculate related values
if (item["OFWeiche_center_line_width_mm"] is not None and
item["OFWeiche_center_line_height_mm"] is not None):
angle_rad = math.radians(item["KurvenWinkel"])
- # Calculate and print basic values (Doppelweiche specific formula)
- old_width = item.get("Objekt_width_mm")
+ # Calculate basic values (Doppelweiche specific formula)
item["Objekt_width_mm"] = round(
(BogenProfileWidth/2 * math.cos(angle_rad)) +
item["OFWeiche_center_line_width_mm"] +
BogenProfileWidth/2 * math.cos(angle_rad), 3)
- print(f"\nObjekt_width_mm calculated update: {old_width} → {item['Objekt_width_mm']}")
- old_height = item.get("Objekt_height_mm")
item["Objekt_height_mm"] = round(
(BogenProfileWidth/2 * math.sin(angle_rad)) +
item["OFWeiche_center_line_height_mm"], 3)
- print(f"Objekt_height_mm calculated update: {old_height} → {item['Objekt_height_mm']}")
- # Calculate and print CP point coordinates (Doppelweiche specific formula)
+ # Calculate CP point coordinates (Doppelweiche specific formula)
item["OFWeiche_CP1_x_mm"] = round(item["Objekt_width_mm"]/2, 3)
- print(f"OFWeiche_CP1_x_mm calculated update: {item['OFWeiche_CP1_x_mm']}")
-
item["OFWeiche_CP1_y_mm"] = round(item["Objekt_height_mm"], 3)
- print(f"OFWeiche_CP1_y_mm calculated update: {item['OFWeiche_CP1_y_mm']}")
-
item["OFWeiche_CP2_x_mm"] = round(BogenProfileWidth/2 * math.cos(angle_rad), 3)
- print(f"OFWeiche_CP2_x_mm calculated update: {item['OFWeiche_CP2_x_mm']}")
-
item["OFWeiche_CP2_y_mm"] = round(BogenProfileWidth/2 * math.sin(angle_rad), 3)
- print(f"OFWeiche_CP2_y_mm calculated update: {item['OFWeiche_CP2_y_mm']}")
-
item["OFWeiche_CP3_x_mm"] = round(
BogenProfileWidth/2 * math.cos(angle_rad) +
item["OFWeiche_center_line_width_mm"], 3)
- print(f"OFWeiche_CP3_x_mm calculated update: {item['OFWeiche_CP3_x_mm']}")
-
item["OFWeiche_CP3_y_mm"] = item["OFWeiche_CP2_y_mm"]
- print(f"OFWeiche_CP3_y_mm set: {item['OFWeiche_CP3_y_mm']}")
- # NEW: First find exact ProfilTyp matches and update them
+ # Update items with identical ProfilTyp
current_profil = item["ProfilTyp"]
exact_matches = [x for x in data
if x["ProfilTyp"] == current_profil and
- x is not item and # Exclude the current item
+ x is not item and
x.get("SivasnrTEF") is None]
if exact_matches:
- print(f"\nFound {len(exact_matches)} items with identical ProfilTyp")
for match in exact_matches:
- print(f"Updating identical ProfilTyp item: {match['Sivasnr']}")
-
fields_to_copy = [
"OFWeiche_center_line_width_mm",
"OFWeiche_center_line_height_mm",
@@ -408,13 +247,9 @@ def process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade):
]
for field in fields_to_copy:
- old_val = match.get(field)
match[field] = item[field]
- print(f" {field}: {old_val} → {match[field]}")
- else:
- print("No similar items with identical ProfilTyp found")
- # 1. Find similar items (D-type P-type)
+ # Find similar items (D-type P-type)
if "S D" in current_profil:
d_p_profil = current_profil.replace("MIT M", "MIT P")
@@ -422,33 +257,24 @@ def process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade):
if x["ProfilTyp"] == d_p_profil and
x.get("SivasnrTEF") is None]
- if similar_items_d_p:
- print(f"\nFound {len(similar_items_d_p)} D-type P-type similar items")
- for similar in similar_items_d_p:
- print(f"Updating D-type P-type similar item: {similar['ProfilTyp']} (Sivasnr: {similar['Sivasnr']})")
-
- # Update all fields
- fields_to_copy = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm",
- "OFWeiche_CP1_x_mm",
- "OFWeiche_CP1_y_mm",
- "OFWeiche_CP2_x_mm",
- "OFWeiche_CP2_y_mm",
- "OFWeiche_CP3_x_mm",
- "OFWeiche_CP3_y_mm"
- ]
-
- for field in fields_to_copy:
- old_val = similar.get(field)
- similar[field] = item[field]
- print(f" {field}: {old_val} → {similar[field]}")
- else:
- print("No D-type P-type similar items found")
+ for similar in similar_items_d_p:
+ fields_to_copy = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm",
+ "OFWeiche_CP1_x_mm",
+ "OFWeiche_CP1_y_mm",
+ "OFWeiche_CP2_x_mm",
+ "OFWeiche_CP2_y_mm",
+ "OFWeiche_CP3_x_mm",
+ "OFWeiche_CP3_y_mm"
+ ]
+
+ for field in fields_to_copy:
+ similar[field] = item[field]
- # 2. Find similar items (T-type M-type)
+ # Find similar items (T-type M-type)
if "S D" in current_profil:
t_m_profil = current_profil.replace("S D", "S T")
@@ -457,170 +283,88 @@ def process_doppelweiche_items(data, BogenProfileWidth, WeichenGerade):
x.get("SivasnrTEF") is None and
x.get("Schaltungstyp") == "M"]
- if similar_items_t_m:
- print(f"\nFound {len(similar_items_t_m)} T-type M-type similar items")
- for similar in similar_items_t_m:
- print(f"Updating T-type M-type similar item: {similar['ProfilTyp']} (Sivasnr: {similar['Sivasnr']})")
- if similar["KurvenWinkel"] == 22.5:
- print("Detected KurvenWinkel=22.5, applying special handling")
+ for similar in similar_items_t_m:
+ if similar["KurvenWinkel"] == 22.5:
+ # Special handling for KurvenWinkel=22.5
+ similar["OFWeiche_center_line_width_mm"] = item["OFWeiche_center_line_width_mm"]
+ similar["OFWeiche_center_line_height_mm"] = WeichenGerade
+ similar["Objekt_width_mm"] = item["Objekt_width_mm"]
+ similar["Objekt_height_mm"] = WeichenGerade
+ similar["OFWeiche_CP1_x_mm"] = item["OFWeiche_CP1_x_mm"]
+ similar["OFWeiche_CP1_y_mm"] = similar["Objekt_height_mm"]
+ similar["OFWeiche_CP2_x_mm"] = item["OFWeiche_CP2_x_mm"]
+ similar["OFWeiche_CP2_y_mm"] = 20
+ similar["OFWeiche_CP3_x_mm"] = item["OFWeiche_CP3_x_mm"]
+ similar["OFWeiche_CP3_y_mm"] = 20
+ else:
+ # Update basic fields
+ base_fields = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm",
+ "OFWeiche_CP1_x_mm",
+ "OFWeiche_CP1_y_mm",
+ "OFWeiche_CP2_x_mm",
+ "OFWeiche_CP2_y_mm",
+ "OFWeiche_CP3_x_mm",
+ "OFWeiche_CP3_y_mm"
+ ]
+
+ for field in base_fields:
+ similar[field] = item[field]
+
+ # Add CP4 point (T-type specific)
+ similar["OFWeiche_CP4_x_mm"] = round(similar["Objekt_width_mm"]/2, 3)
+ similar["OFWeiche_CP4_y_mm"] = round(similar["Objekt_height_mm"] - WeichenGerade, 3)
+
+ # Find T-type P-type counterparts
+ t_p_profil = t_m_profil.replace("MIT M", "MIT P")
+
+ similar_items_t_p = [x for x in data
+ if x["ProfilTyp"] == t_p_profil and
+ x.get("SivasnrTEF") is None and
+ x.get("Schaltungstyp") == "P"]
+
+ for similar_t_p in similar_items_t_p:
+ fields_to_copy_t_p = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm",
+ "OFWeiche_CP1_x_mm",
+ "OFWeiche_CP1_y_mm",
+ "OFWeiche_CP2_x_mm",
+ "OFWeiche_CP2_y_mm",
+ "OFWeiche_CP3_x_mm",
+ "OFWeiche_CP3_y_mm",
+ "OFWeiche_CP4_x_mm",
+ "OFWeiche_CP4_y_mm"
+ ]
- # Special handling logic
- similar["OFWeiche_center_line_width_mm"] = item["OFWeiche_center_line_width_mm"]
- print(f" OFWeiche_center_line_width_mm: → {similar['OFWeiche_center_line_width_mm']}")
-
- similar["OFWeiche_center_line_height_mm"] = WeichenGerade
- print(f" OFWeiche_center_line_height_mm: → {WeichenGerade}")
-
- similar["Objekt_width_mm"] = item["Objekt_width_mm"]
- print(f" Objekt_width_mm: → {similar['Objekt_width_mm']}")
-
- similar["Objekt_height_mm"] = WeichenGerade
- print(f" Objekt_height_mm: → {WeichenGerade}")
-
- similar["OFWeiche_CP1_x_mm"] = item["OFWeiche_CP1_x_mm"]
- print(f" OFWeiche_CP1_x_mm: → {similar['OFWeiche_CP1_x_mm']}")
-
- similar["OFWeiche_CP1_y_mm"] = similar["Objekt_height_mm"]
- print(f" OFWeiche_CP1_y_mm: → {similar['OFWeiche_CP1_y_mm']}")
-
- similar["OFWeiche_CP2_x_mm"] = item["OFWeiche_CP2_x_mm"]
- print(f" OFWeiche_CP2_x_mm: → {similar['OFWeiche_CP2_x_mm']}")
-
- similar["OFWeiche_CP2_y_mm"] = 20
- print(f" OFWeiche_CP2_y_mm: → 20")
-
- similar["OFWeiche_CP3_x_mm"] = item["OFWeiche_CP3_x_mm"]
- print(f" OFWeiche_CP3_x_mm: → {similar['OFWeiche_CP3_x_mm']}")
-
- similar["OFWeiche_CP3_y_mm"] = 20
- print(f" OFWeiche_CP3_y_mm: → 20")
-
- else:
- # Update basic fields
- base_fields = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm",
- "OFWeiche_CP1_x_mm",
- "OFWeiche_CP1_y_mm",
- "OFWeiche_CP2_x_mm",
- "OFWeiche_CP2_y_mm",
- "OFWeiche_CP3_x_mm",
- "OFWeiche_CP3_y_mm"
- ]
-
- for field in base_fields:
- old_val = similar.get(field)
- similar[field] = item[field]
- print(f" {field}: {old_val} → {similar[field]}")
-
- # Add CP4 point (T-type specific)
- similar["OFWeiche_CP4_x_mm"] = round(similar["Objekt_width_mm"]/2, 3)
- print(f" OFWeiche_CP4_x_mm added: {similar['OFWeiche_CP4_x_mm']}")
-
- similar["OFWeiche_CP4_y_mm"] = round(similar["Objekt_height_mm"] - WeichenGerade, 3)
- print(f" OFWeiche_CP4_y_mm added: {similar['OFWeiche_CP4_y_mm']}")
-
- # 3. Find T-type P-type counterparts
- t_p_profil = t_m_profil.replace("MIT M", "MIT P")
-
- similar_items_t_p = [x for x in data
- if x["ProfilTyp"] == t_p_profil and
- x.get("SivasnrTEF") is None and
- x.get("Schaltungstyp") == "P"]
-
- if similar_items_t_p:
- print(f"\nFound {len(similar_items_t_p)} T-type P-type counterparts")
- for similar_t_p in similar_items_t_p:
- print(f"Updating T-type P-type counterpart: {similar_t_p['ProfilTyp']} (Sivasnr: {similar_t_p['Sivasnr']})")
-
- # Update all fields including CP4 point
- fields_to_copy_t_p = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm",
- "OFWeiche_CP1_x_mm",
- "OFWeiche_CP1_y_mm",
- "OFWeiche_CP2_x_mm",
- "OFWeiche_CP2_y_mm",
- "OFWeiche_CP3_x_mm",
- "OFWeiche_CP3_y_mm",
- "OFWeiche_CP4_x_mm",
- "OFWeiche_CP4_y_mm"
- ]
-
- for field in fields_to_copy_t_p:
- old_val = similar_t_p.get(field)
- similar_t_p[field] = similar[field]
- print(f" {field}: {old_val} → {similar_t_p[field]}")
-
- # Add save confirmation prompt
- save_choice = input(f"Confirm update for this item? (Enter to confirm, 'n' to cancel): ").lower()
- if save_choice == 'n':
- print("Update for this item cancelled")
- # Restore original values
- for field in fields_to_copy_t_p:
- similar_t_p[field] = old_val
- else:
- print("No T-type P-type counterparts found")
- else:
- print("No T-type M-type similar items found")
+ for field in fields_to_copy_t_p:
+ similar_t_p[field] = similar[field]
+
def process_deltaweiche_items(data, WeichenkProfileWidth):
# Filter deltaweiche type items
filtered_items = [
- item for item in data
- if (item.get("WeichenTyp") == "Dreifachweiche" and
- item.get("Schaltungstyp") == "M" and
- item.get("SivasnrTEF") is None)and
- str(item.get("Sivasnr", "")).isdigit()
- ]
+ item for item in data
+ if (item.get("WeichenTyp") == "Dreifachweiche" and
+ item.get("Schaltungstyp") == "M" and
+ item.get("SivasnrTEF") is None and
+ str(item.get("Sivasnr", "")).isdigit())
+ ]
- print(f"\n\nFound {len(filtered_items)} deltaweiche type records")
- print("="*50)
+ print(f"\nFound {len(filtered_items)} deltaweiche type records")
- for idx, item in enumerate(filtered_items, 1):
- print(f"\ndeltaweiche item {idx}:")
- print(f"Sivasnr: {item['Sivasnr']}")
- print(f"ProfilTyp: {item['ProfilTyp']}")
-
- # Interactive modification of OFWeiche_center_line_width_mm
- current_value = item.get("OFWeiche_center_line_width_mm")
- print(f"\nCurrent OFWeiche_center_line_width_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_width_mm"]
- item["OFWeiche_center_line_width_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_width_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
-
- # Interactive modification of OFWeiche_center_line_height_mm
- current_value = item.get("OFWeiche_center_line_height_mm")
- print(f"\nCurrent OFWeiche_center_line_height_mm: {current_value}")
- choice = input("Modify? (y to modify, Enter to skip): ").lower()
- if choice == 'y':
- new_value = input(f"Enter new value (current: {current_value}): ")
- try:
- old_value = item["OFWeiche_center_line_height_mm"]
- item["OFWeiche_center_line_height_mm"] = round(float(new_value), 3) if new_value.lower() != 'null' else None
- print(f"Value updated: {old_value} → {item['OFWeiche_center_line_height_mm']}")
- except ValueError:
- print("Invalid input, keeping original value")
-
+ for item in filtered_items:
# Calculate related values
if (item["OFWeiche_center_line_width_mm"] is not None and
item["OFWeiche_center_line_height_mm"] is not None):
# Calculate basic dimensions
item["Objekt_width_mm"] = round(item["OFWeiche_center_line_width_mm"], 3)
- print(f"\nObjekt_width_mm calculated update: {item['Objekt_width_mm']}")
-
item["Objekt_height_mm"] = round(WeichenkProfileWidth/2 + item["OFWeiche_center_line_height_mm"]+32.5437, 3)
- print(f"Objekt_height_mm calculated update: {item['Objekt_height_mm']}")
# Calculate control points
item["OFWeiche_CP1_x_mm"] = round(item["Objekt_width_mm"]/2, 3)
@@ -629,25 +373,16 @@ def process_deltaweiche_items(data, WeichenkProfileWidth):
item["OFWeiche_CP2_y_mm"] = round(item["OFWeiche_center_line_height_mm"], 3)
item["OFWeiche_CP3_x_mm"] = round(item["OFWeiche_center_line_width_mm"], 3)
item["OFWeiche_CP3_y_mm"] = item["OFWeiche_CP2_y_mm"]
- print(f"OFWeiche_CP1_x_mm: {item['OFWeiche_CP1_x_mm']}")
- print(f"OFWeiche_CP1_y_mm: {item['OFWeiche_CP1_y_mm']}")
- print(f"OFWeiche_CP2_x_mm: {item['OFWeiche_CP2_x_mm']}")
- print(f"OFWeiche_CP2_y_mm: {item['OFWeiche_CP2_y_mm']}")
- print(f"OFWeiche_CP3_x_mm: {item['OFWeiche_CP3_x_mm']}")
- print(f"OFWeiche_CP3_y_mm: {item['OFWeiche_CP3_y_mm']}")
-
- # NEW: First find exact ProfilTyp matches and update them
+
+ # Update items with identical ProfilTyp
current_profil = item["ProfilTyp"]
exact_matches = [x for x in data
if x["ProfilTyp"] == current_profil and
- x is not item and # Exclude the current item
+ x is not item and
x.get("SivasnrTEF") is None]
if exact_matches:
- print(f"\nFound {len(exact_matches)} items with identical ProfilTyp")
for match in exact_matches:
- print(f"Updating identical ProfilTyp item: {match['Sivasnr']}")
-
fields_to_copy = [
"OFWeiche_center_line_width_mm",
"OFWeiche_center_line_height_mm",
@@ -662,11 +397,8 @@ def process_deltaweiche_items(data, WeichenkProfileWidth):
]
for field in fields_to_copy:
- old_val = match.get(field)
match[field] = item[field]
- print(f" {field}: {old_val} → {match[field]}")
- else:
- print("No similar items with identical ProfilTyp found")
+
# Find similar items (P-type)
if "WEICHE S C DELTA" in item["ProfilTyp"]:
similar_profil = item["ProfilTyp"].replace("KPL. MIT M", "KPL. MIT P")
@@ -675,39 +407,22 @@ def process_deltaweiche_items(data, WeichenkProfileWidth):
if x["ProfilTyp"] == similar_profil and
x.get("SivasnrTEF") is None]
- if similar_items:
- print(f"\nFound {len(similar_items)} similar P-type items")
- for similar in similar_items:
- print(f"\nUpdating: {similar['ProfilTyp']} (Sivasnr: {similar['Sivasnr']})")
-
- fields_to_copy = [
- "OFWeiche_center_line_width_mm",
- "OFWeiche_center_line_height_mm",
- "Objekt_width_mm",
- "Objekt_height_mm",
- "OFWeiche_CP1_x_mm",
- "OFWeiche_CP1_y_mm",
- "OFWeiche_CP2_x_mm",
- "OFWeiche_CP2_y_mm",
- "OFWeiche_CP3_x_mm",
- "OFWeiche_CP3_y_mm"
- ]
-
- print("\nUpdating:")
- for field in fields_to_copy:
- print(f" {field}: {similar.get(field)} → {item[field]}")
- similar[field] = item[field] # Actually update the similar item's value
+ for similar in similar_items:
+ fields_to_copy = [
+ "OFWeiche_center_line_width_mm",
+ "OFWeiche_center_line_height_mm",
+ "Objekt_width_mm",
+ "Objekt_height_mm",
+ "OFWeiche_CP1_x_mm",
+ "OFWeiche_CP1_y_mm",
+ "OFWeiche_CP2_x_mm",
+ "OFWeiche_CP2_y_mm",
+ "OFWeiche_CP3_x_mm",
+ "OFWeiche_CP3_y_mm"
+ ]
- choice = input("\nConfirm update for this item? (Enter to confirm/n to cancel): ").lower()
- if choice == 'n':
- print("Update for this item cancelled")
- for field in fields_to_copy:
- similar[field] = similar[field]
- else:
- print("Update for this item confirmed")
-
- else:
- print("No similar P-type items found")
+ for field in fields_to_copy:
+ similar[field] = item[field]
if __name__ == "__main__":
json_path = os.environ.get("JSON_PATH", "JSON")
diff --git a/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen.json b/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen.json
index d040d16..234c8da 100644
--- a/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen.json
+++ b/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen.json
@@ -18,6 +18,25 @@
"OFWeiche_CP3_x_mm": 14.878,
"OFWeiche_CP3_y_mm": 14.878
},
+ {
+ "Sivasnr": "OFWeicheEinfach45",
+ "ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT M",
+ "WeichenTyp": "Einzelweiche",
+ "KurvenWinkel": 45,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 350.129,
+ "OFWeiche_center_line_height_mm": 700.123,
+ "Objekt_width_mm": 418.55,
+ "Objekt_height_mm": 715.001,
+ "OFWeiche_CP1_x_mm": 365.007,
+ "OFWeiche_CP1_y_mm": 355.001,
+ "KurvenRichtung": 1,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 365.007,
+ "OFWeiche_CP2_y_mm": 715.001,
+ "OFWeiche_CP3_x_mm": 14.878,
+ "OFWeiche_CP3_y_mm": 14.878
+ },
{
"Sivasnr": 834372002,
"ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT P",
@@ -360,6 +379,25 @@
"OFWeiche_CP3_x_mm": 0.0,
"OFWeiche_CP3_y_mm": 21.04
},
+ {
+ "Sivasnr": "OFWeicheEinfach90",
+ "ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT M",
+ "WeichenTyp": "Einzelweiche",
+ "KurvenWinkel": 90,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 700.374,
+ "OFWeiche_center_line_height_mm": 700.185,
+ "Objekt_width_mm": 753.918,
+ "Objekt_height_mm": 721.225,
+ "OFWeiche_CP1_x_mm": 700.374,
+ "OFWeiche_CP1_y_mm": 361.225,
+ "KurvenRichtung": 1,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 700.374,
+ "OFWeiche_CP2_y_mm": 721.225,
+ "OFWeiche_CP3_x_mm": 0.0,
+ "OFWeiche_CP3_y_mm": 21.04
+ },
{
"Sivasnr": 834372028,
"ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT P",
@@ -474,6 +512,25 @@
"OFWeiche_CP3_x_mm": 21.04,
"OFWeiche_CP3_y_mm": 0.0
},
+ {
+ "Sivasnr": "OFWeicheParallelEinfach",
+ "ProfilTyp": "WEICHE S PARALLEL-L-200/750, KPL. MIT M",
+ "WeichenTyp": "Einzelweiche",
+ "KurvenWinkel": 0,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 200.007,
+ "OFWeiche_center_line_height_mm": 749.8,
+ "Objekt_width_mm": 274.591,
+ "Objekt_height_mm": 749.8,
+ "OFWeiche_CP1_x_mm": 221.047,
+ "OFWeiche_CP1_y_mm": 389.8,
+ "KurvenRichtung": 1,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 221.047,
+ "OFWeiche_CP2_y_mm": 749.8,
+ "OFWeiche_CP3_x_mm": 21.04,
+ "OFWeiche_CP3_y_mm": 0.0
+ },
{
"Sivasnr": 834372048,
"ProfilTyp": "WEICHE S PARALLEL-L-200/750, KPL. MIT P",
@@ -550,6 +607,25 @@
"OFWeiche_CP3_x_mm": 715.136,
"OFWeiche_CP3_y_mm": 14.878
},
+ {
+ "Sivasnr": "OFWeicheDoppel45",
+ "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT M",
+ "WeichenTyp": "Doppelweiche",
+ "KurvenWinkel": 45,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 700.258,
+ "OFWeiche_center_line_height_mm": 700.123,
+ "Objekt_width_mm": 730.013,
+ "Objekt_height_mm": 715.001,
+ "OFWeiche_CP1_x_mm": 365.007,
+ "OFWeiche_CP1_y_mm": 715.001,
+ "KurvenRichtung": 3,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 14.878,
+ "OFWeiche_CP2_y_mm": 14.878,
+ "OFWeiche_CP3_x_mm": 715.136,
+ "OFWeiche_CP3_y_mm": 14.878
+ },
{
"Sivasnr": 834372101,
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P",
@@ -835,6 +911,25 @@
"OFWeiche_CP3_x_mm": 1400.739,
"OFWeiche_CP3_y_mm": 21.04
},
+ {
+ "Sivasnr": "OFWeicheDoppel90",
+ "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT M",
+ "WeichenTyp": "Doppelweiche",
+ "KurvenWinkel": 90,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 1400.739,
+ "OFWeiche_center_line_height_mm": 700.176,
+ "Objekt_width_mm": 1400.739,
+ "Objekt_height_mm": 721.216,
+ "OFWeiche_CP1_x_mm": 700.37,
+ "OFWeiche_CP1_y_mm": 721.216,
+ "KurvenRichtung": 3,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 0.0,
+ "OFWeiche_CP2_y_mm": 21.04,
+ "OFWeiche_CP3_x_mm": 1400.739,
+ "OFWeiche_CP3_y_mm": 21.04
+ },
{
"Sivasnr": 834372110,
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P",
@@ -930,6 +1025,25 @@
"OFWeiche_CP3_x_mm": 421.054,
"OFWeiche_CP3_y_mm": 0.0
},
+ {
+ "Sivasnr": "OFWeicheParallelDoppel",
+ "ProfilTyp": "WEICHE S D PARALLEL-200/750, KPL. MIT M",
+ "WeichenTyp": "Doppelweiche",
+ "KurvenWinkel": 0,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 400.014,
+ "OFWeiche_center_line_height_mm": 749.8,
+ "Objekt_width_mm": 442.094,
+ "Objekt_height_mm": 749.8,
+ "OFWeiche_CP1_x_mm": 221.047,
+ "OFWeiche_CP1_y_mm": 749.8,
+ "KurvenRichtung": 3,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 21.04,
+ "OFWeiche_CP2_y_mm": 0.0,
+ "OFWeiche_CP3_x_mm": 421.054,
+ "OFWeiche_CP3_y_mm": 0.0
+ },
{
"Sivasnr": 834372116,
"ProfilTyp": "WEICHE S D PARALLEL-200/750, KPL. MIT P",
@@ -970,6 +1084,27 @@
"OFWeiche_CP4_x_mm": 365.007,
"OFWeiche_CP4_y_mm": 355.001
},
+ {
+ "Sivasnr": "OFWeicheDreiwege45",
+ "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT M",
+ "WeichenTyp": "Dreiwegeweiche",
+ "KurvenWinkel": 45,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 700.258,
+ "OFWeiche_center_line_height_mm": 700.123,
+ "Objekt_width_mm": 730.013,
+ "Objekt_height_mm": 715.001,
+ "OFWeiche_CP1_x_mm": 365.007,
+ "OFWeiche_CP1_y_mm": 715.001,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 14.878,
+ "OFWeiche_CP2_y_mm": 14.878,
+ "OFWeiche_CP3_x_mm": 715.136,
+ "OFWeiche_CP3_y_mm": 14.878,
+ "OFWeiche_CP4_x_mm": 365.007,
+ "OFWeiche_CP4_y_mm": 355.001
+ },
{
"Sivasnr": 834372201,
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P",
@@ -1267,6 +1402,27 @@
"OFWeiche_CP4_x_mm": 700.37,
"OFWeiche_CP4_y_mm": 361.216
},
+ {
+ "Sivasnr": "OFWeicheDreiwege90",
+ "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT M",
+ "WeichenTyp": "Dreiwegeweiche",
+ "KurvenWinkel": 90,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 1400.739,
+ "OFWeiche_center_line_height_mm": 700.176,
+ "Objekt_width_mm": 1400.739,
+ "Objekt_height_mm": 721.216,
+ "OFWeiche_CP1_x_mm": 700.37,
+ "OFWeiche_CP1_y_mm": 721.216,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 0.0,
+ "OFWeiche_CP2_y_mm": 21.04,
+ "OFWeiche_CP3_x_mm": 1400.739,
+ "OFWeiche_CP3_y_mm": 21.04,
+ "OFWeiche_CP4_x_mm": 700.37,
+ "OFWeiche_CP4_y_mm": 361.216
+ },
{
"Sivasnr": 834372210,
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P",
@@ -1366,6 +1522,27 @@
"OFWeiche_CP4_x_mm": 221.047,
"OFWeiche_CP4_y_mm": 389.8
},
+ {
+ "Sivasnr": "OFWeicheParallelDreiwege",
+ "ProfilTyp": "WEICHE S T PARALLEL-200/750, KPL. MIT M",
+ "WeichenTyp": "Dreiwegeweiche",
+ "KurvenWinkel": 0,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 400.014,
+ "OFWeiche_center_line_height_mm": 749.8,
+ "Objekt_width_mm": 442.094,
+ "Objekt_height_mm": 749.8,
+ "OFWeiche_CP1_x_mm": 221.047,
+ "OFWeiche_CP1_y_mm": 749.8,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 21.04,
+ "OFWeiche_CP2_y_mm": 0.0,
+ "OFWeiche_CP3_x_mm": 421.054,
+ "OFWeiche_CP3_y_mm": 0.0,
+ "OFWeiche_CP4_x_mm": 221.047,
+ "OFWeiche_CP4_y_mm": 389.8
+ },
{
"Sivasnr": 834372216,
"ProfilTyp": "WEICHE S T PARALLEL-200/750, KPL. MIT P",
@@ -1406,6 +1583,25 @@
"OFWeiche_CP3_x_mm": 1400.462,
"OFWeiche_CP3_y_mm": 700.237
},
+ {
+ "Sivasnr": "OFDeltaWeiche",
+ "ProfilTyp": "WEICHE S C DELTA 1400/700, KPL. MIT M",
+ "WeichenTyp": "Dreifachweiche",
+ "KurvenWinkel": 90,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 1400.462,
+ "OFWeiche_center_line_height_mm": 700.237,
+ "Objekt_width_mm": 1400.462,
+ "Objekt_height_mm": 753.781,
+ "OFWeiche_CP1_x_mm": 700.231,
+ "OFWeiche_CP1_y_mm": 0,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 0,
+ "OFWeiche_CP2_y_mm": 700.237,
+ "OFWeiche_CP3_x_mm": 1400.462,
+ "OFWeiche_CP3_y_mm": 700.237
+ },
{
"Sivasnr": 834372401,
"ProfilTyp": "WEICHE S C DELTA 1400/700, KPL. MIT P",
@@ -1541,6 +1737,27 @@
"OFWeiche_CP4_x_mm": 0,
"OFWeiche_CP4_y_mm": 700.221
},
+ {
+ "Sivasnr": 834372421,
+ "ProfilTyp": "WEICHE S C STAR 1400/1400, KPL. MIT P",
+ "WeichenTyp": "Sternweiche",
+ "KurvenWinkel": 0,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 1400.442,
+ "OFWeiche_center_line_height_mm": 1400.442,
+ "Objekt_width_mm": 1400.442,
+ "Objekt_height_mm": 1400.442,
+ "OFWeiche_CP1_x_mm": 700.221,
+ "OFWeiche_CP1_y_mm": 0,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 1400.442,
+ "OFWeiche_CP2_y_mm": 700.221,
+ "OFWeiche_CP3_x_mm": 700.221,
+ "OFWeiche_CP3_y_mm": 1400.442,
+ "OFWeiche_CP4_x_mm": 0,
+ "OFWeiche_CP4_y_mm": 700.221
+ },
{
"Sivasnr": 834342011,
"ProfilTyp": "WEICHENKOERPER S -L-, KPL. MIT M",
@@ -1560,6 +1777,25 @@
"OFWeiche_CP3_x_mm": 19.438,
"OFWeiche_CP3_y_mm": 8.052
},
+ {
+ "Sivasnr": "OFWeichenkoerperEinfach",
+ "ProfilTyp": "WEICHENKOERPER S -L-, KPL. MIT M",
+ "WeichenTyp": "Einzelweiche",
+ "KurvenWinkel": 22.5,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 101.5,
+ "OFWeiche_center_line_height_mm": 360,
+ "Objekt_width_mm": 174.482,
+ "Objekt_height_mm": 360,
+ "OFWeiche_CP1_x_mm": 120.938,
+ "OFWeiche_CP1_y_mm": 0.0,
+ "KurvenRichtung": 1,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 120.938,
+ "OFWeiche_CP2_y_mm": 360,
+ "OFWeiche_CP3_x_mm": 19.438,
+ "OFWeiche_CP3_y_mm": 8.052
+ },
{
"Sivasnr": 834342001,
"ProfilTyp": "WEICHENKOERPER S -R-, KPL. MIT M",
@@ -1636,6 +1872,25 @@
"OFWeiche_CP3_x_mm": 222.438,
"OFWeiche_CP3_y_mm": 8.052
},
+ {
+ "Sivasnr": "OFWeichenkoerperDoppel",
+ "ProfilTyp": "WEICHENKOERPER S D, KPL. MIT M",
+ "WeichenTyp": "Doppelweiche",
+ "KurvenWinkel": 22.5,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 203,
+ "OFWeiche_center_line_height_mm": 340,
+ "Objekt_width_mm": 241.877,
+ "Objekt_height_mm": 348.052,
+ "OFWeiche_CP1_x_mm": 120.939,
+ "OFWeiche_CP1_y_mm": 348.052,
+ "KurvenRichtung": 3,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 19.438,
+ "OFWeiche_CP2_y_mm": 8.052,
+ "OFWeiche_CP3_x_mm": 222.438,
+ "OFWeiche_CP3_y_mm": 8.052
+ },
{
"Sivasnr": 834342101,
"ProfilTyp": "WEICHENKOERPER S D, KPL. MIT P",
@@ -1674,7 +1929,28 @@
"OFWeiche_CP3_x_mm": 222.438,
"OFWeiche_CP3_y_mm": 20,
"OFWeiche_CP4_x_mm": 120.939,
- "OFWeiche_CP4_y_mm": -11.948
+ "OFWeiche_CP4_y_mm": 0.0
+ },
+ {
+ "Sivasnr": "OFWeichenkoerperDreiwege",
+ "ProfilTyp": "WEICHENKOERPER S T, KPL. MIT M",
+ "WeichenTyp": "Dreiwegeweiche",
+ "KurvenWinkel": 22.5,
+ "Schaltungstyp": "M",
+ "OFWeiche_center_line_width_mm": 203,
+ "OFWeiche_center_line_height_mm": 360.0,
+ "Objekt_width_mm": 241.877,
+ "Objekt_height_mm": 360.0,
+ "OFWeiche_CP1_x_mm": 120.939,
+ "OFWeiche_CP1_y_mm": 360.0,
+ "KurvenRichtung": 7,
+ "SivasnrTEF": null,
+ "OFWeiche_CP2_x_mm": 19.438,
+ "OFWeiche_CP2_y_mm": 20,
+ "OFWeiche_CP3_x_mm": 222.438,
+ "OFWeiche_CP3_y_mm": 20,
+ "OFWeiche_CP4_x_mm": 120.939,
+ "OFWeiche_CP4_y_mm": 0.0
},
{
"Sivasnr": 834342201,
@@ -1695,6 +1971,6 @@
"OFWeiche_CP3_x_mm": 222.438,
"OFWeiche_CP3_y_mm": 20,
"OFWeiche_CP4_x_mm": 120.939,
- "OFWeiche_CP4_y_mm": -11.948
+ "OFWeiche_CP4_y_mm": 0.0
}
]
\ No newline at end of file
diff --git a/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen_output.json b/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen_output.json
index 09f680a..d0fd19c 100644
--- a/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen_output.json
+++ b/SVGs/Omniflo/python/OFWeiche/json/omniflo_weichen_output.json
@@ -3300,60 +3300,12 @@
}
]
},
- {
- "Sivasnr": "OFStarWeiche",
- "ProfilTyp": "WEICHE S C STAR 1400/1400, KPL. MIT M",
- "WeichenTyp": "Sternweiche",
- "KurvenWinkel": 0,
- "Schaltungstyp": "M",
- "OFWeiche_center_line_width_mm": 1400.442,
- "OFWeiche_center_line_height_mm": 1400.442,
- "Objekt_width_mm": 1400.442,
- "Objekt_height_mm": 1400.442,
- "OFWeiche_CP1_x_mm": 700.221,
- "OFWeiche_CP1_y_mm": 0,
- "KurvenRichtung": 7,
- "SivasnrTEF": null,
- "OFWeiche_CP2_x_mm": 1400.442,
- "OFWeiche_CP2_y_mm": 700.221,
- "OFWeiche_CP3_x_mm": 700.221,
- "OFWeiche_CP3_y_mm": 1400.442,
- "OFWeiche_CP4_x_mm": 0,
- "OFWeiche_CP4_y_mm": 700.221,
- "Objekt_width_px": 5292.971,
- "Objekt_height_px": 5292.971,
- "calculated_SVG_width_px": 1000.0,
- "calculated_SVG_height_px": 1000.0,
- "scale_factor": 0.71406,
- "scale_factor_RD_Width": 1,
- "scale_factor_RD_Height": 1.0,
- "connectionPoints": [
- {
- "id": "cp1",
- "x": 500.0,
- "y": 0.0,
- "direction": 0
- },
- {
- "id": "cp2",
- "x": 1000.0,
- "y": 500.0,
- "direction": 270
- },
- {
- "id": "cp3",
- "x": 500.0,
- "y": 1000.0,
- "direction": 90
- }
- ]
- },
{
"Sivasnr": 834372421,
"ProfilTyp": "WEICHE S C STAR 1400/1400, KPL. MIT P",
"WeichenTyp": "Sternweiche",
"KurvenWinkel": 0,
- "Schaltungstyp": "P",
+ "Schaltungstyp": "M",
"OFWeiche_center_line_width_mm": 1400.442,
"OFWeiche_center_line_height_mm": 1400.442,
"Objekt_width_mm": 1400.442,