Обнаружено, что нельзя рассчитать сумму длин, если на чертеже имеется окружность. Добавлена задача: Расчет эллипсов, сегментов, дуг и окружностей.
Найдена библиотека https://www.npmjs.com/package/svgo позволяющая сделать следующее:
- слить все трансформации к одной
- заменить все примитивы на path
Теоретически этого достаточно, чтобы подсчитать длину всех линий.
Изменен расчет суммы длин всех path при помощи svgo
.
https://www.npmjs.com/package/svgo
Сделано чтение аттрибута из элементов SVG-файла при помощи xmldom и xpath.
Найден метод SVGPathElement.getTotalLength()
. Теоретически с его помощью можно рассчитывать
длины всех элементов path, а возможно и других элементов.
Найдена и применена библиотека point-at-length
, в которой реализован метод getTotalLength()
.
Последнее обновление было 2 года назад.
Найдена и применена библиотека svg-path-properties
, в которой реализован метод getTotalLength()
.
Ее отличие от point-at-length
в том, что последние коммиты датируются 2019 годом.
Также найден полифил для браузеров svg-path-polyfill
, но его нельзя использовать напрямую,
поэтому оставлен на всякий случай, если найденные алгоритмы getTotalLength()
не сработают.
Написан тестовый расчет длины линий line и path.
https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement/getTotalLength
https://www.npmjs.com/package/point-at-length
https://github.com/rveciana/svg-path-properties
https://github.com/ThePedestrian/svg-path-polyfill