alle Bogen sind neu angepasst wegen cps.
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 636.238" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="636.238" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.138654px" transform="matrix(7.2122 0 0 7.2122 -2552.99 -2448.44)" vector-effect="non-scaling-stroke">
|
||||
<path d="M432.418,367.485 A81.041,81.041 0 0,0 375.113,343.749" />
|
||||
<path d="M 432.418 367.485 L 489.622 424.689" />
|
||||
<path d="M 353.982 343.749 L 375.113 343.749" />
|
||||
<path d="M 486.608 427.703 L 492.636 421.675" />
|
||||
<path d="M 353.982 339.486 L 353.982 348.011" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 692 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="653.63" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 653.63" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(1 0 0 1 .02294 -.02326)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0"><path d="m954.03 650.98c7.535-7.724 43.273-44.359 43.273-44.359" stroke-linecap="square" stroke-width="3.7795" style="paint-order:fill markers stroke"/><path d="m1.87 33.28h151.71c154.3 0 302.29 62.82 411.4 174.64l410.69 420.88" stroke-width="3.7795" style="paint-order:fill markers stroke"/><path d="m1.8668 1.913v62.728" stroke-width="3.7795" style="paint-order:fill markers stroke"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 781 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 698.714" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="698.714" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.195794px" transform="matrix(5.1074 0 0 5.1074 -1448.53 -1607.15)" vector-effect="non-scaling-stroke">
|
||||
<path d="M457.979,414.178 A148.537,148.537 0 0,0 320.749,322.483" />
|
||||
<path d="M 283.614 314.671 L 283.614 330.296" />
|
||||
<path d="M 283.614 322.483 L 320.749 322.483" />
|
||||
<path d="M 457.979 414.178 L 472.19 448.485" />
|
||||
<path d="M 464.972 451.475 L 479.408 445.496" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 693 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="733.49" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 733.49" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99998 0 0 .99998 .0518 -.044798)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7796"><path d="m1.8462 1.9346v83.283" style="paint-order:normal"/><path d="m1.838 43.57h188.84c305.51-0.01 580.94 192.87 697.85 488.7l72.252 182.85" style="paint-order:normal"/><path d="m924.07 731.06 73.414-31.883" style="paint-order:normal"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 665 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.116560px" transform="matrix(8.5793 0 0 8.5793 -2780.81 -2906.51)" vector-effect="non-scaling-stroke">
|
||||
<path d="M435.984,432.972 A89.4828,89.4828 0 0,0 346.501,343.49" />
|
||||
<path d="M 431.278 455.343 L 440.691 455.343" />
|
||||
<path d="M 435.984 432.972 L 435.984 455.343" />
|
||||
<path d="M 324.131 343.49 L 346.501 343.49" />
|
||||
<path d="M 324.131 338.783 L 324.131 348.196" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 693 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(1 0 0 .99999 5.7731e-5 -1.5169e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8897 1.8898v80.459"/><path d="m1.8897 42.119h191.2c202.84-7.29e-4 397.37 80.576 540.8 224 143.43 143.43 224.01 337.96 224 540.8v191.2"/><path d="m917.66 998.12h80.45"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 578 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.102472px" transform="matrix(9.7588 0 0 9.7588 -4165.11 -3318.34)" vector-effect="non-scaling-stroke">
|
||||
<path d="M525.503,433.536 A89.7237,89.7237 0 0,0 435.78,343.813" />
|
||||
<path d="M 521.728 442.509 L 529.279 442.509" />
|
||||
<path d="M 525.503 433.536 L 525.503 442.509" />
|
||||
<path d="M 426.807 343.813 L 435.78 343.813" />
|
||||
<path d="M 426.807 340.037 L 426.807 347.588" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(1 0 0 1 -5.2142e-5 -5.2142e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8898 1.8898v73.408"/><path d="m924.7 998.11h73.408"/><path d="m1.8898 38.597h87.228c231.34-0.0027 453.22 91.897 616.8 255.48 163.59 163.58 255.49 385.45 255.49 616.8v87.228"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 604 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 311.375" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="311.375" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.091947px" transform="matrix(10.8758 0 0 10.8758 -4020.19 -3893.85)" vector-effect="non-scaling-stroke">
|
||||
<path d="M426.035,369.097 A96.7786,96.7786 0 0,0 388.999,361.73" />
|
||||
<path d="M 369.644 361.73 L 388.999 361.73" />
|
||||
<path d="M 426.035 369.097 L 460.174 383.238" />
|
||||
<path d="M 369.644 358.028 L 369.644 365.432" />
|
||||
<path d="M 458.757 386.658 L 461.591 379.818" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 693 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="315.12" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 315.12" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99942 0 0 .99942 .0032981 -.0010993)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7818"><path d="m1.8876 1.892v80.419"/><path d="m1.8876 42.107h209.71c137.7-9.43e-4 274.06 27.185 401.28 80.005l369.88 153.57"/><path d="m967.41 312.84 30.701-74.302"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 591 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 400.202" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="400.202" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.256048px" transform="matrix(3.9055 0 0 3.9055 -1142.44 -1259.38)" vector-effect="non-scaling-stroke">
|
||||
<path d="M528.42,404.785 A248.598,248.598 0 0,0 352.636,331.972" />
|
||||
<path d="M 292.52 331.971 L 352.636 331.971" />
|
||||
<path d="M 528.42 404.785 L 541.844 418.209" />
|
||||
<path d="M 292.52 322.462 L 292.52 341.481" />
|
||||
<path d="M 535.12 424.933 L 548.568 411.484" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 688 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="402.95" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 402.95" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99999 0 0 .99999 .0057172 .0057192)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.884 1.884v73.949"/><path d="m1.884 38.851h233.71c256.33 0.001882 502.17 101.83 683.42 283.09l52.183 52.191"/><path d="m945.06 400.28 52.274-52.29"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 589 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 436.225" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="436.225" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.119851px" transform="matrix(8.3437 0 0 8.3437 -3164.01 -2996.74)" vector-effect="non-scaling-stroke">
|
||||
<path d="M486.315,398.698 A119.389,119.389 0 0,0 401.894,363.729" />
|
||||
<path d="M 379.21 359.162 L 379.21 368.296" />
|
||||
<path d="M 379.21 363.729 L 401.894 363.729" />
|
||||
<path d="M 486.315 398.698 L 495.832 408.214" />
|
||||
<path d="M 492.602 411.444 L 499.061 404.985" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 691 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="438.79" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 438.79" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99998 0 0 .99998 .0078918 .0079242)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8819 1.8818v75.866"/><path d="m1.8819 39.815h188.41c262.99-3e-5 515.22 104.47 701.18 290.44l79.044 79.044"/><path d="m943.69 436.12 53.645-53.645"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 565 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 494.824" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="494.824" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.289921px" transform="matrix(3.4492 0 0 3.4492 -1007.11 -1107.93)" vector-effect="non-scaling-stroke">
|
||||
<path d="M524.987,407.755 A261.343,261.343 0 0,0 340.189,331.209" />
|
||||
<path d="M 291.983 321.212 L 291.983 341.206" />
|
||||
<path d="M 291.983 331.209 L 340.189 331.209" />
|
||||
<path d="M 524.987 407.755 L 574.835 457.603" />
|
||||
<path d="M 567.766 464.672 L 581.904 450.534" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="497.33" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 497.33" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
|
||||
<g transform="translate(.00036292 -.00033708)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8894 1.8901v68.678"/><path d="m1.8894 36.226h165.52c237.98 0.0014 466.22 94.579 634.5 262.93l171.22 171.15"/><path d="m948.78 494.66 48.546-48.566" stroke-linejoin="miter"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 579 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 745.997" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="745.997" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.119101px" transform="matrix(8.3962 0 0 8.3962 -2142.46 -2751.69)" vector-effect="non-scaling-stroke">
|
||||
<path d="M363.835,399.079 A108.837,108.837 0 0,0 263.283,331.892" />
|
||||
<path d="M 255.169 327.729 L 255.169 336.056" />
|
||||
<path d="M 255.169 331.892 L 263.283 331.892" />
|
||||
<path d="M 363.835 399.079 L 370.423 414.985" />
|
||||
<path d="M 366.577 416.578 L 374.27 413.392" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 693 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="747.09" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 747.09" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99708 0 0 .99708 -4.3149e-5 3.1033e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8898 1.8897v69.806"/><path d="m1.8898 36.786h68.031c369.07 0.00452 701.8 222.33 843.04 563.31l55.234 133.35"/><path d="m935.95 746.81 64.51-26.723"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 569 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 728.287" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="728.287" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.171409px" transform="matrix(5.8340 0 0 5.8340 -1917.96 -1856.75)" vector-effect="non-scaling-stroke">
|
||||
<path d="M478.191,398.728 A122.739,122.739 0 0,0 364.796,322.959" />
|
||||
<path d="M 491.489 443.099 L 500.164 439.506" />
|
||||
<path d="M 478.191 398.728 L 495.826 441.303" />
|
||||
<path d="M 328.755 322.959 L 364.796 322.959" />
|
||||
<path d="M 328.755 318.264 L 328.755 327.654" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="729.48" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 729.48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<g transform="matrix(1.0017 0 0 1.0017 -7.0728e-5 -2.9756e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7729"><path d="m945.5 725.74 50.3-20.837"/><path d="m1.8865 29.106 208.98 1.1e-5c287.86-0.0012 547.37 173.4 657.53 439.35l102.25 246.87"/><path d="m1.8865 1.8865v54.447"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 574 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 675.998" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="675.998" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.115885px" transform="matrix(8.6292 0 0 8.6292 -2829.56 -2960.27)" vector-effect="non-scaling-stroke">
|
||||
<path d="M431.197,396.783 A81.9631,81.9631 0 0,0 355.473,346.186" />
|
||||
<path d="M 327.904 343.051 L 327.904 349.321" />
|
||||
<path d="M 327.904 346.186 L 355.473 346.186" />
|
||||
<path d="M 431.197 396.783 L 440.892 420.189" />
|
||||
<path d="M 437.996 421.389 L 443.789 418.989" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="688.75" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 688.75" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<g transform="matrix(.99996 0 0 .99996 8.001e-5 8.001e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7797"><path d="m1.8898 1.8898v54.785"/><path d="m1.8898 29.283h236.87c284.83-6.83e-4 541.62 174.47 650.62 442.05l83.304 204.49"/><path d="m947.8 686.31c10.632-4.4796 49.768-20.968 49.768-20.968"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 596 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 679.706" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="679.706" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.160256px" transform="matrix(6.2400 0 0 6.2400 -2033.25 -2030.41)" vector-effect="non-scaling-stroke">
|
||||
<path d="M482.436,424.743 A95.6969,95.6969 0 0,0 386.739,329.046" />
|
||||
<path d="M 478.775 434.313 L 486.097 434.313" />
|
||||
<path d="M 325.841 329.046 L 386.739 329.046" />
|
||||
<path d="M 482.436 424.743 L 482.436 434.313" />
|
||||
<path d="M 325.841 325.386 L 325.841 332.707" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="694.83" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 694.83" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="translate(.019177 -.019326)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8706 1.9091v46.45"/><path d="m1.8706 25.134h378.58c157.78 0.0014 309.09 63.967 420.65 177.83 111.56 113.86 174.24 268.28 174.24 429.3v60.702"/><path d="m952.58 692.96h45.514"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 578 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 382.145" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="382.145" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.328326px" transform="matrix(3.0458 0 0 3.0458 -598.29 -997.33)" vector-effect="non-scaling-stroke">
|
||||
<path d="M475.944,404.101 A234.921,234.921 0 0,0 309.83,335.294" />
|
||||
<path d="M 196.434 335.294 L 309.83 335.294" />
|
||||
<path d="M 475.944 404.101 L 519.213 447.37" />
|
||||
<path d="M 196.434 327.449 L 196.434 343.14" />
|
||||
<path d="M 513.665 452.917 L 524.76 441.822" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 687 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="384.98" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 384.98" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99998 0 0 .99998 .0086192 .0085736)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7796"><path d="m963.7 382.3 33.641-33.641"/><path d="m1.8811 25.683 343.8 9.8e-5c188.9-0.0024 370.07 75.038 503.65 208.61l131.19 131.19"/><path d="m1.8811 1.8812v47.586"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 570 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 999.991" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="999.991" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.111111px" transform="matrix(9.0000 0 0 9.0000 -2628.91 -3034.18)" vector-effect="non-scaling-stroke">
|
||||
<path d="M400.364,425.235 A85.2572,85.2572 0 0,0 315.107,339.978" />
|
||||
<path d="M 397.517 448.241 L 403.212 448.241" />
|
||||
<path d="M 400.364 425.235 L 400.364 448.241" />
|
||||
<path d="M 292.101 339.978 L 315.107 339.978" />
|
||||
<path d="M 292.101 337.131 L 292.101 342.825" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(1 0 0 .99999 6.9031e-5 3.9431e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8897 1.8897v51.061"/><path d="m1.8897 27.423h206.27c202.74-3e-6 397.17 80.537 540.53 223.89 143.36 143.36 223.9 337.79 223.9 540.53v206.27"/><path d="m947.06 998.12h51.054"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 583 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 816.318 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="816.318" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.077324px" transform="matrix(12.9326 0 0 12.9326 -5596.77 -4599.54)" vector-effect="non-scaling-stroke">
|
||||
<path d="M494.018,413.449 A55.9268,55.9268 0 0,0 438.091,357.523" />
|
||||
<path d="M 432.765 357.523 L 438.091 357.523" />
|
||||
<path d="M 432.765 355.655 L 432.765 359.39" />
|
||||
<path d="M 494.018 413.449 L 494.018 432.979" />
|
||||
<path d="M 492.151 432.979 L 495.886 432.979" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 695 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="817.17" height="1e3" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 817.17 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="translate(-.00018248 .00014832)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8899 1.8896v48.122"/><path d="m1.8899 25.951h68.628c191.14-0.002126 374.45 75.911 509.61 211.04 135.16 135.13 211.09 318.4 211.09 509.5v251.62"/><path d="m767.14 998.11h48.142"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 607 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 977.560 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="977.560" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.155035px" transform="matrix(6.4502 0 0 6.4502 -1951.68 -1925.67)" vector-effect="non-scaling-stroke">
|
||||
<path d="M450.473,411.824 A109.616,109.616 0 0,0 340.857,302.207" />
|
||||
<path d="M 302.578 302.207 L 340.857 302.207" />
|
||||
<path d="M 450.473 411.824 L 450.473 453.582" />
|
||||
<path d="M 302.578 298.547 L 302.578 305.868" />
|
||||
<path d="M 446.813 453.582 L 454.134 453.582" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="978.19" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 978.19 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.97811 0 0 .97811 .040856 .041845)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.8641"><path d="m1.8903 1.8893v48.097"/><path d="m1.8903 25.938h251.62c191.1 4.14e-4 374.37 75.871 509.49 210.92 135.13 135.05 211.04 318.22 211.04 509.21v274.34"/><path d="m949.98 1020.4h48.132"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 594 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 956.098" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="956.098" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.096352px" transform="matrix(10.3786 0 0 10.3786 -4410.72 -3688.81)" vector-effect="non-scaling-stroke">
|
||||
<path d="M519.109,424.279 A66.6295,66.6295 0 0,0 452.48,357.649" />
|
||||
<path d="M 424.982 355.424 L 424.982 359.874" />
|
||||
<path d="M 424.982 357.649 L 452.48 357.649" />
|
||||
<path d="M 519.109 424.279 L 519.109 447.546" />
|
||||
<path d="M 516.884 447.546 L 521.334 447.546" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="957.89" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 957.89" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="translate(.0015949 -.0016606)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8882 1.8914v46.091"/><path d="m1.8882 24.931h284.31c182.71-3e-4 357.93 72.705 487.13 202.12 129.19 129.42 201.77 304.94 201.77 487.96v240.98"/><path d="m952.1 956h46.012"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 576 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 111.763 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="111.763" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.126294px" transform="matrix(7.9180 0 0 7.9180 -3145.15 -2510.31)" vector-effect="non-scaling-stroke">
|
||||
<path d="M411.328,441.351 A61.1669,61.1669 0 0,0 411.328,319.017" />
|
||||
<path d="M 397.213 441.351 L 411.328 441.351" />
|
||||
<path d="M 397.213 317.037 L 397.213 320.997" />
|
||||
<path d="M 397.213 319.017 L 411.328 319.017" />
|
||||
<path d="M 397.213 439.371 L 397.213 443.331" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="605.29" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 605.29 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="translate(-.013437 .013404)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.9032 1.8764v31.24"/><path d="m1.9032 17.496h112.94c129.65 0.21286 253.92 51.14 345.52 141.6 91.602 90.461 143.05 213.06 143.05 340.89s-51.449 250.43-143.05 340.89c-91.602 90.461-215.87 141.39-345.52 141.6h-112.94"/><path d="m1.9032 966.86v31.24"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 649 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.163460px" transform="matrix(6.1177 0 0 6.1177 -2484.11 -1886.47)" vector-effect="non-scaling-stroke">
|
||||
<path d="M564.387,438.937 A125.45,125.45 0 0,0 438.937,313.487" />
|
||||
<path d="M 406.052 308.362 L 406.052 318.612" />
|
||||
<path d="M 564.387 438.937 L 564.387 471.822" />
|
||||
<path d="M 406.052 313.487 L 438.937 313.487" />
|
||||
<path d="M 559.262 471.822 L 569.512 471.822" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1"
|
||||
viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795">
|
||||
|
||||
|
||||
|
||||
<path d="m1.8898 1.8898v62.471" style="paint-order:fill markers stroke" />
|
||||
<path
|
||||
d="m1.8898 33.125h200.42c202.78 3e-6 397.25 80.552 540.63 223.94 143.38 143.38 223.94 337.85 223.94 540.63v200.42"
|
||||
style="paint-order:fill markers stroke" />
|
||||
<path d="m935.64 998.11h62.471" style="paint-order:fill markers stroke" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 719 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 1000.000 1000.000" version="1.1" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" width="1000.000" height="1000.000" space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="0.103357px" transform="matrix(9.6752 0 0 9.6752 -3456.28 -3444.99)" vector-effect="non-scaling-stroke">
|
||||
<path d="M457.971,422.732 A64.0511,64.0511 0 0,0 393.92,358.681" />
|
||||
<path d="M 357.231 358.681 L 393.92 358.681" />
|
||||
<path d="M 457.971 422.732 L 457.971 459.421" />
|
||||
<path d="M 357.231 356.064 L 357.231 361.298" />
|
||||
<path d="M 455.355 459.421 L 460.588 459.421" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 694 B |
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<g transform="translate(4.6724e-5 3.5824e-5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-miterlimit="0" stroke-width="3.7795"><path d="m1.8897 1.8897v49.547" style="paint-order:fill markers stroke"/><path d="m1.8897 26.667h353.8c163.81-3.95e-4 320.91 65.072 436.74 180.9 115.83 115.83 180.91 272.93 180.91 436.74v353.8" style="paint-order:fill markers stroke"/><path d="m948.56 998.11h49.547" style="paint-order:fill markers stroke"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 699 B |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="489.622,424.689 432.418,367.485 " />
|
||||
<polyline points="353.982,343.749 375.113,343.749 " />
|
||||
<polyline points="486.608,427.703 492.636,421.675 " />
|
||||
<path d="M432.418,367.485 A81.041,81.041 0 0,0 375.113,343.749 " />
|
||||
<polyline points="353.982,348.011 353.982,339.486 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 813 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="514.279,325.364 514.279,319.774 " />
|
||||
<polyline points="603.213,375.639 565.706,338.132 " stroke-dasharray="3.909137,0.434349,0.868697,0.434349,0.868697,0.434349" />
|
||||
<polyline points="514.279,322.569 528.134,322.569 " stroke-dasharray="3.909137,0.434349,0.868697,0.434349,0.868697,0.434349" />
|
||||
<polyline points="601.237,377.615 605.189,373.662 " />
|
||||
<path d="M565.706,338.132 A53.1354,53.1354 0 0,0 528.134,322.569 " stroke-dasharray="3.909137,0.434349,0.868697,0.434349,0.868697,0.434349" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="283.614,314.671 283.614,330.296 " />
|
||||
<polyline points="283.614,322.483 320.749,322.483 " />
|
||||
<polyline points="472.19,448.485 457.979,414.178 " />
|
||||
<path d="M457.979,414.178 A148.537,148.537 0 0,0 320.749,322.483 " />
|
||||
<polyline points="479.408,445.496 464.972,451.475 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="355.27,336.861 355.27,339.528 " />
|
||||
<polyline points="355.27,338.194 361.608,338.194 " stroke-dasharray="1.865086,0.207232,0.414464,0.207232,0.414464,0.207232" />
|
||||
<polyline points="387.455,359.7 385.03,353.844 " stroke-dasharray="1.865086,0.207232,0.414464,0.207232,0.414464,0.207232" />
|
||||
<polyline points="388.687,359.189 386.223,360.21 " />
|
||||
<path d="M385.03,353.844 A25.3514,25.3514 0 0,0 361.608,338.194 " stroke-dasharray="1.865086,0.207232,0.414464,0.207232,0.414464,0.207232" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="431.278,455.343 440.691,455.343 " />
|
||||
<polyline points="435.984,455.343 435.984,432.972 " />
|
||||
<polyline points="324.131,343.49 346.501,343.49 " />
|
||||
<path d="M435.984,432.972 A89.4828,89.4828 0 0,0 346.501,343.49 " />
|
||||
<polyline points="324.131,348.196 324.131,338.783 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 812 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="392.338,285.758 392.338,276.978 " />
|
||||
<polyline points="492.27,385.69 501.049,385.69 " />
|
||||
<polyline points="496.66,385.69 496.66,364.826 " stroke-dasharray="6.139928,0.682214,1.364429,0.682214,1.364429,0.682214" />
|
||||
<polyline points="392.338,281.368 413.202,281.368 " stroke-dasharray="6.139928,0.682214,1.364429,0.682214,1.364429,0.682214" />
|
||||
<path d="M496.66,364.826 A83.4577,83.4577 0 0,0 413.202,281.368 " stroke-dasharray="6.139928,0.682214,1.364429,0.682214,1.364429,0.682214" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="521.728,442.509 529.279,442.509 " />
|
||||
<polyline points="525.503,442.509 525.503,433.536 " />
|
||||
<polyline points="426.807,343.813 435.78,343.813 " />
|
||||
<path d="M525.503,433.536 A89.7237,89.7237 0 0,0 435.78,343.813 " />
|
||||
<polyline points="426.807,347.588 426.807,340.037 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 813 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="376.777,289.574 376.777,278.069 " />
|
||||
<polyline points="521.406,434.203 532.911,434.203 " />
|
||||
<polyline points="527.159,434.203 527.159,420.532 " stroke-dasharray="8.046163,0.894018,1.788036,0.894018,1.788036,0.894018" />
|
||||
<polyline points="376.777,283.822 390.448,283.822 " stroke-dasharray="8.046163,0.894018,1.788036,0.894018,1.788036,0.894018" />
|
||||
<path d="M527.159,420.532 A136.71,136.71 0 0,0 390.448,283.822 " stroke-dasharray="8.046163,0.894018,1.788036,0.894018,1.788036,0.894018" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="369.644,361.73 388.999,361.73 " />
|
||||
<polyline points="460.174,383.238 426.035,369.097 " />
|
||||
<path d="M426.035,369.097 A96.7786,96.7786 0 0,0 388.999,361.73 " />
|
||||
<polyline points="369.644,365.432 369.644,358.028 " />
|
||||
<polyline points="461.591,379.818 458.757,386.658 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 812 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="438.674,405.452 438.674,398.655 " />
|
||||
<polyline points="438.674,402.054 456.441,402.054 " stroke-dasharray="3.361980,0.373553,0.747107,0.373553,0.747107,0.373553" />
|
||||
<polyline points="521.774,421.796 490.437,408.816 " stroke-dasharray="3.361980,0.373553,0.747107,0.373553,0.747107,0.373553" />
|
||||
<polyline points="523.074,418.656 520.473,424.936 " />
|
||||
<path d="M490.437,408.816 A88.8355,88.8355 0 0,0 456.441,402.054 " stroke-dasharray="3.361980,0.373553,0.747107,0.373553,0.747107,0.373553" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="292.52,331.971 352.636,331.971 " />
|
||||
<polyline points="541.844,418.209 528.42,404.785 " />
|
||||
<path d="M528.42,404.785 A248.598,248.598 0 0,0 352.636,331.972 " />
|
||||
<polyline points="292.52,341.481 292.52,322.462 " />
|
||||
<polyline points="535.12,424.933 548.568,411.484 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 809 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="278.689,349.952 278.689,345.097 " />
|
||||
<polyline points="278.689,347.524 294.033,347.524 " stroke-dasharray="2.401415,0.266824,0.533648,0.266824,0.533648,0.266824" />
|
||||
<polyline points="342.328,369.536 338.902,366.11 " stroke-dasharray="2.401415,0.266824,0.533648,0.266824,0.533648,0.266824" />
|
||||
<polyline points="344.044,367.82 340.612,371.253 " />
|
||||
<path d="M338.902,366.11 A63.4539,63.4539 0 0,0 294.033,347.524 " stroke-dasharray="2.401415,0.266824,0.533648,0.266824,0.533648,0.266824" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="379.21,368.296 379.21,359.162 " />
|
||||
<polyline points="379.21,363.729 401.894,363.729 " />
|
||||
<polyline points="495.832,408.214 486.315,398.698 " />
|
||||
<path d="M486.315,398.698 A119.389,119.389 0 0,0 401.894,363.729 " />
|
||||
<polyline points="492.602,411.444 499.061,404.985 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 812 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="157.319,347.804 157.319,327.336 " />
|
||||
<polyline points="157.319,337.57 208.15,337.57 " stroke-dasharray="10.124718,1.124969,2.249937,1.124969,2.249937,1.124969" />
|
||||
<polyline points="418.648,437.253 397.323,415.928 " stroke-dasharray="10.124718,1.124969,2.249937,1.124969,2.249937,1.124969" />
|
||||
<polyline points="425.885,430.017 411.412,444.49 " />
|
||||
<path d="M397.323,415.928 A267.531,267.531 0 0,0 208.15,337.57 " stroke-dasharray="10.124718,1.124969,2.249937,1.124969,2.249937,1.124969" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="291.983,341.206 291.983,321.212 " />
|
||||
<polyline points="291.983,331.209 340.189,331.209 " />
|
||||
<polyline points="574.835,457.603 524.987,407.755 " />
|
||||
<path d="M524.987,407.755 A261.343,261.343 0 0,0 340.189,331.209 " />
|
||||
<polyline points="567.766,464.672 581.904,450.534 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="252.127,319.099 252.127,305.778 " />
|
||||
<polyline points="252.127,312.438 284.244,312.438 " stroke-dasharray="6.589481,0.732165,1.464329,0.732165,1.464329,0.732165" />
|
||||
<polyline points="440.574,396.647 407.363,363.436 " stroke-dasharray="6.589481,0.732165,1.464329,0.732165,1.464329,0.732165" />
|
||||
<polyline points="445.284,391.937 435.864,401.357 " />
|
||||
<path d="M407.363,363.436 A174.118,174.118 0 0,0 284.244,312.438 " stroke-dasharray="6.589481,0.732165,1.464329,0.732165,1.464329,0.732165" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<text transform="matrix(63.3155 0 -0 63.3155 200.007 81.1884)" font-family="Arial,'sans-serif'" font-size="1.39636" >821104026</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="255.169,336.056 255.169,327.729 " />
|
||||
<polyline points="255.169,331.892 263.283,331.892 " />
|
||||
<polyline points="370.423,414.985 363.835,399.079 " />
|
||||
<path d="M363.835,399.079 A108.837,108.837 0 0,0 263.283,331.892 " />
|
||||
<polyline points="374.27,413.392 366.577,416.578 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="262.678,386.695 262.678,381.818 " />
|
||||
<polyline points="262.678,384.256 267.431,384.256 " stroke-dasharray="3.411071,0.379008,0.758016,0.379008,0.758016,0.379008" />
|
||||
<polyline points="330.189,432.929 326.33,423.612 " stroke-dasharray="3.411071,0.379008,0.758016,0.379008,0.758016,0.379008" />
|
||||
<polyline points="332.443,431.995 327.936,433.862 " />
|
||||
<path d="M326.33,423.612 A63.7524,63.7524 0 0,0 267.431,384.256 " stroke-dasharray="3.411071,0.379008,0.758016,0.379008,0.758016,0.379008" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="500.164,439.506 491.489,443.099 " />
|
||||
<polyline points="495.826,441.303 478.191,398.728 " />
|
||||
<polyline points="328.755,322.959 364.796,322.959 " />
|
||||
<path d="M478.191,398.728 A122.739,122.739 0 0,0 364.796,322.959 " />
|
||||
<polyline points="328.755,327.654 328.755,318.264 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.25" >
|
||||
<polyline points="479.885,460.698 473.092,463.512 " />
|
||||
<polyline points="476.488,462.105 462.679,428.766 " stroke-dasharray="0.786384,0.087376,0.174752,0.087376,0.174752,0.087376" />
|
||||
<polyline points="345.659,369.433 373.881,369.433 " stroke-dasharray="0.786384,0.087376,0.174752,0.087376,0.174752,0.087376" />
|
||||
<polyline points="345.659,365.757 345.659,373.11 " />
|
||||
<path d="M462.679,428.766 A96.1136,96.1136 0 0,0 373.881,369.433 " stroke-dasharray="0.786384,0.087376,0.174752,0.087376,0.174752,0.087376" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="327.904,343.051 327.904,349.321 " />
|
||||
<polyline points="327.904,346.186 355.473,346.186 " />
|
||||
<polyline points="440.892,420.189 431.197,396.783 " />
|
||||
<path d="M431.197,396.783 A81.9631,81.9631 0 0,0 355.473,346.186 " />
|
||||
<polyline points="443.789,418.989 437.996,421.389 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="332.625,370.081 332.625,375.837 " />
|
||||
<polyline points="332.625,372.959 357.931,372.959 " stroke-dasharray="2.847307,0.316367,0.632735,0.316367,0.632735,0.316367" />
|
||||
<polyline points="436.34,440.888 427.44,419.403 " stroke-dasharray="2.847307,0.316367,0.632735,0.316367,0.632735,0.316367" />
|
||||
<polyline points="438.998,439.786 433.681,441.989 " />
|
||||
<path d="M427.44,419.403 A75.236,75.236 0 0,0 357.931,372.959 " stroke-dasharray="2.847307,0.316367,0.632735,0.316367,0.632735,0.316367" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="478.775,434.313 486.097,434.313 " />
|
||||
<polyline points="325.841,329.046 386.739,329.046 " />
|
||||
<polyline points="482.436,434.313 482.436,424.743 " />
|
||||
<path d="M482.436,424.743 A95.6969,95.6969 0 0,0 386.739,329.046 " />
|
||||
<polyline points="325.841,332.707 325.841,325.386 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="332.371,362.312 332.371,358.828 " />
|
||||
<polyline points="405.145,410.661 408.629,410.661 " />
|
||||
<polyline points="332.371,360.57 361.35,360.57 " stroke-dasharray="2.436480,0.270720,0.541440,0.270720,0.541440,0.270720" />
|
||||
<polyline points="406.887,410.661 406.887,406.108 " stroke-dasharray="2.436480,0.270720,0.541440,0.270720,0.541440,0.270720" />
|
||||
<path d="M406.887,406.108 A45.5374,45.5374 0 0,0 361.35,360.57 " stroke-dasharray="2.436480,0.270720,0.541440,0.270720,0.541440,0.270720" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="196.434,335.294 309.83,335.294 " />
|
||||
<polyline points="519.213,447.37 475.944,404.101 " />
|
||||
<polyline points="196.434,343.14 196.434,327.449 " />
|
||||
<path d="M475.944,404.101 A234.921,234.921 0 0,0 309.83,335.294 " />
|
||||
<polyline points="513.665,452.917 524.76,441.822 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 810 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.25" >
|
||||
<polyline points="501.322,407.374 503.206,405.49 " />
|
||||
<polyline points="447.457,387.402 466.711,387.402 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
<polyline points="502.264,406.432 494.917,399.085 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
<polyline points="447.457,388.734 447.457,386.069 " />
|
||||
<path d="M494.917,399.085 A39.8888,39.8888 0 0,0 466.711,387.402 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="397.517,448.241 403.212,448.241 " />
|
||||
<polyline points="400.364,448.241 400.364,425.235 " />
|
||||
<polyline points="292.101,339.978 315.107,339.978 " />
|
||||
<path d="M400.364,425.235 A85.2572,85.2572 0 0,0 315.107,339.978 " />
|
||||
<polyline points="292.101,342.825 292.101,337.131 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="539.257,306.484 539.257,298.515 " />
|
||||
<polyline points="686.768,453.995 694.736,453.995 " />
|
||||
<polyline points="690.752,453.995 690.752,421.802 " stroke-dasharray="5.572713,0.619190,1.238381,0.619190,1.238381,0.619190" />
|
||||
<polyline points="539.257,302.5 571.449,302.5 " stroke-dasharray="5.572713,0.619190,1.238381,0.619190,1.238381,0.619190" />
|
||||
<path d="M690.752,421.802 A119.303,119.303 0 0,0 571.449,302.5 " stroke-dasharray="5.572713,0.619190,1.238381,0.619190,1.238381,0.619190" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="432.765,357.523 438.091,357.523 " />
|
||||
<polyline points="432.765,355.655 432.765,359.39 " />
|
||||
<polyline points="494.018,432.979 494.018,413.449 " />
|
||||
<path d="M494.018,413.449 A55.9268,55.9268 0 0,0 438.091,357.523 " />
|
||||
<polyline points="492.151,432.979 495.886,432.979 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="369.001,352.862 375.845,352.862 " stroke-dasharray="3.357156,0.373017,0.746035,0.373017,0.746035,0.373017" />
|
||||
<polyline points="369.001,350.462 369.001,355.262 " />
|
||||
<polyline points="447.717,449.831 447.717,424.733 " stroke-dasharray="3.357156,0.373017,0.746035,0.373017,0.746035,0.373017" />
|
||||
<polyline points="450.117,449.831 445.316,449.831 " />
|
||||
<path d="M447.717,424.733 A71.8712,71.8712 0 0,0 375.845,352.862 " stroke-dasharray="3.357156,0.373017,0.746035,0.373017,0.746035,0.373017" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="302.578,302.207 340.857,302.207 " />
|
||||
<path d="M450.473,411.824 A109.616,109.616 0 0,0 340.857,302.207 " />
|
||||
<polyline points="450.473,411.824 450.473,453.582 " />
|
||||
<polyline points="302.578,305.868 302.578,298.547 " />
|
||||
<polyline points="446.813,453.582 454.134,453.582 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 815 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.25" >
|
||||
<polyline points="298.042,296.316 330.26,296.316 " stroke-dasharray="1.464448,0.366112,0.000022,0.366112" />
|
||||
<path d="M422.52,388.576 A92.2602,92.2602 0 0,0 330.26,296.316 " stroke-dasharray="0.065900,0.007322,0.014644,0.007322,0.014644,0.007322" />
|
||||
<polyline points="422.52,388.576 422.52,423.723 " stroke-dasharray="1.464448,0.366112,0.000022,0.366112" />
|
||||
<polyline points="298.042,293.235 298.042,299.397 " />
|
||||
<polyline points="425.602,423.723 419.439,423.723 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 994 B |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<polyline points="424.982,355.424 424.982,359.874 " />
|
||||
<polyline points="424.982,357.649 452.48,357.649 " />
|
||||
<polyline points="519.109,447.546 519.109,424.279 " />
|
||||
<path d="M519.109,424.279 A66.6295,66.6295 0 0,0 452.48,357.649 " />
|
||||
<polyline points="516.884,447.546 521.334,447.546 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.25" >
|
||||
<polyline points="524.996,367.784 524.996,371.869 " />
|
||||
<polyline points="524.996,369.826 550.237,369.826 " stroke-dasharray="2.020714,0.224524,0.449047,0.224524,0.449047,0.224524" />
|
||||
<polyline points="613.441,452.345 609.356,452.345 " />
|
||||
<polyline points="611.398,452.345 611.398,430.987 " stroke-dasharray="2.020714,0.224524,0.449047,0.224524,0.449047,0.224524" />
|
||||
<path d="M611.398,430.987 A61.1609,61.1609 0 0,0 550.237,369.826 " stroke-dasharray="2.020714,0.224524,0.449047,0.224524,0.449047,0.224524" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<polyline points="397.213,441.351 411.328,441.351 " />
|
||||
<polyline points="397.213,320.997 397.213,317.037 " />
|
||||
<polyline points="397.213,319.017 411.328,319.017 " />
|
||||
<path d="M411.328,441.351 A61.1669,61.1669 0 0,0 411.328,319.017 " />
|
||||
<polyline points="397.213,443.331 397.213,439.371 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 816 B |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.25" >
|
||||
<polyline points="451.549,474.142 468.208,474.142 " stroke-dasharray="3.268227,0.363136,0.726273,0.363136,0.726273,0.363136" />
|
||||
<polyline points="451.549,476.479 451.549,471.805 " />
|
||||
<polyline points="451.549,332.102 451.549,327.428 " />
|
||||
<polyline points="451.549,329.765 468.208,329.765 " stroke-dasharray="3.268227,0.363136,0.726273,0.363136,0.726273,0.363136" />
|
||||
<path d="M468.208,474.142 A72.1886,72.1886 0 0,0 468.208,329.765 " stroke-dasharray="3.268227,0.363136,0.726273,0.363136,0.726273,0.363136" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.1" >
|
||||
<polyline points="406.052,318.612 406.052,308.362 " />
|
||||
<polyline points="564.387,471.822 564.387,438.937 " />
|
||||
<polyline points="406.052,313.487 438.937,313.487 " />
|
||||
<path d="M564.387,438.937 A125.45,125.45 0 0,0 438.937,313.487 " />
|
||||
<polyline points="559.262,471.822 569.512,471.822 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 813 B |
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<polyline points="543.899,305.24 543.899,291.856 " />
|
||||
<polyline points="757.334,505.291 743.95,505.291 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="750.642,505.291 750.642,462.352 " stroke-dasharray="9.359980,1.039998,2.079995,1.039998,2.079995,1.039998" />
|
||||
<polyline points="543.899,298.548 586.838,298.548 " stroke-dasharray="9.359980,1.039998,2.079995,1.039998,2.079995,1.039998" />
|
||||
<path d="M750.642,462.352 A163.804,163.804 0 0,0 586.838,298.548 " stroke-dasharray="9.359980,1.039998,2.079995,1.039998,2.079995,1.039998" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<polyline points="393.92,358.681 357.231,358.681 " />
|
||||
<polyline points="457.971,422.732 457.971,459.421 " />
|
||||
<path d="M457.971,422.732 A64.0511,64.0511 0 0,0 393.92,358.681 " />
|
||||
<polyline points="357.231,361.298 357.231,356.064 " />
|
||||
<polyline points="455.355,459.421 460.588,459.421 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<svg viewBox="0 0 1024 768" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" xml:space="preserve" >
|
||||
<defs >
|
||||
<clipPath id="clipId0" >
|
||||
<path d="M0,768 1024,768 1024,0 0,0 z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" />
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<polyline points="537.237,372.671 490.087,372.671 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.25" >
|
||||
<polyline points="490.087,375.972 490.087,369.369 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<polyline points="619.549,454.982 619.549,502.132 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.25" >
|
||||
<polyline points="616.247,502.132 622.85,502.132 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,255,0)" stroke-width="0.25" >
|
||||
<path d="M619.549,454.982 A82.3118,82.3118 0 0,0 537.237,372.671 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,33 @@
|
||||
@echo off
|
||||
call setenv.bat
|
||||
setlocal
|
||||
|
||||
|
||||
:: Check if Python is available
|
||||
where python >nul 2>&1
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
echo Error: Python is not found in your PATH
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Run the Python script
|
||||
echo Running omnfilo Bogen SVG...
|
||||
|
||||
echo "[DEBUG] OFBogen_PATH: %OFBogen_PATH%"
|
||||
echo "[DEBUG] Output_PATH: %RD_CONF_OUTPUT_OFBOGEN%"
|
||||
|
||||
|
||||
python %OFBogen_PATH%\02_svg_step1_convert_polylines_to_lines.py
|
||||
python %OFBogen_PATH%\02_svg_step2_find_and_mark_auxiliary_lines.py
|
||||
python %OFBogen_PATH%\02_svg_step3_scaler.py
|
||||
python %OFBogen_PATH%\02_svg_step4_format_optimization.py
|
||||
|
||||
:: Check if Python script succeeded
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo SVG optimization completed successfully
|
||||
) else (
|
||||
echo SVG optimization failed with error %ERRORLEVEL%
|
||||
)
|
||||
|
||||
pause
|
||||
@@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
call setenv.bat
|
||||
setlocal
|
||||
|
||||
:: Check if Python is available
|
||||
where python >nul 2>&1
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
echo Error: Python is not found in your PATH
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Run the Python script
|
||||
echo Running convert svgs to xml and update xml path in Props...
|
||||
|
||||
echo "[DEBUG] OFBogen_PATH: %OFBogen_PATH%"
|
||||
echo "[DEBUG] PROPS_PATH: %PROPS_PATH%"
|
||||
echo "[DEBUG] SVG_PATH: %SVG_PATH%"
|
||||
echo "[DEBUG] RD_CONF_OUTPUT_OFBOGEN: %RD_CONF_OUTPUT_OFBOGEN%"
|
||||
|
||||
python %OFBogen_PATH%\03_convert_svgs_to_xml_and_update_xml_path_in_props.py
|
||||
|
||||
pause
|
||||
@@ -8,10 +8,11 @@ set RD_CONF_CFG=%RD_CONF%\cfg
|
||||
set RD_CONF_WORK=%RD_CONF%\work
|
||||
set RD_CONF_LIB=%RD_CONF%\lib
|
||||
|
||||
|
||||
set "OFBogen_PATH=%RD_CONF%\lib\OFBogen"
|
||||
set "OFWeiche_PATH=%RD_CONF%\lib\OFWeiche"
|
||||
set "TEFWeiche_PATH=%RD_CONF%\lib\TEFWeiche"
|
||||
|
||||
|
||||
set "PROPS_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\props"
|
||||
set "SVG_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\svg"
|
||||
|
||||
|
||||
@@ -22,63 +22,53 @@ def process_json_item(item):
|
||||
item["center_line_height_mm"] = float(item["center_line_height_mm"])
|
||||
item["Objekt_width_mm"] = float(item["Objekt_width_mm"])
|
||||
item["Objekt_height_mm"] = float(item["Objekt_height_mm"])
|
||||
item["calculated_objekt_width_mm"] = float(item["calculated_objekt_width_mm"])
|
||||
item["calculated_objekt_height_mm"] = float(item["calculated_objekt_height_mm"])
|
||||
|
||||
# Calculate the direct mm to px conversions (requested additions)
|
||||
item["Objekt_width_px"] = round((item["Objekt_width_mm"] * 3.779527592),4)
|
||||
item["Objekt_height_px"] = round((item["Objekt_height_mm"] * 3.779527592),4)
|
||||
|
||||
winkel_rad = math.radians(item["Winkel"])
|
||||
sin_value = math.sin(winkel_rad)
|
||||
cos_value = math.cos(winkel_rad)
|
||||
profilebreit = 42.0782
|
||||
|
||||
|
||||
|
||||
# Determine which dimension is larger
|
||||
if item["Objekt_width_mm"] == item["Objekt_height_mm"]:
|
||||
# "Width =Height"
|
||||
scale = round(1000 / item["Objekt_width_mm"], 6)
|
||||
scale = round(1000 / item["Objekt_width_mm"], 7)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(item["Objekt_height_mm"] * scale, 3)
|
||||
scale_RD_H = 1000 / item["calculated_SVG_height_px"]
|
||||
item["calculated_SVG_height_px"] = 1000
|
||||
scale_RD_H = 1
|
||||
scale_RD_W = 1
|
||||
elif item["Objekt_width_mm"] > item["Objekt_height_mm"]:
|
||||
# Width is larger, set calculated_SVG width to 1000px
|
||||
scale = round(1000 / item["Objekt_width_mm"], 7)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
if item["Winkel"]==180:
|
||||
item["calculated_SVG_height_px"] = round(item["Objekt_height_mm"] * scale+3.7795/2, 3)
|
||||
else:
|
||||
item["calculated_SVG_height_px"] = round(item["Objekt_height_mm"] * scale+3.7795/2/sin_value, 3)
|
||||
scale_RD_H = round(1000 / item["calculated_SVG_height_px"], 6)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(item["Objekt_height_mm"] * scale, 4)
|
||||
scale_RD_H = round(1000 / item["calculated_SVG_height_px"], 7)
|
||||
scale_RD_W = 1
|
||||
else:
|
||||
# Height is larger, set calculated_SVG height to 1000px
|
||||
scale = round(1000 / item["Objekt_height_mm"], 7)
|
||||
item["calculated_SVG_height_px"] = 1000
|
||||
if item["Winkel"]==180:
|
||||
item["calculated_SVG_width_px"] = round(item["Objekt_width_mm"] * scale+3.7795/2, 3)
|
||||
else:
|
||||
item["calculated_SVG_width_px"] = round(item["Objekt_width_mm"] * scale+3.7795/2/sin_value, 3)
|
||||
scale_RD_W = round(1000 / item["calculated_SVG_width_px"], 6)
|
||||
item["calculated_SVG_width_px"] = round(item["Objekt_width_mm"] * scale, 4)
|
||||
scale_RD_W = round(1000 / item["calculated_SVG_width_px"], 7)
|
||||
scale_RD_H = 1
|
||||
|
||||
item["scale_factor"] = scale # Add scale factor
|
||||
|
||||
# Calculate connection points
|
||||
cp1_y = round(21.040 * scale*scale_RD_H, 3)
|
||||
cp1_y = round(profilebreit/2 * scale*scale_RD_H, 3)
|
||||
cp2_y = round((profilebreit/2+item["center_line_height_mm"]) * scale * scale_RD_H, 3)
|
||||
if item["calculated_SVG_height_px"] == item["calculated_SVG_width_px"]:
|
||||
cp2_x = round(item["center_line_width_mm"] * scale * scale_RD_W, 3)
|
||||
cp2_y = round((21.040 + item["center_line_height_mm"]) * scale * scale_RD_H, 3)
|
||||
elif item["calculated_SVG_height_px"] == 1000 and item["calculated_SVG_width_px"] != 1000:
|
||||
if item["Winkel"]==180:
|
||||
cp2_x = 0
|
||||
else:
|
||||
cp2_x = round((1000/item["Objekt_width_mm"]*item["center_line_width_mm"]), 3)
|
||||
cp2_y = round(((21.040 + item["center_line_height_mm"]) * scale) * scale_RD_H, 3)
|
||||
cp2_x = round((item["center_line_width_mm"] * scale) * scale_RD_W, 3)
|
||||
else:
|
||||
cp2_x = round((item["center_line_width_mm"] * scale) * scale_RD_W, 3)
|
||||
cp2_y = round(((21.040 + item["center_line_height_mm"]) * scale) * scale_RD_H, 3)
|
||||
|
||||
|
||||
cp2_direction = round(90 + item["Winkel"], 1) # Keep 1 decimal place
|
||||
|
||||
@@ -169,8 +159,9 @@ def process_json_file(input_file, output_file):
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
json_path=os.environ.get("JSON_PATH","JSON")
|
||||
input_filename = os.path.join(json_path,"1_SVGErfassung_updated_new_output.json")
|
||||
#json_path=r"C:\Users\y.wang\Documents\SSG-Ruledesigner-Konfigurator\SVGs\Omniflo\lib\OFBogen\json\1_SVGErfassung_updated_new_input.json"
|
||||
json_path=os.environ.get("JSON_PATH_BOGEN","JSON")
|
||||
input_filename = os.path.join(json_path,"1_SVGErfassung_updated_new_input.json")
|
||||
output_filename =os.path.join(json_path,"2_calculated_px_cps_output.json")
|
||||
|
||||
process_json_file(input_filename, output_filename)
|
||||
@@ -158,10 +158,10 @@ def process_files(json_file_path, txt_files_dir):
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
json_path = os.environ.get("JSON_PATH", "JSON")
|
||||
json_path = os.environ.get("JSON_PATH_OFBOGEN", "JSON")
|
||||
json_file_path = os.path.join(json_path, "2_calculated_px_cps_output.json")
|
||||
txt_files_dir = r"C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\props"
|
||||
# 确保目录存在
|
||||
txt_files_dir = os.environ.get("PROPS_PATH", "props")
|
||||
|
||||
os.makedirs(txt_files_dir, exist_ok=True)
|
||||
process_files(json_file_path, txt_files_dir)
|
||||
print("\nProcessing complete!")
|
||||
@@ -0,0 +1,386 @@
|
||||
|
||||
|
||||
import os
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
from xml.dom import minidom
|
||||
import argparse
|
||||
|
||||
def analyze_and_normalize_path(d, path_type, path_id=""):
|
||||
"""Strictly normalize path direction and generate detailed report"""
|
||||
original_d = d
|
||||
report = []
|
||||
normalized = []
|
||||
changed = False
|
||||
|
||||
# First check if path contains any arc commands
|
||||
if 'A' in d or 'a' in d:
|
||||
report.append(" Path contains arc commands - leaving unchanged")
|
||||
return original_d, report, False
|
||||
# Ensure path starts with M command
|
||||
if not d.strip().startswith('M'):
|
||||
d = 'M' + d[1:] if d.startswith('L') else 'M ' + d
|
||||
report.append(" Fix: Added M command at path start")
|
||||
changed = True
|
||||
|
||||
# Parse path commands
|
||||
commands = []
|
||||
current_cmd = None
|
||||
for token in re.split('([A-Za-z])', d):
|
||||
if not token:
|
||||
continue
|
||||
if token in 'MLAZHVCSQTa-z':
|
||||
current_cmd = token
|
||||
else:
|
||||
if current_cmd:
|
||||
commands.append((current_cmd, token.strip()))
|
||||
|
||||
prev_x, prev_y = None, None
|
||||
|
||||
for cmd, params in commands:
|
||||
params = [float(p) for p in re.split('[, ]+', params.strip()) if p]
|
||||
|
||||
if cmd == 'M':
|
||||
if len(params) >= 2:
|
||||
x, y = params[0], params[1]
|
||||
normalized.append(f"M {x} {y}")
|
||||
prev_x, prev_y = x, y
|
||||
continue
|
||||
|
||||
if path_type == 'Line segment' and cmd == 'L':
|
||||
if len(params) >= 2 and prev_x is not None:
|
||||
x, y = params[0], params[1]
|
||||
need_swap = x < prev_x or (x == prev_x and y < prev_y)
|
||||
|
||||
if need_swap:
|
||||
new_segment = [f"M {x} {y}", f"L {prev_x} {prev_y}"]
|
||||
report.append(f" Need to swap start/end → New path: {' '.join(new_segment)}")
|
||||
normalized = new_segment
|
||||
changed = True
|
||||
else:
|
||||
normalized.append(f"L {x} {y}")
|
||||
report.append(" Path direction already correct, no changes made")
|
||||
|
||||
prev_x, prev_y = x, y
|
||||
continue
|
||||
|
||||
if path_type == 'Arc' and cmd == 'A':
|
||||
if len(params) >= 7 and prev_x is not None:
|
||||
rx, ry, xrot, large, sweep, x, y = params[0], params[1], params[2], int(params[3]), int(params[4]), params[5], params[6]
|
||||
|
||||
# Force left-to-right clockwise
|
||||
need_swap = x < prev_x
|
||||
new_sweep = 1
|
||||
|
||||
if need_swap:
|
||||
new_segment = [f"M {x} {y}", f"A {rx} {ry} {xrot} {large} {new_sweep} {prev_x} {prev_y}"]
|
||||
report.append(f" Need to swap start/end → New path: {' '.join(new_segment)}")
|
||||
normalized = new_segment
|
||||
changed = True
|
||||
else:
|
||||
if sweep != new_sweep:
|
||||
new_segment = [f"A {rx} {ry} {xrot} {large} {new_sweep} {x} {y}"]
|
||||
report.append(f" Need to adjust sweep to 1 → New path: {' '.join(new_segment)}")
|
||||
normalized.extend(new_segment)
|
||||
changed = True
|
||||
else:
|
||||
normalized.append(f"A {rx} {ry} {xrot} {large} {sweep} {x} {y}")
|
||||
report.append(" Arc direction already correct, no changes made")
|
||||
|
||||
prev_x, prev_y = x, y
|
||||
continue
|
||||
|
||||
normalized.append(f"{cmd} {' '.join(map(str, params))}")
|
||||
|
||||
new_d = ' '.join(normalized)
|
||||
report_header = f"[{path_id}-Analysis] Type: {path_type}"
|
||||
full_report = [report_header, f"Original path: {original_d}"] + report
|
||||
|
||||
if changed:
|
||||
full_report.append(f"Modified path: {new_d}")
|
||||
else:
|
||||
full_report.append("Path not modified")
|
||||
|
||||
return new_d, '\n'.join(full_report)
|
||||
def analyze_and_normalize_path(d, path_type, path_id=""):
|
||||
"""Strictly normalize path direction and generate detailed report"""
|
||||
original_d = d
|
||||
report = []
|
||||
normalized = []
|
||||
changed = False
|
||||
|
||||
# First check if path contains any arc commands
|
||||
if 'A' in d or 'a' in d:
|
||||
report_header = f"[{path_id}-Analysis] Type: {path_type} (contains arcs)"
|
||||
full_report = [report_header,
|
||||
f"Original path: {original_d}",
|
||||
" Path contains arc commands - leaving unchanged",
|
||||
"Path not modified"]
|
||||
return original_d, '\n'.join(full_report)
|
||||
|
||||
# Ensure path starts with M command
|
||||
if not d.strip().startswith('M'):
|
||||
d = 'M' + d[1:] if d.startswith('L') else 'M ' + d
|
||||
report.append(" Fix: Added M command at path start")
|
||||
changed = True
|
||||
|
||||
# Parse path commands
|
||||
commands = []
|
||||
current_cmd = None
|
||||
for token in re.split('([A-Za-z])', d):
|
||||
if not token:
|
||||
continue
|
||||
if token in 'MLAZHVCSQTa-z':
|
||||
current_cmd = token
|
||||
else:
|
||||
if current_cmd:
|
||||
commands.append((current_cmd, token.strip()))
|
||||
|
||||
prev_x, prev_y = None, None
|
||||
|
||||
for cmd, params in commands:
|
||||
params = [float(p) for p in re.split('[, ]+', params.strip()) if p]
|
||||
|
||||
if cmd == 'M':
|
||||
if len(params) >= 2:
|
||||
x, y = params[0], params[1]
|
||||
normalized.append(f"M {x} {y}")
|
||||
prev_x, prev_y = x, y
|
||||
continue
|
||||
|
||||
if path_type == 'Line segment' and cmd == 'L':
|
||||
if len(params) >= 2 and prev_x is not None:
|
||||
x, y = params[0], params[1]
|
||||
need_swap = x < prev_x or (x == prev_x and y < prev_y)
|
||||
|
||||
if need_swap:
|
||||
new_segment = [f"M {x} {y}", f"L {prev_x} {prev_y}"]
|
||||
report.append(f" Need to swap start/end → New path: {' '.join(new_segment)}")
|
||||
normalized = new_segment
|
||||
changed = True
|
||||
else:
|
||||
normalized.append(f"L {x} {y}")
|
||||
report.append(" Path direction already correct, no changes made")
|
||||
|
||||
prev_x, prev_y = x, y
|
||||
continue
|
||||
|
||||
normalized.append(f"{cmd} {' '.join(map(str, params))}")
|
||||
|
||||
new_d = ' '.join(normalized)
|
||||
report_header = f"[{path_id}-Analysis] Type: {path_type}"
|
||||
full_report = [report_header, f"Original path: {original_d}"] + report
|
||||
|
||||
if changed:
|
||||
full_report.append(f"Modified path: {new_d}")
|
||||
else:
|
||||
full_report.append("Path not modified")
|
||||
|
||||
return new_d, '\n'.join(full_report)
|
||||
|
||||
def optimize_svg(input_path, output_path):
|
||||
"""Process single SVG file with all optimizations"""
|
||||
try:
|
||||
# Register namespace
|
||||
ET.register_namespace('', 'http://www.w3.org/2000/svg')
|
||||
|
||||
# Parse SVG file
|
||||
tree = ET.parse(input_path)
|
||||
root = tree.getroot()
|
||||
|
||||
print(f"\nProcessing file: {os.path.basename(input_path)}")
|
||||
print("="*60)
|
||||
|
||||
# Create parent map
|
||||
parent_map = {c: p for p in tree.iter() for c in p}
|
||||
|
||||
# 1. Remove xlink namespace
|
||||
for attr in list(root.attrib):
|
||||
if 'xlink' in attr:
|
||||
del root.attrib[attr]
|
||||
|
||||
# 2. Set standard dimensions
|
||||
root.set('width', '1e3')
|
||||
root.set('height', '1e3')
|
||||
root.set('viewBox', '0 0 1e3 1e3')
|
||||
|
||||
# 3. Remove all clipPath definitions and references
|
||||
defs = root.find('{http://www.w3.org/2000/svg}defs')
|
||||
if defs is not None:
|
||||
clip_paths = defs.findall('{http://www.w3.org/2000/svg}clipPath')
|
||||
for cp in clip_paths:
|
||||
defs.remove(cp)
|
||||
if len(defs) == 0:
|
||||
root.remove(defs)
|
||||
|
||||
# 4. Remove clip-path attributes
|
||||
for elem in tree.iter():
|
||||
if 'clip-path' in elem.attrib:
|
||||
del elem.attrib['clip-path']
|
||||
|
||||
# 5. Force square line caps
|
||||
for g in root.findall('.//{http://www.w3.org/2000/svg}g'):
|
||||
g.set('stroke-linecap', 'square')
|
||||
|
||||
# 6. Remove dashed line styles
|
||||
for elem in tree.iter():
|
||||
if 'stroke-dasharray' in elem.attrib:
|
||||
del elem.attrib['stroke-dasharray']
|
||||
|
||||
# 7. Completely remove empty groups
|
||||
removed_groups = True
|
||||
while removed_groups:
|
||||
removed_groups = False
|
||||
for g in root.findall('.//{http://www.w3.org/2000/svg}g'):
|
||||
is_empty = (
|
||||
len(g) == 0 and
|
||||
not (g.text or '').strip() and
|
||||
not (g.tail or '').strip() and
|
||||
all(not k.startswith('{') for k in g.attrib))
|
||||
if is_empty:
|
||||
parent = parent_map.get(g)
|
||||
if parent is not None:
|
||||
parent.remove(g)
|
||||
removed_groups = True
|
||||
parent_map = {c: p for p in tree.iter() for c in p}
|
||||
|
||||
# 8. Convert polylines to paths
|
||||
for polyline in root.findall('.//{http://www.w3.org/2000/svg}polyline'):
|
||||
points = polyline.get('points', '').strip()
|
||||
if points:
|
||||
coords = [p for p in re.split(r'[\s,]', points) if p]
|
||||
path_data = []
|
||||
for i in range(0, len(coords), 2):
|
||||
if i == 0:
|
||||
path_data.append(f"M {coords[i]} {coords[i+1]}")
|
||||
else:
|
||||
path_data.append(f"L {coords[i]} {coords[i+1]}")
|
||||
|
||||
path = ET.Element('{http://www.w3.org/2000/svg}path')
|
||||
new_d, analysis_report = analyze_and_normalize_path(
|
||||
' '.join(path_data),
|
||||
'Line segment',
|
||||
"Polyline conversion"
|
||||
)
|
||||
path.set('d', new_d)
|
||||
print(f"\n[Polyline conversion analysis]\n{analysis_report}")
|
||||
|
||||
for attr, value in polyline.attrib.items():
|
||||
if attr not in ('points', 'stroke-dasharray'):
|
||||
path.set(attr, value)
|
||||
|
||||
parent = parent_map.get(polyline)
|
||||
if parent is not None:
|
||||
parent.remove(polyline)
|
||||
parent.append(path)
|
||||
|
||||
# 9. Normalize path directions (final step)
|
||||
group_num = 0
|
||||
for g in root.findall('.//{http://www.w3.org/2000/svg}g'):
|
||||
group_num += 1
|
||||
path_num = 0
|
||||
group_report = []
|
||||
|
||||
for path in g.findall('.//{http://www.w3.org/2000/svg}path'):
|
||||
path_num += 1
|
||||
if 'd' not in path.attrib:
|
||||
continue
|
||||
|
||||
# Auto-detect path type
|
||||
path_type = 'Arc' if 'A' in path.get('d') else 'Line segment'
|
||||
path_id = f"Group{group_num}-Path{path_num}"
|
||||
|
||||
new_d, analysis_report = analyze_and_normalize_path(
|
||||
path.get('d'),
|
||||
path_type,
|
||||
path_id
|
||||
)
|
||||
|
||||
if new_d != path.get('d'):
|
||||
path.set('d', new_d)
|
||||
|
||||
group_report.append(analysis_report)
|
||||
|
||||
# Print all path reports for current group
|
||||
if group_report:
|
||||
print(f"\n=== Group {group_num} Path Analysis ===")
|
||||
print('\n\n'.join(group_report))
|
||||
|
||||
# 10. Update colors and line width
|
||||
for elem in root.findall('.//*[@stroke]'):
|
||||
stroke = elem.get('stroke', '').lower()
|
||||
if stroke == '#0ff' or stroke == 'rgb(0,255,255)':
|
||||
elem.set('stroke', '#ffe31b')
|
||||
elif stroke == '#000' or stroke == 'rgb(255,0,0)'or stroke == 'rgb(0,0,0)':
|
||||
elem.set('stroke', '#ffe31b')
|
||||
elem.set('stroke-width', f'{1}px')
|
||||
|
||||
# Generate final XML
|
||||
rough_string = ET.tostring(root, encoding='utf-8', xml_declaration=True)
|
||||
rough_string = rough_string.replace(b'standalone="no"', b'')
|
||||
|
||||
# Format output (remove empty lines)
|
||||
reparsed = minidom.parseString(rough_string)
|
||||
pretty_svg = reparsed.toprettyxml(indent=' ', encoding='utf-8')
|
||||
pretty_svg = b'\n'.join(
|
||||
line for line in pretty_svg.splitlines()
|
||||
if line.strip()
|
||||
).replace(b'<?xml version="1.0" ?>', b'<?xml version="1.0" encoding="utf-8"?>')
|
||||
|
||||
with open(output_path, 'wb') as f:
|
||||
f.write(pretty_svg)
|
||||
|
||||
print("\n" + "="*60)
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\nProcessing error: {str(e)}")
|
||||
print("="*60)
|
||||
return False
|
||||
|
||||
def batch_process_svgs(input_dir, output_dir):
|
||||
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
success_count = 0
|
||||
failure_count = 0
|
||||
|
||||
for filename in os.listdir(input_dir):
|
||||
if os.path.isdir(os.path.join(input_dir, filename)):
|
||||
continue
|
||||
if filename.lower().endswith('.svg') or '_new.svg' in filename.lower():
|
||||
input_path = os.path.join(input_dir, filename)
|
||||
output_filename = filename.replace('_new.svg', '_optimized.svg')
|
||||
output_path = os.path.join(output_dir, output_filename)
|
||||
|
||||
if optimize_svg(input_path, output_path):
|
||||
success_count += 1
|
||||
print(f"✓ Processed successfully: {filename} → {output_filename}")
|
||||
else:
|
||||
failure_count += 1
|
||||
print(f"✗ Processing failed: {filename}")
|
||||
print("\n" + "="*60 + "\n")
|
||||
|
||||
print("\nProcessing summary:")
|
||||
print(f"Successfully processed: {success_count} files")
|
||||
print(f"Failed to process: {failure_count} files")
|
||||
|
||||
if __name__ == '__main__':
|
||||
input_dir = os.environ.get('RD_CONF_OFBOGEN')
|
||||
output_dir = os.environ.get('RD_CONF_WORK')
|
||||
|
||||
if not input_dir or not output_dir:
|
||||
print("Error: Environment variable RD_CONF_WORK is not set")
|
||||
exit(1)
|
||||
|
||||
if not os.path.exists(input_dir):
|
||||
print(f"Error: Input directory '{input_dir}' does not exist")
|
||||
exit(1)
|
||||
|
||||
print(f"Starting SVG file processing, working directory: {input_dir}")
|
||||
print("=" * 50)
|
||||
|
||||
batch_process_svgs(input_dir, output_dir)
|
||||
|
||||
print("Processing completed!")
|
||||
@@ -0,0 +1,247 @@
|
||||
import os
|
||||
from lxml import etree
|
||||
import re
|
||||
from math import sqrt, isclose
|
||||
from collections import defaultdict
|
||||
|
||||
# Constants
|
||||
WEICHEN_PROFILE_WIDTH = 42.000
|
||||
L_R_TARGET_LENGTH = 55.7237
|
||||
DELTA_TARGET_LENGTH = 53.5437
|
||||
MATCH_TOLERANCE = 0.1 # Matching tolerance 0.1mm
|
||||
|
||||
def process_svg_files(directory):
|
||||
print(f"🔍 Scanning directory: {directory}")
|
||||
print("-" * 60)
|
||||
|
||||
result_stats = {
|
||||
'total_files': 0,
|
||||
'L_R_files': {'with_pairs': [], 'no_pairs': [], 'excess_pairs': []},
|
||||
'Delta_files': {'with_triples': [], 'no_triples': [], 'excess_triples': []}
|
||||
}
|
||||
|
||||
for filename in os.listdir(directory):
|
||||
if not filename.endswith('.svg'):
|
||||
continue
|
||||
|
||||
filepath = os.path.join(directory, filename)
|
||||
result_stats['total_files'] += 1
|
||||
|
||||
if '_L_' in filename or '_R_' in filename:
|
||||
print(f"\n📄 Processing L/R file: {filename}")
|
||||
process_lr_file(filepath, filename, result_stats)
|
||||
elif 'DeltaWeiche' in filename:
|
||||
print(f"\n📄 Processing DeltaWeiche file: {filename}")
|
||||
process_delta_file(filepath, filename, result_stats)
|
||||
|
||||
# Print final statistics
|
||||
print("\n" + "="*60)
|
||||
print("📊 Final processing statistics:")
|
||||
print(f"Total files processed: {result_stats['total_files']}")
|
||||
|
||||
print("\nL/R type files results:")
|
||||
print(f"✅ Files with matching path pairs: {len(result_stats['L_R_files']['with_pairs'])}")
|
||||
print(f" {result_stats['L_R_files']['with_pairs']}")
|
||||
print(f"⚠️ Files with no matching paths: {len(result_stats['L_R_files']['no_pairs'])}")
|
||||
print(f" {result_stats['L_R_files']['no_pairs']}")
|
||||
print(f"❌ Files with >2 matching paths: {len(result_stats['L_R_files']['excess_pairs'])}")
|
||||
print(f" {result_stats['L_R_files']['excess_pairs']}")
|
||||
|
||||
print("\nDeltaWeiche type files results:")
|
||||
print(f"✅ Files with matching path triples: {len(result_stats['Delta_files']['with_triples'])}")
|
||||
print(f" {result_stats['Delta_files']['with_triples']}")
|
||||
print(f"⚠️ Files with no matching paths: {len(result_stats['Delta_files']['no_triples'])}")
|
||||
print(f" {result_stats['Delta_files']['no_triples']}")
|
||||
print(f"❌ Files with ≠3 matching paths: {len(result_stats['Delta_files']['excess_triples'])}")
|
||||
print(f" {result_stats['Delta_files']['excess_triples']}")
|
||||
|
||||
print("\n✨ Processing complete!")
|
||||
|
||||
def process_lr_file(filepath, filename, stats):
|
||||
try:
|
||||
tree = etree.parse(filepath)
|
||||
root = tree.getroot()
|
||||
|
||||
# Find all straight line paths
|
||||
straight_lines = find_straight_lines(root)
|
||||
print(f" 📊 Found {len(straight_lines)} straight paths")
|
||||
|
||||
# Print all straight paths
|
||||
print("\n 🔍 All straight path details:")
|
||||
for line in straight_lines:
|
||||
print(f" Path{line['index']}: ({line['p1'][0]:.2f},{line['p1'][1]:.2f})→"
|
||||
f"({line['p2'][0]:.2f},{line['p2'][1]:.2f}) length={line['length']:.4f}mm")
|
||||
|
||||
# Group by length
|
||||
length_groups = group_lines_by_length(straight_lines)
|
||||
|
||||
# Only print groups with exactly 2 paths
|
||||
print("\n 🔍 Same-length path groups (2 paths):")
|
||||
perfect_pairs = [group for group in length_groups.values() if len(group) == 2]
|
||||
for group in perfect_pairs:
|
||||
print(f" ┌ Length group ({group[0]['length']:.4f}mm, 2 paths)")
|
||||
for line in group:
|
||||
print(f" │ Path{line['index']}: ({line['p1'][0]:.2f},{line['p1'][1]:.2f})→"
|
||||
f"({line['p2'][0]:.2f},{line['p2'][1]:.2f})")
|
||||
print(" └" + "─" * 40)
|
||||
|
||||
if len(perfect_pairs) == 1:
|
||||
pair = perfect_pairs[0]
|
||||
original_length = pair[0]['length']
|
||||
scale_factor = WEICHEN_PROFILE_WIDTH / original_length
|
||||
print(f"\n 🔄 Scaling calculation (based on length {original_length:.4f}mm):")
|
||||
print(f" Scale factor: {scale_factor:.4f}")
|
||||
|
||||
# Print scaled lengths
|
||||
print("\n 🔍 Scaled path lengths:")
|
||||
for line in straight_lines:
|
||||
scaled_len = line['length'] * scale_factor
|
||||
print(f" Path{line['index']}: {line['length']:.4f}mm → {scaled_len:.4f}mm")
|
||||
|
||||
# Find path matching target length (within tolerance)
|
||||
target_path = find_target_path(straight_lines, scale_factor, L_R_TARGET_LENGTH)
|
||||
if target_path:
|
||||
target_path['element'].set('style', 'stroke:none;fill:none;')
|
||||
tree.write(filepath, encoding='utf-8', xml_declaration=True)
|
||||
print(f"\n ✅ Hid path{target_path['index']} matching target length {L_R_TARGET_LENGTH:.4f}mm (±{MATCH_TOLERANCE}mm)")
|
||||
stats['L_R_files']['with_pairs'].append(filename)
|
||||
else:
|
||||
print(f"\n ❌ No path found matching {L_R_TARGET_LENGTH:.4f}mm (±{MATCH_TOLERANCE}mm)")
|
||||
stats['L_R_files']['no_pairs'].append(filename)
|
||||
elif len(perfect_pairs) > 1:
|
||||
print(f"\n ❗ Found multiple same-length path groups: {[len(g) for g in length_groups.values()]}")
|
||||
stats['L_R_files']['excess_pairs'].append(filename)
|
||||
else:
|
||||
print("\n ❌ No same-length path pairs found")
|
||||
stats['L_R_files']['no_pairs'].append(filename)
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Processing failed: {str(e)}")
|
||||
|
||||
def process_delta_file(filepath, filename, stats):
|
||||
try:
|
||||
tree = etree.parse(filepath)
|
||||
root = tree.getroot()
|
||||
|
||||
# Find all straight line paths
|
||||
straight_lines = find_straight_lines(root)
|
||||
print(f" 📊 Found {len(straight_lines)} straight paths")
|
||||
|
||||
# Print all straight paths
|
||||
print("\n 🔍 All straight path details:")
|
||||
for line in straight_lines:
|
||||
print(f" Path{line['index']}: ({line['p1'][0]:.2f},{line['p1'][1]:.2f})→"
|
||||
f"({line['p2'][0]:.2f},{line['p2'][1]:.2f}) length={line['length']:.4f}mm")
|
||||
|
||||
# Group by length
|
||||
length_groups = group_lines_by_length(straight_lines)
|
||||
|
||||
# Only print groups with exactly 3 paths
|
||||
print("\n 🔍 Same-length path groups (3 paths):")
|
||||
perfect_triples = [group for group in length_groups.values() if len(group) == 3]
|
||||
for group in perfect_triples:
|
||||
print(f" ┌ Length group ({group[0]['length']:.4f}mm, 3 paths)")
|
||||
for line in group:
|
||||
print(f" │ Path{line['index']}: ({line['p1'][0]:.2f},{line['p1'][1]:.2f})→"
|
||||
f"({line['p2'][0]:.2f},{line['p2'][1]:.2f})")
|
||||
print(" └" + "─" * 40)
|
||||
|
||||
if len(perfect_triples) == 1:
|
||||
triple = perfect_triples[0]
|
||||
original_length = triple[0]['length']
|
||||
scale_factor = WEICHEN_PROFILE_WIDTH / original_length
|
||||
print(f"\n 🔄 Scaling calculation (based on length {original_length:.4f}mm):")
|
||||
print(f" Scale factor: {scale_factor:.4f}")
|
||||
|
||||
# Print scaled lengths
|
||||
print("\n 🔍 Scaled path lengths:")
|
||||
for line in straight_lines:
|
||||
scaled_len = line['length'] * scale_factor
|
||||
print(f" Path{line['index']}: {line['length']:.4f}mm → {scaled_len:.4f}mm")
|
||||
|
||||
# Find all paths matching target length (there might be multiple)
|
||||
target_paths = [line for line in straight_lines
|
||||
if abs(line['length'] * scale_factor - DELTA_TARGET_LENGTH) < MATCH_TOLERANCE]
|
||||
|
||||
if target_paths:
|
||||
for target in target_paths:
|
||||
target['element'].set('style', 'stroke:none;fill:none;')
|
||||
tree.write(filepath, encoding='utf-8', xml_declaration=True)
|
||||
print(f"\n ✅ Hid {len(target_paths)} paths matching target length {DELTA_TARGET_LENGTH:.4f}mm (±{MATCH_TOLERANCE}mm):")
|
||||
for target in target_paths:
|
||||
print(f" - Path{target['index']}")
|
||||
stats['Delta_files']['with_triples'].append(filename)
|
||||
else:
|
||||
print(f"\n ❌ No path found matching {DELTA_TARGET_LENGTH:.4f}mm (±{MATCH_TOLERANCE}mm)")
|
||||
stats['Delta_files']['no_triples'].append(filename)
|
||||
elif len(perfect_triples) > 1:
|
||||
print(f"\n ❗ Found multiple same-length path groups: {[len(g) for g in length_groups.values()]}")
|
||||
stats['Delta_files']['excess_triples'].append(filename)
|
||||
else:
|
||||
print("\n ❌ No same-length path groups (3 paths) found")
|
||||
stats['Delta_files']['no_triples'].append(filename)
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Processing failed: {str(e)}")
|
||||
|
||||
def find_straight_lines(root):
|
||||
"""Find all straight line paths"""
|
||||
lines = []
|
||||
paths = root.xpath('.//svg:path|.//svg:g//svg:path',
|
||||
namespaces={'svg': 'http://www.w3.org/2000/svg'})
|
||||
|
||||
for i, path in enumerate(paths, 1):
|
||||
d = path.get('d', '').strip()
|
||||
if not d:
|
||||
continue
|
||||
|
||||
if is_straight_line(d):
|
||||
length, (p1, p2) = calculate_line_length(d)
|
||||
if length > 0:
|
||||
lines.append({
|
||||
'index': i,
|
||||
'element': path,
|
||||
'length': round(length, 4), # Keep 4 decimal places
|
||||
'p1': (round(p1[0], 2), round(p1[1], 2)), # Coordinates rounded to 2 decimals
|
||||
'p2': (round(p2[0], 2), round(p2[1], 2))
|
||||
})
|
||||
return lines
|
||||
|
||||
def group_lines_by_length(lines):
|
||||
"""Group straight paths by length"""
|
||||
groups = defaultdict(list)
|
||||
for line in lines:
|
||||
groups[line['length']].append(line)
|
||||
return groups
|
||||
|
||||
def find_target_path(lines, scale_factor, target_length):
|
||||
"""Find path that matches target length after scaling (within tolerance)"""
|
||||
for line in lines:
|
||||
scaled_length = line['length'] * scale_factor
|
||||
if abs(scaled_length - target_length) < MATCH_TOLERANCE:
|
||||
return line
|
||||
return None
|
||||
|
||||
def is_straight_line(d):
|
||||
"""Check if path is strictly a straight line"""
|
||||
commands = [cmd[0].upper() for cmd in re.findall('([A-Za-z])', d)]
|
||||
return len(commands) == 2 and commands[0] == 'M' and commands[1] == 'L'
|
||||
|
||||
def calculate_line_length(d):
|
||||
"""Calculate line length and return endpoints"""
|
||||
points = []
|
||||
for cmd, params in re.findall('([A-Za-z])([^A-Za-z]*)', d):
|
||||
if cmd.upper() in ('M', 'L'):
|
||||
coords = [float(p) for p in re.findall('[-+]?\d*\.\d+|[-+]?\d+', params)]
|
||||
points.append((coords[0], coords[1]))
|
||||
|
||||
if len(points) != 2:
|
||||
return 0, ((0,0), (0,0))
|
||||
|
||||
length = sqrt((points[1][0]-points[0][0])**2 + (points[1][1]-points[0][1])**2)
|
||||
return round(length, 4), (points[0], points[1]) # Length rounded to 4 decimals
|
||||
if __name__ == '__main__':
|
||||
# Set SVG files directory path
|
||||
# svg_directory = r'C:\Users\y.wang\Documents\SSG-Ruledesigner-Konfigurator\SVGs\Omniflo\work'
|
||||
svg_directory =os.environ.get('RD_CONF_WORK')
|
||||
process_svg_files(svg_directory)
|
||||
@@ -0,0 +1,158 @@
|
||||
import os
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
from typing import Tuple, List
|
||||
|
||||
def parse_svg_path(d: str) -> List[Tuple[float, float]]:
|
||||
"""Extract all coordinates from SVG path data (including curve control points)"""
|
||||
points = []
|
||||
commands = re.findall(
|
||||
r'([MmLlCcQqAaHhVvZz])([^MmLlCcQqAaHhVvZz]*)',
|
||||
d.strip().replace(',', ' ')
|
||||
)
|
||||
current_pos = (0.0, 0.0)
|
||||
|
||||
for cmd, args in commands:
|
||||
args = list(map(float, re.findall(r'[-+]?\d*\.?\d+', args)))
|
||||
if cmd in ('M', 'm', 'L', 'l'): # Move/line commands
|
||||
for i in range(0, len(args), 2):
|
||||
x, y = args[i], args[i+1]
|
||||
if cmd.islower(): # Relative coordinates
|
||||
x += current_pos[0]
|
||||
y += current_pos[1]
|
||||
points.append((x, y))
|
||||
current_pos = (x, y)
|
||||
elif cmd in ('C', 'c'): # Cubic Bezier curves
|
||||
for i in range(0, len(args), 6):
|
||||
x1, y1, x2, y2, x, y = args[i:i+6]
|
||||
if cmd.islower():
|
||||
x1 += current_pos[0]; y1 += current_pos[1]
|
||||
x2 += current_pos[0]; y2 += current_pos[1]
|
||||
x += current_pos[0]; y += current_pos[1]
|
||||
points.extend([(x1, y1), (x2, y2), (x, y)])
|
||||
current_pos = (x, y)
|
||||
elif cmd in ('A', 'a'): # Arc commands (start/end points only)
|
||||
for i in range(0, len(args), 7):
|
||||
x, y = args[i+5], args[i+6]
|
||||
if cmd.islower():
|
||||
x += current_pos[0]
|
||||
y += current_pos[1]
|
||||
points.append((x, y))
|
||||
current_pos = (x, y)
|
||||
return points
|
||||
|
||||
def calculate_bounding_box(svg_file: str) -> Tuple[float, float, float, float]:
|
||||
"""Calculate true bounding box of all paths in SVG"""
|
||||
tree = ET.parse(svg_file)
|
||||
root = tree.getroot()
|
||||
all_points = []
|
||||
|
||||
for path in root.findall('.//{http://www.w3.org/2000/svg}path'):
|
||||
d = path.get('d', '')
|
||||
all_points.extend(parse_svg_path(d))
|
||||
|
||||
if not all_points:
|
||||
return (0, 0, 0, 0)
|
||||
|
||||
x_min = min(p[0] for p in all_points)
|
||||
x_max = max(p[0] for p in all_points)
|
||||
y_min = min(p[1] for p in all_points)
|
||||
y_max = max(p[1] for p in all_points)
|
||||
return (x_min, y_min, x_max, y_max)
|
||||
|
||||
|
||||
def normalize_stroke_widths2(root, scale):
|
||||
"""Normalize stroke widths to ensure consistent appearance after scaling"""
|
||||
for elem in root.iter():
|
||||
if 'stroke-width' in elem.attrib:
|
||||
# Remove existing stroke-width
|
||||
del elem.attrib['stroke-width']
|
||||
# Apply scaled stroke width (e.g., 1px → 1/scale)
|
||||
elem.set('stroke-width', f'{1/scale:.6f}px')
|
||||
|
||||
def apply_non_scaling_stroke(root):
|
||||
|
||||
for elem in root.iter():
|
||||
if 'stroke' in elem.attrib and elem.attrib['stroke'] != 'none':
|
||||
# set stroke-width=1(no unit)
|
||||
elem.set('stroke-width', '1')
|
||||
# set vector-effect
|
||||
elem.set('vector-effect', 'non-scaling-stroke')
|
||||
|
||||
def scale_svg_file(input_path: str, output_path: str):
|
||||
"""Scale SVG file with consistent stroke widths"""
|
||||
print(f"\nProcessing: {os.path.basename(input_path)}")
|
||||
|
||||
tree = ET.parse(input_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# Calculate original bounding box
|
||||
x_min, y_min, x_max, y_max = calculate_bounding_box(input_path)
|
||||
width = x_max - x_min
|
||||
height = y_max - y_min
|
||||
|
||||
print(f"Original bounding box: ({x_min:.3f}, {y_min:.3f}) to ({x_max:.3f}, {y_max:.3f})")
|
||||
print(f"Original dimensions: {width:.3f} (w) × {height:.3f} (h)")
|
||||
|
||||
|
||||
# Determine scaling base (larger dimension → 1000px)
|
||||
if width > height:
|
||||
scale = 1000.0 / width
|
||||
new_width = 1000.0
|
||||
new_height = round(height * scale,3)
|
||||
print(f"Scaling base: Width (larger dimension)")
|
||||
else:
|
||||
scale = 1000.0 / height
|
||||
new_height = 1000.0
|
||||
new_width = round(width * scale,3)
|
||||
print(f"Scaling base: Height (larger dimension)")
|
||||
|
||||
print(f"Scale factor: {scale:.6f}")
|
||||
print(f"New dimensions: {new_width:.3f}px × {new_height:.3f}px")
|
||||
print(f"ViewBox: 0 0 {new_width:.3f} {new_height:.3f}")
|
||||
normalize_stroke_widths2(root, scale)
|
||||
#apply_non_scaling_stroke(root)
|
||||
#
|
||||
# Update SVG attributes
|
||||
root.set('viewBox', f'0 0 {new_width:.3f} {new_height:.3f}')
|
||||
root.set('width', f'{new_width:.3f}')
|
||||
root.set('height', f'{new_height:.3f}')
|
||||
|
||||
# Apply translation and scaling
|
||||
for g in root.findall('{http://www.w3.org/2000/svg}g'):
|
||||
transform = g.get('transform', '')
|
||||
new_transform = f'translate({-x_min*scale},{-y_min*scale}) scale({scale})'
|
||||
if transform:
|
||||
new_transform = f'{transform} {new_transform}'
|
||||
g.set('transform', new_transform)
|
||||
|
||||
# Save modified SVG
|
||||
tree.write(output_path, encoding='utf-8', xml_declaration=True)
|
||||
print(f"Finished processing: {os.path.basename(input_path)}")
|
||||
|
||||
def batch_process_svg(input_dir: str, output_dir: str):
|
||||
"""Batch process SVG files in directory (non-recursive)"""
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
svg_files = [
|
||||
f for f in os.listdir(input_dir)
|
||||
if f.lower().endswith('.svg') and os.path.isfile(os.path.join(input_dir, f))
|
||||
]
|
||||
|
||||
if not svg_files:
|
||||
print("No SVG files found in the input directory!")
|
||||
return
|
||||
|
||||
print(f"\nFound {len(svg_files)} SVG files to process")
|
||||
for filename in svg_files:
|
||||
input_path = os.path.join(input_dir, filename)
|
||||
output_path = os.path.join(output_dir, filename)
|
||||
scale_svg_file(input_path, output_path)
|
||||
|
||||
print("\nAll files processed successfully!")
|
||||
|
||||
if __name__ == '__main__':
|
||||
input_dir = os.environ.get('RD_CONF_WORK')
|
||||
output_dir = os.environ.get('RD_CONF_WORK')
|
||||
batch_process_svg(input_dir, output_dir)
|
||||
@@ -0,0 +1,160 @@
|
||||
import re
|
||||
import os
|
||||
import xml.etree.ElementTree as ET
|
||||
from typing import List, Dict, Tuple
|
||||
|
||||
def process_svg_file(input_path: str, output_path: str) -> bool:
|
||||
"""Process SVG file while preserving original dimensions and viewBox"""
|
||||
try:
|
||||
# Parse SVG file
|
||||
tree = ET.parse(input_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# Store original dimensions and viewBox
|
||||
original_attrs = {
|
||||
'width': root.attrib.get('width', '100%'),
|
||||
'height': root.attrib.get('height', '100%'),
|
||||
'viewBox': root.attrib.get('viewBox', '')
|
||||
}
|
||||
|
||||
# Remove namespace prefixes
|
||||
for elem in root.iter():
|
||||
if '}' in elem.tag:
|
||||
elem.tag = elem.tag.split('}', 1)[1]
|
||||
for attr in list(elem.attrib):
|
||||
if '}' in attr:
|
||||
new_attr = attr.split('}', 1)[1]
|
||||
elem.attrib[new_attr] = elem.attrib[attr]
|
||||
del elem.attrib[attr]
|
||||
|
||||
# Process all groups with transforms
|
||||
for g in root.findall('g'):
|
||||
if 'transform' in g.attrib:
|
||||
# Parse transform and convert to matrix
|
||||
transform = g.attrib['transform']
|
||||
matrix_str = convert_transform_to_matrix(transform)
|
||||
|
||||
# Update group attributes
|
||||
g.attrib['transform'] = matrix_str
|
||||
g.attrib['stroke'] = '#ffe31b' # Force stroke color
|
||||
g.attrib['fill'] = 'none'
|
||||
g.attrib['stroke-linecap'] = 'square'
|
||||
g.attrib['vector-effect'] = 'non-scaling-stroke'
|
||||
|
||||
# Format paths within group
|
||||
for path in g.findall('path'):
|
||||
path.attrib['d'] = simplify_path_data(path.attrib.get('d', ''))
|
||||
path.tail = '\n ' # Maintain consistent indentation
|
||||
|
||||
# Set root attributes while preserving original dimensions
|
||||
root.attrib.update({
|
||||
'version': '1.1',
|
||||
'xmlns': 'http://www.w3.org/2000/svg',
|
||||
'width': original_attrs['width'],
|
||||
'height': original_attrs['height'],
|
||||
'viewBox': original_attrs['viewBox'],
|
||||
'fill-rule': 'evenodd',
|
||||
'stroke-linecap': 'round',
|
||||
'stroke-linejoin': 'round',
|
||||
'space': 'preserve'
|
||||
})
|
||||
|
||||
# Format XML with proper indentation
|
||||
indent(root)
|
||||
|
||||
# Generate XML string
|
||||
xml_str = ET.tostring(root, encoding='unicode')
|
||||
xml_str = '<?xml version="1.0" encoding="UTF-8"?>\n' + xml_str
|
||||
|
||||
# Clean up formatting
|
||||
xml_str = re.sub(r'\n\s*\n', '\n', xml_str)
|
||||
xml_str = re.sub(r'>\s+<', '>\n<', xml_str)
|
||||
|
||||
# Write to file
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
f.write(xml_str)
|
||||
|
||||
print(f"Processed: {os.path.basename(input_path)}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"Failed {os.path.basename(input_path)}: {str(e)}")
|
||||
return False
|
||||
|
||||
def convert_transform_to_matrix(transform: str) -> str:
|
||||
"""Convert transform string to matrix notation with 4 decimal places"""
|
||||
tx = ty = 0.0
|
||||
translate_match = re.search(r'translate\(([^,]+),\s*([^)]+)\)', transform)
|
||||
if translate_match:
|
||||
tx = float(translate_match.group(1))
|
||||
ty = float(translate_match.group(2))
|
||||
|
||||
scale = 1.0
|
||||
scale_match = re.search(r'scale\(([^)]+)\)', transform)
|
||||
if scale_match:
|
||||
scale = float(scale_match.group(1))
|
||||
|
||||
return f"matrix({scale:.4f} 0 0 {scale:.4f} {tx:.2f} {ty:.2f})"
|
||||
|
||||
def simplify_path_data(d: str) -> str:
|
||||
"""Simplify path data while maintaining relative commands"""
|
||||
d = re.sub(r'\s+', ' ', d.strip())
|
||||
|
||||
def format_number(num_str: str) -> str:
|
||||
try:
|
||||
num = float(num_str)
|
||||
if abs(num) < 0.001 and num != 0:
|
||||
return f"{num:.0e}".replace('e-0', 'e-')
|
||||
if abs(num - 1000) < 0.1:
|
||||
return '1e3'
|
||||
if abs(num - round(num, 3)) < 0.0001:
|
||||
return f"{round(num, 3):g}"
|
||||
return num_str
|
||||
except ValueError:
|
||||
return num_str
|
||||
|
||||
parts = []
|
||||
for part in re.split(r'([ ,])', d):
|
||||
if re.match(r'^[-+]?\d*\.?\d+$', part):
|
||||
parts.append(format_number(part))
|
||||
else:
|
||||
parts.append(part)
|
||||
|
||||
return ''.join(parts).replace(' ,', ',')
|
||||
|
||||
def indent(elem: ET.Element, level: int = 0):
|
||||
"""Properly indent XML elements"""
|
||||
indent_str = "\n" + level * " "
|
||||
if len(elem):
|
||||
if not elem.text or not elem.text.strip():
|
||||
elem.text = indent_str + " "
|
||||
if not elem.tail or not elem.tail.strip():
|
||||
elem.tail = indent_str
|
||||
for child in elem:
|
||||
indent(child, level + 1)
|
||||
if not elem.tail or not elem.tail.strip():
|
||||
elem.tail = indent_str
|
||||
else:
|
||||
if level and (not elem.tail or not elem.tail.strip()):
|
||||
elem.tail = indent_str
|
||||
|
||||
def batch_process_svgs(input_dir: str, output_dir: str):
|
||||
"""Process all SVG files in a directory"""
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
success_count = 0
|
||||
for filename in sorted(os.listdir(input_dir)):
|
||||
if filename.lower().endswith('.svg'):
|
||||
input_path = os.path.join(input_dir, filename)
|
||||
output_path = os.path.join(output_dir, filename)
|
||||
if process_svg_file(input_path, output_path):
|
||||
success_count += 1
|
||||
|
||||
print(f"\nCompleted: {success_count} files processed")
|
||||
|
||||
if __name__ == '__main__':
|
||||
input_dir = os.environ.get('RD_CONF_WORK')
|
||||
output_dir = os.environ.get('RD_CONF_OUTPUT_OFBOGEN')
|
||||
# Example usage:
|
||||
batch_process_svgs(input_dir, output_dir)
|
||||
@@ -0,0 +1,194 @@
|
||||
import os
|
||||
import re
|
||||
import json
|
||||
from xml.etree import ElementTree as ET
|
||||
from xml.dom import minidom
|
||||
|
||||
def extract_sivasnr(filename):
|
||||
"""Extract numeric ID from filename"""
|
||||
match = re.search(r'(\d+)\.svg$', filename)
|
||||
return match.group(1) if match else None
|
||||
|
||||
def should_skip_stroke_width(element_attrib):
|
||||
"""Check if element should skip stroke-width setting"""
|
||||
# Check style attribute
|
||||
if 'style' in element_attrib:
|
||||
style = element_attrib['style'].lower()
|
||||
if 'stroke:none' in style and 'fill:none' in style:
|
||||
return True
|
||||
|
||||
# Check separate stroke and fill attributes
|
||||
stroke = element_attrib.get('stroke', '').lower()
|
||||
fill = element_attrib.get('fill', '').lower()
|
||||
return stroke == 'none' and fill == 'none'
|
||||
|
||||
def create_xml_structure(svg_root):
|
||||
"""Create target XML structure preserving all elements"""
|
||||
# Create base structure
|
||||
new_root = ET.Element("svg", xmlns="http://www.w3.org/2000/svg")
|
||||
g_layer = ET.SubElement(new_root, "g", transform="rotate(0)")
|
||||
|
||||
# Add inner SVG container
|
||||
inner_svg = ET.SubElement(g_layer, "svg", {
|
||||
"viewBox": svg_root.attrib.get("viewBox", "0 0 1000 1000"),
|
||||
"preserveAspectRatio": "none",
|
||||
"position": "absolute",
|
||||
"overflow": "visible"
|
||||
})
|
||||
|
||||
# Transfer all content
|
||||
for elem in svg_root:
|
||||
if elem.tag.endswith("}g"):
|
||||
# Process group with namespace
|
||||
new_g = ET.SubElement(inner_svg, "g", attrib={
|
||||
k: v for k, v in elem.attrib.items()
|
||||
if not k.startswith("xmlns")
|
||||
})
|
||||
|
||||
# Process all elements within group
|
||||
for child in elem:
|
||||
child_tag = child.tag.split("}")[-1] # Remove namespace
|
||||
child_attrib = {}
|
||||
|
||||
# Preserve all original attributes (except namespace)
|
||||
for k, v in child.attrib.items():
|
||||
if not k.startswith("xmlns"):
|
||||
child_attrib[k] = v
|
||||
|
||||
# Only add stroke-width if not stroke:none;fill:none
|
||||
if not should_skip_stroke_width(child.attrib):
|
||||
child_attrib["stroke-width"] = "1px"
|
||||
|
||||
# Create element with preserved attributes
|
||||
ET.SubElement(new_g, child_tag, attrib=child_attrib)
|
||||
|
||||
else:
|
||||
# Process standalone elements (path, circle, etc.)
|
||||
elem_tag = elem.tag.split("}")[-1] # Remove namespace
|
||||
elem_attrib = {}
|
||||
|
||||
# Preserve all original attributes (except namespace)
|
||||
for k, v in elem.attrib.items():
|
||||
if not k.startswith("xmlns"):
|
||||
elem_attrib[k] = v
|
||||
|
||||
# Only add stroke-width if not stroke:none;fill:none
|
||||
if not should_skip_stroke_width(elem.attrib):
|
||||
elem_attrib["stroke-width"] = "1px"
|
||||
|
||||
ET.SubElement(inner_svg, elem_tag, attrib=elem_attrib)
|
||||
|
||||
return new_root
|
||||
|
||||
def format_xml(element):
|
||||
"""Generate formatted XML string"""
|
||||
# Generate XML with declaration
|
||||
xml_str = ET.tostring(element, encoding="UTF-8", xml_declaration=True)
|
||||
|
||||
# Pretty format with 2-space indent
|
||||
dom = minidom.parseString(xml_str)
|
||||
pretty_xml = dom.toprettyxml(indent=" ", encoding="UTF-8").decode("UTF-8")
|
||||
|
||||
# Remove extra empty lines (preserve structure)
|
||||
lines = []
|
||||
for line in pretty_xml.split("\n"):
|
||||
if line.strip() or line.lstrip().startswith("</"):
|
||||
lines.append(line)
|
||||
return "\n".join(lines)
|
||||
|
||||
def convert_svg_to_xml(svg_path, output_dir):
|
||||
"""Convert SVG to target XML format"""
|
||||
sivasnr = extract_sivasnr(os.path.basename(svg_path))
|
||||
if not sivasnr:
|
||||
raise ValueError(f"Invalid filename format: {os.path.basename(svg_path)}")
|
||||
|
||||
# Parse original SVG
|
||||
try:
|
||||
tree = ET.parse(svg_path)
|
||||
svg_root = tree.getroot()
|
||||
except Exception as e:
|
||||
raise ValueError(f"SVG parsing error: {str(e)}")
|
||||
|
||||
# Build new structure
|
||||
new_xml = create_xml_structure(svg_root)
|
||||
formatted_xml = format_xml(new_xml)
|
||||
|
||||
# Ensure output directory exists
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
output_path = os.path.join(output_dir, f"{sivasnr}.xml")
|
||||
|
||||
# Write file (UTF-8 encoding)
|
||||
with open(output_path, "w", encoding="UTF-8") as f:
|
||||
f.write(formatted_xml)
|
||||
|
||||
return f"SSG/shapes/svg/{sivasnr}.xml"
|
||||
|
||||
def update_txt_file(txt_path, xml_rel_path):
|
||||
"""Update path in TXT file"""
|
||||
try:
|
||||
with open(txt_path, "r", encoding="UTF-8-sig") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if "srcSVG" not in data:
|
||||
raise ValueError("Missing srcSVG field")
|
||||
|
||||
data["srcSVG"] = xml_rel_path
|
||||
|
||||
with open(txt_path, "w", encoding="UTF-8") as f:
|
||||
json.dump(data, f, indent=4, ensure_ascii=False)
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Update failed {os.path.basename(txt_path)}: {str(e)}")
|
||||
return False
|
||||
|
||||
def process_files(svg_dir, txt_dir, output_dir):
|
||||
"""Batch process files"""
|
||||
if not all(map(os.path.exists, [svg_dir, txt_dir])):
|
||||
raise FileNotFoundError("Input directory not found")
|
||||
|
||||
results = {"success": 0, "failed": 0}
|
||||
|
||||
for svg_file in os.listdir(svg_dir):
|
||||
if not svg_file.endswith(".svg"):
|
||||
continue
|
||||
|
||||
svg_path = os.path.join(svg_dir, svg_file)
|
||||
sivasnr = extract_sivasnr(svg_file)
|
||||
|
||||
if not sivasnr:
|
||||
print(f"Skipping invalid file: {svg_file}")
|
||||
results["failed"] += 1
|
||||
continue
|
||||
|
||||
try:
|
||||
# Convert file
|
||||
xml_rel_path = convert_svg_to_xml(svg_path, output_dir)
|
||||
|
||||
# Update TXT
|
||||
txt_path = os.path.join(txt_dir, f"{sivasnr}.txt")
|
||||
if not os.path.exists(txt_path):
|
||||
raise FileNotFoundError(f"Corresponding TXT file not found: {sivasnr}.txt")
|
||||
|
||||
if update_txt_file(txt_path, xml_rel_path):
|
||||
print(f"Success: {svg_file} → {sivasnr}.xml")
|
||||
results["success"] += 1
|
||||
else:
|
||||
results["failed"] += 1
|
||||
|
||||
except Exception as e:
|
||||
print(f"Processing failed {svg_file}: {str(e)}")
|
||||
results["failed"] += 1
|
||||
|
||||
# Output report
|
||||
print(f"\nProcessing complete: {results['success']} succeeded, {results['failed']} failed")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Configuration - modify these paths as needed
|
||||
SVG_INPUT_FOLDER = os.environ.get('RD_CONF_OUTPUT_OFBOGEN') # Folder containing SVG files
|
||||
SVG_OUTPUT_FOLDER = os.environ.get("SVG_PATH","svg")
|
||||
PRORPS_FOLDER = os.environ.get("PROPS_PATH", "props") # Folder containing txt files
|
||||
|
||||
# Start processing
|
||||
process_files(SVG_INPUT_FOLDER, PRORPS_FOLDER, SVG_OUTPUT_FOLDER)
|
||||
print("\nProcessing complete.")
|
||||
@@ -1,154 +0,0 @@
|
||||
''' Key Analysis Points:
|
||||
|
||||
Data Safety:
|
||||
Uses safe_float() to handle potential data conversion issues
|
||||
Creates copies of items to avoid modifying original data
|
||||
Geometric Calculations:
|
||||
Converts angles to radians for trigonometric functions
|
||||
Performs width/height calculations based on center line measurements and angles
|
||||
Rounds results to 3 decimal places for consistency
|
||||
Validation:
|
||||
Compares calculated values with original values
|
||||
Flags discrepancies with "Please verify" status
|
||||
Provides detailed difference metrics
|
||||
Error Handling:
|
||||
Preserves original data when processing fails
|
||||
Tracks and reports all errors
|
||||
Provides comprehensive statistics
|
||||
Output:
|
||||
Generates a new JSON file with calculated fields
|
||||
Provides detailed console output for verification
|
||||
Maintains original structure while adding new calculated fields
|
||||
|
||||
The script is designed to process SVG measurement data, perform geometric validations, and produce an enhanced dataset while providing thorough feedback about the processing results. '''
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
|
||||
def safe_float(value, default=0.0):
|
||||
"""Safely convert value to float, return default if conversion fails"""
|
||||
try:
|
||||
return float(value) if value != '' else default
|
||||
except (ValueError, TypeError):
|
||||
return default
|
||||
|
||||
def calculate_attributes(item):
|
||||
"""Calculate and add new attributes to the item based on geometric calculations"""
|
||||
# Create a copy of the item to avoid modifying the original
|
||||
processed_item = item.copy()
|
||||
|
||||
# Ensure all numeric fields have valid values using safe_float
|
||||
processed_item["center_line_width_mm"] = safe_float(item.get("center_line_width_mm", 0))
|
||||
processed_item["center_line_height_mm"] = safe_float(item.get("center_line_height_mm", 0))
|
||||
processed_item["Objekt_width_mm"] = safe_float(item.get("Objekt_width_mm", 0))
|
||||
processed_item["Objekt_height_mm"] = safe_float(item.get("Objekt_height_mm", 0))
|
||||
processed_item["Winkel"] = safe_float(item.get("Winkel", 0))
|
||||
|
||||
# Convert angle to radians for trigonometric calculations
|
||||
winkel_rad = math.radians(processed_item["Winkel"])
|
||||
sin_value = math.sin(winkel_rad)
|
||||
cos_value = math.cos(winkel_rad)
|
||||
|
||||
# Calculate new dimensions with 3 decimal places precision
|
||||
if processed_item["Winkel"]!=180:
|
||||
calculated_width = processed_item["center_line_width_mm"]
|
||||
calculated_height = processed_item["center_line_height_mm"] + 21.040*2
|
||||
else:
|
||||
calculated_width = processed_item["center_line_width_mm"]+21.040
|
||||
calculated_height = processed_item["center_line_height_mm"]+ 21.040 + 21.040
|
||||
|
||||
|
||||
processed_item["calculated_objekt_width_mm"] = round(calculated_width, 3)
|
||||
processed_item["calculated_objekt_height_mm"] = round(calculated_height, 3)
|
||||
|
||||
# Calculate differences between original and calculated values
|
||||
width_diff = round(processed_item["Objekt_width_mm"] - processed_item["calculated_objekt_width_mm"], 3)
|
||||
height_diff = round(processed_item["Objekt_height_mm"] - processed_item["calculated_objekt_height_mm"], 3)
|
||||
|
||||
# Prepare comparison results for console output (not saved to JSON)
|
||||
comparison_results = {
|
||||
"width": {
|
||||
"calculated": processed_item["calculated_objekt_width_mm"],
|
||||
"original": processed_item["Objekt_width_mm"],
|
||||
"difference": width_diff,
|
||||
"status": "OK" if abs(width_diff) < 0.001 else "Please verify"
|
||||
},
|
||||
"height": {
|
||||
"calculated": processed_item["calculated_objekt_height_mm"],
|
||||
"original": processed_item["Objekt_height_mm"],
|
||||
"difference": height_diff,
|
||||
"status": "OK" if abs(height_diff) < 0.001 else "Please verify"
|
||||
}
|
||||
}
|
||||
|
||||
return processed_item, comparison_results
|
||||
|
||||
def process_json_file(input_file, output_file):
|
||||
"""Main function to process JSON file and generate output"""
|
||||
# Read input file
|
||||
try:
|
||||
with open(input_file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
except FileNotFoundError:
|
||||
print(f"Error: Input file '{input_file}' not found")
|
||||
return
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"JSON parsing error: {e}")
|
||||
return
|
||||
|
||||
# Verify data is a list
|
||||
if not isinstance(data, list):
|
||||
print("Error: JSON data should be an array")
|
||||
return
|
||||
|
||||
# Process data
|
||||
processed_data = []
|
||||
error_items = []
|
||||
|
||||
print("\nStarting JSON data processing...\n")
|
||||
|
||||
for idx, item in enumerate(data, start=1):
|
||||
try:
|
||||
processed_item, comparison = calculate_attributes(item)
|
||||
processed_data.append(processed_item)
|
||||
|
||||
# Print comparison results to console
|
||||
print(f"Item {idx} [{item.get('SVGname', 'Unnamed')}] comparison results:")
|
||||
print(f" Width: Calculated={comparison['width']['calculated']} | Original={comparison['width']['original']} | Difference={comparison['width']['difference']} | {comparison['width']['status']}")
|
||||
print(f" Height: Calculated={comparison['height']['calculated']} | Original={comparison['height']['original']} | Difference={comparison['height']['difference']} | {comparison['height']['status']}")
|
||||
print("-" * 60)
|
||||
|
||||
except Exception as e:
|
||||
error_items.append((idx, str(e)))
|
||||
# Preserve original data (without any processed fields)
|
||||
processed_data.append(item)
|
||||
# Print error message to console
|
||||
print(f"Error processing item {idx} [{item.get('SVGname', 'Unnamed')}]: {str(e)}")
|
||||
print("-" * 60)
|
||||
|
||||
# Write output file
|
||||
try:
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(processed_data, f, indent=4, ensure_ascii=False)
|
||||
print(f"\nProcessing complete. Results saved to {output_file}")
|
||||
except IOError as e:
|
||||
print(f"Error writing output file: {e}")
|
||||
return
|
||||
|
||||
# Print statistics
|
||||
total_items = len(data)
|
||||
success_items = total_items - len(error_items)
|
||||
|
||||
print("\nProcessing statistics:")
|
||||
print(f"Total items: {total_items}")
|
||||
print(f"Successfully processed: {success_items}")
|
||||
print(f"Failed items: {len(error_items)}")
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
|
||||
json_path=os.environ.get("JSON_PATH","JSON")
|
||||
input_filename = os.path.join(json_path,"1_SVGErfassung_updated_new_input.json") # Replace with your input filename
|
||||
output_filename = os.path.join(json_path,"1_SVGErfassung_updated_new_output.json") # Replace with desired output filename
|
||||
|
||||
process_json_file(input_filename, output_filename)
|
||||
@@ -1,150 +0,0 @@
|
||||
"""
|
||||
SVG XML Batch Modifier Script
|
||||
|
||||
This script:
|
||||
1. Reads a JSON array of items
|
||||
2. For each item, extracts the "Sivasnr" value
|
||||
3. Locates and modifies the corresponding XML file
|
||||
4. Provides comprehensive reporting
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import xml.etree.ElementTree as ET
|
||||
from xml.etree.ElementTree import Element, SubElement, tostring
|
||||
|
||||
def process_xml_file(xml_path):
|
||||
"""
|
||||
Process a single XML file with proper namespace handling
|
||||
Returns modification statistics
|
||||
"""
|
||||
try:
|
||||
tree = ET.parse(xml_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# Register and handle SVG namespace
|
||||
ET.register_namespace('', 'http://www.w3.org/2000/svg')
|
||||
namespaces = {'svg': 'http://www.w3.org/2000/svg'}
|
||||
|
||||
stats = {
|
||||
'ffe31b_groups': 0,
|
||||
'ec2525_groups': 0,
|
||||
'elements_modified': 0,
|
||||
'modified': False
|
||||
}
|
||||
|
||||
# Process all group elements
|
||||
for g in root.findall('.//svg:g', namespaces):
|
||||
stroke = g.get('stroke')
|
||||
|
||||
if stroke == "#ffe31b":
|
||||
stats['ffe31b_groups'] += 1
|
||||
|
||||
if 'stroke-width' in g.attrib:
|
||||
del g.attrib['stroke-width']
|
||||
stats['modified'] = True
|
||||
if 'stroke-miterlimit' in g.attrib:
|
||||
del g.attrib['stroke-miterlimit']
|
||||
stats['modified'] = True
|
||||
|
||||
for child in g.findall('.//svg:path', namespaces):
|
||||
child.set('stroke-width', '1px')
|
||||
stats['elements_modified'] += 1
|
||||
stats['modified'] = True
|
||||
|
||||
elif stroke == "#ec2525":
|
||||
stats['ec2525_groups'] += 1
|
||||
|
||||
for attr in ['stroke', 'stroke-width', 'stroke-linejoin']:
|
||||
if attr in g.attrib:
|
||||
del g.attrib[attr]
|
||||
stats['modified'] = True
|
||||
|
||||
for child in g.findall('.//svg:path[@stroke-width="1px"]', namespaces):
|
||||
del child.attrib['stroke-width']
|
||||
child.set('style', 'stroke:#ec2525;stroke-width:2px')
|
||||
stats['elements_modified'] += 1
|
||||
stats['modified'] = True
|
||||
|
||||
# Save changes if modified
|
||||
if stats['modified']:
|
||||
xml_str = ET.tostring(root, encoding='unicode')
|
||||
xml_str = xml_str.replace('><', '>\n<').replace('</svg>', '\n</svg>')
|
||||
|
||||
with open(xml_path, 'w', encoding='utf-8') as f:
|
||||
f.write(xml_str)
|
||||
|
||||
return stats
|
||||
|
||||
except Exception as e:
|
||||
print(f" Error processing file: {str(e)}")
|
||||
return None
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main processing function
|
||||
"""
|
||||
json_path=os.environ.get("JSON_PATH","JSON")
|
||||
json_file_path = os.path.join(json_path,"1_SVGErfassung_updated_new_output.json")
|
||||
svg_folder_path = os.environ.get("XML_PATH","svg")
|
||||
|
||||
try:
|
||||
# Read and parse JSON file
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Verify we have a list of items
|
||||
if not isinstance(data, list):
|
||||
print("Error: JSON data should be an array of items")
|
||||
return
|
||||
|
||||
print(f"\nFound {len(data)} items in JSON file")
|
||||
|
||||
# Process each item in the JSON array
|
||||
for index, item in enumerate(data, 1):
|
||||
if not isinstance(item, dict):
|
||||
print(f"\nItem {index}: Not a dictionary, skipping")
|
||||
continue
|
||||
|
||||
sivasnr = item.get("Sivasnr")
|
||||
if not sivasnr:
|
||||
print(f"\nItem {index}: Missing 'Sivasnr' value, skipping")
|
||||
continue
|
||||
|
||||
print(f"\nProcessing item {index}: Sivasnr = {sivasnr}")
|
||||
|
||||
# Build XML filename and path
|
||||
xml_filename = f"{sivasnr}.xml"
|
||||
xml_path = os.path.join(svg_folder_path, xml_filename)
|
||||
|
||||
if not os.path.exists(xml_path):
|
||||
print(f" XML file not found: {xml_path}")
|
||||
continue
|
||||
|
||||
print(f" Found XML file: {xml_path}")
|
||||
|
||||
# Process the XML file
|
||||
stats = process_xml_file(xml_path)
|
||||
|
||||
if stats is None:
|
||||
print(" Processing failed")
|
||||
elif stats['modified']:
|
||||
print(" File successfully modified")
|
||||
print(f" - #ffe31b groups: {stats['ffe31b_groups']}")
|
||||
print(f" - #ec2525 groups: {stats['ec2525_groups']}")
|
||||
print(f" - Elements modified: {stats['elements_modified']}")
|
||||
else:
|
||||
print(" No modifications needed")
|
||||
|
||||
print("\nProcessing complete")
|
||||
|
||||
except FileNotFoundError:
|
||||
print("\nError: JSON file not found")
|
||||
except json.JSONDecodeError:
|
||||
print("\nError: Invalid JSON format")
|
||||
except Exception as e:
|
||||
print(f"\nUnexpected error: {str(e)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("SVG XML Batch Modifier - Starting execution")
|
||||
main()
|
||||
@@ -3,7 +3,7 @@
|
||||
"SVGname": "APB_110_R400_45_400_821104021.svg",
|
||||
"Sivasnr": "821104021",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 669.491,
|
||||
"center_line_width_mm": 669.49,
|
||||
"center_line_height_mm": 399.505,
|
||||
"Objekt_width_mm":684.367,
|
||||
"Objekt_height_mm":435.421
|
||||
@@ -23,8 +23,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 500,
|
||||
"center_line_height_mm": 500,
|
||||
"Objekt_width_mm":521.040,
|
||||
"Objekt_height_mm":521.040
|
||||
"Objekt_width_mm":521.039,
|
||||
"Objekt_height_mm":521.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R500_90_550_550_821104030.svg",
|
||||
@@ -32,8 +32,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 550,
|
||||
"center_line_height_mm": 550,
|
||||
"Objekt_width_mm":571.040,
|
||||
"Objekt_height_mm":571.040
|
||||
"Objekt_width_mm":571.039,
|
||||
"Objekt_height_mm":571.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_22_5_84_821104025.svg",
|
||||
@@ -42,7 +42,7 @@
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.230,
|
||||
"Objekt_width_mm":522.542,
|
||||
"Objekt_height_mm":162.707
|
||||
"Objekt_height_mm":162.706
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_22_5_84_821104025.svg",
|
||||
@@ -51,7 +51,7 @@
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.230,
|
||||
"Objekt_width_mm":522.542,
|
||||
"Objekt_height_mm":162.707
|
||||
"Objekt_height_mm":162.706
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_191_821104029.svg",
|
||||
@@ -60,7 +60,7 @@
|
||||
"center_line_width_mm": 551.606,
|
||||
"center_line_height_mm": 190.792 ,
|
||||
"Objekt_width_mm":566.483,
|
||||
"Objekt_height_mm":226.709
|
||||
"Objekt_height_mm":226.708
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_205_821104037.svg",
|
||||
@@ -69,7 +69,7 @@
|
||||
"center_line_width_mm": 537.249,
|
||||
"center_line_height_mm": 204.932,
|
||||
"Objekt_width_mm":552.126,
|
||||
"Objekt_height_mm":240.849
|
||||
"Objekt_height_mm":240.848
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_232_821104026.svg",
|
||||
@@ -113,7 +113,7 @@
|
||||
"Winkel":67.5,
|
||||
"center_line_width_mm": 758.190,
|
||||
"center_line_height_mm": 496.584,
|
||||
"Objekt_width_mm":777.628,
|
||||
"Objekt_width_mm":777.627,
|
||||
"Objekt_height_mm":525.674
|
||||
},
|
||||
{
|
||||
@@ -122,8 +122,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 900,
|
||||
"center_line_height_mm": 605,
|
||||
"Objekt_width_mm":921.040,
|
||||
"Objekt_height_mm":626.040
|
||||
"Objekt_width_mm":921.039,
|
||||
"Objekt_height_mm":626.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_45_400_821104031.svg",
|
||||
@@ -131,7 +131,7 @@
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm":880.491,
|
||||
"Objekt_width_mm":880.49,
|
||||
"Objekt_height_mm":336.475
|
||||
},
|
||||
{
|
||||
@@ -140,7 +140,7 @@
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm":880.491,
|
||||
"Objekt_width_mm":880.49,
|
||||
"Objekt_height_mm":336.475
|
||||
},
|
||||
{
|
||||
@@ -149,8 +149,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 800,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":821.040
|
||||
"Objekt_width_mm":821.039,
|
||||
"Objekt_height_mm":821.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_800_800_821104033.svg",
|
||||
@@ -158,8 +158,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 800,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":821.040
|
||||
"Objekt_width_mm":821.039,
|
||||
"Objekt_height_mm":821.039
|
||||
},
|
||||
|
||||
{
|
||||
@@ -168,8 +168,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 690,
|
||||
"center_line_height_mm": 850,
|
||||
"Objekt_width_mm":711.040,
|
||||
"Objekt_height_mm":871.040
|
||||
"Objekt_width_mm":711.039,
|
||||
"Objekt_height_mm":871.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_870_821104035.svg",
|
||||
@@ -177,8 +177,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 850,
|
||||
"center_line_height_mm": 870,
|
||||
"Objekt_width_mm":871.04,
|
||||
"Objekt_height_mm":891.04
|
||||
"Objekt_width_mm":871.039,
|
||||
"Objekt_height_mm":891.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_890_821104034.svg",
|
||||
@@ -186,8 +186,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 890,
|
||||
"center_line_height_mm": 850,
|
||||
"Objekt_width_mm":911.040,
|
||||
"Objekt_height_mm":871.040
|
||||
"Objekt_width_mm":911.039,
|
||||
"Objekt_height_mm":871.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
@@ -196,7 +196,7 @@
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 1300,
|
||||
"Objekt_width_mm":800,
|
||||
"Objekt_height_mm":1342.080
|
||||
"Objekt_height_mm":1342.078
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
@@ -204,8 +204,8 @@
|
||||
"Winkel":180,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 1300,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":1342.080
|
||||
"Objekt_width_mm":800,
|
||||
"Objekt_height_mm":1342.078
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_650_821094040.svg",
|
||||
@@ -213,8 +213,8 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 650.0,
|
||||
"center_line_height_mm": 650.0,
|
||||
"Objekt_width_mm": 671.040,
|
||||
"Objekt_height_mm": 671.040
|
||||
"Objekt_width_mm": 671.039,
|
||||
"Objekt_height_mm": 671.039
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_810_821094101.svg",
|
||||
@@ -222,7 +222,7 @@
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 810.0,
|
||||
"center_line_height_mm": 810.0,
|
||||
"Objekt_width_mm": 831.04,
|
||||
"Objekt_height_mm": 831.04
|
||||
"Objekt_width_mm": 831.039,
|
||||
"Objekt_height_mm": 831.039
|
||||
}
|
||||
]
|
||||
@@ -1,277 +0,0 @@
|
||||
[
|
||||
{
|
||||
"SVGname": "APB_110_R400_45_400_821104021.svg",
|
||||
"Sivasnr": "821104021",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 669.491,
|
||||
"center_line_height_mm": 399.505,
|
||||
"Objekt_width_mm": 684.367,
|
||||
"Objekt_height_mm": 435.421,
|
||||
"calculated_objekt_width_mm": 684.369,
|
||||
"calculated_objekt_height_mm": 435.423
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R400_67_5_339_821104024.svg",
|
||||
"Sivasnr": "821104024",
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 507.82,
|
||||
"center_line_height_mm": 339.315,
|
||||
"Objekt_width_mm": 527.258,
|
||||
"Objekt_height_mm": 368.405,
|
||||
"calculated_objekt_width_mm": 527.258,
|
||||
"calculated_objekt_height_mm": 368.407
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R400_90_500_821104022.svg",
|
||||
"Sivasnr": "821104022",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 500.0,
|
||||
"center_line_height_mm": 500.0,
|
||||
"Objekt_width_mm": 521.04,
|
||||
"Objekt_height_mm": 521.04,
|
||||
"calculated_objekt_width_mm": 521.04,
|
||||
"calculated_objekt_height_mm": 521.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R500_90_550_550_821104030.svg",
|
||||
"Sivasnr": "821104030",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 550.0,
|
||||
"center_line_height_mm": 550.0,
|
||||
"Objekt_width_mm": 571.04,
|
||||
"Objekt_height_mm": 571.04,
|
||||
"calculated_objekt_width_mm": 571.04,
|
||||
"calculated_objekt_height_mm": 571.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_22_5_84_821104025.svg",
|
||||
"Sivasnr": "821104025",
|
||||
"Winkel": 22.5,
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.23,
|
||||
"Objekt_width_mm": 522.542,
|
||||
"Objekt_height_mm": 162.707,
|
||||
"calculated_objekt_width_mm": 522.543,
|
||||
"calculated_objekt_height_mm": 162.708
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_22_5_84_821104025.svg",
|
||||
"Sivasnr": "OFBogen22",
|
||||
"Winkel": 22.5,
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.23,
|
||||
"Objekt_width_mm": 522.542,
|
||||
"Objekt_height_mm": 162.707,
|
||||
"calculated_objekt_width_mm": 522.543,
|
||||
"calculated_objekt_height_mm": 162.708
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_191_821104029.svg",
|
||||
"Sivasnr": "821104029",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 551.606,
|
||||
"center_line_height_mm": 190.792,
|
||||
"Objekt_width_mm": 566.483,
|
||||
"Objekt_height_mm": 226.709,
|
||||
"calculated_objekt_width_mm": 566.484,
|
||||
"calculated_objekt_height_mm": 226.71
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_205_821104037.svg",
|
||||
"Sivasnr": "821104037",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 537.249,
|
||||
"center_line_height_mm": 204.932,
|
||||
"Objekt_width_mm": 552.126,
|
||||
"Objekt_height_mm": 240.849,
|
||||
"calculated_objekt_width_mm": 552.127,
|
||||
"calculated_objekt_height_mm": 240.85
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_232_821104026.svg",
|
||||
"Sivasnr": "821104026",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 595.265,
|
||||
"center_line_height_mm": 265.998,
|
||||
"Objekt_width_mm": 610.142,
|
||||
"Objekt_height_mm": 301.914,
|
||||
"calculated_objekt_width_mm": 610.143,
|
||||
"calculated_objekt_height_mm": 301.916
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_67_5_420_821104028.svg",
|
||||
"Sivasnr": "821104028",
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 582.427,
|
||||
"center_line_height_mm": 419.902,
|
||||
"Objekt_width_mm": 601.865,
|
||||
"Objekt_height_mm": 448.992,
|
||||
"calculated_objekt_width_mm": 601.865,
|
||||
"calculated_objekt_height_mm": 448.994
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_67_5_432_821104027.svg",
|
||||
"Sivasnr": "821104027",
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 748.658,
|
||||
"center_line_height_mm": 530.305,
|
||||
"Objekt_width_mm": 768.095,
|
||||
"Objekt_height_mm": 559.396,
|
||||
"calculated_objekt_width_mm": 768.096,
|
||||
"calculated_objekt_height_mm": 559.397
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_67_5_432_821104027.svg",
|
||||
"Sivasnr": "OFBogen67",
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 748.658,
|
||||
"center_line_height_mm": 530.305,
|
||||
"Objekt_width_mm": 768.095,
|
||||
"Objekt_height_mm": 559.396,
|
||||
"calculated_objekt_width_mm": 768.096,
|
||||
"calculated_objekt_height_mm": 559.397
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_67_5_L_185_170_821104065.svg",
|
||||
"Sivasnr": "821104065",
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 758.19,
|
||||
"center_line_height_mm": 496.584,
|
||||
"Objekt_width_mm": 777.628,
|
||||
"Objekt_height_mm": 525.674,
|
||||
"calculated_objekt_width_mm": 777.628,
|
||||
"calculated_objekt_height_mm": 525.676
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_90_900_605_821104066.svg",
|
||||
"Sivasnr": "821104066",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 900.0,
|
||||
"center_line_height_mm": 605.0,
|
||||
"Objekt_width_mm": 921.04,
|
||||
"Objekt_height_mm": 626.04,
|
||||
"calculated_objekt_width_mm": 921.04,
|
||||
"calculated_objekt_height_mm": 626.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_45_400_821104031.svg",
|
||||
"Sivasnr": "821104031",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm": 880.491,
|
||||
"Objekt_height_mm": 336.475,
|
||||
"calculated_objekt_width_mm": 880.491,
|
||||
"calculated_objekt_height_mm": 336.477
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_45_400_821104031.svg",
|
||||
"Sivasnr": "OFBogen45",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm": 880.491,
|
||||
"Objekt_height_mm": 336.475,
|
||||
"calculated_objekt_width_mm": 880.491,
|
||||
"calculated_objekt_height_mm": 336.477
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_800_800_821104033.svg",
|
||||
"Sivasnr": "821104033",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 800.0,
|
||||
"Objekt_width_mm": 821.04,
|
||||
"Objekt_height_mm": 821.04,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 821.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_800_800_821104033.svg",
|
||||
"Sivasnr": "OFBogen90",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 800.0,
|
||||
"Objekt_width_mm": 821.04,
|
||||
"Objekt_height_mm": 821.04,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 821.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_690_821104041.svg",
|
||||
"Sivasnr": "821104041",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 690.0,
|
||||
"center_line_height_mm": 850.0,
|
||||
"Objekt_width_mm": 711.04,
|
||||
"Objekt_height_mm": 871.04,
|
||||
"calculated_objekt_width_mm": 711.04,
|
||||
"calculated_objekt_height_mm": 871.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_870_821104035.svg",
|
||||
"Sivasnr": "821104035",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 850.0,
|
||||
"center_line_height_mm": 870.0,
|
||||
"Objekt_width_mm": 871.04,
|
||||
"Objekt_height_mm": 891.04,
|
||||
"calculated_objekt_width_mm": 871.04,
|
||||
"calculated_objekt_height_mm": 891.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_890_821104034.svg",
|
||||
"Sivasnr": "821104034",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 890.0,
|
||||
"center_line_height_mm": 850.0,
|
||||
"Objekt_width_mm": 911.04,
|
||||
"Objekt_height_mm": 871.04,
|
||||
"calculated_objekt_width_mm": 911.04,
|
||||
"calculated_objekt_height_mm": 871.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
"Sivasnr": "821104043",
|
||||
"Winkel": 180.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 1300.0,
|
||||
"Objekt_width_mm": 800,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 800,
|
||||
"calculated_objekt_height_mm": 1342.08
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
"Sivasnr": "OFBogen180",
|
||||
"Winkel": 180.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 1300.0,
|
||||
"Objekt_width_mm": 800.0,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 800.0,
|
||||
"calculated_objekt_height_mm": 1342.08
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_650_821094040.svg",
|
||||
"Sivasnr": "821094040",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 650.0,
|
||||
"center_line_height_mm": 650.0,
|
||||
"Objekt_width_mm": 671.04,
|
||||
"Objekt_height_mm": 671.04,
|
||||
"calculated_objekt_width_mm": 671.04,
|
||||
"calculated_objekt_height_mm": 671.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_810_821094101.svg",
|
||||
"Sivasnr": "821094101",
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 810.0,
|
||||
"center_line_height_mm": 810.0,
|
||||
"Objekt_width_mm": 831.04,
|
||||
"Objekt_height_mm": 831.04,
|
||||
"calculated_objekt_width_mm": 831.04,
|
||||
"calculated_objekt_height_mm": 831.04
|
||||
}
|
||||
]
|
||||
@@ -3,28 +3,26 @@
|
||||
"SVGname": "APB_110_R400_45_400_821104021.svg",
|
||||
"Sivasnr": "821104021",
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 669.491,
|
||||
"center_line_width_mm": 669.49,
|
||||
"center_line_height_mm": 399.505,
|
||||
"Objekt_width_mm": 684.367,
|
||||
"Objekt_height_mm": 435.421,
|
||||
"calculated_objekt_width_mm": 684.369,
|
||||
"calculated_objekt_height_mm": 435.423,
|
||||
"Objekt_width_px": 2586.584,
|
||||
"Objekt_height_px": 1645.6857,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 638.912,
|
||||
"calculated_SVG_height_px": 636.239,
|
||||
"scale_factor": 1.4612043,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 48.119,
|
||||
"y": 48.319,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 978.263,
|
||||
"y": 961.795,
|
||||
"x": 978.262,
|
||||
"y": 965.833,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -37,24 +35,22 @@
|
||||
"center_line_height_mm": 339.315,
|
||||
"Objekt_width_mm": 527.258,
|
||||
"Objekt_height_mm": 368.405,
|
||||
"calculated_objekt_width_mm": 527.258,
|
||||
"calculated_objekt_height_mm": 368.407,
|
||||
"Objekt_width_px": 1992.7862,
|
||||
"Objekt_height_px": 1392.3969,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 700.764,
|
||||
"calculated_SVG_height_px": 698.7187,
|
||||
"scale_factor": 1.8966047,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 56.944,
|
||||
"y": 57.109,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.134,
|
||||
"y": 975.294,
|
||||
"y": 978.147,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
@@ -65,25 +61,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 500.0,
|
||||
"center_line_height_mm": 500.0,
|
||||
"Objekt_width_mm": 521.04,
|
||||
"Objekt_height_mm": 521.04,
|
||||
"calculated_objekt_width_mm": 521.04,
|
||||
"calculated_objekt_height_mm": 521.04,
|
||||
"Objekt_width_px": 1969.2851,
|
||||
"Objekt_height_px": 1969.2851,
|
||||
"Objekt_width_mm": 521.039,
|
||||
"Objekt_height_mm": 521.039,
|
||||
"Objekt_width_px": 1969.2813,
|
||||
"Objekt_height_px": 1969.2813,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.919238,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.9192421,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 40.381,
|
||||
"y": 40.379,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 959.619,
|
||||
"x": 959.621,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -95,25 +89,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 550.0,
|
||||
"center_line_height_mm": 550.0,
|
||||
"Objekt_width_mm": 571.04,
|
||||
"Objekt_height_mm": 571.04,
|
||||
"calculated_objekt_width_mm": 571.04,
|
||||
"calculated_objekt_height_mm": 571.04,
|
||||
"Objekt_width_px": 2158.2614,
|
||||
"Objekt_height_px": 2158.2614,
|
||||
"Objekt_width_mm": 571.039,
|
||||
"Objekt_height_mm": 571.039,
|
||||
"Objekt_width_px": 2158.2577,
|
||||
"Objekt_height_px": 2158.2577,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.751191,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.7511939,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 36.845,
|
||||
"y": 36.844,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.155,
|
||||
"x": 963.157,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -126,25 +118,23 @@
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.23,
|
||||
"Objekt_width_mm": 522.542,
|
||||
"Objekt_height_mm": 162.707,
|
||||
"calculated_objekt_width_mm": 522.543,
|
||||
"calculated_objekt_height_mm": 162.708,
|
||||
"Objekt_height_mm": 162.706,
|
||||
"Objekt_width_px": 1974.9619,
|
||||
"Objekt_height_px": 614.9556,
|
||||
"Objekt_height_px": 614.9518,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 316.314,
|
||||
"calculated_SVG_height_px": 311.374,
|
||||
"scale_factor": 1.9137218,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 127.293,
|
||||
"y": 129.307,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 984.593,
|
||||
"y": 866.794,
|
||||
"y": 880.54,
|
||||
"direction": 112.5
|
||||
}
|
||||
]
|
||||
@@ -156,25 +146,23 @@
|
||||
"center_line_width_mm": 514.491,
|
||||
"center_line_height_mm": 122.23,
|
||||
"Objekt_width_mm": 522.542,
|
||||
"Objekt_height_mm": 162.707,
|
||||
"calculated_objekt_width_mm": 522.543,
|
||||
"calculated_objekt_height_mm": 162.708,
|
||||
"Objekt_height_mm": 162.706,
|
||||
"Objekt_width_px": 1974.9619,
|
||||
"Objekt_height_px": 614.9556,
|
||||
"Objekt_height_px": 614.9518,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 316.314,
|
||||
"calculated_SVG_height_px": 311.374,
|
||||
"scale_factor": 1.9137218,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 127.293,
|
||||
"y": 129.307,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 984.593,
|
||||
"y": 866.794,
|
||||
"y": 880.54,
|
||||
"direction": 112.5
|
||||
}
|
||||
]
|
||||
@@ -186,25 +174,23 @@
|
||||
"center_line_width_mm": 551.606,
|
||||
"center_line_height_mm": 190.792,
|
||||
"Objekt_width_mm": 566.483,
|
||||
"Objekt_height_mm": 226.709,
|
||||
"calculated_objekt_width_mm": 566.484,
|
||||
"calculated_objekt_height_mm": 226.71,
|
||||
"Objekt_height_mm": 226.708,
|
||||
"Objekt_width_px": 2141.0381,
|
||||
"Objekt_height_px": 856.8529,
|
||||
"Objekt_height_px": 856.8491,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 402.877,
|
||||
"calculated_SVG_height_px": 400.2026,
|
||||
"scale_factor": 1.765278,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 92.191,
|
||||
"y": 92.803,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 973.738,
|
||||
"y": 928.18,
|
||||
"y": 934.379,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -216,25 +202,23 @@
|
||||
"center_line_width_mm": 537.249,
|
||||
"center_line_height_mm": 204.932,
|
||||
"Objekt_width_mm": 552.126,
|
||||
"Objekt_height_mm": 240.849,
|
||||
"calculated_objekt_width_mm": 552.127,
|
||||
"calculated_objekt_height_mm": 240.85,
|
||||
"Objekt_height_mm": 240.848,
|
||||
"Objekt_width_px": 2086.7755,
|
||||
"Objekt_height_px": 910.2954,
|
||||
"Objekt_height_px": 910.2917,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 438.894,
|
||||
"calculated_SVG_height_px": 436.2193,
|
||||
"scale_factor": 1.8111808,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 86.826,
|
||||
"y": 87.354,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 973.055,
|
||||
"y": 932.517,
|
||||
"y": 938.231,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -247,24 +231,22 @@
|
||||
"center_line_height_mm": 265.998,
|
||||
"Objekt_width_mm": 610.142,
|
||||
"Objekt_height_mm": 301.914,
|
||||
"calculated_objekt_width_mm": 610.143,
|
||||
"calculated_objekt_height_mm": 301.916,
|
||||
"Objekt_width_px": 2306.0485,
|
||||
"Objekt_height_px": 1141.0923,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 497.498,
|
||||
"calculated_SVG_height_px": 494.8258,
|
||||
"scale_factor": 1.6389627,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 69.314,
|
||||
"y": 69.686,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.617,
|
||||
"y": 945.621,
|
||||
"y": 950.725,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -277,24 +259,22 @@
|
||||
"center_line_height_mm": 419.902,
|
||||
"Objekt_width_mm": 601.865,
|
||||
"Objekt_height_mm": 448.992,
|
||||
"calculated_objekt_width_mm": 601.865,
|
||||
"calculated_objekt_height_mm": 448.994,
|
||||
"Objekt_width_px": 2274.7654,
|
||||
"Objekt_height_px": 1696.9777,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 748.047,
|
||||
"calculated_SVG_height_px": 746.0012,
|
||||
"scale_factor": 1.6615022,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 46.732,
|
||||
"y": 46.859,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 967.704,
|
||||
"y": 979.385,
|
||||
"y": 982.069,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
@@ -307,24 +287,22 @@
|
||||
"center_line_height_mm": 530.305,
|
||||
"Objekt_width_mm": 768.095,
|
||||
"Objekt_height_mm": 559.396,
|
||||
"calculated_objekt_width_mm": 768.096,
|
||||
"calculated_objekt_height_mm": 559.397,
|
||||
"Objekt_width_px": 2903.0362,
|
||||
"Objekt_height_px": 2114.2526,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.336,
|
||||
"calculated_SVG_height_px": 728.2901,
|
||||
"scale_factor": 1.3019223,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 37.507,
|
||||
"y": 37.61,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.695,
|
||||
"y": 982.847,
|
||||
"y": 985.606,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
@@ -337,24 +315,22 @@
|
||||
"center_line_height_mm": 530.305,
|
||||
"Objekt_width_mm": 768.095,
|
||||
"Objekt_height_mm": 559.396,
|
||||
"calculated_objekt_width_mm": 768.096,
|
||||
"calculated_objekt_height_mm": 559.397,
|
||||
"Objekt_width_px": 2903.0362,
|
||||
"Objekt_height_px": 2114.2526,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.336,
|
||||
"calculated_SVG_height_px": 728.2901,
|
||||
"scale_factor": 1.3019223,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 37.507,
|
||||
"y": 37.61,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.695,
|
||||
"y": 982.847,
|
||||
"y": 985.606,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
@@ -365,26 +341,24 @@
|
||||
"Winkel": 67.5,
|
||||
"center_line_width_mm": 758.19,
|
||||
"center_line_height_mm": 496.584,
|
||||
"Objekt_width_mm": 777.628,
|
||||
"Objekt_width_mm": 777.627,
|
||||
"Objekt_height_mm": 525.674,
|
||||
"calculated_objekt_width_mm": 777.628,
|
||||
"calculated_objekt_height_mm": 525.676,
|
||||
"Objekt_width_px": 2939.0665,
|
||||
"Objekt_width_px": 2939.0627,
|
||||
"Objekt_height_px": 1986.7994,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 678.042,
|
||||
"scale_factor": 1.2859619,
|
||||
"calculated_SVG_height_px": 675.9976,
|
||||
"scale_factor": 1.2859636,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 39.904,
|
||||
"y": 40.023,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.003,
|
||||
"y": 981.716,
|
||||
"x": 975.005,
|
||||
"y": 984.685,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
@@ -395,26 +369,24 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 900.0,
|
||||
"center_line_height_mm": 605.0,
|
||||
"Objekt_width_mm": 921.04,
|
||||
"Objekt_height_mm": 626.04,
|
||||
"calculated_objekt_width_mm": 921.04,
|
||||
"calculated_objekt_height_mm": 626.04,
|
||||
"Objekt_width_px": 3481.0961,
|
||||
"Objekt_height_px": 2366.1355,
|
||||
"Objekt_width_mm": 921.039,
|
||||
"Objekt_height_mm": 626.039,
|
||||
"Objekt_width_px": 3481.0923,
|
||||
"Objekt_height_px": 2366.1317,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 681.6,
|
||||
"scale_factor": 1.0857292,
|
||||
"calculated_SVG_height_px": 679.7096,
|
||||
"scale_factor": 1.0857304,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 33.515,
|
||||
"y": 33.607,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 977.156,
|
||||
"y": 997.227,
|
||||
"x": 977.157,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
@@ -425,26 +397,24 @@
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm": 880.491,
|
||||
"Objekt_width_mm": 880.49,
|
||||
"Objekt_height_mm": 336.475,
|
||||
"calculated_objekt_width_mm": 880.491,
|
||||
"calculated_objekt_height_mm": 336.477,
|
||||
"Objekt_width_px": 3327.84,
|
||||
"Objekt_width_px": 3327.8362,
|
||||
"Objekt_height_px": 1271.7165,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 384.817,
|
||||
"scale_factor": 1.13573,
|
||||
"calculated_SVG_height_px": 382.1452,
|
||||
"scale_factor": 1.1357312,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 62.096,
|
||||
"y": 62.528,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.103,
|
||||
"y": 949.152,
|
||||
"x": 983.104,
|
||||
"y": 955.786,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -455,26 +425,24 @@
|
||||
"Winkel": 45.0,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm": 880.491,
|
||||
"Objekt_width_mm": 880.49,
|
||||
"Objekt_height_mm": 336.475,
|
||||
"calculated_objekt_width_mm": 880.491,
|
||||
"calculated_objekt_height_mm": 336.477,
|
||||
"Objekt_width_px": 3327.84,
|
||||
"Objekt_width_px": 3327.8362,
|
||||
"Objekt_height_px": 1271.7165,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 384.817,
|
||||
"scale_factor": 1.13573,
|
||||
"calculated_SVG_height_px": 382.1452,
|
||||
"scale_factor": 1.1357312,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 62.096,
|
||||
"y": 62.528,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.103,
|
||||
"y": 949.152,
|
||||
"x": 983.104,
|
||||
"y": 955.786,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
@@ -485,25 +453,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 800.0,
|
||||
"Objekt_width_mm": 821.04,
|
||||
"Objekt_height_mm": 821.04,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 821.04,
|
||||
"Objekt_width_px": 3103.1433,
|
||||
"Objekt_height_px": 3103.1433,
|
||||
"Objekt_width_mm": 821.039,
|
||||
"Objekt_height_mm": 821.039,
|
||||
"Objekt_width_px": 3103.1396,
|
||||
"Objekt_height_px": 3103.1396,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.217967,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.2179689,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.626,
|
||||
"y": 25.625,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"x": 974.375,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -515,25 +481,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 800.0,
|
||||
"Objekt_width_mm": 821.04,
|
||||
"Objekt_height_mm": 821.04,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 821.04,
|
||||
"Objekt_width_px": 3103.1433,
|
||||
"Objekt_height_px": 3103.1433,
|
||||
"Objekt_width_mm": 821.039,
|
||||
"Objekt_height_mm": 821.039,
|
||||
"Objekt_width_px": 3103.1396,
|
||||
"Objekt_height_px": 3103.1396,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.217967,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.2179689,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.626,
|
||||
"y": 25.625,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"x": 974.375,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -545,25 +509,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 690.0,
|
||||
"center_line_height_mm": 850.0,
|
||||
"Objekt_width_mm": 711.04,
|
||||
"Objekt_height_mm": 871.04,
|
||||
"calculated_objekt_width_mm": 711.04,
|
||||
"calculated_objekt_height_mm": 871.04,
|
||||
"Objekt_width_px": 2687.3953,
|
||||
"Objekt_height_px": 3292.1197,
|
||||
"Objekt_width_mm": 711.039,
|
||||
"Objekt_height_mm": 871.039,
|
||||
"Objekt_width_px": 2687.3915,
|
||||
"Objekt_height_px": 3292.1159,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 818.201,
|
||||
"scale_factor": 1.1480529,
|
||||
"calculated_SVG_width_px": 816.3113,
|
||||
"scale_factor": 1.1480542,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 24.155,
|
||||
"y": 24.154,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 970.41,
|
||||
"x": 970.411,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -575,25 +537,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 850.0,
|
||||
"center_line_height_mm": 870.0,
|
||||
"Objekt_width_mm": 871.04,
|
||||
"Objekt_height_mm": 891.04,
|
||||
"calculated_objekt_width_mm": 871.04,
|
||||
"calculated_objekt_height_mm": 891.04,
|
||||
"Objekt_width_px": 3292.1197,
|
||||
"Objekt_height_px": 3367.7103,
|
||||
"Objekt_width_mm": 871.039,
|
||||
"Objekt_height_mm": 891.039,
|
||||
"Objekt_width_px": 3292.1159,
|
||||
"Objekt_height_px": 3367.7065,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 979.444,
|
||||
"scale_factor": 1.1222841,
|
||||
"calculated_SVG_width_px": 977.5543,
|
||||
"scale_factor": 1.1222853,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 23.613,
|
||||
"y": 23.612,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.845,
|
||||
"x": 975.846,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -605,26 +565,24 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 890.0,
|
||||
"center_line_height_mm": 850.0,
|
||||
"Objekt_width_mm": 911.04,
|
||||
"Objekt_height_mm": 871.04,
|
||||
"calculated_objekt_width_mm": 911.04,
|
||||
"calculated_objekt_height_mm": 871.04,
|
||||
"Objekt_width_px": 3443.3008,
|
||||
"Objekt_height_px": 3292.1197,
|
||||
"Objekt_width_mm": 911.039,
|
||||
"Objekt_height_mm": 871.039,
|
||||
"Objekt_width_px": 3443.297,
|
||||
"Objekt_height_px": 3292.1159,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 957.984,
|
||||
"scale_factor": 1.0976466,
|
||||
"calculated_SVG_height_px": 956.0941,
|
||||
"scale_factor": 1.0976479,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 24.107,
|
||||
"y": 24.154,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 976.905,
|
||||
"y": 998.027,
|
||||
"x": 976.907,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
@@ -636,14 +594,12 @@
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 1300.0,
|
||||
"Objekt_width_mm": 800.0,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 800.0,
|
||||
"calculated_objekt_height_mm": 1342.08,
|
||||
"Objekt_height_mm": 1342.078,
|
||||
"Objekt_width_px": 3023.6221,
|
||||
"Objekt_height_px": 5072.4284,
|
||||
"Objekt_height_px": 5072.4208,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 597.979,
|
||||
"scale_factor": 0.7451121,
|
||||
"calculated_SVG_width_px": 596.0906,
|
||||
"scale_factor": 0.7451132,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
@@ -654,7 +610,7 @@
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0,
|
||||
"y": 984.323,
|
||||
"y": 984.324,
|
||||
"direction": 270.0
|
||||
}
|
||||
]
|
||||
@@ -666,14 +622,12 @@
|
||||
"center_line_width_mm": 800.0,
|
||||
"center_line_height_mm": 1300.0,
|
||||
"Objekt_width_mm": 800.0,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 800.0,
|
||||
"calculated_objekt_height_mm": 1342.08,
|
||||
"Objekt_height_mm": 1342.078,
|
||||
"Objekt_width_px": 3023.6221,
|
||||
"Objekt_height_px": 5072.4284,
|
||||
"Objekt_height_px": 5072.4208,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 597.979,
|
||||
"scale_factor": 0.7451121,
|
||||
"calculated_SVG_width_px": 596.0906,
|
||||
"scale_factor": 0.7451132,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
@@ -684,7 +638,7 @@
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0,
|
||||
"y": 984.323,
|
||||
"y": 984.324,
|
||||
"direction": 270.0
|
||||
}
|
||||
]
|
||||
@@ -695,25 +649,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 650.0,
|
||||
"center_line_height_mm": 650.0,
|
||||
"Objekt_width_mm": 671.04,
|
||||
"Objekt_height_mm": 671.04,
|
||||
"calculated_objekt_width_mm": 671.04,
|
||||
"calculated_objekt_height_mm": 671.04,
|
||||
"Objekt_width_px": 2536.2142,
|
||||
"Objekt_height_px": 2536.2142,
|
||||
"Objekt_width_mm": 671.039,
|
||||
"Objekt_height_mm": 671.039,
|
||||
"Objekt_width_px": 2536.2104,
|
||||
"Objekt_height_px": 2536.2104,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.490224,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.4902264,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 31.354,
|
||||
"y": 31.353,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 968.646,
|
||||
"x": 968.647,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
@@ -725,25 +677,23 @@
|
||||
"Winkel": 90.0,
|
||||
"center_line_width_mm": 810.0,
|
||||
"center_line_height_mm": 810.0,
|
||||
"Objekt_width_mm": 831.04,
|
||||
"Objekt_height_mm": 831.04,
|
||||
"calculated_objekt_width_mm": 831.04,
|
||||
"calculated_objekt_height_mm": 831.04,
|
||||
"Objekt_width_px": 3140.9386,
|
||||
"Objekt_height_px": 3140.9386,
|
||||
"Objekt_width_mm": 831.039,
|
||||
"Objekt_height_mm": 831.039,
|
||||
"Objekt_width_px": 3140.9348,
|
||||
"Objekt_height_px": 3140.9348,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.203312,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"scale_factor": 1.203313,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.318,
|
||||
"y": 25.317,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.683,
|
||||
"x": 974.684,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
@echo off
|
||||
|
||||
set OFBogen_PATH=%~dp0
|
||||
|
||||
set XML_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\svg
|
||||
|
||||
set JSON_PATH=%OFBogen_PATH%JSON
|
||||
|
||||
python 4_OFBogen_SVG_XML_Modifier_Script.py
|
||||
|
||||
|
||||
pause
|
||||
@@ -3,10 +3,17 @@
|
||||
set OFBogen_PATH=%~dp0
|
||||
set PROPS_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\props
|
||||
|
||||
set JSON_PATH=%OFBogen_PATH%JSON
|
||||
set JSON_PATH_BOGEN=%OFBogen_PATH%JSON
|
||||
|
||||
python 1_calculate_ture_width_and_height_dimensions_with_profile_width.py
|
||||
python 2_calculations_to_standardize_the_dimensions_and_add_connection_points.py
|
||||
python 3_update_dimensions_and_connection_points_in_props.py
|
||||
python 01_props_step1_calculations_to_standardize_the_dimensions_and_add_connection_points.py
|
||||
python 01_props_step2_update_dimensions_and_connection_points_in_props.py
|
||||
|
||||
|
||||
:: Check if Python script succeeded
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo update dimensions and connection points in props completed successfully
|
||||
) else (
|
||||
echo update dimensions and connection points in props failed with error %ERRORLEVEL%
|
||||
)
|
||||
|
||||
pause
|
||||