mathandy / svgpathtools

A collection of tools for manipulating and analyzing SVG Path objects and Bezier curves.
MIT License
548 stars 138 forks source link

Invalid bounding box computation for path #174

Closed yaqwsx closed 2 years ago

yaqwsx commented 2 years ago

Hello, I have a number of cases where the paths have an invalid bounding box (it is absurdly large in one direction):

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(74127686 29953970) rotate(-45.0)'}
Bounding box: (-7.446427955308281e+21, 7.44642795530843e+21, 29246863.218813453, 30661076.781186547)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(36954328 48268036) rotate(-135.0)'}
Bounding box: (36671485.28752538, 37237170.71247462, -2.9785712386047135e+21, 2.97857123860481e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(38368542 46853822) rotate(-135.0)'}
Bounding box: (38085699.28752538, 38651384.71247462, -2.978571238604715e+21, 2.978571238604809e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(39782755 45439609) rotate(-135.0)'}
Bounding box: (39499912.28752538, 40065597.71247462, -2.9785712386047166e+21, 2.9785712386048073e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(41196969 44025395) rotate(-135.0)'}
Bounding box: (40914126.28752538, 41479811.71247462, -2.9785712386047177e+21, 2.978571238604806e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(42611182 42611182) rotate(-135.0)'}
Bounding box: (42328339.28752538, 42894024.71247462, -2.978571238604719e+21, 2.978571238604804e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(44025396 41196968) rotate(-135.0)'}
Bounding box: (43742553.28752538, 44308238.71247462, -2.978571238604721e+21, 2.978571238604803e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(45439609 39782755) rotate(-135.0)'}
Bounding box: (45156766.28752538, 45722451.71247462, -2.978571238604722e+21, 2.9785712386048016e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(46853823 38368541) rotate(-135.0)'}
Bounding box: (46570980.28752538, 47136665.71247462, -2.9785712386047235e+21, 2.9785712386048e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(48268036 36954328) rotate(-135.0)'}
Bounding box: (47985193.28752538, 48550878.71247462, -2.978571238604725e+21, 2.978571238604799e+21)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(29883260 45015345) rotate(-45.0)'}
Bounding box: (-7.446427955308365e+21, 7.446427955308424e+21, 44308238.21881345, 45722451.78118655)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(29883260 74056975) rotate(-45.0)'}
Bounding box: (-7.446427955308365e+21, 7.446427955308424e+21, 73349868.21881345, 74764081.78118655)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(45086056 29953970) rotate(-45.0)'}
Bounding box: (-7.446427955308311e+21, 7.446427955308401e+21, 29246863.218813453, 30661076.781186547)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(58924890 74056975) rotate(-45.0)'}
Bounding box: (-7.446427955308336e+21, 7.446427955308453e+21, 73349868.21881345, 74764081.78118655)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(26771990 67127328) rotate(-135.0)'}
Bounding box: (26489147.287525382, 27054832.712474618, -2.978571182123267e+21, 2.978571182123401e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(28186204 65713114) rotate(-135.0)'}
Bounding box: (27903361.287525382, 28469046.712474618, -2.9785711821232684e+21, 2.9785711821233995e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(29600417 64298901) rotate(-135.0)'}
Bounding box: (29317574.287525382, 29883259.712474618, -2.9785711821232695e+21, 2.9785711821233985e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(31014631 62884687) rotate(-135.0)'}
Bounding box: (30731788.287525382, 31297473.712474618, -2.978571182123271e+21, 2.978571182123397e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(32428844 61470474) rotate(-135.0)'}
Bounding box: (32146001.287525382, 32711686.712474618, -2.9785711821232726e+21, 2.9785711821233953e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(33843058 60056260) rotate(-135.0)'}
Bounding box: (33560215.28752538, 34125900.71247462, -2.978571238604702e+21, 2.978571238604822e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(35257271 58642047) rotate(-135.0)'}
Bounding box: (34974428.28752538, 35540113.71247462, -2.978571238604703e+21, 2.9785712386048204e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(36671485 57227833) rotate(-135.0)'}
Bounding box: (36388642.28752538, 36954327.71247462, -2.9785712386047046e+21, 2.978571238604819e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(38085698 55813620) rotate(-135.0)'}
Bounding box: (37802855.28752538, 38368540.71247462, -2.978571238604706e+21, 2.978571238604818e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(65995958 77309666) rotate(-135.0)'}
Bounding box: (65713115.28752538, 66278800.71247462, -2.9785712386046847e+21, 2.9785712386048393e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(67410172 75895452) rotate(-135.0)'}
Bounding box: (67127329.28752539, 67693014.71247461, -2.9785711821232186e+21, 2.9785711821233707e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(68824385 74481239) rotate(-135.0)'}
Bounding box: (68541542.28752539, 69107227.71247461, -2.97857118212322e+21, 2.978571182123369e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(70238599 73067025) rotate(-135.0)'}
Bounding box: (69955756.28752539, 70521441.71247461, -2.978571182123222e+21, 2.9785711821233675e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(71652812 71652812) rotate(-135.0)'}
Bounding box: (71369969.28752539, 71935654.71247461, -2.978571182123223e+21, 2.9785711821233665e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(73067026 70238598) rotate(-135.0)'}
Bounding box: (72784183.28752539, 73349868.71247461, -2.9785711821232244e+21, 2.978571182123365e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(74481239 68824385) rotate(-135.0)'}
Bounding box: (74198396.28752539, 74764081.71247461, -2.978571182123226e+21, 2.9785711821233633e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(75895453 67410171) rotate(-135.0)'}
Bounding box: (75612610.28752539, 76178295.71247461, -2.978571182123227e+21, 2.9785711821233623e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(77309666 65995958) rotate(-135.0)'}
Bounding box: (77026823.28752539, 77592508.71247461, -2.9785711821232286e+21, 2.9785711821233607e+21)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(58924890 45015345) rotate(-45.0)'}
Bounding box: (-7.446427955308336e+21, 7.446427955308453e+21, 44308238.21881345, 45722451.78118655)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(65995958 48268036) rotate(-135.0)'}
Bounding box: (65713115.28752538, 66278800.71247462, -2.9785712386047135e+21, 2.97857123860481e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(67410172 46853822) rotate(-135.0)'}
Bounding box: (67127329.28752539, 67693014.71247461, -2.978571182123248e+21, 2.9785711821233413e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(68824385 45439609) rotate(-135.0)'}
Bounding box: (68541542.28752539, 69107227.71247461, -2.978571182123249e+21, 2.9785711821233403e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(70238599 44025395) rotate(-135.0)'}
Bounding box: (69955756.28752539, 70521441.71247461, -2.9785711821232506e+21, 2.9785711821233387e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(71652812 42611182) rotate(-135.0)'}
Bounding box: (71369969.28752539, 71935654.71247461, -2.978571182123252e+21, 2.978571182123337e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(73067026 41196968) rotate(-135.0)'}
Bounding box: (72784183.28752539, 73349868.71247461, -2.978571182123253e+21, 2.978571182123336e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(74481239 39782755) rotate(-135.0)'}
Bounding box: (74198396.28752539, 74764081.71247461, -2.978571182123255e+21, 2.9785711821233345e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(75895453 38368541) rotate(-135.0)'}
Bounding box: (75612610.28752539, 76178295.71247461, -2.9785711821232564e+21, 2.978571182123333e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(77309666 36954328) rotate(-135.0)'}
Bounding box: (77026823.28752539, 77592508.71247461, -2.978571182123258e+21, 2.9785711821233314e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(26771990 38085698) rotate(-135.0)'}
Bounding box: (26489147.287525382, 27054832.712474618, -2.9785711821232957e+21, 2.978571182123372e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(28186204 36671484) rotate(-135.0)'}
Bounding box: (27903361.287525382, 28469046.712474618, -2.9785711821232973e+21, 2.9785711821233707e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(29600417 35257271) rotate(-135.0)'}
Bounding box: (29317574.287525382, 29883259.712474618, -2.978571182123299e+21, 2.978571182123369e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(31014631 33843057) rotate(-135.0)'}
Bounding box: (30731788.287525382, 31297473.712474618, -2.9785711821233e+21, 2.978571182123368e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(32428844 32428844) rotate(-135.0)'}
Bounding box: (32146001.287525382, 32711686.712474618, -2.9785711821233015e+21, 2.9785711821233665e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(33843058 31014630) rotate(-135.0)'}
Bounding box: (33560215.28752538, 34125900.71247462, -2.978571238604731e+21, 2.9785712386047927e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(35257271 29600417) rotate(-135.0)'}
Bounding box: (34974428.28752538, 35540113.71247462, -2.9785712386047324e+21, 2.9785712386047916e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(36671485 28186203) rotate(-135.0)'}
Bounding box: (36388642.28752538, 36954327.71247462, -2.9785712386047334e+21, 2.97857123860479e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(38085698 26771990) rotate(-135.0)'}
Bounding box: (37802855.28752538, 38368540.71247462, -2.978571238604735e+21, 2.9785712386047885e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(55813620 38085698) rotate(-135.0)'}
Bounding box: (55530777.28752538, 56096462.71247462, -2.978571238604724e+21, 2.9785712386048e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(57227834 36671484) rotate(-135.0)'}
Bounding box: (56944991.28752538, 57510676.71247462, -2.978571238604725e+21, 2.9785712386047984e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(58642047 35257271) rotate(-135.0)'}
Bounding box: (58359204.28752538, 58924889.71247462, -2.9785712386047266e+21, 2.978571238604797e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(60056261 33843057) rotate(-135.0)'}
Bounding box: (59773418.28752538, 60339103.71247462, -2.978571238604728e+21, 2.978571238604796e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(61470474 32428844) rotate(-135.0)'}
Bounding box: (61187631.28752538, 61753316.71247462, -2.978571238604729e+21, 2.978571238604794e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(62884688 31014630) rotate(-135.0)'}
Bounding box: (62601845.28752538, 63167530.71247462, -2.978571238604731e+21, 2.9785712386047927e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(64298901 29600417) rotate(-135.0)'}
Bounding box: (64016058.28752538, 64581743.71247462, -2.9785712386047324e+21, 2.9785712386047916e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(65713115 28186203) rotate(-135.0)'}
Bounding box: (65430272.28752538, 65995957.71247462, -2.9785712386047334e+21, 2.97857123860479e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(67127328 26771990) rotate(-135.0)'}
Bounding box: (66844485.28752538, 67410170.71247461, -2.978571182123307e+21, 2.9785711821233607e+21)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(74127686 58995600) rotate(-45.0)'}
Bounding box: (-7.44642795530832e+21, 7.446427955308469e+21, 58288493.21881345, 59702706.78118655)

Path attributes: {'d': 'M -1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 1000000.0 0.0 L 1000000.0 0.0 A 1000000.0 1000000.0 0 1 1 -1000000.0 0.0 Z', 'transform': 'translate(45086056 58995600) rotate(-45.0)'}
Bounding box: (-7.446427955308349e+21, 7.44642795530844e+21, 58288493.21881345, 59702706.78118655)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(55813620 67127328) rotate(-135.0)'}
Bounding box: (55530777.28752538, 56096462.71247462, -2.9785712386046946e+21, 2.978571238604829e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(57227834 65713114) rotate(-135.0)'}
Bounding box: (56944991.28752538, 57510676.71247462, -2.978571238604696e+21, 2.978571238604828e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(58642047 64298901) rotate(-135.0)'}
Bounding box: (58359204.28752538, 58924889.71247462, -2.978571238604698e+21, 2.978571238604826e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(60056261 62884687) rotate(-135.0)'}
Bounding box: (59773418.28752538, 60339103.71247462, -2.978571238604699e+21, 2.9785712386048246e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(61470474 61470474) rotate(-135.0)'}
Bounding box: (61187631.28752538, 61753316.71247462, -2.9785712386047004e+21, 2.978571238604823e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(62884688 60056260) rotate(-135.0)'}
Bounding box: (62601845.28752538, 63167530.71247462, -2.978571238604702e+21, 2.978571238604822e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(64298901 58642047) rotate(-135.0)'}
Bounding box: (64016058.28752538, 64581743.71247462, -2.978571238604703e+21, 2.9785712386048204e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(65713115 57227833) rotate(-135.0)'}
Bounding box: (65430272.28752538, 65995957.71247462, -2.9785712386047046e+21, 2.978571238604819e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(67127328 55813620) rotate(-135.0)'}
Bounding box: (66844485.28752538, 67410170.71247461, -2.9785711821232784e+21, 2.9785711821233896e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(36954328 77309666) rotate(-135.0)'}
Bounding box: (36671485.28752538, 37237170.71247462, -2.9785712386046847e+21, 2.9785712386048393e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(38368542 75895452) rotate(-135.0)'}
Bounding box: (38085699.28752538, 38651384.71247462, -2.9785712386046857e+21, 2.978571238604838e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(39782755 74481239) rotate(-135.0)'}
Bounding box: (39499912.28752538, 40065597.71247462, -2.9785712386046873e+21, 2.978571238604836e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(41196969 73067025) rotate(-135.0)'}
Bounding box: (40914126.28752538, 41479811.71247462, -2.978571238604689e+21, 2.978571238604835e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(42611182 71652812) rotate(-135.0)'}
Bounding box: (42328339.28752538, 42894024.71247462, -2.9785712386046904e+21, 2.9785712386048336e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(44025396 70238598) rotate(-135.0)'}
Bounding box: (43742553.28752538, 44308238.71247462, -2.9785712386046915e+21, 2.978571238604832e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(45439609 68824385) rotate(-135.0)'}
Bounding box: (45156766.28752538, 45722451.71247462, -2.978571238604693e+21, 2.9785712386048304e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(46853823 67410171) rotate(-135.0)'}
Bounding box: (46570980.28752538, 47136665.71247462, -2.9785712386046946e+21, 2.9785712386048294e+21)

Path attributes: {'d': 'M -400000.0 0.0 A 400000.0 400000.0 0 1 1 400000.0 0.0 L 400000.0 0.0 A 400000.0 400000.0 0 1 1 -400000.0 0.0 Z', 'transform': 'translate(48268036 65995958) rotate(-135.0)'}
Bounding box: (47985193.28752538, 48550878.71247462, -2.9785712386046957e+21, 2.978571238604828e+21)

I guess this could be related to #171

mathandy commented 2 years ago

Hi @yaqwsx, can you give me an SVG file containing one of the curves so that I can visually check that this curve exists? Earlier versions of svgpathtools may have been correcting the arc (in a case where no such arc existed) and that might explain the gigantic bounding box.

I created a test file with one such arc and got an error that no such arc exists. test

yaqwsx commented 2 years ago

Unfortunately, I didn't save any inputs back then. However, I bumped the dependency in PcbDraw, and so far, I haven't found a file that would trigger this behavior. So I think we can consider this resolved. Thanks!