alle TEFBogen sind neue eingepflegt in 2d Wizard
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 572 B After Width: | Height: | Size: 572 B |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 295 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 555 B After Width: | Height: | Size: 555 B |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 862 B |
|
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 878 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 469 B After Width: | Height: | Size: 469 B |
|
Before Width: | Height: | Size: 843 B After Width: | Height: | Size: 843 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 978 B After Width: | Height: | Size: 978 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -4,4 +4,4 @@
|
||||
|
||||
|
||||
|
||||
<g transform="translate(.00035062 -.00033298)" 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>
|
||||
<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 After Width: | Height: | Size: 579 B |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="729.46" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 729.46" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<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(.99629 0 0 .99629 9.6881e-6 -1.761e-5)" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="0" stroke-width="3.7795"><path d="m950.67 729.71 50.584-20.948"/><path d="m1.8898 29.265h210.13c289.43 0.002307 550.36 174.35 661.12 441.75l102.82 248.22" fill="none"/><path d="m1.8898 1.8898v54.751"/></g></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: 595 B After Width: | Height: | Size: 574 B |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="384.97" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 384.97" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<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 .0077027 .0077178)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="bevel" stroke-miterlimit="0" stroke-width="3.7795"><path d="m963.7 382.29 33.637-33.641"/><path d="m1.8821 25.669h343.81c188.9 5.98e-4 370.07 75.042 503.64 208.62l131.19 131.19"/><path d="m1.8821 1.882v47.574"/></g></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: 589 B After Width: | Height: | Size: 570 B |
@@ -6,11 +6,11 @@
|
||||
</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="404.806,419.409 396.842,422.707 " />
|
||||
<polyline points="400.824,421.058 384.636,381.978 " stroke-dasharray="4.263798,0.473755,0.947511,0.473755,0.947511,0.473755" />
|
||||
<polyline points="247.465,312.428 280.548,312.428 " stroke-dasharray="4.263798,0.473755,0.947511,0.473755,0.947511,0.473755" />
|
||||
<polyline points="247.465,308.118 247.465,316.738 " />
|
||||
<path d="M384.636,381.978 A112.665,112.665 0 0,0 280.548,312.428 " stroke-dasharray="4.263798,0.473755,0.947511,0.473755,0.947511,0.473755" />
|
||||
<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 After Width: | Height: | Size: 1.0 KiB |
@@ -6,11 +6,11 @@
|
||||
</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="573.224,465.257 580.498,457.982 " />
|
||||
<polyline points="365.228,388.136 439.577,388.136 " stroke-dasharray="7.194777,0.799420,1.598839,0.799420,1.598839,0.799420" />
|
||||
<polyline points="576.861,461.619 548.491,433.25 " stroke-dasharray="7.194777,0.799420,1.598839,0.799420,1.598839,0.799420" />
|
||||
<polyline points="365.228,393.28 365.228,382.992 " />
|
||||
<path d="M548.491,433.25 A154.028,154.028 0 0,0 439.577,388.136 " stroke-dasharray="7.194777,0.799420,1.598839,0.799420,1.598839,0.799420" />
|
||||
<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 After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m996.22 996.22-0.01-192.98c0-212.03-84.232-415.38-234.16-565.3-149.93-149.93-353.27-234.16-565.3-234.16h-192.98" fill="none" stroke="#ec2525" stroke-dasharray="18.89763832,18.89763832" stroke-linecap="square" stroke-width="7.5591"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 459 B |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<path d="m3.7795 3.7824h233.92c201.18 0 394.11 80.218 536.36 223.01 142.25 142.79 222.16 336.46 222.16 538.39v234.82" fill="none" stroke="#ec2525" stroke-dasharray="18.89761276,18.89761276" stroke-linecap="square" stroke-width="7.5591"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 456 B |
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="358.92" height="1e3" fill-rule="evenodd" version="1.1" viewBox="0 0 358.92 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<path d="m353.57 5.3451-124.69 124.43c-144.12 143.83-225.1 338.9-225.1 542.29v324.15" fill="none" stroke="#ec2525" stroke-dasharray="18.89763832,18.89763832" stroke-linecap="square" stroke-width="7.5591"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 407 B |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="348.52" height="1e3" fill-rule="evenodd" version="1.1" viewBox="0 0 348.52 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<path d="m343.17 5.345-143.39 142.81c-125.49 124.99-196 294.52-196 471.28l0.0215 376.78" fill="none" stroke="#ec2525" stroke-dasharray="18.8976, 18.8976" stroke-linecap="square" stroke-width="7.559"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 401 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1000.3" height="423.82" fill-rule="evenodd" version="1.1" viewBox="0 0 1000.3 423.82" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<path d="m5.345 418.29 82.831-83.518c210.62-211.92 496.27-330.98 794.11-331l58.647 0.06757 58.637 0.038883" fill="none" stroke="#ec2525" stroke-dasharray="18.8977, 18.8977" stroke-linecap="square" stroke-width="7.5591"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 429 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="592.79" fill-rule="evenodd" version="1.1" viewBox="0 0 1e3 592.79" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<path d="m996.22 3.9544-226.17-0.17583c-316.78-0.24842-602.22 190.32-723.24 482.83l-41.873 101.25" fill="none" stroke="#ec2525" stroke-dasharray="18.8976, 18.8976" stroke-linecap="square" stroke-width="7.5591"/>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 414 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="694.45" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 694.45" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<path d="m4.9343 692.15 72.148-175.13c128-310.71 429.58-513.27 764.12-513.23l158.8 0.0107" fill="none" stroke="#ec2525" stroke-dasharray="18.8976, 18.8976" stroke-linecap="square" stroke-width="7.559"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 429 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="207.76" height="1e3" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 207.76 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<path d="m3.7844 3.7795v300.25c-1e-3 141.94 28.217 282.49 83.049 413.64l115.98 277.39" fill="none" stroke="#ec2525" stroke-dasharray="18.89762521,18.89762521" stroke-linecap="square" stroke-width="7.559"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 455 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="208.32" height="996.03" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 208.32 996.03" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<path d="m80.234 694.37 124.79 300.69m-201.23-991.28-0.021276 306.94m4.1e-6 0a1004.8 1002.6 0 0 0 76.449 383.67" fill="none" stroke="#ec2525" stroke-dasharray="18.8976, 18.8976" stroke-linecap="square" stroke-width="7.559"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 480 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="669.81" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 669.81" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(-2.447e-6 1 -1 -2.447e-6 1e3 .005797)" fill="none" stroke-linecap="square">
|
||||
<path d="m1.89 998.11v-195.67c-7.424e-4 -317.43 191.27-603.61 484.61-725.09l180.83-74.879" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
<path d="m198.17 848.74v-111.83c-6.3e-4 -198.4 119.54-377.26 302.88-453.18l87.029-36.042" stroke="#ec2525" stroke-dasharray="18.9335, 18.9335" stroke-width="7.5734"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 647 B |
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="359.94" height="1e3" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1"
|
||||
viewBox="0 0 359.94 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.99935 0 0 .99936 -.021242 .023437)" fill="none" stroke-linecap="square">
|
||||
<path d="m1.9122 1.8675v400.72c-0.00168 137.82 27.793 274.3 81.798 401.63l82.249 193.92" stroke="#ffe31b"
|
||||
stroke-width="3.7867" />
|
||||
<path d="m197.32 164.06v238.53c6.5e-4 112.76 22.744 224.42 66.93 328.6l93.465 220.37"
|
||||
style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 696 B |
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="289.73" height="1e3" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" version="1.1" viewBox="0 0 289.73 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(1.0101 0 0 1.0152 -46.38 .0062736)" fill="none" stroke-linecap="square">
|
||||
<path d="m248.24 980.17-123.15-291.8c-49.818-118.05-75.454-244.57-75.443-372.34l0.0245-297.87" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
<path d="m330.3 783.37-64.21-152.12c-42.162-99.882-63.863-206.93-63.864-315.05v-314.34" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="437.76" fill-rule="evenodd" version="1.1" viewBox="0 0 1e3 437.76" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
|
||||
<g transform="matrix(.29825 -.71813 .72004 .29746 -.4307 380.59)" fill="none" stroke-linecap="square">
|
||||
<path d="m2.4702 2.4702 194.35 80.76c282.5 116.99 506.94 341.39 623.96 623.84l120.33 290.46" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
<path d="m25.721 240.32 91.49 37.774c232.29 96.197 416.84 280.71 513.05 512.95l18.89 45.753 18.909 45.736" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 653 B |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="708.35" fill-rule="evenodd" version="1.1" viewBox="0 0 1e3 708.35" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<g transform="matrix(.95309 .39481 -.39479 .95317 397.03 -247.19)" fill="none" stroke-linecap="square">
|
||||
<path d="m630.76 0.22005-192.52 79.575c-265.18 109.6-438.07 367.79-438.07 654.19v265.85" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
<path d="m585.42 158.21-137.69 56.907c-192.85 79.703-318.59 267.48-318.6 475.77l6e-3 72.091" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 636 B |
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="431.69" height="1e3" fill-rule="evenodd" version="1.1" viewBox="0 0 431.69 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
|
||||
<g transform="matrix(.9973 0 0 .99732 1.9001 2.6723)" fill="none" stroke-linecap="square">
|
||||
<path d="m428.27 77.98-112.92 112.66c-132.36 132.08-206.72 311.22-206.71 498.01l-0.28938 309.46" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
<path d="m351.67 2.68-124.68 124.43c-144.12 143.83-225.09 338.9-225.09 542.29v324.15" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 623 B |
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="434.9" height="1e3" fill-rule="evenodd" version="1.1" viewBox="0 0 434.9 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<g transform="matrix(1 0 0 1 .0041827 .0028903)" fill="none" fill-rule="nonzero" stroke-linecap="square">
|
||||
<path d="m429.55 83.85-132.03 131.74c-115.55 115.3-180.47 271.68-180.47 434.74l0.0198 347.56" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
<path d="m1.8876 998.11 0.3124-334.8c0.0011535-202.07 80.447-395.86 223.64-538.74l122.17-121.9" stroke="#ffe31b" stroke-width="3.7867"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 642 B |
@@ -0,0 +1,9 @@
|
||||
<?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(.99998 0 0 .99998 .0067904 .008556)" fill="none" stroke-linecap="square">
|
||||
<path d="m996.22 996.22v-192.97c0-212.03-84.23-415.38-234.16-565.31s-353.28-234.16-565.31-234.16l-192.97-0.001548" stroke="#ec2525" stroke-dasharray="18.9338, 18.9338" stroke-width="7.5735"/>
|
||||
<path d="m885.95 996.22v-165.41c0-190.1-75.516-372.41-209.94-506.83-134.42-134.42-316.73-209.94-506.83-209.94h-165.41" stroke="#ffe31b" stroke-width="3.7868"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 714 B |
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<g transform="matrix(.9981 0 0 .9981 1.8933 .0035334)" fill="none" stroke-linecap="square">
|
||||
<path d="m1.8898 126.42h205.46c176.7 0 346.16 70.191 471.1 195.13 124.94 124.94 195.13 294.4 195.13 471.09v205.47" style="stroke:#ec2525;stroke-dasharray:18.9335, 18.9335;" stroke-width="7.5734"/>
|
||||
<path d="m-0.003575 1.8898h187.13c215.09-0.0053101 421.37 85.434 573.46 237.52 152.09 152.09 237.53 358.36 237.53 573.45v187.15" stroke="#ffe31b" stroke-width="3.7867" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 707 B |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="700.04" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 700.04" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(3.9046 0 0 3.9046 -1139.8 -1233.5)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".96802">
|
||||
<path d="m340.75 326.58a193.45 193.45 0 0 1 178.72 119.42"/>
|
||||
<path d="m292.39 316.4v20.35"/>
|
||||
<path d="m292.39 326.58h48.362"/>
|
||||
<path d="m519.47 445.99 18.507 44.681"/>
|
||||
<path d="m528.58 494.57 18.801-7.788"/>
|
||||
</g>
|
||||
<g transform="matrix(3.9046 0 0 3.9046 -1139.8 -1233.5)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".96802">
|
||||
<path d="m356.9 359.8a136.04 136.04 0 0 1 125.69 83.981"/>
|
||||
<path d="m356.9 390.08a105.77 105.77 0 0 1 97.717 65.292"/>
|
||||
<path d="m356.9 374.94a120.9 120.9 0 0 1 111.7 74.636"/>
|
||||
<path d="m463.5 476.82 27.97-11.586"/>
|
||||
<path d="m482.59 443.78 8.883 21.447"/>
|
||||
<path d="m329.34 359.8h27.566"/>
|
||||
<path d="m329.34 359.8v30.275"/>
|
||||
<path d="m329.34 390.08h27.566"/>
|
||||
<path d="m454.62 455.37 8.883 21.447"/>
|
||||
<path d="m468.61 449.58 8.883 21.447"/>
|
||||
<path d="m329.34 374.94h27.566"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="434.11" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 434.11" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(7.9452 0 0 7.9452 -2977.5 -2991.4)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".47569">
|
||||
<path d="m404.14 381.64a128.21 128.21 0 0 1 49.064 9.759"/>
|
||||
<path d="m378.5 376.74v9.809"/>
|
||||
<path d="m378.5 381.64h25.642"/>
|
||||
<path d="m453.21 391.4 45.227 18.734"/>
|
||||
<path d="m496.56 414.66 3.754-9.062"/>
|
||||
</g>
|
||||
<g transform="matrix(7.9452 0 0 7.9452 -2977.5 -2991.4)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".47567">
|
||||
<path d="m404.14 412.25a97.6 97.6 0 0 1 37.35 7.4298"/>
|
||||
<path d="m404.14 397.66a112.2 112.2 0 0 1 42.934 8.5398"/>
|
||||
<path d="m404.14 404.95a104.9 104.9 0 0 1 40.142 7.9848"/>
|
||||
<path d="m375 412.25h29.138"/>
|
||||
<path d="m375 397.66v14.592"/>
|
||||
<path d="m375 397.66h29.138"/>
|
||||
<path d="m447.08 406.2 26.92 11.151"/>
|
||||
<path d="m468.42 430.83 5.5848-13.482"/>
|
||||
<path d="m441.5 419.68 26.919 11.151"/>
|
||||
<path d="m375 404.95h29.138"/>
|
||||
<path d="m444.29 412.94 26.92 11.151"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="418.97" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 418.97" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(12.296 0 0 12.296 -8054.7 -4124.2)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".3104">
|
||||
<path d="m681.3 335.58a84.15 84.15 0 0 1 32.202 6.409"/>
|
||||
<path d="m681.3 339.45a80.284 80.284 0 0 1 30.723 6.114"/>
|
||||
<path d="m681.3 343.31a76.418 76.418 0 0 1 29.244 5.82"/>
|
||||
<path d="m655.24 343.31 1e-3 -7.732"/>
|
||||
<path d="m655.24 343.31 26.061 2e-3"/>
|
||||
<path d="m710.55 349.13 22.707 9.408"/>
|
||||
<path d="m655.24 339.44 26.062 2e-3"/>
|
||||
<path d="m712.03 345.56 22.707 9.408"/>
|
||||
<path d="m655.24 335.58 26.061 2e-3"/>
|
||||
<path d="m713.51 341.99 22.708 9.407"/>
|
||||
<path d="m733.26 358.54 2.96-7.144"/>
|
||||
</g>
|
||||
<g transform="matrix(12.296 0 0 12.296 -8054.7 -4124.2)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".3104">
|
||||
<path d="m681.29 351.8a67.932 67.932 0 0 1 25.997 5.171"/>
|
||||
<path d="m667.7 349.2v5.198"/>
|
||||
<path d="m667.7 351.8h13.586"/>
|
||||
<path d="m707.28 356.97 23.963 9.926"/>
|
||||
<path d="m730.25 369.3 1.989-4.802"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="506.11" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 506.11" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(25.768 0 0 25.768 -7425.6 -10013)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".1463">
|
||||
<path d="m294.66 389.98a34.824 34.824 0 0 1 24.624 10.2"/>
|
||||
<path d="m288.24 388.65v2.664"/>
|
||||
<path d="m288.24 389.98h6.423"/>
|
||||
<path d="m319.29 400.18 6.642 6.642"/>
|
||||
<path d="m324.99 407.77 1.883-1.884"/>
|
||||
</g>
|
||||
<g transform="matrix(25.768 0 0 25.768 -7425.6 -10013)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".14592">
|
||||
<path d="m294.65 394.32a30.395 30.395 0 0 1 21.492 8.903"/>
|
||||
<path d="m294.65 398.27a26.442 26.442 0 0 1 18.698 7.745"/>
|
||||
<path d="m294.65 396.29a28.422 28.422 0 0 1 20.097 8.3245"/>
|
||||
<path d="m313.34 406.02 2.0986 2.0986"/>
|
||||
<path d="m315.44 408.12 2.7948-2.7958"/>
|
||||
<path d="m316.14 403.22 2.0986 2.0986"/>
|
||||
<path d="m291.68 394.32h2.9683"/>
|
||||
<path d="m291.68 394.32v3.9538"/>
|
||||
<path d="m291.68 398.27h2.9683"/>
|
||||
<path d="m291.68 396.3 2.9683-3e-3"/>
|
||||
<path d="m314.74 404.62 2.0966 2.1016"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="729.48" fill-rule="evenodd" 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(8.0024 0 0 8.0024 -3381.5 -3126.8)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-linejoin="miter" stroke-width=".47459">
|
||||
<path d="m448.96 394.38a89.088 89.088 0 0 1 82.307 54.995"/>
|
||||
<path d="m540.92 481.58 6.297-2.608"/>
|
||||
<path d="m531.26 449.38 12.8 30.903"/>
|
||||
<path d="m422.8 394.38h26.159"/>
|
||||
<path d="m422.8 390.97v6.816"/>
|
||||
</g>
|
||||
<g transform="matrix(8.0024 0 0 8.0024 -3381.5 -3126.8)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".47689">
|
||||
<path d="m454.52 415.77a60.011 60.011 0 0 1 55.443 37.046"/>
|
||||
<path d="m454.52 405.58a70.2 70.2 0 0 1 64.856 43.336"/>
|
||||
<path d="m454.52 410.68a65.106 65.106 0 0 1 60.149 40.191"/>
|
||||
<path d="m445.41 415.77h9.115"/>
|
||||
<path d="m509.97 452.82 7.1947 17.369"/>
|
||||
<path d="m517.16 470.19 9.4134-3.8998"/>
|
||||
<path d="m519.38 448.92 7.1947 17.368"/>
|
||||
<path d="m445.41 405.58h9.115"/>
|
||||
<path d="m445.41 405.58v10.189"/>
|
||||
<path d="m445.41 410.68h9.115"/>
|
||||
<path d="m514.67 450.87 7.1947 17.368"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="468.34" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 468.34" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(2.7858 0 0 2.7858 -1004.9 -919.89)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width="1.3551">
|
||||
<path d="m361.52 379.82h113.32"/><path d="m361.52 371.98v15.68"/><path d="m474.85 379.82a234.77 234.77 0 0 1 166.01 68.764"/>
|
||||
<path d="m678.56 497.37 11.088-11.088"/>
|
||||
<path d="m640.86 448.58 43.242 43.241"/>
|
||||
</g>
|
||||
<g transform="matrix(2.7858 0 0 2.7858 -1004.9 -919.89)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width="1.3551">
|
||||
<path d="m475.62 330.89a281.84 281.84 0 0 1 199.29 82.549"/>
|
||||
<path d="m475.62 354.22a258.51 258.51 0 0 1 182.8 75.716"/>
|
||||
<path d="m475.62 342.55a270.18 270.18 0 0 1 191.04 79.132"/>
|
||||
<path d="m658.42 429.93 43.838 43.838"/>
|
||||
<path d="m702.26 473.77 16.496-16.495"/>
|
||||
<path d="m674.91 413.44 43.838 43.839"/>
|
||||
<path d="m361.42 330.89h114.2"/>
|
||||
<path d="m361.42 330.89v23.329"/>
|
||||
<path d="m361.42 354.22h114.2"/>
|
||||
<path d="m666.67 421.68 43.838 43.839"/>
|
||||
<path d="m361.42 342.55h114.2"/>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="473.18" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 473.18" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(6.4098 0 0 6.4098 -2358.3 -2331.8)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".59152">
|
||||
<path d="m421.59 379.91a99.882 99.882 0 0 1 70.628 29.253"/>
|
||||
<path d="m421.59 390.95a88.841 88.841 0 0 1 62.821 26.02"/>
|
||||
<path d="m421.59 385.43a94.362 94.362 0 0 1 66.725 27.636"/>
|
||||
<path d="m484.41 416.97 20.22 20.218"/>
|
||||
<path d="m504.63 437.18 7.807-7.807"/>
|
||||
<path d="m492.22 409.16 20.22 20.219"/>
|
||||
<path d="m368.25 379.91 53.344-2e-3"/>
|
||||
<path d="m368.25 379.91 1e-3 11.041"/>
|
||||
<path d="m368.25 390.95 53.344-2e-3"/>
|
||||
<path d="m368.25 385.43 53.344-1e-3"/>
|
||||
<path d="m488.32 413.06 20.22 20.219"/>
|
||||
</g>
|
||||
<g transform="matrix(6.4098 0 0 6.4098 -2358.3 -2331.8)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".59152">
|
||||
<path d="m421.85 367.79a111.12 111.12 0 0 1 78.572 32.545"/>
|
||||
<path d="m518.26 423.42 5.248-5.248"/>
|
||||
<path d="m368.22 367.79h53.636"/>
|
||||
<path d="m500.42 400.33 20.466 20.466"/>
|
||||
<path d="m368.22 364.08v7.422"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(8.497 0 0 8.497 -4283.5 -2426.3)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".4469">
|
||||
<path d="m525.75 302.3a79.311 79.311 0 0 1 79.311 79.311"/>
|
||||
<path d="m504.34 299.66v5.297"/>
|
||||
<path d="m602.41 403.02h5.297"/>
|
||||
<path d="m605.06 381.62v21.402"/>
|
||||
<path d="m504.34 302.3h21.401"/>
|
||||
</g>
|
||||
<g transform="matrix(8.497 0 0 8.497 -4283.5 -2426.3)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-width=".4469">
|
||||
<path d="m526.38 293.66a87.33 87.33 0 0 1 87.33 87.33"/>
|
||||
<path d="m526.38 285.78a95.211 95.211 0 0 1 95.211 95.211"/>
|
||||
<path d="m526.38 289.72a91.271 91.271 0 0 1 91.27 91.271"/>
|
||||
<path d="m613.71 380.99v22.031"/>
|
||||
<path d="m613.71 403.02h7.881"/>
|
||||
<path d="m621.59 380.99v22.031"/>
|
||||
<path d="m504.34 285.78h22.031"/>
|
||||
<path d="m504.34 285.78v7.881"/>
|
||||
<path d="m504.34 293.66h22.031"/>
|
||||
<path d="m504.34 289.72h22.031"/>
|
||||
<path d="m617.65 380.99v22.031"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1e3" height="1e3" fill-rule="evenodd" stroke-linejoin="round" version="1.1" viewBox="0 0 1e3 1e3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(5.3462 0 0 5.3462 -2252.1 -1673)" fill="none" stroke="#ffe31b" stroke-linecap="square" stroke-width=".70807">
|
||||
<path d="m460.2 318.07a142.98 142.98 0 0 1 142.98 142.98"/>
|
||||
<path d="m421.62 313.29v9.551"/>
|
||||
<path d="m598.41 499.64h9.551"/>
|
||||
<path d="m603.18 461.05v38.582"/>
|
||||
<path d="m421.62 318.07h38.582"/>
|
||||
</g>
|
||||
<g transform="matrix(5.3462 0 0 5.3462 -2252.1 -1673)" fill="none" stroke="#ec2525" stroke-linecap="square" stroke-linejoin="miter" stroke-width=".70696">
|
||||
<path d="m459.01 347.82a114.14 114.14 0 0 1 114.14 114.14"/>
|
||||
<path d="m459.01 333.63a128.32 128.32 0 0 1 128.32 128.32"/>
|
||||
<path d="m459.01 340.72a121.23 121.23 0 0 1 121.23 121.23"/>
|
||||
<path d="m573.15 461.96v37.389"/>
|
||||
<path d="m573.15 499.34h14.185"/>
|
||||
<path d="m587.33 461.96v37.389"/>
|
||||
<path d="m421.62 333.63h37.389"/>
|
||||
<path d="m421.62 333.63v14.185"/>
|
||||
<path d="m421.62 347.82h37.389"/>
|
||||
<path d="m421.62 340.72h37.389"/>
|
||||
<path d="m580.24 461.96v37.389"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,29 @@
|
||||
<?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="292.389,316.4 292.389,336.75 " />
|
||||
<polyline points="292.389,326.575 340.751,326.575 " stroke-dasharray="14.231860,1.581318,3.162635,1.581318,3.162635,1.581318" />
|
||||
<polyline points="537.981,490.674 519.474,445.993 " stroke-dasharray="14.231860,1.581318,3.162635,1.581318,3.162635,1.581318" />
|
||||
<polyline points="547.382,486.78 528.581,494.568 " />
|
||||
<path d="M519.474,445.993 A193.448,193.448 0 0,0 340.751,326.575 " stroke-dasharray="14.231860,1.581318,3.162635,1.581318,3.162635,1.581318" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<polyline points="463.505,476.818 491.475,465.232 " />
|
||||
<polyline points="491.475,465.232 482.592,443.785 " />
|
||||
<path d="M482.592,443.785 A136.042,136.042 0 0,0 356.905,359.804 " />
|
||||
<polyline points="356.905,359.804 329.339,359.804 " />
|
||||
<polyline points="329.339,359.804 329.339,390.079 " />
|
||||
<polyline points="329.339,390.079 356.905,390.079 " />
|
||||
<path d="M454.622,455.371 A105.768,105.768 0 0,0 356.905,390.079 " />
|
||||
<polyline points="454.622,455.371 463.505,476.818 " />
|
||||
<polyline points="477.49,471.025 468.607,449.578 " />
|
||||
<path d="M468.607,449.578 A120.905,120.905 0 0,0 356.905,374.942 " />
|
||||
<polyline points="356.905,374.942 329.339,374.942 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,30 @@
|
||||
<?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="378.502,386.545 378.502,376.736 " />
|
||||
<polyline points="378.502,381.641 404.144,381.641 " stroke-dasharray="6.859903,0.762211,1.524423,0.762211,1.524423,0.762211" />
|
||||
<polyline points="498.435,410.134 453.208,391.4 " stroke-dasharray="6.859903,0.762211,1.524423,0.762211,1.524423,0.762211" />
|
||||
<polyline points="500.312,405.603 496.558,414.665 " />
|
||||
<path d="M453.208,391.4 A128.211,128.211 0 0,0 404.144,381.641 " stroke-dasharray="6.859903,0.762211,1.524423,0.762211,1.524423,0.762211" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<path d="M441.495,419.68 A97.6032,97.6032 0 0,0 404.144,412.25 " />
|
||||
<polyline points="404.144,412.25 375.005,412.25 " />
|
||||
<polyline points="375.005,412.25 375.005,397.658 " />
|
||||
<polyline points="375.005,397.658 404.144,397.658 " />
|
||||
<path d="M447.079,406.198 A112.196,112.196 0 0,0 404.144,397.658 " />
|
||||
<polyline points="447.079,406.198 474,417.349 " />
|
||||
<polyline points="474,417.349 468.415,430.831 " />
|
||||
<polyline points="468.415,430.831 441.495,419.68 " />
|
||||
<path d="M444.287,412.939 A104.9,104.9 0 0,0 404.144,404.954 " />
|
||||
<polyline points="404.144,404.954 375.005,404.954 " />
|
||||
<polyline points="444.287,412.939 471.208,424.09 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,28 @@
|
||||
<?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="655.243,343.311 655.244,335.579 " />
|
||||
<polyline points="681.304,343.313 655.243,343.311 " />
|
||||
<polyline points="733.255,358.541 710.548,349.133 " />
|
||||
<polyline points="681.305,339.447 655.243,339.445 " />
|
||||
<polyline points="712.028,345.561 734.735,354.969 " />
|
||||
<polyline points="681.305,335.581 655.244,335.579 " />
|
||||
<polyline points="736.215,351.397 713.507,341.99 " />
|
||||
<polyline points="733.255,358.541 736.215,351.397 " />
|
||||
<path d="M713.507,341.99 A84.1497,84.1497 0 0,0 681.305,335.581 " />
|
||||
<path d="M712.028,345.561 A80.2837,80.2837 0 0,0 681.305,339.447 " />
|
||||
<path d="M710.548,349.133 A76.4178,76.4178 0 0,0 681.304,343.313 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="667.702,354.397 667.702,349.199 " />
|
||||
<polyline points="667.702,351.798 681.288,351.798 " stroke-dasharray="3.634723,0.403858,0.807716,0.403858,0.807716,0.403858" />
|
||||
<polyline points="731.248,366.895 707.285,356.969 " stroke-dasharray="3.634723,0.403858,0.807716,0.403858,0.807716,0.403858" />
|
||||
<polyline points="732.243,364.494 730.254,369.296 " />
|
||||
<path d="M707.285,356.969 A67.9324,67.9324 0 0,0 681.288,351.798 " stroke-dasharray="3.634723,0.403858,0.807716,0.403858,0.807716,0.403858" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,29 @@
|
||||
<?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="288.241,391.315 288.241,388.651 " />
|
||||
<polyline points="288.241,389.983 294.664,389.983 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
<polyline points="325.93,406.825 319.288,400.183 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
<polyline points="326.872,405.883 324.989,407.767 " />
|
||||
<path d="M319.288,400.183 A34.8235,34.8235 0 0,0 294.664,389.983 " stroke-dasharray="0.284920,0.031658,0.063315,0.031658,0.063315,0.031658" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(255,0,0)" stroke-width="0.25" >
|
||||
<polyline points="313.41,406.062 315.514,408.166 " />
|
||||
<polyline points="315.514,408.166 318.316,405.363 " />
|
||||
<polyline points="318.316,405.363 316.212,403.259 " />
|
||||
<path d="M316.212,403.259 A30.4737,30.4737 0 0,0 294.664,394.333 " />
|
||||
<polyline points="294.664,394.333 291.688,394.333 " />
|
||||
<polyline points="291.688,394.333 291.688,398.297 " />
|
||||
<polyline points="291.688,398.297 294.664,398.297 " />
|
||||
<path d="M313.41,406.062 A26.5102,26.5102 0 0,0 294.664,398.297 " />
|
||||
<path d="M314.813,404.658 A28.495,28.495 0 0,0 294.664,396.312 " />
|
||||
<polyline points="294.664,396.312 291.688,396.315 " />
|
||||
<polyline points="314.813,404.658 316.915,406.765 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,29 @@
|
||||
<?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="547.214,478.976 540.917,481.584 " />
|
||||
<polyline points="544.065,480.28 531.265,449.377 " stroke-dasharray="4.766665,0.529629,1.059259,0.529629,1.059259,0.529629" />
|
||||
<polyline points="422.799,394.382 448.958,394.382 " stroke-dasharray="4.766665,0.529629,1.059259,0.529629,1.059259,0.529629" />
|
||||
<polyline points="422.799,390.974 422.799,397.79 " />
|
||||
<path d="M531.265,449.377 A89.0882,89.0882 0 0,0 448.958,394.382 " stroke-dasharray="4.766665,0.529629,1.059259,0.529629,1.059259,0.529629" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<polyline points="445.298,415.651 454.369,415.651 " />
|
||||
<path d="M509.544,452.518 A59.7215,59.7215 0 0,0 454.369,415.651 " />
|
||||
<polyline points="509.544,452.518 516.704,469.803 " />
|
||||
<polyline points="516.704,469.803 526.072,465.922 " />
|
||||
<polyline points="526.072,465.922 518.912,448.638 " />
|
||||
<path d="M518.912,448.638 A69.8614,69.8614 0 0,0 454.369,405.511 " />
|
||||
<polyline points="454.369,405.511 445.298,405.511 " />
|
||||
<polyline points="445.298,405.511 445.298,415.651 " />
|
||||
<polyline points="445.298,410.581 454.369,410.581 " />
|
||||
<path d="M514.228,450.578 A64.7914,64.7914 0 0,0 454.369,410.581 " />
|
||||
<polyline points="514.228,450.578 521.388,467.862 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,31 @@
|
||||
<?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="678.557,497.369 689.645,486.281 " />
|
||||
<polyline points="684.101,491.825 640.859,448.584 " stroke-dasharray="10.966450,1.218494,2.436989,1.218494,2.436989,1.218494" />
|
||||
<path d="M640.859,448.584 A234.774,234.774 0 0,0 474.849,379.82 " stroke-dasharray="10.966450,1.218494,2.436989,1.218494,2.436989,1.218494" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<polyline points="658.418,429.931 702.256,473.769 " />
|
||||
<polyline points="702.256,473.769 718.752,457.274 " />
|
||||
<polyline points="718.752,457.274 674.914,413.435 " />
|
||||
<path d="M674.914,413.435 A281.84,281.84 0 0,0 475.622,330.886 " />
|
||||
<polyline points="475.622,330.886 361.421,330.886 " />
|
||||
<polyline points="361.421,330.886 361.421,354.215 " />
|
||||
<polyline points="361.421,354.215 475.622,354.215 " />
|
||||
<path d="M658.418,429.931 A258.512,258.512 0 0,0 475.622,354.215 " />
|
||||
<polyline points="666.666,421.683 710.504,465.522 " />
|
||||
<path d="M666.666,421.683 A270.176,270.176 0 0,0 475.622,342.551 " />
|
||||
<polyline points="475.622,342.551 361.421,342.551 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="361.524,379.82 474.849,379.82 " stroke-dasharray="10.966450,1.218494,2.436989,1.218494,2.436989,1.218494" />
|
||||
<polyline points="361.524,387.66 361.524,371.98 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,28 @@
|
||||
<?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="484.412,416.967 504.632,437.185 " />
|
||||
<polyline points="504.632,437.185 512.439,429.378 " />
|
||||
<polyline points="512.439,429.378 492.219,409.159 " />
|
||||
<path d="M492.219,409.159 A99.8821,99.8821 0 0,0 421.591,379.906 " />
|
||||
<polyline points="421.591,379.906 368.247,379.908 " />
|
||||
<polyline points="368.246,379.908 368.247,390.949 " />
|
||||
<polyline points="368.247,390.949 421.591,390.947 " />
|
||||
<path d="M484.412,416.967 A88.8409,88.8409 0 0,0 421.591,390.947 " />
|
||||
<path d="M488.316,413.063 A94.3615,94.3615 0 0,0 421.591,385.427 " />
|
||||
<polyline points="421.591,385.427 368.247,385.428 " />
|
||||
<polyline points="488.316,413.063 508.536,433.282 " />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,255,255)" stroke-width="0.1" >
|
||||
<polyline points="518.265,423.424 523.513,418.176 " />
|
||||
<polyline points="368.215,367.789 421.851,367.789 " stroke-dasharray="5.190369,0.576708,1.153415,0.576708,1.153415,0.576708" />
|
||||
<polyline points="520.889,420.8 500.423,400.334 " stroke-dasharray="5.190369,0.576708,1.153415,0.576708,1.153415,0.576708" />
|
||||
<polyline points="368.215,371.5 368.215,364.078 " />
|
||||
<path d="M500.423,400.334 A111.117,111.117 0 0,0 421.851,367.789 " stroke-dasharray="5.190369,0.576708,1.153415,0.576708,1.153415,0.576708" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,29 @@
|
||||
<?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="504.345,304.954 504.345,299.657 " />
|
||||
<polyline points="602.409,403.018 607.706,403.018 " />
|
||||
<polyline points="605.057,403.018 605.057,381.616 " stroke-dasharray="3.704670,0.411630,0.823260,0.411630,0.823260,0.411630" />
|
||||
<polyline points="504.345,302.305 525.746,302.305 " stroke-dasharray="3.704670,0.411630,0.823260,0.411630,0.823260,0.411630" />
|
||||
<path d="M605.057,381.616 A79.3109,79.3109 0 0,0 525.746,302.305 " stroke-dasharray="3.704670,0.411630,0.823260,0.411630,0.823260,0.411630" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<path d="M613.706,380.987 A87.3301,87.3301 0 0,0 526.376,293.657 " />
|
||||
<polyline points="613.706,380.987 613.706,403.018 " />
|
||||
<polyline points="613.706,403.018 621.587,403.018 " />
|
||||
<polyline points="621.587,403.018 621.587,380.987 " />
|
||||
<path d="M621.587,380.987 A95.2109,95.2109 0 0,0 526.376,285.776 " />
|
||||
<polyline points="526.376,285.776 504.345,285.776 " />
|
||||
<polyline points="504.345,285.776 504.345,293.657 " />
|
||||
<polyline points="504.345,293.657 526.376,293.657 " />
|
||||
<polyline points="526.376,289.716 504.345,289.716 " />
|
||||
<path d="M617.646,380.987 A91.2705,91.2705 0 0,0 526.376,289.716 " />
|
||||
<polyline points="617.646,380.987 617.646,403.018 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,29 @@
|
||||
<?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="421.617,322.83 421.617,313.294 " />
|
||||
<polyline points="598.131,499.344 607.667,499.344 " />
|
||||
<polyline points="602.899,499.344 602.899,460.822 " stroke-dasharray="6.668406,0.740934,1.481868,0.740934,1.481868,0.740934" />
|
||||
<polyline points="421.617,318.062 460.139,318.062 " stroke-dasharray="6.668406,0.740934,1.481868,0.740934,1.481868,0.740934" />
|
||||
<path d="M602.899,460.822 A142.76,142.76 0 0,0 460.139,318.062 " stroke-dasharray="6.668406,0.740934,1.481868,0.740934,1.481868,0.740934" />
|
||||
</g>
|
||||
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(0,0,0)" stroke-width="0.1" >
|
||||
<path d="M573.146,461.955 A114.14,114.14 0 0,0 459.006,347.815 " />
|
||||
<polyline points="573.146,461.955 573.146,499.344 " />
|
||||
<polyline points="573.146,499.344 587.331,499.344 " />
|
||||
<polyline points="587.331,499.344 587.331,461.955 " />
|
||||
<path d="M587.331,461.955 A128.325,128.325 0 0,0 459.006,333.63 " />
|
||||
<polyline points="459.006,333.63 421.617,333.63 " />
|
||||
<polyline points="421.617,333.63 421.617,347.815 " />
|
||||
<polyline points="421.617,347.815 459.006,347.815 " />
|
||||
<polyline points="459.006,340.722 421.617,340.722 " />
|
||||
<path d="M580.239,461.955 A121.232,121.232 0 0,0 459.006,340.722 " />
|
||||
<polyline points="580.239,461.955 580.239,499.344 " />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,228 @@
|
||||
[
|
||||
{
|
||||
"SVGname": "APB_110_R400_45_400_821104021.svg",
|
||||
"Sivasnr": "821104021",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 669.491,
|
||||
"center_line_height_mm": 399.505,
|
||||
"Objekt_width_mm":684.367,
|
||||
"Objekt_height_mm":435.421
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R400_67_5_339_821104024.svg",
|
||||
"Sivasnr": "821104024",
|
||||
"Winkel":67.5,
|
||||
"center_line_width_mm": 507.820,
|
||||
"center_line_height_mm": 339.315,
|
||||
"Objekt_width_mm":527.258,
|
||||
"Objekt_height_mm":368.405
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R400_90_500_821104022.svg",
|
||||
"Sivasnr": "821104022",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 500,
|
||||
"center_line_height_mm": 500,
|
||||
"Objekt_width_mm":521.040,
|
||||
"Objekt_height_mm":521.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R500_90_550_550_821104030.svg",
|
||||
"Sivasnr": "821104030",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 550,
|
||||
"center_line_height_mm": 550,
|
||||
"Objekt_width_mm":571.040,
|
||||
"Objekt_height_mm":571.040
|
||||
},
|
||||
{
|
||||
"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.230,
|
||||
"Objekt_width_mm":522.542,
|
||||
"Objekt_height_mm":162.707
|
||||
},
|
||||
{
|
||||
"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.230,
|
||||
"Objekt_width_mm":522.542,
|
||||
"Objekt_height_mm":162.707
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_191_821104029.svg",
|
||||
"Sivasnr": "821104029",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 551.606,
|
||||
"center_line_height_mm": 190.792 ,
|
||||
"Objekt_width_mm":566.483,
|
||||
"Objekt_height_mm":226.709
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_205_821104037.svg",
|
||||
"Sivasnr": "821104037",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 537.249,
|
||||
"center_line_height_mm": 204.932,
|
||||
"Objekt_width_mm":552.126,
|
||||
"Objekt_height_mm":240.849
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_45_232_821104026.svg",
|
||||
"Sivasnr": "821104026",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 595.265,
|
||||
"center_line_height_mm": 265.998,
|
||||
"Objekt_width_mm":610.142,
|
||||
"Objekt_height_mm":301.914
|
||||
},
|
||||
{
|
||||
"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
|
||||
},
|
||||
{
|
||||
"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
|
||||
},
|
||||
{
|
||||
"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
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_67_5_L_185_170_821104065.svg",
|
||||
"Sivasnr": "821104065",
|
||||
"Winkel":67.5,
|
||||
"center_line_width_mm": 758.190,
|
||||
"center_line_height_mm": 496.584,
|
||||
"Objekt_width_mm":777.628,
|
||||
"Objekt_height_mm":525.674
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R550_90_900_605_821104066.svg",
|
||||
"Sivasnr": "821104066",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 900,
|
||||
"center_line_height_mm": 605,
|
||||
"Objekt_width_mm":921.040,
|
||||
"Objekt_height_mm":626.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_45_400_821104031.svg",
|
||||
"Sivasnr": "821104031",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm":880.491,
|
||||
"Objekt_height_mm":336.475
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_45_400_821104031.svg",
|
||||
"Sivasnr": "OFBogen45",
|
||||
"Winkel":45,
|
||||
"center_line_width_mm": 865.613,
|
||||
"center_line_height_mm": 300.559,
|
||||
"Objekt_width_mm":880.491,
|
||||
"Objekt_height_mm":336.475
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_800_800_821104033.svg",
|
||||
"Sivasnr": "821104033",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 800,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":821.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_800_800_821104033.svg",
|
||||
"Sivasnr": "OFBogen90",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 800,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":821.040
|
||||
},
|
||||
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_690_821104041.svg",
|
||||
"Sivasnr": "821104041",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 690,
|
||||
"center_line_height_mm": 850,
|
||||
"Objekt_width_mm":711.040,
|
||||
"Objekt_height_mm":871.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_870_821104035.svg",
|
||||
"Sivasnr": "821104035",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 850,
|
||||
"center_line_height_mm": 870,
|
||||
"Objekt_width_mm":871.04,
|
||||
"Objekt_height_mm":891.04
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R630_90_850_890_821104034.svg",
|
||||
"Sivasnr": "821104034",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 890,
|
||||
"center_line_height_mm": 850,
|
||||
"Objekt_width_mm":911.040,
|
||||
"Objekt_height_mm":871.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
"Sivasnr": "821104043",
|
||||
"Winkel":180,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 1300,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":1342.080
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_110_R650_180_L_150_821104043.svg",
|
||||
"Sivasnr": "OFBogen180",
|
||||
"Winkel":180,
|
||||
"center_line_width_mm": 800,
|
||||
"center_line_height_mm": 1300,
|
||||
"Objekt_width_mm":821.040,
|
||||
"Objekt_height_mm":1342.080
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_650_821094040.svg",
|
||||
"Sivasnr": "821094040",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 650.0,
|
||||
"center_line_height_mm": 650.0,
|
||||
"Objekt_width_mm": 671.040,
|
||||
"Objekt_height_mm": 671.040
|
||||
},
|
||||
{
|
||||
"SVGname": "APB_60_R515_90_810_821094101.svg",
|
||||
"Sivasnr": "821094101",
|
||||
"Winkel":90,
|
||||
"center_line_width_mm": 810.0,
|
||||
"center_line_height_mm": 810.0,
|
||||
"Objekt_width_mm": 831.04,
|
||||
"Objekt_height_mm": 831.04
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,277 @@
|
||||
[
|
||||
{
|
||||
"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": 821.04,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"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": 821.04,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,151 @@
|
||||
''' 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
|
||||
|
||||
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"] + sin_value * 21.040
|
||||
calculated_height = processed_item["center_line_height_mm"] + 21.040 + cos_value * 21.040
|
||||
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__":
|
||||
input_filename = "1_SVGErfassung_updated_new_input.json" # Replace with your input filename
|
||||
output_filename = "1_SVGErfassung_updated_new_output.json" # Replace with desired output filename
|
||||
|
||||
process_json_file(input_filename, output_filename)
|
||||
@@ -0,0 +1,752 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2586.565,
|
||||
"Objekt_height_px": 1645.674,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 638.912,
|
||||
"scale_factor": 1.4612043,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 48.119,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 978.263,
|
||||
"y": 961.795,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 1992.772,
|
||||
"Objekt_height_px": 1392.387,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 700.764,
|
||||
"scale_factor": 1.8966047,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 56.944,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.134,
|
||||
"y": 975.294,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 1969.271,
|
||||
"Objekt_height_px": 1969.271,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.919238,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 40.381,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 959.619,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2158.246,
|
||||
"Objekt_height_px": 2158.246,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.751191,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 36.845,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.155,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 1974.947,
|
||||
"Objekt_height_px": 614.951,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 316.315,
|
||||
"scale_factor": 1.9137218,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 127.293,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 984.593,
|
||||
"y": 866.791,
|
||||
"direction": 112.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 1974.947,
|
||||
"Objekt_height_px": 614.951,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 316.315,
|
||||
"scale_factor": 1.9137218,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 127.293,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 984.593,
|
||||
"y": 866.791,
|
||||
"direction": 112.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2141.022,
|
||||
"Objekt_height_px": 856.847,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 402.877,
|
||||
"scale_factor": 1.765278,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 92.191,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 973.738,
|
||||
"y": 928.18,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2086.76,
|
||||
"Objekt_height_px": 910.289,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 438.894,
|
||||
"scale_factor": 1.8111808,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 86.826,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 973.055,
|
||||
"y": 932.517,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2306.032,
|
||||
"Objekt_height_px": 1141.084,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 497.499,
|
||||
"scale_factor": 1.6389627,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 69.314,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.617,
|
||||
"y": 945.619,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2274.749,
|
||||
"Objekt_height_px": 1696.965,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 748.047,
|
||||
"scale_factor": 1.6615022,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 46.732,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 967.704,
|
||||
"y": 979.385,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2903.015,
|
||||
"Objekt_height_px": 2114.237,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.336,
|
||||
"scale_factor": 1.3019223,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 37.507,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.695,
|
||||
"y": 982.847,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2903.015,
|
||||
"Objekt_height_px": 2114.237,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.336,
|
||||
"scale_factor": 1.3019223,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 37.507,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.695,
|
||||
"y": 982.847,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2939.045,
|
||||
"Objekt_height_px": 1986.785,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 678.042,
|
||||
"scale_factor": 1.2859619,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 39.904,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.003,
|
||||
"y": 981.716,
|
||||
"direction": 157.5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3481.071,
|
||||
"Objekt_height_px": 2366.118,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 681.6,
|
||||
"scale_factor": 1.0857292,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 33.515,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 977.156,
|
||||
"y": 997.227,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3327.816,
|
||||
"Objekt_height_px": 1271.707,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 384.818,
|
||||
"scale_factor": 1.13573,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 62.096,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.103,
|
||||
"y": 949.149,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3327.816,
|
||||
"Objekt_height_px": 1271.707,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 384.818,
|
||||
"scale_factor": 1.13573,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 62.096,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.103,
|
||||
"y": 949.149,
|
||||
"direction": 135.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3103.121,
|
||||
"Objekt_height_px": 3103.121,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.217967,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.626,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3103.121,
|
||||
"Objekt_height_px": 3103.121,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.217967,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.626,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2687.376,
|
||||
"Objekt_height_px": 3292.096,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 3.0866042377540064e+16,
|
||||
"scale_factor": 1.1480529,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 24.155,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0.0,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3292.096,
|
||||
"Objekt_height_px": 3367.686,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 3.0866042377540224e+16,
|
||||
"scale_factor": 1.1222841,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 23.613,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0.0,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3443.276,
|
||||
"Objekt_height_px": 3292.096,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 957.984,
|
||||
"scale_factor": 1.0976466,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 24.107,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 976.905,
|
||||
"y": 998.027,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": 821.04,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 1342.08,
|
||||
"Objekt_width_px": 3103.121,
|
||||
"Objekt_height_px": 5072.391,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 613.657,
|
||||
"scale_factor": 0.7451121,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 15.677,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0,
|
||||
"y": 984.323,
|
||||
"direction": 270.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": 821.04,
|
||||
"Objekt_height_mm": 1342.08,
|
||||
"calculated_objekt_width_mm": 821.04,
|
||||
"calculated_objekt_height_mm": 1342.08,
|
||||
"Objekt_width_px": 3103.121,
|
||||
"Objekt_height_px": 5072.391,
|
||||
"calculated_SVG_height_px": 1000,
|
||||
"calculated_SVG_width_px": 613.657,
|
||||
"scale_factor": 0.7451121,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 15.677,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 0,
|
||||
"y": 984.323,
|
||||
"direction": 270.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 2536.196,
|
||||
"Objekt_height_px": 2536.196,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.490224,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 31.354,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 968.646,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Objekt_width_px": 3140.916,
|
||||
"Objekt_height_px": 3140.916,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"scale_factor": 1.203312,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": 25.318,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.683,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,175 @@
|
||||
''' This Python script processes JSON data containing SVG object measurements and performs several calculations to standardize the dimensions and add connection points. Here's the main logic:
|
||||
|
||||
Data Processing:
|
||||
Converts all numeric fields to floats
|
||||
Determines the dominant dimension (width or height) and scales it to 1000px
|
||||
Calculates the other dimension proportionally
|
||||
Computes two connection points (cp1 and cp2) with their coordinates and directions
|
||||
Error Checking:
|
||||
Validates that connection points stay within the 1000px boundary
|
||||
Provides detailed error reporting
|
||||
Scaling Logic:
|
||||
Uses different scaling approaches based on whether width or height is larger
|
||||
Maintains aspect ratio while standardizing dimensions '''
|
||||
import json
|
||||
import math
|
||||
|
||||
def process_json_item(item):
|
||||
# Ensure all numeric fields are floats
|
||||
item["Winkel"] = float(item["Winkel"])
|
||||
item["center_line_width_mm"] = float(item["center_line_width_mm"])
|
||||
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.7795, 3)
|
||||
item["Objekt_height_px"] = round(item["Objekt_height_mm"] * 3.7795, 3)
|
||||
|
||||
winkel_rad = math.radians(item["Winkel"])
|
||||
sin_value = math.sin(winkel_rad)
|
||||
cos_value = math.cos(winkel_rad)
|
||||
|
||||
|
||||
# Determine which dimension is larger
|
||||
if item["Objekt_width_mm"] == item["Objekt_height_mm"]:
|
||||
# "Width =Height"
|
||||
scale = round(1000 / item["Objekt_width_mm"], 6)
|
||||
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"]
|
||||
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.78/2, 3)
|
||||
else:
|
||||
item["calculated_SVG_height_px"] = round(item["Objekt_height_mm"] * scale+3.78/2/sin_value, 3)
|
||||
scale_RD_H = round(1000 / item["calculated_SVG_height_px"], 6)
|
||||
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.78/2, 3)
|
||||
else:
|
||||
item["calculated_SVG_width_px"] = round(item["Objekt_width_mm"] * scale+3.78/2/cos_value, 3)
|
||||
scale_RD_W = round(1000 / item["calculated_SVG_width_px"], 6)
|
||||
scale_RD_H = 1
|
||||
|
||||
item["scale_factor"] = scale # Add scale factor
|
||||
|
||||
# Calculate connection points
|
||||
cp1_y = round(21.040 * 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((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)
|
||||
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
|
||||
|
||||
# Add connection points attributes
|
||||
item["connectionPoints"] = [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0,
|
||||
"y": cp1_y,
|
||||
"direction": 270.0
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": cp2_x,
|
||||
"y": cp2_y,
|
||||
"direction": cp2_direction
|
||||
}
|
||||
]
|
||||
|
||||
return item
|
||||
|
||||
def check_connection_points(item):
|
||||
"""Check if connection point coordinates exceed 1000"""
|
||||
errors = []
|
||||
for cp in item.get("connectionPoints", []):
|
||||
if cp["x"] > 1000 or cp["y"] > 1000:
|
||||
errors.append(f"Connection point {cp['id']} exceeds range: x={cp['x']}, y={cp['y']}")
|
||||
return errors
|
||||
|
||||
def process_json_file(input_file, output_file):
|
||||
try:
|
||||
# Read input file
|
||||
with open(input_file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Verify data is a list
|
||||
if not isinstance(data, list):
|
||||
print("Error: JSON data should be an array")
|
||||
return
|
||||
|
||||
# Process each item
|
||||
processed_data = []
|
||||
error_reports = []
|
||||
|
||||
for idx, item in enumerate(data, start=1):
|
||||
try:
|
||||
processed_item = process_json_item(item)
|
||||
|
||||
# Check connection point coordinates
|
||||
errors = check_connection_points(processed_item)
|
||||
if errors:
|
||||
error_msg = f"Item {idx} [{item.get('SVGname')}] coordinate errors:"
|
||||
for err in errors:
|
||||
error_msg += f"\n - {err}"
|
||||
error_reports.append(error_msg)
|
||||
|
||||
processed_data.append(processed_item)
|
||||
except Exception as e:
|
||||
error_msg = f"Error processing item {idx} [{item.get('SVGname')}]: {str(e)}"
|
||||
error_reports.append(error_msg)
|
||||
processed_data.append(item) # Keep original data
|
||||
|
||||
# Write output file
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(processed_data, f, indent=4, ensure_ascii=False)
|
||||
|
||||
print(f"Processing complete. Results saved to {output_file}")
|
||||
|
||||
# Print error reports
|
||||
if error_reports:
|
||||
print("\n" + "="*50)
|
||||
print("Coordinate Validation Error Report:")
|
||||
print("="*50)
|
||||
for report in error_reports:
|
||||
print("\n" + report)
|
||||
print("\n" + "="*50)
|
||||
print(f"Found {len(error_reports)} coordinate issues")
|
||||
print("="*50)
|
||||
else:
|
||||
print("\nAll connection point coordinates validated successfully - no out-of-range issues found")
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"Error: Input file '{input_file}' not found")
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"JSON parsing error: {e}")
|
||||
except Exception as e:
|
||||
print(f"Error during processing: {e}")
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
input_filename = "1_SVGErfassung_updated_new_output.json"
|
||||
output_filename = "2_calculated_px_cps_output.json"
|
||||
|
||||
process_json_file(input_filename, output_filename)
|
||||
process_json_file(input_filename, output_filename)
|
||||
@@ -0,0 +1,134 @@
|
||||
''' Script Analysis
|
||||
|
||||
This Python script processes JSON and TXT files to update dimensions and connection points in SVG-related data. Here's the main logic:
|
||||
Input Handling:
|
||||
Reads a JSON file containing reference data
|
||||
Processes all TXT files in a specified directory
|
||||
Data Processing:
|
||||
Creates a mapping between Sivasnr (from filenames) and JSON data
|
||||
For each matching TXT file:
|
||||
Updates width and height based on JSON data (converting mm to px)
|
||||
Updates connection points (x, y, direction) from JSON data
|
||||
Preserves the original file structure while updating specific values
|
||||
Reporting:
|
||||
Prints detailed change reports to console
|
||||
Skips files without matching JSON data '''
|
||||
import json
|
||||
import os
|
||||
import glob
|
||||
from datetime import datetime
|
||||
|
||||
def process_files(json_file_path, txt_files_dir):
|
||||
# Create a log file with timestamp
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
log_file_path = os.path.join(txt_files_dir, f"modification_report_OFBogen_{timestamp}.txt")
|
||||
|
||||
# Read JSON file
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
json_data = json.load(f)
|
||||
|
||||
# Create Sivasnr to JSON data mapping
|
||||
sivasnr_mapping = {item["Sivasnr"]: item for item in json_data}
|
||||
|
||||
# Prepare report content
|
||||
report_content = []
|
||||
report_content.append(f"Modification Report - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
report_content.append("="*50 + "\n")
|
||||
|
||||
# Process all TXT files
|
||||
for txt_file_path in glob.glob(os.path.join(txt_files_dir, '*.txt')):
|
||||
# Extract Sivasnr from filename
|
||||
sivasnr = os.path.splitext(os.path.basename(txt_file_path))[0]
|
||||
|
||||
# Check if corresponding JSON data exists
|
||||
if sivasnr in sivasnr_mapping:
|
||||
json_item = sivasnr_mapping[sivasnr]
|
||||
|
||||
# Read TXT file content (using utf-8-sig to handle BOM)
|
||||
with open(txt_file_path, 'r', encoding='utf-8-sig') as f:
|
||||
txt_content = json.load(f)
|
||||
|
||||
# Prepare entry for this file
|
||||
file_entry = []
|
||||
file_entry.append(f"\nProcessing file: {txt_file_path}")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Record old values
|
||||
old_width = txt_content["width"]
|
||||
old_height = txt_content["height"]
|
||||
old_cps = {cp["id"]: {"x": cp["x"], "y": cp["y"], "direction": cp["direction"]}
|
||||
for cp in txt_content["connectionPoints"]}
|
||||
|
||||
# Update width and height
|
||||
new_width = round(json_item["Objekt_width_mm"] * 3.7795, 3)
|
||||
new_height = round(json_item["Objekt_height_mm"] * 3.7795, 3)
|
||||
txt_content["width"] = new_width
|
||||
txt_content["height"] = new_height
|
||||
|
||||
# Update connectionPoints
|
||||
cp_changes = []
|
||||
for cp in txt_content["connectionPoints"]:
|
||||
cp_id = cp["id"]
|
||||
# Find corresponding connection point in JSON data
|
||||
json_cp = next((item for item in json_item["connectionPoints"] if item["id"] == cp_id), None)
|
||||
if json_cp:
|
||||
# Record old values
|
||||
old_x = cp["x"]
|
||||
old_y = cp["y"]
|
||||
old_dir = cp["direction"]
|
||||
|
||||
# Update values
|
||||
cp["x"] = json_cp["x"]
|
||||
cp["y"] = json_cp["y"]
|
||||
cp["direction"] = json_cp["direction"]
|
||||
|
||||
# Record changes
|
||||
cp_changes.append({
|
||||
"id": cp_id,
|
||||
"x": (old_x, cp["x"]),
|
||||
"y": (old_y, cp["y"]),
|
||||
"direction": (old_dir, cp["direction"])
|
||||
})
|
||||
|
||||
# Write back to TXT file
|
||||
with open(txt_file_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(txt_content, f, indent=2, ensure_ascii=False)
|
||||
|
||||
# Add to report
|
||||
file_entry.append("[Dimension Changes]")
|
||||
file_entry.append(f"width: {old_width} → {new_width}")
|
||||
file_entry.append(f"height: {old_height} → {new_height}")
|
||||
|
||||
if cp_changes:
|
||||
file_entry.append("\n[Connection Point Changes]")
|
||||
for change in cp_changes:
|
||||
file_entry.append(f"Connection point {change['id']}:")
|
||||
file_entry.append(f" x: {change['x'][0]} → {change['x'][1]}")
|
||||
file_entry.append(f" y: {change['y'][0]} → {change['y'][1]}")
|
||||
file_entry.append(f" direction: {change['direction'][0]} → {change['direction'][1]}")
|
||||
|
||||
file_entry.append(f"\nFile {txt_file_path} processed successfully")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Add this file's entry to main report
|
||||
report_content.extend(file_entry)
|
||||
|
||||
# Also print to console
|
||||
print("\n" + "\n".join(file_entry))
|
||||
else:
|
||||
print(f"\nSkipping file {txt_file_path} (no matching JSON data found)")
|
||||
|
||||
# Write the report file if any changes were made
|
||||
if len(report_content) > 2: # More than just the header
|
||||
with open(log_file_path, 'w', encoding='utf-8') as f:
|
||||
f.write("\n".join(report_content))
|
||||
print(f"\nModification report saved to: {log_file_path}")
|
||||
else:
|
||||
print("\nNo files were modified - no report generated")
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
json_file_path = "2_calculated_px_cps_output.json"
|
||||
txt_files_dir = "C:/Program Files/RuleDesigner/RDConfigurator Fusion/WebApi/Editor2D/SSG/shapes/props"
|
||||
process_files(json_file_path, txt_files_dir)
|
||||
print("\nAll files processed!")
|
||||
@@ -0,0 +1,150 @@
|
||||
"""
|
||||
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
|
||||
"""
|
||||
# Configure paths
|
||||
json_file_path = r"C:\Users\y.wang\Documents\SSG-Ruledesigner-Konfigurator\SVGs\Omniflo\python\OFBogen\1_SVGErfassung_updated_new_input.json"
|
||||
svg_folder_path = r"C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\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()
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python Debugger: Current File",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"args": ["1_TEF_Boegen_input.json"],
|
||||
"console": "integratedTerminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
|
||||
|
||||
[{
|
||||
"Sivasnr": "821104033+0_B10040",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Gruppe_width_mm":931.30,
|
||||
"Gruppe_height_mm":931.30,
|
||||
"OFBogen_center_line_width_mm": 800,
|
||||
"OFBogen_center_line_height_mm": 800,
|
||||
"TEFBogen_center_line_width_mm": 900,
|
||||
"TEFBogen_center_line_height_mm": 900,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.30,
|
||||
"TEFBogen_CP1_y_mm":31.30,
|
||||
"SivasnrTEF": "0_B10040",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10050",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Gruppe_width_mm":821.040,
|
||||
"Gruppe_height_mm":821.040,
|
||||
"OFBogen_center_line_width_mm": 800,
|
||||
"OFBogen_center_line_height_mm": 800,
|
||||
"TEFBogen_center_line_width_mm": 700,
|
||||
"TEFBogen_center_line_height_mm": 700,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.040,
|
||||
"SivasnrTEF": "0_B10050",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10090",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm":537.544,
|
||||
"Gruppe_height_mm":232.057,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.230,
|
||||
"TEFBogen_center_line_width_mm": 412.692,
|
||||
"TEFBogen_center_line_height_mm": 82.090,
|
||||
"OFBogen_CP1_x_mm":15.002,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10090",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10091",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm":655.564,
|
||||
"Gruppe_height_mm":272.978,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.230,
|
||||
"TEFBogen_center_line_width_mm": 643.589,
|
||||
"TEFBogen_center_line_height_mm": 125.683,
|
||||
"OFBogen_CP1_x_mm":100.867,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.310,
|
||||
"TEFBogen_CP1_y_mm":31.300,
|
||||
"SivasnrTEF": "0_B10091",
|
||||
"Antriebsart":2
|
||||
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104026+0_B10071",
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":610.142,
|
||||
"Gruppe_height_mm":308.217,
|
||||
"OFBogen_center_line_width_mm": 595.265,
|
||||
"OFBogen_center_line_height_mm": 265.998,
|
||||
"TEFBogen_center_line_width_mm": 398.432,
|
||||
"TEFBogen_center_line_height_mm": 165.036,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":54.446,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10071",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10060",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":958.874,
|
||||
"Gruppe_height_mm":446.746,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 936.741,
|
||||
"TEFBogen_center_line_height_mm":329.985,
|
||||
"OFBogen_CP1_x_mm":0.276,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.310,
|
||||
"TEFBogen_CP1_y_mm":31.30,
|
||||
"SivasnrTEF": "0_B10060",
|
||||
"Antriebsart":2
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10070",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":880.942,
|
||||
"Gruppe_height_mm":414.496,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 759.396,
|
||||
"TEFBogen_center_line_height_mm": 271.313,
|
||||
"OFBogen_CP1_x_mm":0.453,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.04,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10070",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104024+0_B10081",
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm":527.258,
|
||||
"Gruppe_height_mm":368.405,
|
||||
"OFBogen_center_line_width_mm": 507.820,
|
||||
"OFBogen_center_line_height_mm": 339.315,
|
||||
"TEFBogen_center_line_width_mm": 306.339,
|
||||
"TEFBogen_center_line_height_mm": 198.675,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":76.402,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10081",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104027+0_B10080",
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm":768.095,
|
||||
"Gruppe_height_mm":559.396,
|
||||
"OFBogen_center_line_width_mm": 748.658,
|
||||
"OFBogen_center_line_height_mm": 530.305,
|
||||
"TEFBogen_center_line_width_mm": 469.752,
|
||||
"TEFBogen_center_line_height_mm": 353.635,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":138.902,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.050,
|
||||
"SivasnrTEF": "0_B10080",
|
||||
"Antriebsart":1
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,506 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10040",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 90.0,
|
||||
"Gruppe_width_mm": 931.3,
|
||||
"Gruppe_height_mm": 931.3,
|
||||
"OFBogen_center_line_width_mm": 800.0,
|
||||
"OFBogen_center_line_height_mm": 800.0,
|
||||
"TEFBogen_center_line_width_mm": 900.0,
|
||||
"TEFBogen_center_line_height_mm": 900.0,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.3,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10040",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 800.0,
|
||||
"TEFBogen_CP2_x_mm": 900.0,
|
||||
"OFBogen_CP2_y_mm": 931.3,
|
||||
"TEFBogen_CP2_y_mm": 931.3,
|
||||
"Gruppe_width_px": 3519.848,
|
||||
"Gruppe_height_px": 3519.848,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 140.986,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 859.014,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 33.609,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 966.391,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10050",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 90.0,
|
||||
"Gruppe_width_mm": 821.04,
|
||||
"Gruppe_height_mm": 821.04,
|
||||
"OFBogen_center_line_width_mm": 800.0,
|
||||
"OFBogen_center_line_height_mm": 800.0,
|
||||
"TEFBogen_center_line_width_mm": 700.0,
|
||||
"TEFBogen_center_line_height_mm": 700.0,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.04,
|
||||
"SivasnrTEF": "0_B10050",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 800.0,
|
||||
"TEFBogen_CP2_x_mm": 700.0,
|
||||
"OFBogen_CP2_y_mm": 821.04,
|
||||
"TEFBogen_CP2_y_mm": 821.04,
|
||||
"Gruppe_width_px": 3103.121,
|
||||
"Gruppe_height_px": 3103.121,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 25.626,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 147.423,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 852.577,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10090",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm": 537.544,
|
||||
"Gruppe_height_mm": 232.057,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.23,
|
||||
"TEFBogen_center_line_width_mm": 412.692,
|
||||
"TEFBogen_center_line_height_mm": 82.09,
|
||||
"OFBogen_CP1_x_mm": 15.002,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10090",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 529.493,
|
||||
"TEFBogen_CP2_x_mm": 412.692,
|
||||
"OFBogen_CP2_y_mm": 143.27,
|
||||
"TEFBogen_CP2_y_mm": 203.139,
|
||||
"Gruppe_width_px": 2031.648,
|
||||
"Gruppe_height_px": 877.059,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 433.588,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 27.908,
|
||||
"y": 90.272,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 985.023,
|
||||
"y": 614.701,
|
||||
"direction": 112.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 519.362,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 767.736,
|
||||
"y": 871.57,
|
||||
"direction": 112.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10091",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm": 655.564,
|
||||
"Gruppe_height_mm": 272.978,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.23,
|
||||
"TEFBogen_center_line_width_mm": 643.589,
|
||||
"TEFBogen_center_line_height_mm": 125.683,
|
||||
"OFBogen_CP1_x_mm": 100.867,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.31,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10091",
|
||||
"Antriebsart": 2,
|
||||
"OFBogen_CP2_x_mm": 615.358,
|
||||
"TEFBogen_CP2_x_mm": 643.589,
|
||||
"OFBogen_CP2_y_mm": 253.54,
|
||||
"TEFBogen_CP2_y_mm": 156.983,
|
||||
"Gruppe_width_px": 2477.704,
|
||||
"Gruppe_height_px": 1031.72,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 418.291,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 153.863,
|
||||
"y": 478.855,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 938.67,
|
||||
"y": 924.598,
|
||||
"direction": 112.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 114.143,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 981.733,
|
||||
"y": 572.478,
|
||||
"direction": 112.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104026+0_B10071",
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 610.142,
|
||||
"Gruppe_height_mm": 308.217,
|
||||
"OFBogen_center_line_width_mm": 595.265,
|
||||
"OFBogen_center_line_height_mm": 265.998,
|
||||
"TEFBogen_center_line_width_mm": 398.432,
|
||||
"TEFBogen_center_line_height_mm": 165.036,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 54.446,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10071",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 595.265,
|
||||
"TEFBogen_CP2_x_mm": 452.878,
|
||||
"OFBogen_CP2_y_mm": 287.038,
|
||||
"TEFBogen_CP2_y_mm": 286.085,
|
||||
"Gruppe_width_px": 2306.032,
|
||||
"Gruppe_height_px": 1164.906,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 507.046,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 68.009,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.617,
|
||||
"y": 927.815,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 89.235,
|
||||
"y": 391.276,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 742.25,
|
||||
"y": 924.734,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10060",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 958.874,
|
||||
"Gruppe_height_mm": 446.746,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 936.741,
|
||||
"TEFBogen_center_line_height_mm": 329.985,
|
||||
"OFBogen_CP1_x_mm": 0.276,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.31,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10060",
|
||||
"Antriebsart": 2,
|
||||
"OFBogen_CP2_x_mm": 865.89,
|
||||
"TEFBogen_CP2_x_mm": 936.741,
|
||||
"OFBogen_CP2_y_mm": 431.869,
|
||||
"TEFBogen_CP2_y_mm": 361.285,
|
||||
"Gruppe_width_px": 3624.064,
|
||||
"Gruppe_height_px": 1688.477,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 467.797,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.288,
|
||||
"y": 292.738,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 903.028,
|
||||
"y": 962.793,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 69.779,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 976.918,
|
||||
"y": 805.436,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10070",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 880.942,
|
||||
"Gruppe_height_mm": 414.496,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 759.396,
|
||||
"TEFBogen_center_line_height_mm": 271.313,
|
||||
"OFBogen_CP1_x_mm": 0.453,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10070",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 866.067,
|
||||
"TEFBogen_CP2_x_mm": 759.396,
|
||||
"OFBogen_CP2_y_mm": 321.599,
|
||||
"TEFBogen_CP2_y_mm": 392.362,
|
||||
"Gruppe_width_px": 3329.52,
|
||||
"Gruppe_height_px": 1566.588,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 472.404,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.514,
|
||||
"y": 50.557,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.115,
|
||||
"y": 772.777,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 290.871,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 862.028,
|
||||
"y": 942.814,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104024+0_B10081",
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen",
|
||||
"Radius": 400.0,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm": 527.258,
|
||||
"Gruppe_height_mm": 368.405,
|
||||
"OFBogen_center_line_width_mm": 507.82,
|
||||
"OFBogen_center_line_height_mm": 339.315,
|
||||
"TEFBogen_center_line_width_mm": 306.339,
|
||||
"TEFBogen_center_line_height_mm": 198.675,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 76.402,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10081",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 507.82,
|
||||
"TEFBogen_CP2_x_mm": 382.741,
|
||||
"OFBogen_CP2_y_mm": 360.355,
|
||||
"TEFBogen_CP2_y_mm": 319.724,
|
||||
"Gruppe_width_px": 1992.772,
|
||||
"Gruppe_height_px": 1392.387,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 700.609,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 56.957,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.134,
|
||||
"y": 975.51,
|
||||
"direction": 157.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 144.904,
|
||||
"y": 327.689,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 725.908,
|
||||
"y": 865.519,
|
||||
"direction": 157.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104027+0_B10080",
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm": 768.095,
|
||||
"Gruppe_height_mm": 559.396,
|
||||
"OFBogen_center_line_width_mm": 748.658,
|
||||
"OFBogen_center_line_height_mm": 530.305,
|
||||
"TEFBogen_center_line_width_mm": 469.752,
|
||||
"TEFBogen_center_line_height_mm": 353.635,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 138.902,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.05,
|
||||
"SivasnrTEF": "0_B10080",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 748.658,
|
||||
"TEFBogen_CP2_x_mm": 608.654,
|
||||
"OFBogen_CP2_y_mm": 551.345,
|
||||
"TEFBogen_CP2_y_mm": 474.685,
|
||||
"Gruppe_width_px": 2903.015,
|
||||
"Gruppe_height_px": 2114.237,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.18,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 37.515,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.694,
|
||||
"y": 983.056,
|
||||
"direction": 157.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 180.84,
|
||||
"y": 215.834,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 792.42,
|
||||
"y": 846.37,
|
||||
"direction": 157.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,189 @@
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
def convert_to_float(value):
|
||||
"""Safely convert value to float, return original if conversion fails"""
|
||||
try:
|
||||
return float(value)
|
||||
except (ValueError, TypeError):
|
||||
return value
|
||||
def process_json_file(input_file):
|
||||
# Validate and prepare file paths
|
||||
input_path = os.path.abspath(input_file)
|
||||
if not os.path.isfile(input_path):
|
||||
print(f"Error: Input file not found - {input_path}")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"Reading file: {input_path}")
|
||||
|
||||
# Read JSON file
|
||||
try:
|
||||
with open(input_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Error: Invalid JSON format in {input_path}")
|
||||
print(f"Details: {str(e)}")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"Error reading file {input_path}: {str(e)}")
|
||||
sys.exit(1)
|
||||
|
||||
# Process each item in the JSON array
|
||||
for i, item in enumerate(data):
|
||||
print(f"\nProcessing item {i+1}: {item.get('Sivasnr', 'Unknown')}")
|
||||
|
||||
# Convert numerical values to float
|
||||
for key in item:
|
||||
if isinstance(item[key], (int, float, str)) and any(x in key.lower() for x in ['mm', 'width', 'height', 'radius', 'winkel']):
|
||||
item[key] = convert_to_float(item[key])
|
||||
|
||||
# 1. Add four new attributes and calculate their values
|
||||
print("\nStep 1: Adding four new attributes with calculations")
|
||||
|
||||
# OFBogen_CP2_x_mm
|
||||
of_cp2_x = float(item["OFBogen_CP1_x_mm"]) + float(item["OFBogen_center_line_width_mm"])
|
||||
item["OFBogen_CP2_x_mm"] = round(of_cp2_x, 3)
|
||||
print(f"Added OFBogen_CP2_x_mm: {item['OFBogen_CP2_x_mm']}")
|
||||
|
||||
# TEFBogen_CP2_x_mm
|
||||
tef_cp2_x = float(item["TEFBogen_CP1_x_mm"]) + float(item["TEFBogen_center_line_width_mm"])
|
||||
item["TEFBogen_CP2_x_mm"] = round(tef_cp2_x, 3)
|
||||
print(f"Added TEFBogen_CP2_x_mm: {item['TEFBogen_CP2_x_mm']}")
|
||||
|
||||
# OFBogen_CP2_y_mm
|
||||
of_cp2_y = float(item["OFBogen_CP1_y_mm"]) + float(item["OFBogen_center_line_height_mm"])
|
||||
item["OFBogen_CP2_y_mm"] = round(of_cp2_y, 3)
|
||||
print(f"Added OFBogen_CP2_y_mm: {item['OFBogen_CP2_y_mm']}")
|
||||
|
||||
# TEFBogen_CP2_y_mm
|
||||
tef_cp2_y = float(item["TEFBogen_CP1_y_mm"]) + float(item["TEFBogen_center_line_height_mm"])
|
||||
item["TEFBogen_CP2_y_mm"] = round(tef_cp2_y, 3)
|
||||
print(f"Added TEFBogen_CP2_y_mm: {item['TEFBogen_CP2_y_mm']}")
|
||||
|
||||
# 2. Calculate pixel dimensions and SVG dimensions
|
||||
print("\nStep 2: Calculating pixel and SVG dimensions")
|
||||
|
||||
# Calculate Gruppe_width_px and Gruppe_height_px
|
||||
item["Gruppe_width_px"] = round(float(item["Gruppe_width_mm"]) * 3.7795, 3)
|
||||
item["Gruppe_height_px"] = round(float(item["Gruppe_height_mm"]) * 3.7795, 3)
|
||||
print(f"Calculated Gruppe_width_px: {item['Gruppe_width_px']}")
|
||||
print(f"Calculated Gruppe_height_px: {item['Gruppe_height_px']}")
|
||||
|
||||
# Compare width and height to determine scaling
|
||||
if float(item["Gruppe_width_mm"]) > float(item["Gruppe_height_mm"]):
|
||||
print("Width is larger, setting calculated_SVG_width to 1000px")
|
||||
scale = round(1000 / float(item["Gruppe_width_mm"]), 6)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(float(item["Gruppe_height_mm"]) * scale+3.7795/2, 3)
|
||||
scale_RD_H = round(1000 / float(item["calculated_SVG_height_px"]), 6)
|
||||
scale_RD_W = 1
|
||||
elif float(item["Gruppe_width_mm"]) == float(item["Gruppe_height_mm"]):
|
||||
print("Width =Height")
|
||||
scale = round(1000 / float(item["Gruppe_width_mm"]), 6)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(float(item["Gruppe_height_mm"]) * scale, 3)
|
||||
scale_RD_H = round(1000 / float(item["calculated_SVG_height_px"]), 6)
|
||||
scale_RD_W = 1
|
||||
else:
|
||||
print("Height is larger, setting calculated_SVG_height to 1000px")
|
||||
scale = round(1000 / float(item["Gruppe_height_mm"]), 6)
|
||||
item["calculated_SVG_height_px"] = 1000
|
||||
item["calculated_SVG_width_px"] = round(float(item["Gruppe_width_mm"]) * scale+3.7795/2, 3)
|
||||
scale_RD_W = round(1000 / float(item["calculated_SVG_width_px"]), 6)
|
||||
scale_RD_H = 1
|
||||
|
||||
print(f"Calculated scale: {scale}")
|
||||
print(f"Calculated calculated_SVG_width_px: {item['calculated_SVG_width_px']}")
|
||||
print(f"Calculated calculated_SVG_height_px: {item['calculated_SVG_height_px']}")
|
||||
print(f"Calculated scale_RD_W: {scale_RD_W}")
|
||||
print(f"Calculated scale_RD_H: {scale_RD_H}")
|
||||
|
||||
# 3. Create connectionPoints array
|
||||
print("\nStep 3: Creating connectionPoints array")
|
||||
|
||||
connection_points = []
|
||||
|
||||
# CP1
|
||||
cp1_x = round(float(item["OFBogen_CP1_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp1_y = round(float(item["OFBogen_CP1_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp1 = {
|
||||
"id": "cp1",
|
||||
"x": cp1_x,
|
||||
"y": cp1_y,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
}
|
||||
connection_points.append(cp1)
|
||||
print(f"Created CP1: x={cp1_x}, y={cp1_y}, direction=270.0, linkClass=Omniflo")
|
||||
|
||||
# CP2
|
||||
cp2_x = round(float(item["OFBogen_CP2_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp2_y = round(float(item["OFBogen_CP2_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp2_direction = round(90 + float(item["KurvenWinkel"]), 1)
|
||||
cp2 = {
|
||||
"id": "cp2",
|
||||
"x": cp2_x,
|
||||
"y": cp2_y,
|
||||
"direction": cp2_direction,
|
||||
"linkClass": "Omniflo"
|
||||
}
|
||||
connection_points.append(cp2)
|
||||
print(f"Created CP2: x={cp2_x}, y={cp2_y}, direction={cp2_direction}, linkClass=Omniflo")
|
||||
|
||||
# CP3
|
||||
cp3_x = round(float(item["TEFBogen_CP1_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp3_y = round(float(item["TEFBogen_CP1_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp3 = {
|
||||
"id": "cp3",
|
||||
"x": cp3_x,
|
||||
"y": cp3_y,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
connection_points.append(cp3)
|
||||
print(f"Created CP3: x={cp3_x}, y={cp3_y}, direction=270.0, linkClass=OmnifloTEF")
|
||||
|
||||
# CP4
|
||||
cp4_x = round(float(item["TEFBogen_CP2_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp4_y = round(float(item["TEFBogen_CP2_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp4_direction = round(90 + float(item["KurvenWinkel"]), 1)
|
||||
cp4 = {
|
||||
"id": "cp4",
|
||||
"x": cp4_x,
|
||||
"y": cp4_y,
|
||||
"direction": cp4_direction,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
connection_points.append(cp4)
|
||||
print(f"Created CP4: x={cp4_x}, y={cp4_y}, direction={cp4_direction}, linkClass=OmnifloTEF")
|
||||
|
||||
item["connectionPoints"] = connection_points
|
||||
|
||||
# Prepare output path
|
||||
output_dir = os.path.dirname(input_path) or '.' # Handle case when no directory in path
|
||||
base_name = os.path.splitext(os.path.basename(input_path))[0]
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
output_path = os.path.join(output_dir, f"{base_name}_processed_output.json")
|
||||
|
||||
# Save processed JSON file
|
||||
try:
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
print(f"\nProcessing complete! Results saved to new file: {output_path}")
|
||||
print(f"Original file remains unchanged: {input_path}")
|
||||
except Exception as e:
|
||||
print(f"\nError saving processed file: {str(e)}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
if len(sys.argv) != 2:
|
||||
raise ValueError("请提供输入文件路径")
|
||||
input_file = sys.argv[1]
|
||||
process_json_file(input_file)
|
||||
except Exception as e:
|
||||
print(f"错误详情: {str(e)}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
@@ -0,0 +1,135 @@
|
||||
''' Script Analysis
|
||||
|
||||
This Python script processes JSON and TXT files to update dimensions and connection points in SVG-related data. Here's the main logic:
|
||||
Input Handling:
|
||||
Reads a JSON file containing reference data
|
||||
Processes all TXT files in a specified directory
|
||||
Data Processing:
|
||||
Creates a mapping between Sivasnr (from filenames) and JSON data
|
||||
For each matching TXT file:
|
||||
Updates width and height based on JSON data (converting mm to px)
|
||||
Updates connection points (x, y, direction) from JSON data
|
||||
Preserves the original file structure while updating specific values
|
||||
Reporting:
|
||||
Prints detailed change reports to console
|
||||
Skips files without matching JSON data '''
|
||||
import json
|
||||
import os
|
||||
import glob
|
||||
from datetime import datetime
|
||||
|
||||
def process_files(json_file_path, txt_files_dir):
|
||||
# Create a log file with timestamp
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
log_file_path = os.path.join(txt_files_dir, f"modification_report_TEFBogen_{timestamp}.txt")
|
||||
|
||||
# Read JSON file
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
json_data = json.load(f)
|
||||
|
||||
# Create Sivasnr to JSON data mapping
|
||||
sivasnr_mapping = {item["Sivasnr"]: item for item in json_data}
|
||||
|
||||
# Prepare report content
|
||||
report_content = []
|
||||
report_content.append(f"Modification Report - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
report_content.append("="*50 + "\n")
|
||||
|
||||
# Process all TXT files
|
||||
for txt_file_path in glob.glob(os.path.join(txt_files_dir, '*.txt')):
|
||||
# Extract Sivasnr from filename
|
||||
sivasnr = os.path.splitext(os.path.basename(txt_file_path))[0]
|
||||
|
||||
# Check if corresponding JSON data exists
|
||||
if sivasnr in sivasnr_mapping:
|
||||
json_item = sivasnr_mapping[sivasnr]
|
||||
|
||||
# Read TXT file content (using utf-8-sig to handle BOM)
|
||||
with open(txt_file_path, 'r', encoding='utf-8-sig') as f:
|
||||
txt_content = json.load(f)
|
||||
|
||||
# Prepare entry for this file
|
||||
file_entry = []
|
||||
file_entry.append(f"\nProcessing file: {txt_file_path}")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Record old values
|
||||
old_width = txt_content["width"]
|
||||
old_height = txt_content["height"]
|
||||
old_cps = {cp["id"]: {"x": cp["x"], "y": cp["y"], "direction": cp["direction"],"linkClass": cp["linkClass"]}
|
||||
for cp in txt_content["connectionPoints"]}
|
||||
|
||||
# Update width and height
|
||||
new_width = round(json_item["Gruppe_width_px"], 3)
|
||||
new_height = round(json_item["Gruppe_height_px"], 3)
|
||||
txt_content["width"] = new_width
|
||||
txt_content["height"] = new_height
|
||||
|
||||
# Update connectionPoints
|
||||
cp_changes = []
|
||||
for cp in txt_content["connectionPoints"]:
|
||||
cp_id = cp["id"]
|
||||
# Find corresponding connection point in JSON data
|
||||
json_cp = next((item for item in json_item["connectionPoints"] if item["id"] == cp_id), None)
|
||||
if json_cp:
|
||||
# Record old values
|
||||
old_x = cp["x"]
|
||||
old_y = cp["y"]
|
||||
old_dir = cp["direction"]
|
||||
old_linkClass = cp["linkClass"]
|
||||
# Update values
|
||||
cp["x"] = json_cp["x"]
|
||||
cp["y"] = json_cp["y"]
|
||||
cp["direction"] = json_cp["direction"]
|
||||
cp["linkClass"] = json_cp["linkClass"]
|
||||
# Record changes
|
||||
cp_changes.append({
|
||||
"id": cp_id,
|
||||
"x": (old_x, cp["x"]),
|
||||
"y": (old_y, cp["y"]),
|
||||
"direction": (old_dir, cp["direction"]),
|
||||
"linkClass": (old_linkClass, cp["linkClass"])
|
||||
})
|
||||
|
||||
# Write back to TXT file
|
||||
with open(txt_file_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(txt_content, f, indent=2, ensure_ascii=False)
|
||||
|
||||
# Add to report
|
||||
file_entry.append("[Dimension Changes]")
|
||||
file_entry.append(f"width: {old_width} → {new_width}")
|
||||
file_entry.append(f"height: {old_height} → {new_height}")
|
||||
|
||||
if cp_changes:
|
||||
file_entry.append("\n[Connection Point Changes]")
|
||||
for change in cp_changes:
|
||||
file_entry.append(f"Connection point {change['id']}:")
|
||||
file_entry.append(f" x: {change['x'][0]} → {change['x'][1]}")
|
||||
file_entry.append(f" y: {change['y'][0]} → {change['y'][1]}")
|
||||
file_entry.append(f" direction: {change['direction'][0]} → {change['direction'][1]}")
|
||||
file_entry.append(f" linkClass: {change['linkClass'][0]} → {change['linkClass'][1]}")
|
||||
file_entry.append(f"\nFile {txt_file_path} processed successfully")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Add this file's entry to main report
|
||||
report_content.extend(file_entry)
|
||||
|
||||
# Also print to console
|
||||
print("\n" + "\n".join(file_entry))
|
||||
else:
|
||||
print(f"\nSkipping file {txt_file_path} (no matching JSON data found)")
|
||||
|
||||
# Write the report file if any changes were made
|
||||
if len(report_content) > 2: # More than just the header
|
||||
with open(log_file_path, 'w', encoding='utf-8') as f:
|
||||
f.write("\n".join(report_content))
|
||||
print(f"\nModification report saved to: {log_file_path}")
|
||||
else:
|
||||
print("\nNo files were modified - no report generated")
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
json_file_path = "1_TEF_Boegen_input_processed_output.json"
|
||||
txt_files_dir = "C:/Program Files/RuleDesigner/RDConfigurator Fusion/WebApi/Editor2D/SSG/shapes/props"
|
||||
process_files(json_file_path, txt_files_dir)
|
||||
print("\nAll files processed!")
|
||||
@@ -0,0 +1,172 @@
|
||||
"""
|
||||
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 enhanced style 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,
|
||||
'other_groups_processed': 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
|
||||
|
||||
# Remove group attributes
|
||||
for attr in ['stroke-width', 'stroke-miterlimit']:
|
||||
if attr in g.attrib:
|
||||
del g.attrib[attr]
|
||||
stats['modified'] = True
|
||||
|
||||
# Set stroke-width for all path children
|
||||
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
|
||||
|
||||
# Remove group attributes
|
||||
for attr in ['stroke', 'stroke-width', 'stroke-linejoin']:
|
||||
if attr in g.attrib:
|
||||
del g.attrib[attr]
|
||||
stats['modified'] = True
|
||||
|
||||
# Modify path children
|
||||
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
|
||||
|
||||
else:
|
||||
# Handle groups without specific stroke color
|
||||
stats['other_groups_processed'] += 1
|
||||
|
||||
# Process elements with style="stroke:#ec2525;"
|
||||
for child in g.findall('.//svg:*[@style]', namespaces):
|
||||
style = child.get('style', '')
|
||||
if 'stroke:#ec2525;' in style:
|
||||
# Remove stroke-width if exists
|
||||
if 'stroke-width' in child.attrib:
|
||||
del child.attrib['stroke-width']
|
||||
stats['modified'] = True
|
||||
|
||||
# Update the style attribute
|
||||
|
||||
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
|
||||
"""
|
||||
# Configure paths
|
||||
json_file_path = "1_TEF_Boegen_input.json"
|
||||
svg_folder_path = r"C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\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()
|
||||