Group parallel Gefaellestrecken in the material-flow diagram

A bank of gravity lanes between the same two Kreisel (same slope) was
drawn as one box per lane, making large storage banks unreadable.
render_dot now collapses such lanes into a single Gefaellestrecke-styled
block with a double border, labelled with the id range and combined
Separator/Scanner ranges. Purely visual - the graph, --doc report and
--connect output still list every lane individually.
This commit is contained in:
2026-08-21 12:08:21 +02:00
parent 9336f18466
commit e165beeaa8
4 changed files with 298 additions and 588 deletions
+119 -534
View File
@@ -4,634 +4,219 @@
<!-- Generated by graphviz version 15.1.0 (20260618.0150)
-->
<!-- Title: Materialfluss Pages: 1 -->
<svg width="2928pt" height="5734pt"
viewBox="0.00 0.00 2928.00 5734.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 5730.07)">
<svg width="2940pt" height="5743pt"
viewBox="0.00 0.00 2940.00 5743.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 5739.44)">
<title>Materialfluss</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-5730.07 2924.07,-5730.07 2924.07,4 -4,4"/>
<text xml:space="preserve" text-anchor="middle" x="1460.04" y="-5711.62" font-family="Segoe UI" font-size="11.00">Materialfluss &#45; export.csv</text>
<polygon fill="white" stroke="none" points="-4,4 -4,-5739.44 2936.07,-5739.44 2936.07,4 -4,4"/>
<text xml:space="preserve" text-anchor="middle" x="1466.04" y="-5720.99" font-family="Segoe UI" font-size="11.00">Materialfluss &#45; mubea.csv</text>
<!-- 0001&#45;L -->
<g id="node1" class="node">
<title>0001&#45;L</title>
<path fill="#2f5597" stroke="#1f3864" d="M1241.32,-981.25C1241.32,-981.25 1182.57,-981.25 1182.57,-981.25 1176.57,-981.25 1170.57,-975.25 1170.57,-969.25 1170.57,-969.25 1170.57,-947 1170.57,-947 1170.57,-941 1176.57,-935 1182.57,-935 1182.57,-935 1241.32,-935 1241.32,-935 1247.32,-935 1253.32,-941 1253.32,-947 1253.32,-947 1253.32,-969.25 1253.32,-969.25 1253.32,-975.25 1247.32,-981.25 1241.32,-981.25"/>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-968.7" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel1 &#160;[0001&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-955.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-943.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<path fill="#2f5597" stroke="#1f3864" d="M1253.32,-990.62C1253.32,-990.62 1194.57,-990.62 1194.57,-990.62 1188.57,-990.62 1182.57,-984.62 1182.57,-978.62 1182.57,-978.62 1182.57,-956.38 1182.57,-956.38 1182.57,-950.38 1188.57,-944.38 1194.57,-944.38 1194.57,-944.38 1253.32,-944.38 1253.32,-944.38 1259.32,-944.38 1265.32,-950.38 1265.32,-956.38 1265.32,-956.38 1265.32,-978.62 1265.32,-978.62 1265.32,-984.62 1259.32,-990.62 1253.32,-990.62"/>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-978.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel1 &#160;[0001&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-965.33" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-952.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
</g>
<!-- 0002&#45;R -->
<g id="node4" class="node">
<title>0002&#45;R</title>
<path fill="#2f5597" stroke="#1f3864" d="M416.69,-3308.13C416.69,-3308.13 357.19,-3308.13 357.19,-3308.13 351.19,-3308.13 345.19,-3302.13 345.19,-3296.13 345.19,-3296.13 345.19,-3273.88 345.19,-3273.88 345.19,-3267.88 351.19,-3261.88 357.19,-3261.88 357.19,-3261.88 416.69,-3261.88 416.69,-3261.88 422.69,-3261.88 428.69,-3267.88 428.69,-3273.88 428.69,-3273.88 428.69,-3296.13 428.69,-3296.13 428.69,-3302.13 422.69,-3308.13 416.69,-3308.13"/>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3295.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel2 &#160;[0002&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3282.83" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3270.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<path fill="#2f5597" stroke="#1f3864" d="M428.69,-3317.51C428.69,-3317.51 369.19,-3317.51 369.19,-3317.51 363.19,-3317.51 357.19,-3311.51 357.19,-3305.51 357.19,-3305.51 357.19,-3283.26 357.19,-3283.26 357.19,-3277.26 363.19,-3271.26 369.19,-3271.26 369.19,-3271.26 428.69,-3271.26 428.69,-3271.26 434.69,-3271.26 440.69,-3277.26 440.69,-3283.26 440.69,-3283.26 440.69,-3305.51 440.69,-3305.51 440.69,-3311.51 434.69,-3317.51 428.69,-3317.51"/>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3304.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel2 &#160;[0002&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3292.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3279.45" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
</g>
<!-- 0001&#45;L&#45;&gt;0002&#45;R -->
<g id="edge1" class="edge">
<title>0001&#45;L&#45;&gt;0002&#45;R</title>
<g id="a_edge1"><a xlink:title="Richtung Weiche">
<path fill="none" stroke="#bf8f00" stroke-width="1.2" stroke-dasharray="5,2" d="M1200.43,-990.59C1108.22,-1250.68 490.75,-2992.22 398.47,-3252.49"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="1203,-991.72 1203.04,-983.24 1197.73,-989.85 1203,-991.72"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="395.94,-3251.27 395.9,-3259.74 401.21,-3253.14 395.94,-3251.27"/>
<path fill="none" stroke="#bf8f00" stroke-width="1.2" stroke-dasharray="5,2" d="M1212.43,-999.97C1120.22,-1260.06 502.75,-3001.59 410.47,-3261.86"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="1215,-1001.1 1215.04,-992.62 1209.73,-999.22 1215,-1001.1"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="407.94,-3260.64 407.9,-3269.12 413.21,-3262.51 407.94,-3260.64"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="786.11" y="-2124.76" font-family="Segoe UI" font-size="8.00" fill="#cc8800">Weiche</text>
<text xml:space="preserve" text-anchor="middle" x="798.11" y="-2134.13" font-family="Segoe UI" font-size="8.00" fill="#cc8800">Weiche</text>
</g>
<!-- 0001&#45;R -->
<g id="node2" class="node">
<title>0001&#45;R</title>
<path fill="#2f5597" stroke="#1f3864" d="M1244.32,-812.62C1244.32,-812.62 1179.57,-812.62 1179.57,-812.62 1173.57,-812.62 1167.57,-806.62 1167.57,-800.62 1167.57,-800.62 1167.57,-765.62 1167.57,-765.62 1167.57,-759.62 1173.57,-753.62 1179.57,-753.62 1179.57,-753.62 1244.32,-753.62 1244.32,-753.62 1250.32,-753.62 1256.32,-759.62 1256.32,-765.62 1256.32,-765.62 1256.32,-800.62 1256.32,-800.62 1256.32,-806.62 1250.32,-812.62 1244.32,-812.62"/>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-800.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel1 &#160;[0001&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-787.33" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-774.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<text xml:space="preserve" text-anchor="middle" x="1211.95" y="-761.83" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (1): 0061</text>
<path fill="#2f5597" stroke="#1f3864" d="M1256.32,-822C1256.32,-822 1191.57,-822 1191.57,-822 1185.57,-822 1179.57,-816 1179.57,-810 1179.57,-810 1179.57,-775 1179.57,-775 1179.57,-769 1185.57,-763 1191.57,-763 1191.57,-763 1256.32,-763 1256.32,-763 1262.32,-763 1268.32,-769 1268.32,-775 1268.32,-775 1268.32,-810 1268.32,-810 1268.32,-816 1262.32,-822 1256.32,-822"/>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-809.45" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel1 &#160;[0001&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-796.7" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-783.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<text xml:space="preserve" text-anchor="middle" x="1223.94" y="-771.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (1): 0061</text>
</g>
<!-- 0001&#45;R&#45;&gt;0001&#45;L -->
<g id="edge5" class="edge">
<g id="edge3" class="edge">
<title>0001&#45;R&#45;&gt;0001&#45;L</title>
<g id="a_edge5"><a xlink:title="Kreisel&#45;Umlauf UZS">
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M1211.95,-812.81C1211.95,-843.6 1211.95,-891.69 1211.95,-924.02"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="1208.8,-923.93 1211.95,-932.93 1215.1,-923.93 1208.8,-923.93"/>
<g id="a_edge3"><a xlink:title="Kreisel&#45;Umlauf UZS">
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M1223.94,-822.19C1223.94,-852.98 1223.94,-901.06 1223.94,-933.4"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="1220.8,-933.31 1223.95,-942.31 1227.1,-933.31 1220.8,-933.31"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1204.82" y="-877.56" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
<text xml:space="preserve" text-anchor="middle" x="1216.82" y="-886.93" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
</g>
<!-- 0001&#45;R&#45;&gt;0002&#45;R -->
<g id="edge2" class="edge">
<title>0001&#45;R&#45;&gt;0002&#45;R</title>
<g id="a_edge2"><a xlink:title="Richtung Weiche">
<path fill="none" stroke="#bf8f00" stroke-width="1.2" stroke-dasharray="5,2" d="M1199.1,-822.08C1102.18,-1116.01 487.19,-2981.01 397.78,-3252.15"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="1201.69,-823.16 1201.54,-814.69 1196.37,-821.41 1201.69,-823.16"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="395.12,-3251.26 395.28,-3259.74 400.44,-3253.02 395.12,-3251.26"/>
<path fill="none" stroke="#bf8f00" stroke-width="1.2" stroke-dasharray="5,2" d="M1211.1,-831.46C1114.18,-1125.38 499.19,-2990.39 409.78,-3261.52"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="1213.69,-832.54 1213.54,-824.07 1208.37,-830.79 1213.69,-832.54"/>
<polygon fill="#bf8f00" stroke="#bf8f00" stroke-width="1.2" points="407.12,-3260.64 407.28,-3269.11 412.44,-3262.39 407.12,-3260.64"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="782.11" y="-2049.34" font-family="Segoe UI" font-size="8.00" fill="#cc8800">Weiche</text>
<text xml:space="preserve" text-anchor="middle" x="794.11" y="-2058.71" font-family="Segoe UI" font-size="8.00" fill="#cc8800">Weiche</text>
</g>
<!-- 0002&#45;L -->
<g id="node3" class="node">
<title>0002&#45;L</title>
<path fill="#2f5597" stroke="#1f3864" d="M441.82,-3495.88C441.82,-3495.88 332.07,-3495.88 332.07,-3495.88 326.07,-3495.88 320.07,-3489.88 320.07,-3483.88 320.07,-3483.88 320.07,-3436.13 320.07,-3436.13 320.07,-3430.13 326.07,-3424.13 332.07,-3424.13 332.07,-3424.13 441.82,-3424.13 441.82,-3424.13 447.82,-3424.13 453.82,-3430.13 453.82,-3436.13 453.82,-3436.13 453.82,-3483.88 453.82,-3483.88 453.82,-3489.88 447.82,-3495.88 441.82,-3495.88"/>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3483.33" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel2 &#160;[0002&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3470.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3457.83" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3445.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (3): 0003, 0011, 0012</text>
<text xml:space="preserve" text-anchor="middle" x="386.94" y="-3432.33" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Scanner (3): 0004, 0007, 0009</text>
<path fill="#2f5597" stroke="#1f3864" d="M453.82,-3505.26C453.82,-3505.26 344.07,-3505.26 344.07,-3505.26 338.07,-3505.26 332.07,-3499.26 332.07,-3493.26 332.07,-3493.26 332.07,-3445.51 332.07,-3445.51 332.07,-3439.51 338.07,-3433.51 344.07,-3433.51 344.07,-3433.51 453.82,-3433.51 453.82,-3433.51 459.82,-3433.51 465.82,-3439.51 465.82,-3445.51 465.82,-3445.51 465.82,-3493.26 465.82,-3493.26 465.82,-3499.26 459.82,-3505.26 453.82,-3505.26"/>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3492.7" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel2 &#160;[0002&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3479.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3467.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.470 m</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3454.45" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (3): 0003, 0011, 0012</text>
<text xml:space="preserve" text-anchor="middle" x="398.94" y="-3441.7" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Scanner (3): 0004, 0007, 0009</text>
</g>
<!-- 0016 -->
<g id="node9" class="node">
<title>0016</title>
<path fill="#e2f0d9" stroke="#548235" d="M279.12,-3816.49C279.12,-3816.49 179.13,-3816.49 179.13,-3816.49 173.13,-3816.49 167.13,-3810.49 167.13,-3804.49 167.13,-3804.49 167.13,-3743.99 167.13,-3743.99 167.13,-3737.99 173.13,-3731.99 179.13,-3731.99 179.13,-3731.99 279.12,-3731.99 279.12,-3731.99 285.12,-3731.99 291.12,-3737.99 291.12,-3743.99 291.12,-3743.99 291.12,-3804.49 291.12,-3804.49 291.12,-3810.49 285.12,-3816.49 279.12,-3816.49"/>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3803.94" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :1 &#160;[0016]</text>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3791.19" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3778.44" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.000 m</text>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3765.69" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 0 mm (+0) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3752.94" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0058, 0059</text>
<text xml:space="preserve" text-anchor="middle" x="229.13" y="-3740.19" font-family="Segoe UI" font-size="9.00" fill="#375623">Scanner (1): 0060</text>
<path fill="#e2f0d9" stroke="#548235" d="M291.12,-3825.87C291.12,-3825.87 191.12,-3825.87 191.12,-3825.87 185.12,-3825.87 179.12,-3819.87 179.12,-3813.87 179.12,-3813.87 179.12,-3753.37 179.12,-3753.37 179.12,-3747.37 185.12,-3741.37 191.12,-3741.37 191.12,-3741.37 291.12,-3741.37 291.12,-3741.37 297.12,-3741.37 303.12,-3747.37 303.12,-3753.37 303.12,-3753.37 303.12,-3813.87 303.12,-3813.87 303.12,-3819.87 297.12,-3825.87 291.12,-3825.87"/>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3813.32" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :1 &#160;[0016]</text>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3800.57" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3787.82" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.000 m</text>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3775.07" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 0 mm (+0) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3762.32" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0058, 0059</text>
<text xml:space="preserve" text-anchor="middle" x="241.12" y="-3749.57" font-family="Segoe UI" font-size="9.00" fill="#375623">Scanner (1): 0060</text>
</g>
<!-- 0002&#45;L&#45;&gt;0016 -->
<g id="edge46" class="edge">
<g id="edge8" class="edge">
<title>0002&#45;L&#45;&gt;0016</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M368.69,-3496.36C340.63,-3552.22 286.83,-3659.35 254.84,-3723.04"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="252.38,-3721.7 251.29,-3730.1 257.39,-3724.21 252.38,-3721.7"/>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M380.69,-3505.73C352.63,-3561.59 298.83,-3668.72 266.84,-3732.41"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="264.38,-3731.07 263.29,-3739.48 269.39,-3733.59 264.38,-3731.07"/>
</g>
<!-- 0002&#45;R&#45;&gt;0002&#45;L -->
<g id="edge4" class="edge">
<title>0002&#45;R&#45;&gt;0002&#45;L</title>
<g id="a_edge4"><a xlink:title="Kreisel&#45;Umlauf UZS">
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M386.94,-3308.61C386.94,-3335.29 386.94,-3379.42 386.94,-3413.16"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="383.8,-3412.9 386.95,-3421.9 390.1,-3412.9 383.8,-3412.9"/>
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M398.94,-3317.98C398.94,-3344.67 398.94,-3388.79 398.94,-3422.54"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="395.8,-3422.28 398.95,-3431.28 402.1,-3422.28 395.8,-3422.28"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="379.82" y="-3369.77" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
<text xml:space="preserve" text-anchor="middle" x="391.82" y="-3379.15" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
</g>
<!-- 0013 -->
<g id="node7" class="node">
<title>0013</title>
<path fill="#e2f0d9" stroke="#548235" d="M1681.56,-5703.07C1681.56,-5703.07 1563.56,-5703.07 1563.56,-5703.07 1557.56,-5703.07 1551.56,-5697.07 1551.56,-5691.07 1551.56,-5691.07 1551.56,-5643.32 1551.56,-5643.32 1551.56,-5637.32 1557.56,-5631.32 1563.56,-5631.32 1563.56,-5631.32 1681.56,-5631.32 1681.56,-5631.32 1687.56,-5631.32 1693.56,-5637.32 1693.56,-5643.32 1693.56,-5643.32 1693.56,-5691.07 1693.56,-5691.07 1693.56,-5697.07 1687.56,-5703.07 1681.56,-5703.07"/>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-5690.52" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :3 &#160;[0013]</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-5677.77" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-5665.02" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.237 m</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-5652.27" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 474 mm (+474) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-5639.52" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0015, 0062</text>
<path fill="#e2f0d9" stroke="#548235" d="M1693.56,-5712.44C1693.56,-5712.44 1575.56,-5712.44 1575.56,-5712.44 1569.56,-5712.44 1563.56,-5706.44 1563.56,-5700.44 1563.56,-5700.44 1563.56,-5652.69 1563.56,-5652.69 1563.56,-5646.69 1569.56,-5640.69 1575.56,-5640.69 1575.56,-5640.69 1693.56,-5640.69 1693.56,-5640.69 1699.56,-5640.69 1705.56,-5646.69 1705.56,-5652.69 1705.56,-5652.69 1705.56,-5700.44 1705.56,-5700.44 1705.56,-5706.44 1699.56,-5712.44 1693.56,-5712.44"/>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-5699.89" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :3 &#160;[0013]</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-5687.14" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-5674.39" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.237 m</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-5661.64" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 474 mm (+474) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-5648.89" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0015, 0062</text>
</g>
<!-- 0002&#45;R&#45;&gt;0013 -->
<g id="edge50" class="edge">
<g id="edge12" class="edge">
<title>0002&#45;R&#45;&gt;0013</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M399.2,-3308.48C413.29,-3335.48 437.1,-3381.15 457.52,-3420.43 918.48,-4307.16 1480.01,-5391.79 1599.53,-5622.68"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1596.92,-5623.73 1603.08,-5629.55 1601.89,-5621.16 1596.92,-5623.73"/>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M411.2,-3317.86C425.29,-3344.86 449.1,-3390.52 469.52,-3429.81 930.48,-4316.54 1492.01,-5401.17 1611.53,-5632.06"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1608.92,-5633.11 1615.08,-5638.93 1613.89,-5630.53 1608.92,-5633.11"/>
</g>
<!-- 0014 -->
<g id="node8" class="node">
<title>0014</title>
<path fill="#e2f0d9" stroke="#548235" d="M1681.56,-1146.19C1681.56,-1146.19 1563.56,-1146.19 1563.56,-1146.19 1557.56,-1146.19 1551.56,-1140.19 1551.56,-1134.19 1551.56,-1134.19 1551.56,-1073.69 1551.56,-1073.69 1551.56,-1067.69 1557.56,-1061.69 1563.56,-1061.69 1563.56,-1061.69 1681.56,-1061.69 1681.56,-1061.69 1687.56,-1061.69 1693.56,-1067.69 1693.56,-1073.69 1693.56,-1073.69 1693.56,-1134.19 1693.56,-1134.19 1693.56,-1140.19 1687.56,-1146.19 1681.56,-1146.19"/>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1133.64" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :2 &#160;[0014]</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1120.89" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1108.14" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.237 m</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1095.39" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 474 mm (+474) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1082.64" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0057, 0065</text>
<text xml:space="preserve" text-anchor="middle" x="1622.56" y="-1069.89" font-family="Segoe UI" font-size="9.00" fill="#375623">Scanner (1): 0006</text>
<path fill="#e2f0d9" stroke="#548235" d="M1693.56,-1155.57C1693.56,-1155.57 1575.56,-1155.57 1575.56,-1155.57 1569.56,-1155.57 1563.56,-1149.57 1563.56,-1143.57 1563.56,-1143.57 1563.56,-1083.07 1563.56,-1083.07 1563.56,-1077.07 1569.56,-1071.07 1575.56,-1071.07 1575.56,-1071.07 1693.56,-1071.07 1693.56,-1071.07 1699.56,-1071.07 1705.56,-1077.07 1705.56,-1083.07 1705.56,-1083.07 1705.56,-1143.57 1705.56,-1143.57 1705.56,-1149.57 1699.56,-1155.57 1693.56,-1155.57"/>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1143.02" font-family="Segoe UI" font-size="9.00" fill="#375623">VarioFoerderer :2 &#160;[0014]</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1130.27" font-family="Segoe UI" font-size="9.00" fill="#375623">Strecke</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1117.52" font-family="Segoe UI" font-size="9.00" fill="#375623">h = 0.237 m</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1104.77" font-family="Segoe UI" font-size="9.00" fill="#375623">0 &#45;&gt; 474 mm (+474) = aufwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1092.02" font-family="Segoe UI" font-size="9.00" fill="#375623">Separator (2): 0057, 0065</text>
<text xml:space="preserve" text-anchor="middle" x="1634.56" y="-1079.27" font-family="Segoe UI" font-size="9.00" fill="#375623">Scanner (1): 0006</text>
</g>
<!-- 0002&#45;R&#45;&gt;0014 -->
<g id="edge48" class="edge">
<g id="edge10" class="edge">
<title>0002&#45;R&#45;&gt;0014</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M400.19,-3261.62C520.3,-3049.62 1420.55,-1460.54 1593.78,-1154.76"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1596.05,-1156.43 1597.55,-1148.09 1591.18,-1153.67 1596.05,-1156.43"/>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M412.19,-3271C532.3,-3058.99 1432.55,-1469.91 1605.78,-1164.14"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1608.05,-1165.81 1609.55,-1157.47 1603.18,-1163.05 1608.05,-1165.81"/>
</g>
<!-- 0010&#45;L -->
<g id="node5" class="node">
<title>0010&#45;L</title>
<path fill="#2f5597" stroke="#1f3864" d="M2893.82,-3483.13C2893.82,-3483.13 2835.07,-3483.13 2835.07,-3483.13 2829.07,-3483.13 2823.07,-3477.13 2823.07,-3471.13 2823.07,-3471.13 2823.07,-3448.88 2823.07,-3448.88 2823.07,-3442.88 2829.07,-3436.88 2835.07,-3436.88 2835.07,-3436.88 2893.82,-3436.88 2893.82,-3436.88 2899.82,-3436.88 2905.82,-3442.88 2905.82,-3448.88 2905.82,-3448.88 2905.82,-3471.13 2905.82,-3471.13 2905.82,-3477.13 2899.82,-3483.13 2893.82,-3483.13"/>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3470.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel3 &#160;[0010&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3457.83" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3445.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.940 m</text>
<path fill="#2f5597" stroke="#1f3864" d="M2905.82,-3492.51C2905.82,-3492.51 2847.07,-3492.51 2847.07,-3492.51 2841.07,-3492.51 2835.07,-3486.51 2835.07,-3480.51 2835.07,-3480.51 2835.07,-3458.26 2835.07,-3458.26 2835.07,-3452.26 2841.07,-3446.26 2847.07,-3446.26 2847.07,-3446.26 2905.82,-3446.26 2905.82,-3446.26 2911.82,-3446.26 2917.82,-3452.26 2917.82,-3458.26 2917.82,-3458.26 2917.82,-3480.51 2917.82,-3480.51 2917.82,-3486.51 2911.82,-3492.51 2905.82,-3492.51"/>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3479.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel3 &#160;[0010&#45;L]</text>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3467.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn L (links)</text>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3454.45" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.940 m</text>
</g>
<!-- 0017 -->
<!-- grp_0017 -->
<g id="node10" class="node">
<title>0017</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-5327.64C1693.98,-5327.64 1563.23,-5327.64 1563.23,-5327.64 1557.23,-5327.64 1551.23,-5321.64 1551.23,-5315.64 1551.23,-5315.64 1551.23,-5267.89 1551.23,-5267.89 1551.23,-5261.89 1557.23,-5255.89 1563.23,-5255.89 1563.23,-5255.89 1693.98,-5255.89 1693.98,-5255.89 1699.98,-5255.89 1705.98,-5261.89 1705.98,-5267.89 1705.98,-5267.89 1705.98,-5315.64 1705.98,-5315.64 1705.98,-5321.64 1699.98,-5327.64 1693.98,-5327.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5315.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :20 &#160;[0017]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5302.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5289.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5276.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5264.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0037</text>
<title>grp_0017</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1705.98,-3443.39C1705.98,-3443.39 1575.23,-3443.39 1575.23,-3443.39 1569.23,-3443.39 1563.23,-3437.39 1563.23,-3431.39 1563.23,-3431.39 1563.23,-3370.89 1563.23,-3370.89 1563.23,-3364.89 1569.23,-3358.89 1575.23,-3358.89 1575.23,-3358.89 1705.98,-3358.89 1705.98,-3358.89 1711.98,-3358.89 1717.98,-3364.89 1717.98,-3370.89 1717.98,-3370.89 1717.98,-3431.39 1717.98,-3431.39 1717.98,-3437.39 1711.98,-3443.39 1705.98,-3443.39"/>
<path fill="none" stroke="#c55a11" d="M1709.98,-3447.39C1709.98,-3447.39 1571.23,-3447.39 1571.23,-3447.39 1565.23,-3447.39 1559.23,-3441.39 1559.23,-3435.39 1559.23,-3435.39 1559.23,-3366.89 1559.23,-3366.89 1559.23,-3360.89 1565.23,-3354.89 1571.23,-3354.89 1571.23,-3354.89 1709.98,-3354.89 1709.98,-3354.89 1715.98,-3354.89 1721.98,-3360.89 1721.98,-3366.89 1721.98,-3366.89 1721.98,-3435.39 1721.98,-3435.39 1721.98,-3441.39 1715.98,-3447.39 1709.98,-3447.39"/>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3430.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke 0017 &#45;&gt; 0036 (20x)</text>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3418.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gruppe paralleler Schwerkraftlinien</text>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3405.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3392.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3379.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (21): 0005 &#45; 0056</text>
<text xml:space="preserve" text-anchor="middle" x="1640.61" y="-3367.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Scanner (1): 0066</text>
</g>
<!-- 0010&#45;L&#45;&gt;0017 -->
<g id="edge44" class="edge">
<title>0010&#45;L&#45;&gt;0017</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2848.59,-3483.5C2718.91,-3675.72 1832.79,-4989.12 1658.37,-5247.64"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1656.12,-5245.98 1653.96,-5254.18 1660.76,-5249.11 1656.12,-5245.98"/>
</g>
<!-- 0018 -->
<g id="node11" class="node">
<title>0018</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-5127.64C1693.98,-5127.64 1563.23,-5127.64 1563.23,-5127.64 1557.23,-5127.64 1551.23,-5121.64 1551.23,-5115.64 1551.23,-5115.64 1551.23,-5067.89 1551.23,-5067.89 1551.23,-5061.89 1557.23,-5055.89 1563.23,-5055.89 1563.23,-5055.89 1693.98,-5055.89 1693.98,-5055.89 1699.98,-5055.89 1705.98,-5061.89 1705.98,-5067.89 1705.98,-5067.89 1705.98,-5115.64 1705.98,-5115.64 1705.98,-5121.64 1699.98,-5127.64 1693.98,-5127.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5115.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :19 &#160;[0018]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5102.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5089.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5076.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-5064.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0038</text>
</g>
<!-- 0010&#45;L&#45;&gt;0018 -->
<g id="edge42" class="edge">
<title>0010&#45;L&#45;&gt;0018</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2846.74,-3483.39C2711.56,-3661.86 1843.31,-4808.27 1661.83,-5047.9"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1659.61,-5046.19 1657.01,-5054.26 1664.07,-5049.57 1659.61,-5046.19"/>
</g>
<!-- 0019 -->
<g id="node12" class="node">
<title>0019</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-4927.64C1693.98,-4927.64 1563.23,-4927.64 1563.23,-4927.64 1557.23,-4927.64 1551.23,-4921.64 1551.23,-4915.64 1551.23,-4915.64 1551.23,-4867.89 1551.23,-4867.89 1551.23,-4861.89 1557.23,-4855.89 1563.23,-4855.89 1563.23,-4855.89 1693.98,-4855.89 1693.98,-4855.89 1699.98,-4855.89 1705.98,-4861.89 1705.98,-4867.89 1705.98,-4867.89 1705.98,-4915.64 1705.98,-4915.64 1705.98,-4921.64 1699.98,-4927.64 1693.98,-4927.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4915.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :18 &#160;[0019]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4902.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4889.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4876.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4864.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0039</text>
</g>
<!-- 0010&#45;L&#45;&gt;0019 -->
<g id="edge40" class="edge">
<title>0010&#45;L&#45;&gt;0019</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2844.28,-3483.37C2702.46,-3647.67 1855.06,-4629.41 1665.99,-4848.45"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1664.1,-4846.36 1660.99,-4854.24 1668.34,-4850.02 1664.1,-4846.36"/>
</g>
<!-- 0020 -->
<g id="node13" class="node">
<title>0020</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-4727.64C1693.98,-4727.64 1563.23,-4727.64 1563.23,-4727.64 1557.23,-4727.64 1551.23,-4721.64 1551.23,-4715.64 1551.23,-4715.64 1551.23,-4667.89 1551.23,-4667.89 1551.23,-4661.89 1557.23,-4655.89 1563.23,-4655.89 1563.23,-4655.89 1693.98,-4655.89 1693.98,-4655.89 1699.98,-4655.89 1705.98,-4661.89 1705.98,-4667.89 1705.98,-4667.89 1705.98,-4715.64 1705.98,-4715.64 1705.98,-4721.64 1699.98,-4727.64 1693.98,-4727.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4715.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :17 &#160;[0020]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4702.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4689.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4676.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4664.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0040</text>
</g>
<!-- 0010&#45;L&#45;&gt;0020 -->
<g id="edge38" class="edge">
<title>0010&#45;L&#45;&gt;0020</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2840.86,-3483.51C2690.89,-3632.99 1870.17,-4451 1671.79,-4648.73"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1669.97,-4646.58 1666.28,-4654.21 1673.92,-4650.55 1669.97,-4646.58"/>
</g>
<!-- 0021 -->
<g id="node14" class="node">
<title>0021</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-4527.64C1693.98,-4527.64 1563.23,-4527.64 1563.23,-4527.64 1557.23,-4527.64 1551.23,-4521.64 1551.23,-4515.64 1551.23,-4515.64 1551.23,-4467.89 1551.23,-4467.89 1551.23,-4461.89 1557.23,-4455.89 1563.23,-4455.89 1563.23,-4455.89 1693.98,-4455.89 1693.98,-4455.89 1699.98,-4455.89 1705.98,-4461.89 1705.98,-4467.89 1705.98,-4467.89 1705.98,-4515.64 1705.98,-4515.64 1705.98,-4521.64 1699.98,-4527.64 1693.98,-4527.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4515.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :16 &#160;[0021]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4502.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4489.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4476.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4464.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0041</text>
</g>
<!-- 0010&#45;L&#45;&gt;0021 -->
<g id="edge36" class="edge">
<title>0010&#45;L&#45;&gt;0021</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2836.31,-3483.49C2677.05,-3616.46 1888.32,-4274.94 1679.44,-4449.33"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1677.7,-4447.13 1673.36,-4454.4 1681.29,-4451.43 1677.7,-4447.13"/>
</g>
<!-- 0022 -->
<g id="node15" class="node">
<title>0022</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-4327.64C1693.98,-4327.64 1563.23,-4327.64 1563.23,-4327.64 1557.23,-4327.64 1551.23,-4321.64 1551.23,-4315.64 1551.23,-4315.64 1551.23,-4267.89 1551.23,-4267.89 1551.23,-4261.89 1557.23,-4255.89 1563.23,-4255.89 1563.23,-4255.89 1693.98,-4255.89 1693.98,-4255.89 1699.98,-4255.89 1705.98,-4261.89 1705.98,-4267.89 1705.98,-4267.89 1705.98,-4315.64 1705.98,-4315.64 1705.98,-4321.64 1699.98,-4327.64 1693.98,-4327.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4315.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :15 &#160;[0022]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4302.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4289.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4276.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4264.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0042</text>
</g>
<!-- 0010&#45;L&#45;&gt;0022 -->
<g id="edge34" class="edge">
<title>0010&#45;L&#45;&gt;0022</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2829.45,-3483.56C2658.63,-3598.53 1911.67,-4101.25 1690.51,-4250.1"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1689.13,-4247.65 1684.06,-4254.44 1692.26,-4252.3 1689.13,-4247.65"/>
</g>
<!-- 0023 -->
<g id="node16" class="node">
<title>0023</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-4127.64C1693.98,-4127.64 1563.23,-4127.64 1563.23,-4127.64 1557.23,-4127.64 1551.23,-4121.64 1551.23,-4115.64 1551.23,-4115.64 1551.23,-4067.89 1551.23,-4067.89 1551.23,-4061.89 1557.23,-4055.89 1563.23,-4055.89 1563.23,-4055.89 1693.98,-4055.89 1693.98,-4055.89 1699.98,-4055.89 1705.98,-4061.89 1705.98,-4067.89 1705.98,-4067.89 1705.98,-4115.64 1705.98,-4115.64 1705.98,-4121.64 1699.98,-4127.64 1693.98,-4127.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4115.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :14 &#160;[0023]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4102.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4089.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4076.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-4064.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0043</text>
</g>
<!-- 0010&#45;L&#45;&gt;0023 -->
<g id="edge32" class="edge">
<title>0010&#45;L&#45;&gt;0023</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3481.39C2644.26,-3572.56 1945.55,-3929.74 1708.09,-4051.13"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1706.97,-4048.56 1701.12,-4054.7 1709.52,-4053.55 1706.97,-4048.56"/>
</g>
<!-- 0024 -->
<g id="node17" class="node">
<title>0024</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-3927.64C1693.98,-3927.64 1563.23,-3927.64 1563.23,-3927.64 1557.23,-3927.64 1551.23,-3921.64 1551.23,-3915.64 1551.23,-3915.64 1551.23,-3867.89 1551.23,-3867.89 1551.23,-3861.89 1557.23,-3855.89 1563.23,-3855.89 1563.23,-3855.89 1693.98,-3855.89 1693.98,-3855.89 1699.98,-3855.89 1705.98,-3861.89 1705.98,-3867.89 1705.98,-3867.89 1705.98,-3915.64 1705.98,-3915.64 1705.98,-3921.64 1699.98,-3927.64 1693.98,-3927.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3915.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :13 &#160;[0024]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3902.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3889.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3876.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3864.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0044</text>
</g>
<!-- 0010&#45;L&#45;&gt;0024 -->
<g id="edge30" class="edge">
<title>0010&#45;L&#45;&gt;0024</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3474.62C2646.11,-3536.28 1960.05,-3775.97 1715.66,-3861.35"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1714.8,-3858.69 1708.17,-3863.97 1716.64,-3863.97 1714.8,-3858.69"/>
</g>
<!-- 0025 -->
<g id="node18" class="node">
<title>0025</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-3727.64C1693.98,-3727.64 1563.23,-3727.64 1563.23,-3727.64 1557.23,-3727.64 1551.23,-3721.64 1551.23,-3715.64 1551.23,-3715.64 1551.23,-3667.89 1551.23,-3667.89 1551.23,-3661.89 1557.23,-3655.89 1563.23,-3655.89 1563.23,-3655.89 1693.98,-3655.89 1693.98,-3655.89 1699.98,-3655.89 1705.98,-3661.89 1705.98,-3667.89 1705.98,-3667.89 1705.98,-3715.64 1705.98,-3715.64 1705.98,-3721.64 1699.98,-3727.64 1693.98,-3727.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3715.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :12 &#160;[0025]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3702.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3689.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3676.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3664.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0045</text>
</g>
<!-- 0010&#45;L&#45;&gt;0025 -->
<g id="edge28" class="edge">
<title>0010&#45;L&#45;&gt;0025</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3467.85C2646.2,-3500.93 1960.73,-3629.48 1716.02,-3675.37"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1715.59,-3672.6 1708.24,-3676.83 1716.62,-3678.11 1715.59,-3672.6"/>
</g>
<!-- 0026 -->
<g id="node19" class="node">
<title>0026</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-3527.64C1693.98,-3527.64 1563.23,-3527.64 1563.23,-3527.64 1557.23,-3527.64 1551.23,-3521.64 1551.23,-3515.64 1551.23,-3515.64 1551.23,-3467.89 1551.23,-3467.89 1551.23,-3461.89 1557.23,-3455.89 1563.23,-3455.89 1563.23,-3455.89 1693.98,-3455.89 1693.98,-3455.89 1699.98,-3455.89 1705.98,-3461.89 1705.98,-3467.89 1705.98,-3467.89 1705.98,-3515.64 1705.98,-3515.64 1705.98,-3521.64 1699.98,-3527.64 1693.98,-3527.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3515.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :11 &#160;[0026]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3502.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3489.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3476.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3464.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0046</text>
</g>
<!-- 0010&#45;L&#45;&gt;0026 -->
<g id="edge26" class="edge">
<title>0010&#45;L&#45;&gt;0026</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3461.08C2646.2,-3465.61 1960.73,-3483.23 1716.02,-3489.52"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1716.19,-3486.71 1708.27,-3489.72 1716.34,-3492.31 1716.19,-3486.71"/>
</g>
<!-- 0027 -->
<g id="node20" class="node">
<title>0027</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-3327.64C1693.98,-3327.64 1563.23,-3327.64 1563.23,-3327.64 1557.23,-3327.64 1551.23,-3321.64 1551.23,-3315.64 1551.23,-3315.64 1551.23,-3267.89 1551.23,-3267.89 1551.23,-3261.89 1557.23,-3255.89 1563.23,-3255.89 1563.23,-3255.89 1693.98,-3255.89 1693.98,-3255.89 1699.98,-3255.89 1705.98,-3261.89 1705.98,-3267.89 1705.98,-3267.89 1705.98,-3315.64 1705.98,-3315.64 1705.98,-3321.64 1699.98,-3327.64 1693.98,-3327.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3315.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :10 &#160;[0027]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3302.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3289.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3276.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3264.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0047</text>
</g>
<!-- 0010&#45;L&#45;&gt;0027 -->
<g id="edge24" class="edge">
<title>0010&#45;L&#45;&gt;0027</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3454.31C2646.2,-3430.29 1960.73,-3336.98 1716.02,-3303.67"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1716.56,-3300.91 1708.25,-3302.61 1715.8,-3306.46 1716.56,-3300.91"/>
</g>
<!-- 0028 -->
<g id="node21" class="node">
<title>0028</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-3127.64C1693.98,-3127.64 1563.23,-3127.64 1563.23,-3127.64 1557.23,-3127.64 1551.23,-3121.64 1551.23,-3115.64 1551.23,-3115.64 1551.23,-3067.89 1551.23,-3067.89 1551.23,-3061.89 1557.23,-3055.89 1563.23,-3055.89 1563.23,-3055.89 1693.98,-3055.89 1693.98,-3055.89 1699.98,-3055.89 1705.98,-3061.89 1705.98,-3067.89 1705.98,-3067.89 1705.98,-3115.64 1705.98,-3115.64 1705.98,-3121.64 1699.98,-3127.64 1693.98,-3127.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3115.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :9 &#160;[0028]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3102.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3089.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3076.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-3064.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0048</text>
</g>
<!-- 0010&#45;L&#45;&gt;0028 -->
<g id="edge22" class="edge">
<title>0010&#45;L&#45;&gt;0028</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3447.54C2646.11,-3394.95 1960.05,-3190.52 1715.66,-3117.7"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1716.66,-3115.08 1708.19,-3115.48 1715.06,-3120.45 1716.66,-3115.08"/>
</g>
<!-- 0029 -->
<g id="node22" class="node">
<title>0029</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-2927.64C1693.98,-2927.64 1563.23,-2927.64 1563.23,-2927.64 1557.23,-2927.64 1551.23,-2921.64 1551.23,-2915.64 1551.23,-2915.64 1551.23,-2867.89 1551.23,-2867.89 1551.23,-2861.89 1557.23,-2855.89 1563.23,-2855.89 1563.23,-2855.89 1693.98,-2855.89 1693.98,-2855.89 1699.98,-2855.89 1705.98,-2861.89 1705.98,-2867.89 1705.98,-2867.89 1705.98,-2915.64 1705.98,-2915.64 1705.98,-2921.64 1699.98,-2927.64 1693.98,-2927.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2915.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :8 &#160;[0029]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2902.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2889.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2876.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2864.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0049</text>
</g>
<!-- 0010&#45;L&#45;&gt;0029 -->
<g id="edge20" class="edge">
<title>0010&#45;L&#45;&gt;0029</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2822.62,-3440.77C2646.03,-3359.58 1959.37,-3043.85 1715.3,-2931.63"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1716.54,-2929.12 1708.1,-2928.32 1714.2,-2934.2 1716.54,-2929.12"/>
</g>
<!-- 0030 -->
<g id="node23" class="node">
<title>0030</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-2727.64C1693.98,-2727.64 1563.23,-2727.64 1563.23,-2727.64 1557.23,-2727.64 1551.23,-2721.64 1551.23,-2715.64 1551.23,-2715.64 1551.23,-2667.89 1551.23,-2667.89 1551.23,-2661.89 1557.23,-2655.89 1563.23,-2655.89 1563.23,-2655.89 1693.98,-2655.89 1693.98,-2655.89 1699.98,-2655.89 1705.98,-2661.89 1705.98,-2667.89 1705.98,-2667.89 1705.98,-2715.64 1705.98,-2715.64 1705.98,-2721.64 1699.98,-2727.64 1693.98,-2727.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2715.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :7 &#160;[0030]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2702.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2689.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2676.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2664.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0050</text>
</g>
<!-- 0010&#45;L&#45;&gt;0030 -->
<g id="edge18" class="edge">
<title>0010&#45;L&#45;&gt;0030</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2826.44,-3436.38C2651.2,-3327.44 1920.01,-2872.91 1694.88,-2732.96"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1696.58,-2730.72 1688.31,-2728.88 1693.62,-2735.48 1696.58,-2730.72"/>
</g>
<!-- 0031 -->
<g id="node24" class="node">
<title>0031</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-2527.64C1693.98,-2527.64 1563.23,-2527.64 1563.23,-2527.64 1557.23,-2527.64 1551.23,-2521.64 1551.23,-2515.64 1551.23,-2515.64 1551.23,-2467.89 1551.23,-2467.89 1551.23,-2461.89 1557.23,-2455.89 1563.23,-2455.89 1563.23,-2455.89 1693.98,-2455.89 1693.98,-2455.89 1699.98,-2455.89 1705.98,-2461.89 1705.98,-2467.89 1705.98,-2467.89 1705.98,-2515.64 1705.98,-2515.64 1705.98,-2521.64 1699.98,-2527.64 1693.98,-2527.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2515.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :6 &#160;[0031]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2502.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2489.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2476.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2464.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0051</text>
</g>
<!-- 0010&#45;L&#45;&gt;0031 -->
<g id="edge16" class="edge">
<title>0010&#45;L&#45;&gt;0031</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2834.51,-3436.55C2672.02,-3309.25 1895.48,-2700.85 1682.65,-2534.11"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1684.47,-2531.98 1676.45,-2529.25 1681.02,-2536.39 1684.47,-2531.98"/>
</g>
<!-- 0032 -->
<g id="node25" class="node">
<title>0032</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-2327.64C1693.98,-2327.64 1563.23,-2327.64 1563.23,-2327.64 1557.23,-2327.64 1551.23,-2321.64 1551.23,-2315.64 1551.23,-2315.64 1551.23,-2267.89 1551.23,-2267.89 1551.23,-2261.89 1557.23,-2255.89 1563.23,-2255.89 1563.23,-2255.89 1693.98,-2255.89 1693.98,-2255.89 1699.98,-2255.89 1705.98,-2261.89 1705.98,-2267.89 1705.98,-2267.89 1705.98,-2315.64 1705.98,-2315.64 1705.98,-2321.64 1699.98,-2327.64 1693.98,-2327.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2315.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :5 &#160;[0032]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2302.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2289.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2276.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2264.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0052</text>
</g>
<!-- 0010&#45;L&#45;&gt;0032 -->
<g id="edge14" class="edge">
<title>0010&#45;L&#45;&gt;0032</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2839.48,-3436.4C2686.46,-3291.75 1875.24,-2524.91 1673.87,-2334.56"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1676.03,-2332.74 1668.29,-2329.28 1672.18,-2336.81 1676.03,-2332.74"/>
</g>
<!-- 0033 -->
<g id="node26" class="node">
<title>0033</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-2127.64C1693.98,-2127.64 1563.23,-2127.64 1563.23,-2127.64 1557.23,-2127.64 1551.23,-2121.64 1551.23,-2115.64 1551.23,-2115.64 1551.23,-2067.89 1551.23,-2067.89 1551.23,-2061.89 1557.23,-2055.89 1563.23,-2055.89 1563.23,-2055.89 1693.98,-2055.89 1693.98,-2055.89 1699.98,-2055.89 1705.98,-2061.89 1705.98,-2067.89 1705.98,-2067.89 1705.98,-2115.64 1705.98,-2115.64 1705.98,-2121.64 1699.98,-2127.64 1693.98,-2127.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2115.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :4 &#160;[0033]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2102.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2089.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2076.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-2064.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0053</text>
</g>
<!-- 0010&#45;L&#45;&gt;0033 -->
<g id="edge12" class="edge">
<title>0010&#45;L&#45;&gt;0033</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2843.25,-3436.54C2698.93,-3276.76 1860.49,-2348.49 1667.99,-2135.37"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1670.07,-2133.5 1662.63,-2129.44 1665.92,-2137.25 1670.07,-2133.5"/>
</g>
<!-- 0034 -->
<g id="node27" class="node">
<title>0034</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-1927.64C1693.98,-1927.64 1563.23,-1927.64 1563.23,-1927.64 1557.23,-1927.64 1551.23,-1921.64 1551.23,-1915.64 1551.23,-1915.64 1551.23,-1867.89 1551.23,-1867.89 1551.23,-1861.89 1557.23,-1855.89 1563.23,-1855.89 1563.23,-1855.89 1693.98,-1855.89 1693.98,-1855.89 1699.98,-1855.89 1705.98,-1861.89 1705.98,-1867.89 1705.98,-1867.89 1705.98,-1915.64 1705.98,-1915.64 1705.98,-1921.64 1699.98,-1927.64 1693.98,-1927.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1915.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :3 &#160;[0034]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1902.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1889.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1876.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1864.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0054</text>
</g>
<!-- 0010&#45;L&#45;&gt;0034 -->
<g id="edge10" class="edge">
<title>0010&#45;L&#45;&gt;0034</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2846.02,-3436.62C2708.85,-3262.56 1847.34,-2169.33 1663.21,-1935.68"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1665.47,-1934.03 1658.32,-1929.48 1661.08,-1937.49 1665.47,-1934.03"/>
</g>
<!-- 0035 -->
<g id="node28" class="node">
<title>0035</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-1727.64C1693.98,-1727.64 1563.23,-1727.64 1563.23,-1727.64 1557.23,-1727.64 1551.23,-1721.64 1551.23,-1715.64 1551.23,-1715.64 1551.23,-1667.89 1551.23,-1667.89 1551.23,-1661.89 1557.23,-1655.89 1563.23,-1655.89 1563.23,-1655.89 1693.98,-1655.89 1693.98,-1655.89 1699.98,-1655.89 1705.98,-1661.89 1705.98,-1667.89 1705.98,-1667.89 1705.98,-1715.64 1705.98,-1715.64 1705.98,-1721.64 1699.98,-1727.64 1693.98,-1727.64"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1715.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :2 &#160;[0035]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1702.34" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1689.59" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1676.84" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1664.09" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (1): 0055</text>
</g>
<!-- 0010&#45;L&#45;&gt;0035 -->
<g id="edge8" class="edge">
<title>0010&#45;L&#45;&gt;0035</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2848.14,-3436.67C2717.11,-3249.2 1836.18,-1988.76 1659.44,-1735.89"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1661.86,-1734.45 1654.98,-1729.5 1657.27,-1737.66 1661.86,-1734.45"/>
</g>
<!-- 0036 -->
<g id="node29" class="node">
<title>0036</title>
<path fill="#fbe5d6" stroke="#c55a11" d="M1693.98,-1534.01C1693.98,-1534.01 1563.23,-1534.01 1563.23,-1534.01 1557.23,-1534.01 1551.23,-1528.01 1551.23,-1522.01 1551.23,-1522.01 1551.23,-1461.51 1551.23,-1461.51 1551.23,-1455.51 1557.23,-1449.51 1563.23,-1449.51 1563.23,-1449.51 1693.98,-1449.51 1693.98,-1449.51 1699.98,-1449.51 1705.98,-1455.51 1705.98,-1461.51 1705.98,-1461.51 1705.98,-1522.01 1705.98,-1522.01 1705.98,-1528.01 1699.98,-1534.01 1693.98,-1534.01"/>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1521.46" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke :1 &#160;[0036]</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1508.71" font-family="Segoe UI" font-size="9.00" fill="#833c00">Gefaellestrecke</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1495.96" font-family="Segoe UI" font-size="9.00" fill="#833c00">h = 1.941 m</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1483.21" font-family="Segoe UI" font-size="9.00" fill="#833c00">1941 &#45;&gt; 1466 mm (&#45;475) = abwaerts</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1470.46" font-family="Segoe UI" font-size="9.00" fill="#833c00">Separator (2): 0005, 0056</text>
<text xml:space="preserve" text-anchor="middle" x="1628.61" y="-1457.71" font-family="Segoe UI" font-size="9.00" fill="#833c00">Scanner (1): 0066</text>
</g>
<!-- 0010&#45;L&#45;&gt;0036 -->
<!-- 0010&#45;L&#45;&gt;grp_0017 -->
<g id="edge6" class="edge">
<title>0010&#45;L&#45;&gt;0036</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2849.7,-3436.53C2724.51,-3237.14 1839.69,-1827.95 1660.29,-1542.22"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1662.78,-1540.93 1656.15,-1535.64 1658.04,-1543.9 1662.78,-1540.93"/>
<title>0010&#45;L&#45;&gt;grp_0017</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M2834.62,-3467.07C2659.14,-3457.38 1979.99,-3419.88 1731.96,-3406.18"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="1732.2,-3403.39 1724.06,-3405.75 1731.89,-3408.99 1732.2,-3403.39"/>
</g>
<!-- 0010&#45;R -->
<g id="node6" class="node">
<title>0010&#45;R</title>
<path fill="#2f5597" stroke="#1f3864" d="M2908.07,-3314.51C2908.07,-3314.51 2820.82,-3314.51 2820.82,-3314.51 2814.82,-3314.51 2808.82,-3308.51 2808.82,-3302.51 2808.82,-3302.51 2808.82,-3267.51 2808.82,-3267.51 2808.82,-3261.51 2814.82,-3255.51 2820.82,-3255.51 2820.82,-3255.51 2908.07,-3255.51 2908.07,-3255.51 2914.07,-3255.51 2920.07,-3261.51 2920.07,-3267.51 2920.07,-3267.51 2920.07,-3302.51 2920.07,-3302.51 2920.07,-3308.51 2914.07,-3314.51 2908.07,-3314.51"/>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3301.95" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel3 &#160;[0010&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3289.2" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3276.45" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.940 m</text>
<text xml:space="preserve" text-anchor="middle" x="2864.44" y="-3263.7" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (2): 0063, 0064</text>
<path fill="#2f5597" stroke="#1f3864" d="M2920.07,-3323.88C2920.07,-3323.88 2832.82,-3323.88 2832.82,-3323.88 2826.82,-3323.88 2820.82,-3317.88 2820.82,-3311.88 2820.82,-3311.88 2820.82,-3276.88 2820.82,-3276.88 2820.82,-3270.88 2826.82,-3264.88 2832.82,-3264.88 2832.82,-3264.88 2920.07,-3264.88 2920.07,-3264.88 2926.07,-3264.88 2932.07,-3270.88 2932.07,-3276.88 2932.07,-3276.88 2932.07,-3311.88 2932.07,-3311.88 2932.07,-3317.88 2926.07,-3323.88 2920.07,-3323.88"/>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3311.33" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Kreisel3 &#160;[0010&#45;R]</text>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3298.58" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Bahn R (rechts)</text>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3285.83" font-family="Segoe UI" font-size="9.00" fill="#ffffff">h = 1.940 m</text>
<text xml:space="preserve" text-anchor="middle" x="2876.45" y="-3273.08" font-family="Segoe UI" font-size="9.00" fill="#ffffff">Separator (2): 0063, 0064</text>
</g>
<!-- 0010&#45;R&#45;&gt;0010&#45;L -->
<g id="edge3" class="edge">
<g id="edge5" class="edge">
<title>0010&#45;R&#45;&gt;0010&#45;L</title>
<g id="a_edge3"><a xlink:title="Kreisel&#45;Umlauf UZS">
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M2864.44,-3314.69C2864.44,-3345.48 2864.44,-3393.57 2864.44,-3425.9"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="2861.3,-3425.81 2864.45,-3434.81 2867.6,-3425.81 2861.3,-3425.81"/>
<g id="a_edge5"><a xlink:title="Kreisel&#45;Umlauf UZS">
<path fill="none" stroke="#8ea9db" stroke-width="1.2" stroke-dasharray="5,2" d="M2876.45,-3324.07C2876.45,-3354.86 2876.45,-3402.94 2876.45,-3435.28"/>
<polygon fill="#8ea9db" stroke="#8ea9db" stroke-width="1.2" points="2873.3,-3435.19 2876.45,-3444.19 2879.6,-3435.19 2873.3,-3435.19"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="2857.32" y="-3379.44" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
<text xml:space="preserve" text-anchor="middle" x="2869.32" y="-3388.81" font-family="Segoe UI" font-size="8.00" fill="#5b7fc7">UZS</text>
</g>
<!-- 0013&#45;&gt;0010&#45;L -->
<g id="edge51" class="edge">
<g id="edge13" class="edge">
<title>0013&#45;&gt;0010&#45;L</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1642.83,-5631.18C1791.09,-5367.68 2706.66,-3740.44 2846.53,-3491.85"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="2848.8,-3493.52 2850.29,-3485.17 2843.92,-3490.77 2848.8,-3493.52"/>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1654.83,-5640.56C1803.09,-5377.06 2718.66,-3749.82 2858.53,-3501.22"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="2860.8,-3502.89 2862.29,-3494.55 2855.92,-3500.15 2860.8,-3502.89"/>
</g>
<!-- 0014&#45;&gt;0010&#45;L -->
<g id="edge49" class="edge">
<g id="edge11" class="edge">
<title>0014&#45;&gt;0010&#45;L</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1645.05,-1146.6C1800.36,-1441.25 2711.82,-3170.45 2847.55,-3427.95"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="2844.99,-3429.1 2851.2,-3434.87 2849.94,-3426.49 2844.99,-3429.1"/>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1657.05,-1155.97C1812.36,-1450.62 2723.82,-3179.82 2859.55,-3437.32"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="2856.99,-3438.48 2863.2,-3444.25 2861.94,-3435.87 2856.99,-3438.48"/>
</g>
<!-- 0016&#45;&gt;0002&#45;R -->
<g id="edge47" class="edge">
<title>0016&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M236.24,-3731.59C248.24,-3664.1 275.3,-3529.18 316.37,-3420.43 330.4,-3383.28 352.17,-3343.24 367.83,-3316.41"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="370.1,-3318.06 371.75,-3309.75 365.28,-3315.22 370.1,-3318.06"/>
</g>
<!-- 0017&#45;&gt;0002&#45;R -->
<g id="edge45" class="edge">
<title>0017&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1606.26,-5255.65C1452.33,-5006.88 550.95,-3550.07 406.48,-3316.57"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="409.02,-3315.35 402.43,-3310.02 404.25,-3318.3 409.02,-3315.35"/>
</g>
<!-- 0018&#45;&gt;0002&#45;R -->
<g id="edge43" class="edge">
<title>0018&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1603.8,-5055.67C1443.76,-4822.8 558.75,-3535 408.6,-3316.51"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="411.04,-3315.12 404.2,-3310.11 406.42,-3318.29 411.04,-3315.12"/>
</g>
<!-- 0019&#45;&gt;0002&#45;R -->
<g id="edge41" class="edge">
<title>0019&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1600.63,-4855.57C1433.32,-4639.06 566.89,-3517.86 410.99,-3316.12"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="413.34,-3314.58 406.23,-3309.97 408.91,-3318.01 413.34,-3314.58"/>
</g>
<!-- 0020&#45;&gt;0002&#45;R -->
<g id="edge39" class="edge">
<title>0020&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1596.66,-4655.58C1421.17,-4456.74 576.18,-3499.4 413.92,-3315.57"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="416.17,-3313.88 408.78,-3309.74 411.97,-3317.59 416.17,-3313.88"/>
</g>
<!-- 0021&#45;&gt;0002&#45;R -->
<g id="edge37" class="edge">
<title>0021&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1591.44,-4455.65C1406.47,-4275.87 587.15,-3479.59 417.68,-3314.88"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="419.78,-3313.01 412.09,-3309.44 415.88,-3317.03 419.78,-3313.01"/>
</g>
<!-- 0022&#45;&gt;0002&#45;R -->
<g id="edge35" class="edge">
<title>0022&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1584.05,-4255.64C1387.82,-4096.53 602.5,-3459.78 423.42,-3314.58"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="425.23,-3312.44 417.25,-3309.58 421.7,-3316.79 425.23,-3312.44"/>
</g>
<!-- 0023&#45;&gt;0002&#45;R -->
<g id="edge33" class="edge">
<title>0023&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1572.84,-4055.53C1362.67,-3918.98 620.79,-3436.94 431.28,-3313.81"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="432.95,-3311.56 424.72,-3309.55 429.9,-3316.26 432.95,-3311.56"/>
</g>
<!-- 0024&#45;&gt;0002&#45;R -->
<g id="edge31" class="edge">
<title>0024&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1554.19,-3855.4C1324.63,-3743.22 631.34,-3404.43 437.68,-3309.8"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="439.16,-3307.4 430.74,-3306.41 436.7,-3312.43 439.16,-3307.4"/>
</g>
<!-- 0025&#45;&gt;0002&#45;R -->
<g id="edge29" class="edge">
<title>0025&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1550.93,-3666.32C1318.35,-3590.13 631.64,-3365.17 438.19,-3301.79"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="439.28,-3299.2 430.81,-3299.38 437.54,-3304.53 439.28,-3299.2"/>
</g>
<!-- 0026&#45;&gt;0002&#45;R -->
<g id="edge27" class="edge">
<title>0026&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1550.93,-3478.83C1318.58,-3440.14 633,-3325.98 438.77,-3293.63"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="439.23,-3290.87 430.88,-3292.32 438.31,-3296.4 439.23,-3290.87"/>
</g>
<!-- 0027&#45;&gt;0002&#45;R -->
<g id="edge25" class="edge">
<title>0027&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1550.93,-3291.34C1318.58,-3290.08 633,-3286.34 438.77,-3285.29"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="438.92,-3282.49 430.9,-3285.24 438.89,-3288.09 438.92,-3282.49"/>
</g>
<!-- 0028&#45;&gt;0002&#45;R -->
<g id="edge23" class="edge">
<title>0028&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1550.93,-3103.85C1318.58,-3140.01 633,-3246.71 438.77,-3276.94"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="438.35,-3274.17 430.88,-3278.17 439.21,-3279.7 438.35,-3274.17"/>
</g>
<!-- 0029&#45;&gt;0002&#45;R -->
<g id="edge21" class="edge">
<title>0029&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1550.93,-2916.36C1318.35,-2990.02 631.64,-3207.51 438.19,-3268.78"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="437.6,-3266.03 430.82,-3271.11 439.29,-3271.36 437.6,-3266.03"/>
</g>
<!-- 0030&#45;&gt;0002&#45;R -->
<g id="edge19" class="edge">
<title>0030&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1552.8,-2727.98C1321.9,-2838.3 631.24,-3168.29 437.8,-3260.71"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="436.62,-3258.17 430.61,-3264.14 439.03,-3263.22 436.62,-3258.17"/>
</g>
<!-- 0031&#45;&gt;0002&#45;R -->
<g id="edge17" class="edge">
<title>0031&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1572.03,-2527.91C1360.96,-2662.75 621.93,-3134.88 431.81,-3256.34"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="430.47,-3253.88 425.23,-3260.54 433.48,-3258.6 430.47,-3253.88"/>
</g>
<!-- 0032&#45;&gt;0002&#45;R -->
<g id="edge15" class="edge">
<title>0032&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1583.31,-2328C1386.05,-2485.79 603.75,-3111.57 423.93,-3255.42"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="422.23,-3253.19 417.73,-3260.38 425.73,-3257.57 422.23,-3253.19"/>
</g>
<!-- 0033&#45;&gt;0002&#45;R -->
<g id="edge13" class="edge">
<title>0033&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1590.77,-2128.13C1404.65,-2306.98 588.5,-3091.31 418.17,-3255"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="416.37,-3252.84 412.54,-3260.41 420.25,-3256.88 416.37,-3252.84"/>
</g>
<!-- 0034&#45;&gt;0002&#45;R -->
<g id="edge11" class="edge">
<title>0034&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1596.35,-1927.96C1420.24,-2125.57 576.89,-3071.87 414.16,-3254.47"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="412.23,-3252.43 408.99,-3260.27 416.41,-3256.16 412.23,-3252.43"/>
</g>
<!-- 0035&#45;&gt;0002&#45;R -->
<g id="edge9" class="edge">
<title>0035&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1600.34,-1728.04C1432.38,-1943.55 567.62,-3053.17 411.21,-3253.87"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="409.15,-3251.96 406.44,-3259.99 413.57,-3255.4 409.15,-3251.96"/>
<title>0016&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M248.24,-3740.97C260.24,-3673.48 287.3,-3538.56 328.37,-3429.81 342.4,-3392.65 364.17,-3352.61 379.83,-3325.78"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="382.1,-3327.44 383.75,-3319.12 377.28,-3324.59 382.1,-3327.44"/>
</g>
<!-- 0036&#45;&gt;0002&#45;R -->
<!-- grp_0017&#45;&gt;0002&#45;R -->
<g id="edge7" class="edge">
<title>0036&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1599.14,-1534.32C1427.36,-1782.41 557.72,-3038.36 408.69,-3253.6"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="406.4,-3252 404.14,-3260.17 411,-3255.18 406.4,-3252"/>
<title>grp_0017&#45;&gt;0002&#45;R</title>
<path fill="none" stroke="#2f5597" stroke-width="1.2" d="M1559.14,-3394.14C1323.15,-3373.84 643.65,-3315.42 450.64,-3298.82"/>
<polygon fill="#2f5597" stroke="#2f5597" stroke-width="1.2" points="451.03,-3296.05 442.82,-3298.15 450.55,-3301.63 451.03,-3296.05"/>
</g>
<!-- legende -->
<g id="node30" class="node">
<g id="node11" class="node">
<title>legende</title>
<text xml:space="preserve" text-anchor="start" x="12" y="-48.5" font-family="Segoe UI" font-size="9.00">durchgezogen</text>
<text xml:space="preserve" text-anchor="start" x="78.75" y="-48.5" font-family="Segoe UI" font-size="9.00">Materialfluss</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-29.75" font-family="Segoe UI" font-size="9.00" fill="#8ea9db">gestrichelt blau</text>
<text xml:space="preserve" text-anchor="start" x="78.75" y="-29.75" font-family="Segoe UI" font-size="9.00">Kreisel&#45;Umlauf, Richtung aus Drehrichtung (UZS = rechts nach links, GUZ = links nach rechts)</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-11" font-family="Segoe UI" font-size="9.00" fill="#bf8f00">gestrichelt gelb</text>
<text xml:space="preserve" text-anchor="start" x="78.75" y="-11" font-family="Segoe UI" font-size="9.00">Richtung nicht bestimmbar</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-67.25" font-family="Segoe UI" font-size="9.00">durchgezogen</text>
<text xml:space="preserve" text-anchor="start" x="102.75" y="-67.25" font-family="Segoe UI" font-size="9.00">Materialfluss</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-48.5" font-family="Segoe UI" font-size="9.00" fill="#8ea9db">gestrichelt blau</text>
<text xml:space="preserve" text-anchor="start" x="102.75" y="-48.5" font-family="Segoe UI" font-size="9.00">Kreisel&#45;Umlauf, Richtung aus Drehrichtung (UZS = rechts nach links, GUZ = links nach rechts)</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-29.75" font-family="Segoe UI" font-size="9.00" fill="#bf8f00">gestrichelt gelb</text>
<text xml:space="preserve" text-anchor="start" x="102.75" y="-29.75" font-family="Segoe UI" font-size="9.00">Richtung nicht bestimmbar</text>
<text xml:space="preserve" text-anchor="start" x="12" y="-11" font-family="Segoe UI" font-size="9.00">doppelte Umrandung</text>
<text xml:space="preserve" text-anchor="start" x="102.75" y="-11" font-family="Segoe UI" font-size="9.00">Gruppe paralleler Gefaellestrecken (gleicher Zu&#45;/Ablauf, gleiche Steigung)</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 21 KiB

@@ -1,8 +1,8 @@
<!-- erzeugt von lib/material_flow.py -->
# Materialfluss - export.csv
# Materialfluss - mubea.csv
**Erzeugt:** 2026-08-07 13:20 von `lib/material_flow.py`
**Quelle:** `C:\develop\sps_skel\data\export.csv`
**Erzeugt:** 2026-08-21 11:53 von `lib/material_flow.py`
**Quelle:** `C:\10-Develop\gitrepos\sps_skel\data\mubea.csv`
> Materialfluss der mechanischen Objekte. Die daraus abgeleiteten Steuerungsobjekte (TROs) dokumentiert `lib/tro_flow.py --doc`.
@@ -15,7 +15,7 @@
| Anbauteile | Scanner: 6, Separator: 33 |
| Plausibilitaetshinweise | 7 |
Graph: [`export_material_flow.dot`](export_material_flow.dot) - [`export_material_flow.svg`](export_material_flow.svg)
Graph: [`mubea_material_flow.dot`](mubea_material_flow.dot) - [`mubea_material_flow.svg`](mubea_material_flow.svg)
Ein **Kreisel** ist ein Umlauf und wird als zwei Knoten modelliert - eine Bahn je Fahrtrichtung (`-L` links, `-R` rechts), die zu einem Kreis verbunden sind.
@@ -67,55 +67,55 @@ Hoehe: bei Kreiseln aus dem Merkmal `Höhe in m`, bei Gefaellestrecke und Streck
|---|---|---|
| `0001-L` | `0002-R` | Richtung unbestimmt (Weiche) |
| `0001-R` | `0002-R` | Richtung unbestimmt (Weiche) |
| `0010-R` | `0010-L` | Kreisel-Umlauf (UZS) |
| `0002-R` | `0002-L` | Kreisel-Umlauf (UZS) |
| `0001-R` | `0001-L` | Kreisel-Umlauf (UZS) |
| `0010-L` | `0036` | Materialfluss |
| `0036` | `0002-R` | Materialfluss |
| `0010-L` | `0035` | Materialfluss |
| `0035` | `0002-R` | Materialfluss |
| `0010-L` | `0034` | Materialfluss |
| `0034` | `0002-R` | Materialfluss |
| `0010-L` | `0033` | Materialfluss |
| `0033` | `0002-R` | Materialfluss |
| `0010-L` | `0032` | Materialfluss |
| `0032` | `0002-R` | Materialfluss |
| `0010-L` | `0031` | Materialfluss |
| `0031` | `0002-R` | Materialfluss |
| `0010-L` | `0030` | Materialfluss |
| `0030` | `0002-R` | Materialfluss |
| `0010-L` | `0029` | Materialfluss |
| `0029` | `0002-R` | Materialfluss |
| `0010-L` | `0028` | Materialfluss |
| `0028` | `0002-R` | Materialfluss |
| `0010-L` | `0027` | Materialfluss |
| `0027` | `0002-R` | Materialfluss |
| `0010-L` | `0026` | Materialfluss |
| `0026` | `0002-R` | Materialfluss |
| `0010-L` | `0025` | Materialfluss |
| `0025` | `0002-R` | Materialfluss |
| `0010-L` | `0024` | Materialfluss |
| `0024` | `0002-R` | Materialfluss |
| `0010-L` | `0023` | Materialfluss |
| `0023` | `0002-R` | Materialfluss |
| `0010-L` | `0022` | Materialfluss |
| `0022` | `0002-R` | Materialfluss |
| `0010-L` | `0021` | Materialfluss |
| `0021` | `0002-R` | Materialfluss |
| `0010-L` | `0020` | Materialfluss |
| `0020` | `0002-R` | Materialfluss |
| `0010-L` | `0019` | Materialfluss |
| `0019` | `0002-R` | Materialfluss |
| `0010-L` | `0018` | Materialfluss |
| `0018` | `0002-R` | Materialfluss |
| `0010-L` | `0017` | Materialfluss |
| `0017` | `0002-R` | Materialfluss |
| `0002-L` | `0016` | Materialfluss |
| `0016` | `0002-R` | Materialfluss |
| `0002-R` | `0014` | Materialfluss |
| `0014` | `0010-L` | Materialfluss |
| `0002-R` | `0013` | Materialfluss |
| `0013` | `0010-L` | Materialfluss |
| `0002-R` | `0002-L` | Kreisel-Umlauf (UZS) |
| `0010-R` | `0010-L` | Kreisel-Umlauf (UZS) |
| `0010-L` | `0036` | Materialfluss (Ausschleusung) |
| `0036` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0035` | Materialfluss (Ausschleusung) |
| `0035` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0034` | Materialfluss (Ausschleusung) |
| `0034` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0033` | Materialfluss (Ausschleusung) |
| `0033` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0032` | Materialfluss (Ausschleusung) |
| `0032` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0031` | Materialfluss (Ausschleusung) |
| `0031` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0030` | Materialfluss (Ausschleusung) |
| `0030` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0029` | Materialfluss (Ausschleusung) |
| `0029` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0028` | Materialfluss (Ausschleusung) |
| `0028` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0027` | Materialfluss (Ausschleusung) |
| `0027` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0026` | Materialfluss (Ausschleusung) |
| `0026` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0025` | Materialfluss (Ausschleusung) |
| `0025` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0024` | Materialfluss (Ausschleusung) |
| `0024` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0023` | Materialfluss (Ausschleusung) |
| `0023` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0022` | Materialfluss (Ausschleusung) |
| `0022` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0021` | Materialfluss (Ausschleusung) |
| `0021` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0020` | Materialfluss (Ausschleusung) |
| `0020` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0019` | Materialfluss (Ausschleusung) |
| `0019` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0018` | Materialfluss (Ausschleusung) |
| `0018` | `0002-R` | Materialfluss (Einschleusung) |
| `0010-L` | `0017` | Materialfluss (Ausschleusung) |
| `0017` | `0002-R` | Materialfluss (Einschleusung) |
| `0002-L` | `0016` | Materialfluss (Ausschleusung) |
| `0016` | `0002-R` | Materialfluss (Einschleusung) |
| `0002-R` | `0014` | Materialfluss (Ausschleusung) |
| `0014` | `0010-L` | Materialfluss (Einschleusung) |
| `0002-R` | `0013` | Materialfluss (Ausschleusung) |
| `0013` | `0010-L` | Materialfluss (Einschleusung) |
Die Richtung innerhalb eines Kreisels kommt aus dem Merkmal `Drehrichtung`: **UZS** (im Uhrzeigersinn) laesst das Material rechts nach links laufen, **GUZ** (gegen den Uhrzeigersinn) links nach rechts.
@@ -133,7 +133,7 @@ Abweichungen zwischen den Merkmalen des CSV-Exports und den tatsaechlich vorhand
## 5. Warnungen des Laufs
- Zeile 52 (Strecke 0016 'VarioFoerderer :1'): alle Nachbarn auf gleicher Hoehe (1.470 m) - Richtung nicht bestimmbar
- Zeile 17 (Strecke 0016 'VarioFoerderer :1'): alle Nachbarn auf gleicher Hoehe (1.470 m) - Richtung nicht bestimmbar
- Verbindung 0001-L <-> 0002-R: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet
- Verbindung 0001-R <-> 0002-R: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet
- Verbindung 0002-L <-> 0016: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet
+10
View File
@@ -132,6 +132,16 @@ Reads the CSV export and builds a directed graph of the mechanical objects:
> will contain the 61 conveyor items but **no** BTMT rows, so no entry/exit nodes
> appear. The recognition above is ready for when BTMT rows are present.
In the rendered graph, **parallel Gefällestrecken between the same two Kreisel
lanes with the same slope** (`Hoehe_Von_mm`/`Hoehe_Bis_mm`) — a typical
line-storage bank — are drawn as a **single** Gefällestrecke-styled box with a
double border (`peripheries=2`) instead of one box per line. Its label states
the id range and count of the merged lines plus the combined Separator/Scanner
id ranges, e.g. `Gefaellestrecke 0017 - 0036 (20x)` / `Separator (20): 0037 -
0056`. This is purely a rendering simplification (`_group_parallel_gefaelle`
in `lib/material_flow.py`) — the underlying graph, `--doc` report and
`--connect` output are unaffected and still list every line individually.
Flow direction between conveyor segments is derived from height change
(`Hoehe_Von_mm`/`Hoehe_Bis_mm`) or, failing that, from `Antriebfahrtrichtung`
("Auf"/"Ab"); connections whose direction can't be determined are drawn
+116 -1
View File
@@ -138,6 +138,12 @@ NODE_STYLES = {
}
DEFAULT_NODE_STYLE = dict(fillcolor="#f2f2f2", fontcolor="#404040", color="#808080")
# Ab dieser Anzahl paralleler Gefaellestrecken zwischen denselben zwei
# Kreisel-Bahnen (gleicher Zulauf, gleicher Ablauf, gleiche Steigung) werden
# sie im Materialfluss-Diagramm zu einem Block zusammengefasst - sonst wird
# eine grosse Linienbank (Speicher) unlesbar breit.
MIN_GEFAELLE_GROUP = 2
# ---------------------------------------------------------------------------
# Datenmodell
@@ -999,6 +1005,78 @@ def _pos_attr(node: "Node", use_coords: bool) -> str:
return f', pos="{xy[0] * COORD_SCALE:.2f},{xy[1] * COORD_SCALE:.2f}"'
def _flow_neighbours(node_id: str, edges: list[Edge]) -> tuple[str, str] | None:
"""
(Vorgaenger, Nachfolger) eines Knotens im Materialfluss.
None, wenn der Knoten nicht genau einen ankommenden und einen abgehenden
EDGE_FLOW hat - dann ist er kein einfacher Durchlaufknoten zwischen zwei
festen Nachbarn.
"""
incoming = {e.src for e in edges if e.dst == node_id and e.kind == EDGE_FLOW}
outgoing = {e.dst for e in edges if e.src == node_id and e.kind == EDGE_FLOW}
if len(incoming) != 1 or len(outgoing) != 1:
return None
return next(iter(incoming)), next(iter(outgoing))
def _group_parallel_gefaelle(graph: Graph) -> list[list[Node]]:
"""
Parallele Gefaellestrecken zwischen denselben zwei Kreisel-Bahnen zu
Gruppen zusammenfassen (z. B. eine Bank aus Schwerkraftlinien).
Kriterium: gleicher Zulauf- und Ablauf-Knoten (jeweils eine Kreisel-Bahn)
und gleiche Steigung (Hoehe_Von/Hoehe_Bis) - "gleich lang und gleiche
Steigung" laesst sich aus dem Export nur ueber die Hoehenangabe pruefen,
die Laenge ergibt sich daraus, dass beide Enden an denselben zwei Knoten
haengen. Rein fuer die Darstellung; Graph-Knoten/-Kanten bleiben unveraendert.
"""
groups: dict[tuple, list[Node]] = {}
for node_id in sorted(graph.nodes):
node = graph.nodes[node_id]
if node.kind != "Gefaellestrecke":
continue
neighbours = _flow_neighbours(node_id, graph.edges)
if neighbours is None:
continue
before, after = neighbours
if graph.nodes[before].kind != "Kreisel" or graph.nodes[after].kind != "Kreisel":
continue
element = node.element
key = (before, after, element.height_from, element.height_to)
groups.setdefault(key, []).append(node)
return [members for members in groups.values() if len(members) >= MIN_GEFAELLE_GROUP]
def _id_range(ids: list[str]) -> str:
"""Sortierte Ids als Bereich, z. B. ['0037', '0056'] -> '0037 - 0056'."""
ids = sorted(ids)
return ids[0] if len(ids) == 1 else f"{ids[0]} - {ids[-1]}"
def _gefaelle_group_label(members: list[Node]) -> str:
"""Sammel-Label einer Gefaellestrecken-Gruppe: Bereich der Linien-Ids,
gemeinsame Steigung, zusammengefasste Separatoren/Scanner."""
element = members[0].element
ids = sorted(m.node_id for m in members)
lines = [
f"Gefaellestrecke {ids[0]} -> {ids[-1]} ({len(ids)}x)",
"Gruppe paralleler Schwerkraftlinien",
]
if element.height is not None:
lines.append(f"h = {element.height:.3f} m")
if element.rise is not None:
uphill = drive_uphill(element)[0]
arrow = {True: "aufwaerts", False: "abwaerts", None: "Richtung offen"}[uphill]
lines.append(f"{element.height_from:.0f} -> {element.height_to:.0f} mm "
f"({element.rise:+.0f}) = {arrow}")
for kind in DEVICE_KINDS:
ids_dev = sorted({d for m in members for d in m.devices.get(kind, [])})
if ids_dev:
lines.append(f"{kind} ({len(ids_dev)}): {_id_range(ids_dev)}")
return _dot_label(lines)
def render_dot(graph: Graph, use_coords: bool = False) -> str:
out: list[str] = []
add = out.append
@@ -1047,14 +1125,48 @@ def render_dot(graph: Graph, use_coords: bool = False) -> str:
add(" }")
add("")
# Parallele Gefaellestrecken (gleicher Zu-/Ablauf, gleiche Steigung) zu
# je einem Block zusammenfassen, damit eine Linienbank nicht als N
# einzelne Kaesten gezeichnet wird.
gefaelle_groups = _group_parallel_gefaelle(graph)
group_of: dict[str, str] = {}
for members in gefaelle_groups:
group_id = f"grp_{members[0].node_id}"
for member in members:
group_of[member.node_id] = group_id
grouped_ids = set(group_of)
for node in plain:
if node.node_id in grouped_ids:
continue
style = NODE_STYLES.get(node.kind, DEFAULT_NODE_STYLE)
attrs = ", ".join(f'{key}="{value}"' for key, value in style.items())
add(f' "{node.node_id}" [label="{_node_label(node)}", {attrs}'
f'{_pos_attr(node, use_coords)}];')
for members in gefaelle_groups:
group_id = f"grp_{members[0].node_id}"
style = NODE_STYLES.get("Gefaellestrecke", DEFAULT_NODE_STYLE)
attrs = ", ".join(f'{key}="{value}"' for key, value in style.items())
pos = ""
if use_coords:
xs = [xy[0] for m in members if (xy := _node_xy(m))]
ys = [xy[1] for m in members if (xy := _node_xy(m))]
if xs and ys:
pos = (f', pos="{sum(xs) / len(xs) * COORD_SCALE:.2f},'
f'{sum(ys) / len(ys) * COORD_SCALE:.2f}"')
add(f' "{group_id}" [label="{_gefaelle_group_label(members)}", {attrs}, '
f'peripheries=2{pos}];')
add("")
seen_group_edges: set[tuple[str, str]] = set()
for edge in graph.edges:
src = group_of.get(edge.src, edge.src)
dst = group_of.get(edge.dst, edge.dst)
if edge.src in grouped_ids or edge.dst in grouped_ids:
if src == dst or (src, dst) in seen_group_edges:
continue
seen_group_edges.add((src, dst))
if edge.kind == EDGE_CIRCLE:
# Richtung kommt aus der Drehrichtung und steht als Label an der Kante
label = f', xlabel="{_dot_escape(edge.note)}"' if edge.note else ""
@@ -1070,7 +1182,7 @@ def render_dot(graph: Graph, use_coords: bool = False) -> str:
'fontcolor="#cc8800", tooltip="Weiche (Kreisel-Uebergang)"]')
else:
attrs = "[]"
add(f' "{edge.src}" -> "{edge.dst}" {attrs};')
add(f' "{src}" -> "{dst}" {attrs};')
add("")
legend_pos = ""
@@ -1094,6 +1206,9 @@ def render_dot(graph: Graph, use_coords: bool = False) -> str:
f'{ROTATION_CCW} = {ROTATION_FLOW[ROTATION_CCW]})</td></tr>'
'<tr><td align="left"><font color="#bf8f00">gestrichelt gelb</font></td>'
'<td align="left">Richtung nicht bestimmbar</td></tr>'
'<tr><td align="left">doppelte Umrandung</td>'
'<td align="left">Gruppe paralleler Gefaellestrecken (gleicher Zu-/Ablauf, '
"gleiche Steigung)</td></tr>"
"</table>>];")
add(" }")
add("}")